// managerspeedtreed3d.h #ifndef _3DRENDERER_MANAGERSPEEDTREED3D_H_ #define _3DRENDERER_MANAGERSPEEDTREED3D_H_ #include #include "managerspeedtree.h" #include "managerd3d.h" #include "speedtree/speedtreewrapper.h" #include "speedtree/speedwind.h" class CSpeedTreeDrawInfoDX : public CSpeedTreeDrawInfo { CSpeedTreeWrapper* m_pTreeWrapper; WzBoundingVolume* m_pwbvCollision; //CSpeedTree CAD ¿¡¼­ °¡Á®¿Â Ãæµ¹ ¿ÀºêÁ§Æ® int m_nCollision; //Ãæµ¹ ¿ÀºêÁ§Æ® °¹¼ö //CManagerSpeedTreeD3D Ŭ·¡½º¸¸ friend class CManagerSpeedTreeD3D; CSpeedTreeDrawInfoDX():m_pTreeWrapper(NULL),m_pwbvCollision(NULL),m_nCollision(0){} public: //base Ŭ·¡½º virtual ~CSpeedTreeDrawInfoDX(){SAFE_DELETE(m_pTreeWrapper);SAFE_DELETE_ARRAY(m_pwbvCollision)} void SetPosition(WzVector* pwvPos); void SetScale(WzVector* pwvScale); void SetColor(WzColor wcColor){CSpeedTreeDrawInfo::SetColor(wcColor);} void SetAttr(DWORD dwAttr){CSpeedTreeDrawInfo::SetAttr(dwAttr);} //_YJ_EDIT_OBJ_COLOR //¿©±â¼­¸¸ »ç¿ë //Æ®¸®¼¼ÆÃ CSpeedTreeWrapper* GetTree(){return m_pTreeWrapper;} void SetTree(CSpeedTreeWrapper* pTree); void SetTreeWzID(WzID wID){m_wID=wID;} //¹Ù¿îµù ¾÷µ¥ÀÌÆ® void UpdateBoundingVolume(); //CSpeedTreeRT Äø®Á¯ Á¤º¸ ¾ò±â virtual int GetCollisionObjectCount(); virtual WzBoundingVolume* GetCollisionObject(int iIndex); }; class CManagerSpeedTreeD3D : public CManagerSpeedTree, CManagerD3D { public: CManagerSpeedTreeD3D(void); ~CManagerSpeedTreeD3D(void); virtual void Clear(); virtual BOOL Create( CDrawBase *pParentDraw, void *pParam); virtual void Destroy(); virtual void OnLostDevice(); virtual void OnResetDevice(); //ÅØ½ºÃÄ ÃʱâÈ­ virtual BOOL LoadTexture(char* szComositeMap,char* szCompositeShadow); //Æ®¸® ·¹ÆÛ·±½º ·Îµå,ÇØÁ¦ virtual WzID CManagerSpeedTreeD3D::LoadTreeRef(WzID wID, const char* szTree); virtual void DestroyTreeRef(WzID wID); //Æ®¸® ÀνºÅϽº Ãß°¡ »èÁ¦ virtual HANDLE AddTree(WzID wID,WzVector* pPos,WzColor wcColor=WzColor_RGB(255,255,255), WzVector* pScale=NULL, DWORD dwAttr = eST_COLOR_TYPE_APPLY_TERRAIN_COLOR); virtual void RemoveTree(HANDLE hTree); virtual void RemoveAllTree(); //·¹ÆÛ·±½º ,ÀνºÅϽº °°ÀÌ ÇØÁ¦ (·¹ÆÛ·±½º¸¸ ÇØÁ¦ ¾ÈµÊ) virtual void UnloadAllSpeedTrees(); //¼Ó¼º virtual void SetWindStrength(float fStrength); virtual void SetLOD(float fNear,float fFar); //·»´õ¸µ & etc.... virtual void Render(HANDLE *pHandle,int iDrawCount,bool bSortRender = 1); //pHandle¿¡ ·»´õ¸µÇÒ ³ª¹«µéÀ» ä¿ö ÁØ´Ù.(¸ð¾Æ¼­ ·»´õ¸µ ÇØ¾ß ºü¸§) virtual void Render(WzID wID,WzVector* pWvPos,WzVector *pScale); //ID·Î ·»´õ¸µ virtual void Render4ShadowMap(CWzArray& arDraw); private: void vSetupWindMatrices(float fTimeInSecs); void vChangeRS(); void vRecoverRS(); void vReleaseDeviceObjebject(); void vReleaseTexture(); void vSetSpeedTreeRTLight(); void vSetLightInfo(); BOOL bRestoreDeviceObj(); void vLoadSpeedTreeTexture(CSpeedTreeWrapper* pSpeedTreeWrapper); HANDLE hCreateTree( const char* lpszFileName,WzID wID); void vSetVSConst(); void vCheckHardWare(); static bool bSortFunc(CSpeedTreeDrawInfoDX* pST1,CSpeedTreeDrawInfoDX* pST2); private: //¹Ù¶÷ CSpeedWind m_cSpeedWind; HANDLE m_hComopsiteTexture; bool m_bSupporHarWare; #ifdef WRAPPER_RENDER_SELF_SHADOWS HANDLE m_hShadowTexture; #endif char m_szShadowTexutre[MAX_PATH]; char m_szCompositeTexutre[MAX_PATH]; //ºû (½¦ÀÌ´õ »ó¼ö ¼³Á¤ ¶§¹®¿¡ 4*float) float m_afLightInfo[20]; }; #endif // _3DRENDERER_MANAGERSPEEDTREED3D_H_