/* ========================================================================== * ÀÛ ¼º ÀÚ : À̼ø±Ô * ÀÛ ¼º ÀÏ : 2006.12.07 * ³» ¿ë : Ä«¸Þ¶ó °ü¸®ÀÚ * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Camera.h" class cFreeCamera; class cLookAtCamera; /// Ä«¸Þ¶ó °ü¸®ÀÚ /// Ä«¸Þ¶ó¸¦ »ý¼º, Á¦°ÅÇÏ´Â °ü¸®ÀÚÀÌ´Ù. class cCameraManager { static cCameraManager* mSingleton; public: cCameraManager(); ~cCameraManager(); /// ó¸® void Process( unsigned long deltaTime ); /// Á¦°Å void DestroyAll(); void Destroy( cCamera* cam ); /// »ý¼º cFreeCamera* CreateFree( bool makeCurrent = false ); cLookAtCamera* CreateLookAt( bool makeCurrent = false ); void SetCurrent( cCamera* cam ); cCamera* GetCurrent(); cCamera* GetCamera( unsigned int i ); /// È­¸é ÁÂÇ¥¿¡ ´ëÀÀÇÏ´Â ¹ÝÁ÷¼±À» ¾òÀ½ void GetRayFromWindowPoint( NiPoint3* porigin, NiPoint3* pdir, int mouseX, int mouseY ); /// ¼Ó·Â void SetCameraTranslateSpeed( float unitsPerSec ); void SetCameraRotateSpeed( float anglesPerSec ); public: /// ´ÜÀÏü¸¦ ¸®ÅÏ static cCameraManager* GetSingleton(); protected: /// Ä«¸Þ¶ó ¹è¿­ typedef tArray cCameraArray; cCameraArray mCameraArray; /// ÇöÀç Ä«¸Þ¶ó cCamera* mCurrentCamera; }; inline void cCameraManager::GetRayFromWindowPoint( NiPoint3* porigin, NiPoint3* pdir, int mouseX, int mouseY ) { if( mCurrentCamera ) { mCurrentCamera->GetRayFromWindowPoint( mouseX, mouseY, *porigin, *pdir ); } else { assert( 0 && "null current camera" ); } } inline cCamera* cCameraManager::GetCurrent() { return mCurrentCamera; } inline cCamera* cCameraManager::GetCamera( unsigned int i ) { if( i < mCameraArray.GetSize() ) return mCameraArray[i]; else return 0; } inline cCameraManager* cCameraManager::GetSingleton() { return mSingleton; } #define CAMERAMAN cCameraManager::GetSingleton()