/* ========================================================================== * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.12.07 * ³» ¿ë : Ä«¸Þ¶ó °ü¸®ÀÚ * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "Camera.h" enum { eCamera_Hero = 0, eCamera_Free, }; /// Ä«¸Þ¶ó °ü¸®ÀÚ /// Ä«¸Þ¶ó¸¦ »ý¼º, Á¦°ÅÇÏ´Â °ü¸®ÀÚÀÌ´Ù. class cCameraManager { static cCameraManager* mpSingleton; public: cCameraManager(); ~cCameraManager(); /// »ý¼ººÎ bool Init(); void Open(); /// Űº¸µå ¹× ¸¶¿ì½º ÀԷ¿¡ ´ëÇÑ Ã³¸® //bool ProcessInputKey( float time ); //void ProcessInputMouse( float time ); //bool ProcessKeyUpDown( float time ); //bool ProcessKeyPressed( float time ); void ProcessMouse( unsigned long time ); /// 󸮺Î( Àý´ëÀûÀ¸·Î ÀÔ·Âó¸®ÈÄ¿¡ ó¸®ÇØ¾ß ÇÑ´Ù.) void Process( unsigned long deltaTime, unsigned long accumTime ); /// Àç¼³Á¤ void Reset( unsigned int screenWidth, unsigned int screenHeight ); /// ¸ÞÀÎ Ä«¸Þ¶ó¸¦ ¹Ù²Û´Ù. void ChangeCamera( unsigned int cameraIdx ); /// ÇöÀç Ä«¸Þ¶ó Á¤º¸¸¦ ȹµæ NiCamera* GetCurrentNi(); cCamera* GetCurrent(); unsigned int GetCurrentIdx() { return mCurrentCameraIdx; } /// ÇöÀç Ä«¸Þ¶óÀÇ À§Ä¡¸¦ ¾ò´Â´Ù. NiPoint3 GetCurrentCameraPos(); /// LookAtÀÌ ÀÖ´Â °æ¿ì Ä«¸Þ¶ó±îÁöÀÇ °Å¸®¸¦ ¾ò´Â´Ù. float GetCurrentLookAtDistance(); /// È­¸é ÁÂÇ¥¿¡ ´ëÀÀÇÏ´Â ¹ÝÁ÷¼±À» ¾òÀ½ bool GetRayFromWindowPoint( NiPoint3* porigin, NiPoint3* pdir, int mouseX, int mouseY ); void Shake(); public: /// ´ÜÀÏü¸¦ ¸®ÅÏ static cCameraManager* GetSingleton(); protected: typedef tArray cCameraArray; cCameraArray mCameraArray; cCamera* mpCurrentCamera; unsigned int mCurrentCameraIdx; }; inline cCamera* cCameraManager::GetCurrent() { return mpCurrentCamera; } inline NiCamera* cCameraManager::GetCurrentNi() { if( mpCurrentCamera ) return *mpCurrentCamera; else return 0; } inline cCameraManager* cCameraManager::GetSingleton() { return mpSingleton; } #define CAMERAMAN cCameraManager::GetSingleton()