#ifndef SEALIFE_H #define SEALIFE_H #include "D3DEnum.h" #define WATER_COLOR 0x00008899 #define NUM_FISH 44 #define NUM_DOLPHINS 5 #define NUM_CAMFISH 1 #define NUM_FISH1 50 #define XEXTENT (40.0f*(rnd()-rnd())) #define YEXTENT (10.0f*(rnd())) #define ZEXTENT (30.0f*(rnd())) #define DOLPHINSPEED 35 //0.01f #define FISHSPEED 40 //0.01f #define TWEAK 0.005f #define TWEAKFISH 0.05f #define TURNDELTADOLPHIN .1 #define TURNDELTAFISH .1 #define PITCHCHANGE (3.1415 / 5000) #define PITCHDELTA 1 #define PITCHCHANGEFISH (3.1415 / 500) #define PITCHDELTAFISH 2 #define INITPITCH 0 #define DOLPHINUPDOWN(t) (-2*(float)cos(t)/6) #define FISHWIGGLE (3.1415/8)*sin(fTimeKey*10) #define FISHTYPE_DOLPHIN 0 #define FISHTYPE_FISH1 1 #define FISHTYPE_CAMERA 2 typedef struct t_FISH { D3DVECTOR loc; D3DVECTOR goal; D3DVECTOR dir; D3DMATRIX matrix; float angle_tweak; float turndelta; float yaw; float pitch; float pitchchange; float pitchdelta; float roll; float weight; float speed; float upDownFactor; DWORD type; } FISHSTRUCT; //----------------------------------------------------------------------------- // Name: class CMyD3DApplication // Desc: Main class to run this application. Most functionality is inherited // from the CD3DApplication base class. //----------------------------------------------------------------------------- class CSeaLife { // The DirectX file objects CD3DFile* m_pDolphinGroupObject; CD3DFile* m_pDolphinObject; CD3DFile* m_pFloorObject; CD3DFile* m_pFish1Object; // Vertex data from the file objects D3DVERTEX* m_pDolphinVertices; D3DVERTEX* m_pDolphin1Vertices; D3DVERTEX* m_pDolphin2Vertices; D3DVERTEX* m_pDolphin3Vertices; DWORD m_dwNumDolphinVertices; D3DVERTEX* m_pFloorVertices; DWORD m_dwNumFloorVertices; D3DMATRIX m_matDolphin; D3DMATRIX m_matFloor; FISHSTRUCT m_FishState[NUM_FISH]; LPDIRECT3DDEVICE7 m_pd3dDevice; D3DEnum_DeviceInfo *m_pDeviceInfo; public: //SeaLife(); HRESULT OneTimeSceneInit(); HRESULT InitDeviceObjects(LPDIRECT3DDEVICE7,D3DEnum_DeviceInfo*); HRESULT DeleteDeviceObjects(); HRESULT Render(LPDIRECT3DDEVICE7); HRESULT FrameMove(FLOAT); HRESULT FinalCleanup(); }; #endif // SEALIFE_H