// CharacterLightShadowManager.h: interface for the CCharacterLightShadowManager class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_CHARACTERLIGHTSHADOWMANAGER_H__33851909_688F_4AB6_B1C8_A6A5D8F8011A__INCLUDED_) #define AFX_CHARACTERLIGHTSHADOWMANAGER_H__33851909_688F_4AB6_B1C8_A6A5D8F8011A__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "List.h" #include "Z3DGeneralChrModel.h" #include "Z3DAttachment.h" #include "RenderTexture.h" #include "HeightFieldScene.h" #include "CollisionDetection.h" //#include "Z3DSoundEventHelper.h" #include "Z3DEventSignal.h" #include "ShadowMap.h" #define EVENT_HIT 0x00000001<<0 #define EVENT_WEAPON_TRAIL_ON 0x00000001<<1 #define EVENT_WEAPON_TRAIL_OFF 0x00000001<<2 #define EVENT_JUMP 0x00000001<<3 #define EVENT_WALK 0x00000001<<4 #define EVENT_CANCEL 0x00000001<<5 #define EVENT_SHOT 0x00000001<<6 #define EVENT_JUST 0x00000001<<7 #define EVENT_JUSTSTART 0x00000001<<8 #define EVENT_JUSTEND 0x00000001<<9 //CollisionDetection Type #define CDT_NONE 0 #define CDT_FULL 1 #define CDT_ONLYTERRAIN 2 #define CDT_FIRSTBOTTOM 3 class CCharacterLightShadowManager { CHeightFieldScene *m_pHeightField; class CChrLightNode { public: D3DLIGHT8 m_Light; int m_dwTimer; }; DWORD m_dwCharacterPixelShader; DWORD m_dwCharacterVertexShader; DWORD m_dwCharacterSpecPixelShader; DWORD m_dwCharacterSpecularVertexShader; LPDIRECT3DTEXTURE8 m_pTex_DiffSpec_IlluminationMap; // Rain µ¿±â Ãß°¡ LPDIRECT3DVERTEXBUFFER8 m_lpRainVertexBuffer; float *m_pRainLoopValue; DWORD m_dwRainVertexsNum; DWORD m_dwRainUseNum; bool m_bRainBufferSet; /* static List m_CharacterCollisionType; static List m_CharacterList; // static List m_CharacterSoundHelperList; static List m_CharacterScreenPositionList; static List m_CharacterAttackEventList; static List m_CharacterTrailOnEventList; static List m_CharacterTrailOffEventList; static List m_CharacterDelayTimer; static List m_CharacterLightList; static List m_CharacterPerFrameMove; static List m_CharacterRealPosition; static List m_CharacterRandomPostionTimer; static List m_CharacterRandomPostionAdder; */ public: class CCharacterDataNode { public: CollisionType m_CollisionType; CZ3DGeneralChrModel *m_pChrmodel; POINT m_ptScreenPosition; DWORD m_dwEvent; int m_DelayTimer; CChrLightNode m_Light; vector3 m_vecPerFrameMove; float m_fAccelate; vector3 m_vecZeroVelocity; vector3 m_vecRealPosition; int m_RandomPositionTimer; float m_fFallSpeed; vector3 m_vecRandomPositionAdder; bool m_bFirstAccelate; bool m_bCollisionDetectAble; bool m_bGravityAble; int m_CollisionDetectType; bool m_bRender; float m_fAlphaValue; int m_cAttackEvent; int m_cJumpEvent; int m_cWalkEvent; int m_cCancelEvent; int m_cShotEvent; int m_cJustEvent; int m_cJustStartEvent; int m_cJustEndEvent; }; CCharacterDataNode GetCharacterDataNode(CZ3DGeneralChrModel *pChrmodel); void SetCharacterDataNode(CCharacterDataNode SetNode); void CharacterCollisionDetectType(CZ3DGeneralChrModel *pChrmodel,int nType); void CharacterGravityAble(CZ3DGeneralChrModel *pChrmodel,bool bGravityAble); static void CharacterCollisionAble(CZ3DGeneralChrModel *pChrmodel, bool bCollisionDetectionAble); void CharacterFirstAccelate(CZ3DGeneralChrModel *pChrmodel,bool bFirstAccelate); float GetCharacterVelocity(CZ3DGeneralChrModel *pChrmodel); CollisionType GetCharacterCollisionType(CZ3DGeneralChrModel *pChrmodel); static List m_CharacterList; CShadowMap m_CharacterShadowmap; void RenderGlare(LPDIRECT3DDEVICE8 pd3dDevice); void CharacterRandomPos(CZ3DGeneralChrModel *pChrmodel,int nTimer,vector3 vecRand); vector3 GetCharacterMovementVector(CZ3DGeneralChrModel *pChrmodel); void CharacterMovementVector(CZ3DGeneralChrModel *pChrmodel,vector3 vecChrMove,float fAccelate=0.0f); void DelChrLight(DWORD dwLightID); void UpdateLight(); void AddChrLight(CZ3DGeneralChrModel *pChrmodel,vector3 vecPos,DWORD dwColor,float fLens,DWORD dwTime); void CreateEditor(); void AddDelayTimer(CZ3DGeneralChrModel *pChr,int nDelay); int GetCharacterEvent(CZ3DGeneralChrModel *pChrmodel,DWORD Event); void CharacterSoundPlay(CZ3DGeneralChrModel *pChrmodel, char *strSoundFile); void HeightFiledOnChrFixPos(); CollisionType CharacterCollisionType(CZ3DGeneralChrModel* pFindCharacter); static CRenderTexture m_pShadowTexture;//±×¸²ÀÚ CTexture *m_pCharacterLight;// ¹ã¿ë light void CameraTest(LPDIRECT3DDEVICE8 pd3dDevice); void SetHeightField(CHeightFieldScene *pHeightField){m_pHeightField=pHeightField;}; void UpdateFrame(int m_nFocuesCharacter); void ActionProcess(); //CZ3DGeneralChrModel* AddCharacter( Z3D_CHR_TYPE ct, Z3D_CHR_FACE_TYPE ft, Z3D_CHR_HAIR_STYLE hs, Z3D_CHR_DEFAULT_TYPE dt ); CZ3DGeneralChrModel* AddCharacter( const char* szGCMDSName, const char* szFaceType, const char* szHairStyle ); void DeleteCharacter(CZ3DGeneralChrModel* pDelChr); float GetCollisionChrCamera(vector3 vecStart,vector3 vecEnd); void HeightFieldShadowRender(LPDIRECT3DDEVICE8 pd3dDevice); void HeightFieldCharacterLightRender(LPDIRECT3DDEVICE8 pd3dDevice); void HeightFieldRainRender(LPDIRECT3DDEVICE8 pd3dDevice); void InHouseShadowRender(LPDIRECT3DDEVICE8 pd3dDevice); void CharacterLightSetting(int nChr,LPDIRECT3DDEVICE8 pd3dDevice); void Create(); void Render(LPDIRECT3DDEVICE8 pd3dDevice); void RenderEnv(LPDIRECT3DDEVICE8 pd3dDevice); CCharacterLightShadowManager(); virtual ~CCharacterLightShadowManager(); //===================== // CharacterGlare //===================== void RenderCharacterSpecular(LPDIRECT3DDEVICE8 pd3dDevice); }; #endif // !defined(AFX_CHARACTERLIGHTSHADOWMANAGER_H__33851909_688F_4AB6_B1C8_A6A5D8F8011A__INCLUDED_)