/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2007.03.09 * ³» ¿ë : ¿ùµå °ü¸®ÀÚ * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once class cMaterialData; class cTerrain; class cSceneNode; class cAreaSceneNode; /// ¿ùµå °ü¸®ÀÚ class cWorldManager { static cWorldManager* mSingleton; public: cWorldManager(); ~cWorldManager(); /// Áö¿ò void Clear(); /// ÃʱâÈ­ void Init(); /// ó¸® void Process( unsigned long deltaTime, unsigned long accumTime, bool testing ); void ProcessAmbient( unsigned long deltaTime ); void ProcessFog( unsigned long deltaTime ); /// ·»´õ¸µ void Render(); void RenderSkyDome(); /// ÇÏ´Ã bool LoadSkyDome( const cString& pathName ); bool LoadSkyDome( const cString& pathName, float scale, bool enabled ); void SetSkyScale( float scale ); void SetSkyEnabled( bool enabled ); void SetSkyAmbient( const NiColor& color ); void SetSkyDimmer( float dimmer ); const char* GetSkyName() const; float GetSkyScale() const; bool IsSkyEnabled() const; /// ¿µ¿ª void SetArea( const cAreaSceneNode& n ); void BlendArea( const cAreaSceneNode& n0, const cAreaSceneNode& n1, float ratio ); protected: /// ±âÇÏ ³ëµåµéÀ» ¼öÁý void CollectGeometries( tList* pgeomList, NiAVObject* obj ); void CollectProperties( tList* ppropList, NiAVObject* obj ); void SetMaterial( tList& propList, const cMaterialData& material ); /// ÇØ´ç ¿ÀºêÁ§Æ®ÀÇ ±íÀÌ ¹öÆÛ¸¦ ºñȰ¼ºÈ­ void DisableZBuffer( NiAVObject* obj ); public: /// ´ÜÀÏü¸¦ ¸®ÅÏ static cWorldManager* GetSingleton(); protected: /// ÁöÇü cTerrain* mTerrain; /// ÇÏ´Ã //NiFogPropertyPtr mSkyFogProp; NiAmbientLightPtr mSkyLight; NiNodePtr mSkyDome; typedef tList cRenderObjList; cRenderObjList mSkyGeomList; typedef tList cMatPropList; cMatPropList mSkyMatPropList; bool mSkyEnabled; cString mSkyName; /// ÁÖº¯±¤ 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 cPickedArray; cPickedArray mPickedArray; }; inline void cWorldManager::SetSkyAmbient( const NiColor& color ) { mSkyLight->SetAmbientColor( color ); } inline void cWorldManager::SetSkyDimmer( float dimmer ) { mSkyLight->SetDimmer( dimmer ); } inline void cWorldManager::SetSkyScale( float scale ) { if( mSkyDome ) { mSkyDome->SetScale( scale ); mSkyDome->Update( 0.0f ); } } inline void cWorldManager::SetSkyEnabled( bool enabled ) { mSkyEnabled = enabled; } inline const char* cWorldManager::GetSkyName() const { return mSkyName.Cstr(); } inline float cWorldManager::GetSkyScale() const { if( mSkyDome ) return mSkyDome->GetWorldScale(); else return 1.0f; } inline bool cWorldManager::IsSkyEnabled() const { return mSkyEnabled; } inline cWorldManager* cWorldManager::GetSingleton() { return mSingleton; } #define WORLDMAN cWorldManager::GetSingleton()