#ifndef __CWAVELINE_H__ #define __CWAVELINE_H__ #include #include "texture.h" #include "BaseDataDefine.h" #include #include using namespace std; #define WAVENUM 25 #define BACKWAVE 3 // ½ÃÀÛ ¶óÀΰú backwaveÀÇ °Å¸® #define WAVEBACKLENGTH 90.0f #define WAVEFWDLENGTH -1800.0f #define WAVEUNITVOT 0.2f #define WAVEVECLENGTH 1000.0f #define WAVETERMFRAME 300 #define WAVESHAKE 15.0f; // plane texture ¹Ýº¹ °Å¸® #define PLANEWRAP 250000.0f // ÆÄµµ Àüü¸¦ ¸îµîºÐÇÏ¿© ¾ËÆÄ°ªÀ» ÁÙÁö.. #define WAVESLIP 12 enum WaveType { WAVEFWDMOVE, WAVEBACKMOVE, WAVEPLANE, WAVEPLANE2, }; class CWaveLine { class CWaveVertex{ public: float x,y,z; DWORD color; float s,t; CWaveVertex() { x = y = z = 0.0f; color = D3DCOLOR_ARGB(255,255,255,255); s = t = 0.0f; } ~CWaveVertex() {} }; class CWavePoint{ public: int m_WaveValue; // Æ÷Áö¼Ç D3DXVECTOR3 m_Pos; // speed float m_Speed; // °¡¼Óµµ float m_Aspeed; // forward vector [ ½ÇÁ¦ À̵¿°Å¸® = FwdVec * Speed] D3DXVECTOR3 m_FwdVec; // alpha float m_Alpha; // alpha Áõ°¨Ä¡ float m_UnitAlpha; // º¸°£ Á¡ ±îÁö Ãß°¡µÈ ÈÄÀÇ À§Ä¡ À妽º int m_PointIndex; bool m_lie; CWavePoint() { m_WaveValue = WAVEFWDMOVE; m_lie = false; m_Pos.x = m_Pos.y = m_Pos.z = 0.0f; m_Speed = 1.0f; m_Aspeed = 0.01f; m_FwdVec.x = m_FwdVec.y = m_FwdVec.z = 0.0f; m_Alpha = 0.0f; m_UnitAlpha = 0.0f; m_PointIndex = -1; } ~CWavePoint() { } }; public: // up vector D3DXVECTOR3 m_Normal; // quad point list vector m_WaveList; CWavePoint *m_BackupList; vector m_WaveLayer; vector m_WaveBubble; // quad line point int m_PointNum; // º¸°£ Á¡±îÁö Ãß°¡µÈ point list vectorm_Wave; // º¸°£Á¡ Ãß°¡µÈ point number int m_WaveNum; // º¸°£ Á¤µµ (º¸°£Á¡ÀÇ °£°Ý) float m_UnitInterpol; // Á¡µéÀ» »ý¼º½Ã¿¡ ¾ó¸¶³ª Èçµé¾î ÁÙÁö D3DXVECTOR3 m_ShakeValue; // Á¡µéÀ» ´Ã¸®°Ô ÇÒ¶§ ÀÌ¿ëµÇ´Â Á¡ D3DXVECTOR3 m_WaveCenter; int m_DownLayerNum; int m_UpLayerNum; // quad strip Number int m_LayerNum; // quad »çÀÌÁî(¾Õ º¤ÅÍ length) int m_Length; // quad strip °£ÀÇ »ý¼º ÇÁ·¹ÀÓ Â÷ int m_CreateFrame; LPDIRECT3DVERTEXBUFFER8 *m_Vert; LPDIRECT3DVERTEXBUFFER8 *m_Bubble; LPDIRECT3DDEVICE8 m_Device; CTexture *m_WaveTex; int m_WaveTexNum; bool m_Pick; unsigned long m_BeforeTime; unsigned long m_CurrentTime; int tcount; int kcount; float t_value1; float t_value2; float t_value3; CWaveLine(); CWaveLine(LPDIRECT3DDEVICE8 ); ~CWaveLine(); void Render(); void Update(); //Insert Point void InsertPoint(D3DXVECTOR3 ); void InsertPoint(float x,float y,float z); //Delete void DeletePoint(D3DXVECTOR3 ); void DeletePoint(float x,float y,float z); void SetDownLayerNum(int num) {m_DownLayerNum = num;} void SetUpLayerNum(int num) {m_UpLayerNum = num;} void SetDevice(LPDIRECT3DDEVICE8 de) {m_Device = de; } void SetInterpol(float vot); void CreateTexture(int num); void SetTexture(int num,char *); void SetVertexBuffer(int i,int type); void SetBubbleBuffer(int i,int type); //¿øº» vertex list ÀúÀå void StoreList(); //list µÇµ¹¸² void LoadList(); void SetNormal(float x,float y,float z) { m_Normal.x = x;m_Normal.y = y;m_Normal.z = z; } void SetNormal(D3DXVECTOR3 n) { m_Normal = n;} void SetCreateFrame(int cf) {m_CreateFrame = cf;} void SetLayerNum(int lnum) { m_LayerNum = lnum;} void SetQuadLength(float l) { m_Length = l;} void SetPick(bool b) {m_Pick = b;} //wave other info setting void SetWavePointSetting(CWavePoint *pt); // º¸°£Á¡ »ý¼º void CreateInterpolation(int index,int type); void CreateVertexBuffer(); void ResetLayer(int index,int type); // true ÀÌ¸é ´Ã¾î³ª±â ½ÃÀÛ false ÀÌ¸é ¾Æ¹« º¯È­ ¾øÀ½ bool Test_Vector(CWavePoint ,int type); void MoveVertex(CWavePoint *); }; #endif