// drawunitrenderer.h #ifndef _3DRENDERER_DRAWUNITRENDERER_H_ #define _3DRENDERER_DRAWUNITRENDERER_H_ #include "drawrenderetcs.h" //------------------------------------------------------------------------------ /** @class CDrawUnitRenderer - ÀÏ´ÜÀº ´Ü¼øÈ÷ Äڵ常 Á¤¸®ÇÑ ¼öÁØÀÌ´Ù. ÈÄ¿¡, ·»´õ·¯ ºÐ¼®½Ã Á¤È®ÇÏ°Ô ±¸ÇöÇÒ °Í */ class CDrawUnitRenderer : public CDrawRenderEtcs { public: // »ý¼ºÀÚ/¼Ò¸êÀÚ CDrawUnitRenderer(); virtual ~CDrawUnitRenderer(); // À¯´Ö ÇÁ·¹ÀÓ ÁøÇà (xxx: ±âÁ¸ ȣȯ) virtual ENUM_ANI_FRAME_STATUS ProgressUnitFrame( CWzUnitDraw* pUnitDraw, float fFrameAdd, WzEvent* pEvent = NULL, float* pfProgressRate = NULL ); // À¯´Ö ¾Ö´Ï¸ÞÀÌ¼Ç (xxx: ±âÁ¸ ȣȯ) virtual void AnimateUnit( CWzUnitDraw* pUnitDraw, int iLOD = 0, const WzMatrix* pwmParent = NULL, BOOL bUpdateBVExtra = FALSE ); // À¯´Ö ·»´õ¸µ virtual BOOL RenderUnit(CWzUnitDraw* pUnitDraw, St_RenderCommand* prc = NULL, int iLOD = 0); virtual BOOL RenderUnitForOutline(CWzUnitDraw* unit_draw); // À¯´Ö º» ·»´õ¸µ virtual BOOL RenderUnitBone( CWzUnitDraw* pUnitDraw, int iStart = 0, int iEnd = -1 ); // Ç® ±×¸®±â virtual BOOL RenderGrass( CWzUnitDraw* pUnitDraw ); // 2D ¸ðµå ¼³Á¤ virtual void Set2DMode( BOOL b2D = TRUE, BOOL bInRealSize = FALSE ); // À¯´Ö ÀÌÆåÆ® »ý¼º/À̵¿ virtual void CheckEffect( CWzUnitDraw* pUnitDraw, BOOL bCreateNow = FALSE ); virtual void MoveUnitEffect( CWzUnitDraw* pUnitDraw ); // À¯´Ö ÀÌÆåÆ® º¸À̱â/°¨Ãß±â virtual void ShowSubTypeEffect( CWzUnitDraw* pUnitDraw, BOOL bShow ); protected: // -------- ·»´õ¸µ Ä¿¸Çµå »ý¼º/¼³Á¤/Ãß°¡ -------- // È¿°ú ·»´õ¸µ Á¤º¸ ¼³Á¤ void FillRenderInfoForSet( WzRenderInfo* pwri ); // ·»´õ¸µ Á¤º¸ -> ·»´õ¸µ Ä¿¸Çµå void New_AnalyzeRenderInfo( St_RenderCommand* prc, const WzRenderInfo* pwri ); // ¸ÊÇÎ Á¤º¸ -> ·»´õ¸µ Ä¿¸Çµå void New_AnalyzeMappingInfo( St_RenderCommand* prc, const WzRenderInfo* pwri ); // ·»´õ¸µ Ä¿¸Çµå Àû¿ë (Àüü ¸Þ½Ã ±×·ì) void New_ApplyRenderCommandForMesh( const St_RenderCommand* prc, const WzRenderInfo* pwri ); // ·»´õ¸µ Ä¿¸Çµå Àû¿ë (ÇØ´ç ¸Þ½Ã ±×·ì) void New_ApplyRenderCommandForMeshGroup( const St_RenderCommand* prc, const WzRenderInfo* pwri, int iMeshGroup ); // -------- ·»´õ¸µ Ä¿¸Çµå ½ÇÁ¦ ·»´õ¸µ -------- // ¿¹¾àµÈ drawcall ÀüºÎ ó¸® virtual void FlushReservedDrawCallEx( BOOL bLastFlush ); // ¸ðµç ·»´õ¸µ Ä¿¸Çµå ó¸® void FlushRenderCommandArray(); // ±×¸²ÀÚ ÁÖ±â Ä¿¸Çµå ó¸® void FlushShadowCastCommand(); // ·»´õ¸µ Ä¿¸Çµå ó¸® BOOL RealizeRenderCommmand( St_BaseRenderCommand* prc ); BOOL New_RealizeRenderCommmand( St_RenderCommand* prc ); // Àû¿ëÇÒ ¹öÅØ½º/Çȼ¿ ¼ÎÀÌ´õ Á¶»ç virtual int New_CheckVertexShaderInRealizing( St_RenderCommand* prc ); virtual int New_CheckPixelShaderInRealizing( St_RenderCommand* prc ); // ¹öÅØ½º ¼ÎÀÌ´õ Á¶Á¤ void AdjustVertexShaderForSkinning( const St_RenderCommand* prc, ENUM_VERTEX_SHADER_TYPE* eVstTry ); // ·»´õ¸µ ½ºÅ¸ÀÏ Àû¿ë/º¹±¸ void New_RealizeRenderStyle( St_RenderCommand* prc, int iVS = 0, int iPS = 0 ); void New_FinishRealizeRenderStyle( St_RenderCommand* prc ); // ±×¸²ÀÚ ·»´õ¸µ BOOL RealizeShadowCastCommmand( St_RenderCommand* prc ); // ±×¸²ÀÚ ¹Þ±â (self shadow) BOOL RealizeShadowReceiveCommmand( St_RenderCommand* prc ); // ±×¸²ÀÚ ·»´õ¸µ (xy Æò¸é) BOOL RealizeShadowCastToProjectedTexture( St_RenderCommand* prc ); // À¯´Ö ÀÌÆåÆ® Á¦°Å void DestroyUnitEffect( CWzUnitDraw* pUnitDraw ); }; #endif // _3DRENDERER_DRAWUNITRENDERER_H_