/* ==================================================================== * ÆÄ ÀÏ : WorldManager.h * ¸ñ Àû : ȯ°æ¿¡ °ü·ÃµÈ ¸ðµç °´Ã¼¹× Á¤º¸¸¦ °ü¸®ÇÑ´Ù. * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.01 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.01 À̹ý¼® »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once class cPathFinder; class cTerrain; class cNaviMesh; class cNaviField; class cMaterialData; class cSceneNode; class cAreaSceneNode; /// ¿ùµå °ü¸®ÀÚ class cWorldManager { static cWorldManager* mSingleton; public: cWorldManager(); ~cWorldManager(); // /// ÃʱâÈ­ ¹× Á¾·á // bool Init(); // void Exit(); // // /// ó¸® // void Process( unsigned long deltaTime, unsigned long accumTime ); // void ProcessAmbient( unsigned long deltaTime ); // void ProcessFog( unsigned long deltaTime ); // void ProcessCamera( unsigned long deltaTime ); // // /// ·»´õ¸µ // void Render(); // void RenderSkyDome(); // // /// ÇöÀç ¿ùµå Á¤º¸¸¦ »ý¼º ¹× ÆÄ±« // bool Open(); void Close(); void ClearSkyDome(); // /// ÇÏ´Ã bool LoadSkydome( const cString& pathName, float scale ); // void MoveSkyDome( const NiPoint3& pos ); // // /// ¿µ¿ª // void SetArea( const cAreaSceneNode& n ); // void BlendArea( const cAreaSceneNode& n0, const cAreaSceneNode& n1, float ratio ); // // /// ÇÈÅ· // bool Pick( NiPoint3* pos, int mouseX, int mouseY ); // /// ³ôÀ̰ª bool CalcHeight( float* height, float posX, float posY ); // // bool EnableMove( int mouseX, int mouseY ); // // bool EnableRayCheck( NiPoint2 start, NiPoint2 goal ); // bool EnableRayGet( NiPoint3 start, NiPoint3 &goal ); // bool EnableRayGet( NiPoint2 start, NiPoint2 &goal ); // // /// Map IndexÁ¤º¸ // inline unsigned int GetCurrentMapIndex() { return mCurrentMapIndex; } // inline void SetCurrentMapIndex( unsigned int mapIdx ) { mCurrentMapIndex = mapIdx; } // // /// ÁöÇüÀ» ¸®ÅÏ // cTerrain* GetTerrain() const; // cNaviField* GetNaviField() const; // cNaviMesh* GetNaviMesh() const; // cPathFinder* GetPathFinder() const; // /// load process¸¦ À§ÇÑ ÇÔ¼ö bool LoadTerrainHeader( unsigned int& loadCount, unsigned int mapIdx, unsigned char mapMode ); int LoadTerrainNodes( unsigned int count ); bool LoadNaviMeshHeader( unsigned int& loadCount, unsigned int mapIdx, unsigned char mapMode ); int LoadNaviMeshNodes( unsigned int count ); bool LoadNaviField( unsigned int mapIdx, unsigned char mapMode ); protected: /// ±âÇÏ ³ëµåµéÀ» ¼öÁý void CollectGeometries( tList* pgeomList, NiAVObject* pobj ); void CollectProperties( tList* ppropList, NiAVObject* pobj ); // void SetMaterial( tList& propList, const cMaterialData& material ); // // /// °´Ã¼¸¦ º¯ÇüÇÑ´Ù. // void DisableZBuffer( NiAVObject* pObj ); // // void RecursivePrepack( NiAVObject* pObj ); public: /// ´ÜÀÏü¸¦ ¸®ÅÏ static cWorldManager* GetSingleton(); private: /// ¸Ê À妽º unsigned int mCurrentMapIndex; /// ±æÃ£±â cPathFinder* mPathFinder; /// ÁöÇü cTerrain* mTerrain; /// ³×ºñ¸Þ½Ã cNaviMesh* mNaviMesh; /// ³×ºñÇʵå cNaviField* mNaviField; /// ÇÏ´Ã NiNodePtr mSkyDome; cString mSkyPathName; typedef tList cRenderObjList; cRenderObjList mSkyGeomList; typedef tList cMatPropList; cMatPropList mSkyMatPropList; float mSkyHeight; bool mSkyNeedUpdate; /// ÁÖº¯±¤ NiColor mTargetSkyAmbient; NiColor mSkyAmbient; float mTargetSkyDimmer; float mSkyDimmer; NiColor mTargetTerrainAmbient; NiColor mTerrainAmbient; float mTargetTerrainDimmer; float mTerrainDimmer; NiColor mTargetStaticObjectAmbient; NiColor mStaticObjectAmbient; float mTargetStaticObjectDimmer; float mStaticObjectDimmer; NiColor mTargetDynamicObjectAmbient; NiColor mDynamicObjectAmbient; float mTargetDynamicObjectDimmer; float mDynamicObjectDimmer; /// ¾È°³ NiColor mTargetFogColor; NiColor mFogColor; float mTargetFogDepth; float mFogDepth; /// Ãæµ¹ ¹è¿­ typedef tArray cCollidableArray; cCollidableArray mCollidableArray; cAreaSceneNode* mArea1; cAreaSceneNode* mArea2; }; // inline // cTerrain* cWorldManager::GetTerrain() const // { // return mTerrain; // } // // inline // cNaviMesh* cWorldManager::GetNaviMesh() const // { // return mNaviMesh; // } // // inline // cNaviField* cWorldManager::GetNaviField() const // { // return mNaviField; // } // // inline // cPathFinder* cWorldManager::GetPathFinder() const // { // return mPathFinder; // } inline cWorldManager* cWorldManager::GetSingleton() { return mSingleton; } #define WORLDMAN cWorldManager::GetSingleton()