/* ==================================================================== * ÆÄ ÀÏ : ShadowAgent.h * ¸ñ Àû : °´Ã½ÀÇ ±×¸²ÀÚ¸¦ °ü¸®ÇÑ´Ù. * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.06 * * Ãß°¡³»¿ë : * Ãß°¡³¯Â¥ ÀÛ¾÷ÀÚ Ãß°¡³»¿ë * 2006.06 À̹ý¼® »ý¼º * * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once #include "ShadowGeometry.h" NiSmartPointer(NiTexture); NiSmartPointer(NiPropertyState); NiSmartPointer(NiRenderTargetGroup); class cShadowAgent { public: static cShadowAgent* mpShadowAgent; cShadowAgent(); ~cShadowAgent(); /// ±×¸®´Â 󸮰¡ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î Àüü ÇÁ·Î¼¼½ºÁß RenderÁ÷Àü¿¡ È£ÃâÇÑ´Ù. void Process( float time ); /// ½ÇÁ¦ ·£´õ¸µ void Render( NiRenderer* pRenderer ); /// ±×¸²ÀÚ °´Ã¼ »ý¼º cShadowGeometry* CreateShadow( unsigned int detail = 6, unsigned int maxTriangleCount = 0 ); /// Çö ÇÁ·¹ÀÓ¿¡ ±×·ÁÁú ±×¸²ÀÚ Ãß°¡ void AddDrawingShadow( cShadowGeometry* pShadow ); /// Terrain °´Ã¼¿¡ ´ëÇÑ Á¤º¸ ÂüÁ¶ inline NiAVObject* GetGroundSceneGraph() { return mpGround; } inline void SetGroundSceneGraph( NiAVObject* pGround ) { mpGround = pGround; } protected: /// bool UpdateShadowPosition( float time ); /// void DrawRenderTaget(); /// void UpdateShadowGeometry(); protected: /// ±×·Á¾ßÇÏ´Â °´Ã¼ ¸Å ÇÁ·¹ÀÓ °»½Å NiTPrimitiveSet mDrawingShadow; /// Root of the scene upon which shadow will be cast (the "recipient") NiAVObject* mpGround; /// ·£´õ¸µ ½ºÅ×ÀÌÆ® NiPropertyStatePtr mpPropertyState; }; #define SHADOWAGENT cShadowAgent::mpShadowAgent