#pragma once #include #include #include #include #include "ship.h" #define MAXSHIPS 2 class OceanEffect { LPDIRECT3DDEVICE9 device; LPD3DXEFFECT effect; LPDIRECT3DINDEXBUFFER9 oceanIndexBuffer; LPDIRECT3DVERTEXBUFFER9 oceanVertexBuffer; CFirstPersonCamera* camera; LPDIRECT3DCUBETEXTURE9 environmentCube; LPDIRECT3DTEXTURE9 waterTexture; LPDIRECT3DTEXTURE9 elevationTexture; LPD3DXMESH ship; LPDIRECT3DINDEXBUFFER9 shipIndexBuffer; LPDIRECT3DVERTEXBUFFER9 shipVertexBuffer; LPDIRECT3DVERTEXDECLARATION9 shipDeclaration; LPDIRECT3DVERTEXBUFFER9 instanceVertexBuffer; Ship ships[MAXSHIPS]; int nShips; struct ShipInstanceData { D3DXVECTOR3 tangent; D3DXVECTOR3 binormal; D3DXVECTOR3 shipPos; } shipLocations[MAXSHIPS]; LPD3DXMESH optimizedShip; D3DXMATRIX downScale, shipWorldViewProjMatrix, finalWorld; ID3DXFont* g_pFont; // Font for drawing text ID3DXSprite* g_pTextSprite; // Sprite for batching draw text calls std::vector Mtrls; std::vector textures; ID3DXBuffer* adjBuffer; ID3DXBuffer* mtrlBuffer; DWORD numMtrls; float testRotation; float time; public: OceanEffect(LPDIRECT3DDEVICE9 device); ~OceanEffect(void); void render(); void move(double time, double elapsedTime); void message(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void applyShip(); };