/* ==================================================================== * ÆÄ ÀÏ : CullingProcess.h * ¸ñ Àû : NiCullingProcess¸¦ º¯ÇüÇÏ¿©.. ¾ËÆÄºí·£µùÀ» Áß½ÉÀ¸·Î * µÎ°³ÀÇ ÀúÀå°ø°£¿¡ ³ª´©¾î ÀúÀå. * ¶ÇÇÑ, °´Ã¼ÀÇ µ¥ÀÌÅÍÇüÀ¸·Î cEntity¸¦ »ç¿ëÇϰí, ÃÖÁ¾ÀûÀ¸·Î * µÎ°³ÀÇ NiVisibleArray¿¡ ºÐ»êÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÀûÀçÇÑ´Ù. * ÀÛ ¼º ÀÚ : À̹ý¼® * ÀÛ ¼º ÀÏ : 2006.03 * ÁÖÀÇ»çÇ× : * =================================================================== */ #pragma once class cSceneNode; /// ÀÌÆåÆ® ³ëµå Àü¿ë Ä÷¯ class cCullingProcess : public NiMeshCullingProcess //NiCullingProcess { public: cCullingProcess( NiVisibleArray* palphaArray, NiVisibleArray* alphaTestArray, NiVisibleArray* psolidArray ); virtual ~cCullingProcess(); /// 󸮺Πvoid Cull( const NiCamera* pcamera, cSceneNode* pnode); protected: virtual void AppendVirtual( NiRenderObject& geom ); virtual void Process( NiAVObject* pobj ); protected: NiVisibleArray* mpAlphaArray; NiVisibleArray* mpAlphaTestArray; }; class cModifierProcess : public NiMeshCullingProcess { public: cModifierProcess(); virtual ~cModifierProcess(); void Cull( const NiCamera* pcamera, cSceneNode* pnode ); protected: virtual void AppendVirtual( NiRenderObject& /*geom*/ ){} virtual void Process( NiAVObject* pobj ); virtual void Process(const NiCamera* pkCamera, NiAVObject* pkScene, NiVisibleArray* pkVisibleSet); }; /* class cCullingProcess : public NiCullingProcess { public: cCullingProcess( NiVisibleArray* pAlphaSet, NiVisibleArray* pNoneAlphaSet ); virtual ~cCullingProcess(); /// 󸮺Πvoid Process( const NiCamera* pCamera, cSceneNode* pSceneNode ); /// inline NiVisibleArray* GetAlphaVisibleSet() { return mpAlphaArray; } inline bool IsCullingAll() { return mCullingAll; } inline void SetAlphaCheckDistance( float dist ) { mAlphaCheckMaxDistance = dist; } inline void EnableAlphaCollisionCheck( bool enable ) { mAlphaCollisionCheck = enable; } protected: /// NiCullingProcessÁ¦°ø °¡»ó ÇÔ¼ö virtual void AppendVirtual( NiGeometry& visible ); virtual void Process( NiAVObject* pObj ); /// Ä«¸Þ¶ó ½Ã¾ß¸¦ ¹æÇØÇÏ´Â °´Ã¼ÀÎÁö¸¦ ÆÇº°ÇÑ´Ù. bool InterruptTheView( NiPoint3 camPos, NiPoint3 camDir, NiAVObject* pObject, float& rDist ); protected: /// Alpha󸮰¡ µÇ´Â °´Ã¼´Â µû·Î ±¸ºÐÇÑ´Ù. NiVisibleArray* mpAlphaArray; /// 󸮵Ǵ ÇöÀç °´Ã¼ÀÇ ¾ËÆÄ ¿©ºÎ Ç÷¡±×(ex.Ä«¸Þ¶ó Ãæµ¹) bool mCurrentObjectAlphaBlendOption; /// 󸮵Ǵ ÇöÀç °´Ã¼¸¦ ¸ðµÎ ÄøµÇØ¾ß ÇÏ´ÂÁö ¿©ºÎ Ç÷¡±× bool mCullingAll; /// ¾ËÆÄ ó¸® µÇ¾î¾ß ÇÏ´Â °´Ã¼¿¡ ´ëÇÑ Picking NiPick mAlphaCheckPick; /// ¾ËÆÄ üũÇÏ´Â °´Ã¼ÀÇ ÃÖ´ë °Å¸® float mAlphaCheckMaxDistance; /// Á÷¼±°ú ¹°Ã¼°£ÀÇ Ãæµ¹Ã³¸®·Î ¾ËÆÄ¿©ºÎ¸¦ ÆÇ´Ü ( ¹è°æ°´Ã¼¿¡ »ç¿ë ) bool mAlphaCollisionCheck; }; */