Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code: - Client: Game client source (moved to Client/Client/) - Server: Game server source - GameTools: Development tools - CryptoSource: Encryption utilities - database: Database scripts - Script: Game scripts - rylCoder_16.02.2008_src: Legacy coder tools - GMFont, Game: Additional resources 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
442
GameTools/Effect/CGemRender.h
Normal file
442
GameTools/Effect/CGemRender.h
Normal file
@@ -0,0 +1,442 @@
|
||||
#ifndef __CGEMRENDER_H__
|
||||
#define __CGEMRENDER_H__
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include "texture.h"
|
||||
#include "BaseDataDefine.h"
|
||||
|
||||
#include <d3dx8.h>
|
||||
#include <d3d8.h>
|
||||
|
||||
|
||||
#define BUF_SIZE 256
|
||||
#define VOT 1.0f
|
||||
#define GEM_HEADER "GemDataFile\n"
|
||||
|
||||
|
||||
class CGemRender {
|
||||
public:
|
||||
void SetClearBuffer(bool b);
|
||||
bool m_bClearBuffer;
|
||||
class GemTexture {
|
||||
public:
|
||||
CTexture *m_Tex;
|
||||
int TexNum;
|
||||
GemTexture() {
|
||||
m_Tex = NULL;
|
||||
TexNum = 0;
|
||||
}
|
||||
~GemTexture() {
|
||||
if(m_Tex) {
|
||||
/* if(TexNum >1)
|
||||
delete[] m_Tex;
|
||||
else*/
|
||||
delete[] m_Tex;
|
||||
}
|
||||
}
|
||||
};
|
||||
class GemSubFace{
|
||||
public:
|
||||
int *sub;
|
||||
int *sub_mat;
|
||||
int sub_num;
|
||||
GemSubFace() {
|
||||
sub = NULL;
|
||||
sub_mat = NULL;
|
||||
sub_num = 0;
|
||||
}
|
||||
~GemSubFace() {
|
||||
delete[] sub;
|
||||
delete[] sub_mat;
|
||||
}
|
||||
};
|
||||
class GemVertex{
|
||||
public:
|
||||
float x,y,z;
|
||||
float nx,ny,nz;
|
||||
float s,t;
|
||||
GemVertex() {
|
||||
x = y = z = 0.0f;
|
||||
nx = ny = nz = 0.0f;
|
||||
s = t = 0.0f;
|
||||
}
|
||||
~GemVertex() {}
|
||||
};
|
||||
class GemRotKey {
|
||||
public:
|
||||
int frame;
|
||||
D3DXVECTOR4 rot;
|
||||
|
||||
GemRotKey() {
|
||||
frame = 0;
|
||||
rot.x = rot.y = rot.z = rot.w = 0.0f;
|
||||
}
|
||||
|
||||
~GemRotKey(){
|
||||
}
|
||||
};
|
||||
|
||||
class GemPosKey{
|
||||
public:
|
||||
int frame;
|
||||
bool bez;
|
||||
D3DXVECTOR3 pos;
|
||||
D3DXVECTOR3 intan;
|
||||
D3DXVECTOR3 outtan;
|
||||
GemPosKey() {
|
||||
frame = 0;
|
||||
bez = false;
|
||||
pos.x = pos.y = pos.z = 0.0f;
|
||||
intan.x = intan.y = intan.z = 0.0f;
|
||||
outtan.x = outtan.y = outtan.z = 0.0f;
|
||||
}
|
||||
~GemPosKey(){
|
||||
}
|
||||
};
|
||||
|
||||
class GemScaleKey{
|
||||
public:
|
||||
int frame;
|
||||
D3DXVECTOR3 scale;
|
||||
GemScaleKey() {
|
||||
frame = 0;
|
||||
scale.x = scale.y = scale.z= 1.0f;
|
||||
}
|
||||
~GemScaleKey(){
|
||||
}
|
||||
};
|
||||
|
||||
class GemVisKey{
|
||||
public:
|
||||
int frame;
|
||||
float vis;
|
||||
GemVisKey(){
|
||||
frame = 0;
|
||||
vis = 1.0f;
|
||||
}
|
||||
~GemVisKey(){
|
||||
}
|
||||
};
|
||||
|
||||
class GemObject {
|
||||
public:
|
||||
char m_Name[BUF_SIZE];
|
||||
char m_ParentName[BUF_SIZE];
|
||||
bool m_bParent;
|
||||
|
||||
D3DXMATRIX m_TmMatrix;
|
||||
|
||||
// vertex info
|
||||
D3DXVECTOR2 *m_Coord;
|
||||
D3DXVECTOR3 *m_CoordFace;
|
||||
|
||||
D3DXVECTOR3 *m_Vert;
|
||||
D3DXVECTOR4 *m_Face;
|
||||
D3DXVECTOR3 *m_Fnormal;
|
||||
D3DXVECTOR3 *m_Normal;
|
||||
int m_MatId;
|
||||
|
||||
int m_Frame;
|
||||
int m_CoordNum;
|
||||
int m_iVertexStartCount;
|
||||
|
||||
int m_VertexNum;
|
||||
int m_FaceNum;
|
||||
// anikey info
|
||||
int m_RotKeyNum;
|
||||
int m_PosKeyNum;
|
||||
int m_ScaleKeyNum;
|
||||
int m_VisKeyNum;
|
||||
//morphing
|
||||
int m_MorphNum;
|
||||
// <20>߰<EFBFBD><DFB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool m_Bil1;
|
||||
bool m_Bil2;
|
||||
bool m_Bil3;
|
||||
// multy uv ani
|
||||
bool m_Multy;
|
||||
bool m_TexAni;
|
||||
bool m_RandAni;
|
||||
bool m_RandStartTexAni; //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ٸ<EFBFBD> <20>ؽ<EFBFBD><D8BD><EFBFBD> <20>ִ<EFBFBD> flag
|
||||
bool m_RandStartSetting; //start <20>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD>
|
||||
bool m_Zenable;
|
||||
bool m_Opacity;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ǵ<EFBFBD> texture <20><><EFBFBD><EFBFBD>
|
||||
int m_AniTextureNum;
|
||||
int m_CurrentAniTexture;
|
||||
int m_BeforeAniTexture;
|
||||
|
||||
int m_Red;
|
||||
int m_Green;
|
||||
int m_Blue;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
bool m_bH;
|
||||
// cullmode on flag
|
||||
bool m_bCull;
|
||||
|
||||
float m_AniChangeFrame;
|
||||
//tex ani start frame
|
||||
float m_StartTexAniFrame;
|
||||
|
||||
bool m_Zbuffer;
|
||||
bool m_bDecal;
|
||||
|
||||
GemObject *m_Morph;
|
||||
|
||||
|
||||
|
||||
GemVisKey *m_Vis;
|
||||
GemScaleKey *m_Scale;
|
||||
GemPosKey *m_Pos;
|
||||
GemRotKey *m_Rot;
|
||||
DWORD m_Color;
|
||||
// vertex buffer <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> vert pointer
|
||||
GemVertex *m_VertexBuffer;
|
||||
bool m_bInterpol;
|
||||
|
||||
GemObject() {
|
||||
|
||||
m_Multy = false;
|
||||
m_RotKeyNum = m_PosKeyNum = m_ScaleKeyNum = m_VisKeyNum = 0;
|
||||
m_Vis = NULL;
|
||||
m_Scale = NULL;
|
||||
m_Pos = NULL;
|
||||
m_Rot = NULL;
|
||||
m_Red = m_Green = m_Blue = 255;
|
||||
m_bH = false;
|
||||
//morphing vertex
|
||||
m_Morph = NULL;
|
||||
m_MorphNum = 0;
|
||||
m_StartTexAniFrame = 0.0f;
|
||||
m_Zbuffer = false;
|
||||
m_Zenable = false;
|
||||
|
||||
m_bCull = false;
|
||||
m_Color = D3DCOLOR_ARGB(255,255,255,255);
|
||||
|
||||
m_MatId = -1;
|
||||
|
||||
m_Frame = -1;
|
||||
m_VertexNum = 0;
|
||||
m_FaceNum = 0;
|
||||
m_CoordNum =0;
|
||||
|
||||
m_Coord = NULL;
|
||||
m_CoordFace = NULL;
|
||||
|
||||
m_Vert = NULL;
|
||||
m_Face = NULL;
|
||||
m_Fnormal = NULL;
|
||||
m_Normal = NULL;
|
||||
m_bParent = false;
|
||||
m_Bil1 = m_Bil2 = m_Bil3 = false;
|
||||
m_TexAni = false;
|
||||
m_RandAni = false;
|
||||
m_RandStartTexAni = false;
|
||||
m_RandStartSetting = false;
|
||||
m_Opacity = false;
|
||||
m_AniChangeFrame = 0.0f;
|
||||
m_AniTextureNum = 0;
|
||||
m_CurrentAniTexture = 0;
|
||||
m_BeforeAniTexture = 0;
|
||||
D3DXMatrixIdentity(&m_TmMatrix);
|
||||
memset(m_Name,0,sizeof(char)*BUF_SIZE);
|
||||
memset(m_ParentName,0,sizeof(char)*BUF_SIZE);
|
||||
m_VertexBuffer = NULL;
|
||||
m_bInterpol = true;
|
||||
m_bDecal = false;
|
||||
m_iVertexStartCount = 0;
|
||||
|
||||
}
|
||||
~GemObject() {
|
||||
if(m_Scale != NULL)
|
||||
delete[] m_Scale;
|
||||
if(m_Vis != NULL)
|
||||
delete[] m_Vis;
|
||||
if(m_Vert != NULL)
|
||||
delete[] m_Vert;
|
||||
if(m_Face != NULL)
|
||||
delete[] m_Face;
|
||||
if(m_Coord != NULL)
|
||||
delete[] m_Coord;
|
||||
if(m_CoordFace != NULL)
|
||||
delete[] m_CoordFace;
|
||||
if(m_Fnormal != NULL)
|
||||
delete[] m_Fnormal;
|
||||
if(m_Normal != NULL)
|
||||
delete[] m_Normal;
|
||||
if(m_Rot)
|
||||
delete[] m_Rot;
|
||||
if(m_Pos)
|
||||
delete[] m_Pos;
|
||||
if(m_Morph)
|
||||
delete[] m_Morph;
|
||||
if(m_VertexBuffer)
|
||||
delete[] m_VertexBuffer;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
class GemMaterial {
|
||||
public:
|
||||
char m_TextureName[BUF_SIZE];
|
||||
int m_SubNum;
|
||||
GemMaterial *m_Sub;
|
||||
GemMaterial() {
|
||||
memset(m_TextureName,0,BUF_SIZE);
|
||||
m_Sub = NULL;
|
||||
m_SubNum = 0;
|
||||
}
|
||||
~GemMaterial() {
|
||||
if(m_SubNum)
|
||||
delete[] m_Sub;
|
||||
}
|
||||
};
|
||||
CGemRender();
|
||||
~CGemRender();
|
||||
|
||||
void SetTransMatrix(D3DXMATRIX m) {m_TrMatrix = m;}
|
||||
bool CheckPosition(D3DXVECTOR3 center,D3DXVECTOR3 user);
|
||||
void SetXrot(float rot) { m_Xrot = rot;}
|
||||
void SetYrot(float rot) { m_Yrot = rot;}
|
||||
void SetZrot(float rot) { m_Zrot = rot;}
|
||||
|
||||
|
||||
void ScaleAni(int object_index,D3DXMATRIX &);
|
||||
void PosAni(int object_index,D3DXMATRIX &);
|
||||
void RotAni(int object_index,D3DXMATRIX &);
|
||||
|
||||
bool LoadGemFile(char *,LPDIRECT3DDEVICE8 ,bool bVisibility = true);
|
||||
bool LoadUvFile(char *);
|
||||
|
||||
bool LoadMorph(int );
|
||||
void MsgPrint(char *);
|
||||
void SetInitBuffer();
|
||||
|
||||
void SetVertexBuffer(int index,GemVertex *ppTmp);
|
||||
void SetDecalBuffer(int index); // Vertex Buffer <20><> <20><><EFBFBD><EFBFBD>
|
||||
void SetDecalBufferInit(int index); // Decal Buffer Init
|
||||
|
||||
void SetStartFrame(float s);
|
||||
|
||||
void SetCash(bool b) { m_bCash = b;}
|
||||
|
||||
void Render();
|
||||
void RenderObject(int object_index,GemVertex **ppTmp);
|
||||
|
||||
void Update();
|
||||
void Update(D3DXVECTOR3 center,D3DXVECTOR3 user);
|
||||
|
||||
void UnUpdate();
|
||||
bool VertexInterpolation(int index);
|
||||
void LoadSubFace(int object_index);
|
||||
void LoadTexture();
|
||||
// set zbuffer cullface all object
|
||||
void SetCullZbuffer(bool );
|
||||
// my effect setting
|
||||
void SetMine(bool t);
|
||||
|
||||
void LoadTexAni(int object_index);
|
||||
bool VisAni(int object_index);
|
||||
void CreateAniTm(int index,D3DXMATRIX &,D3DXMATRIX &);
|
||||
void SetChangeAniFrame(int object_index,float f);
|
||||
void SetStartTexAniFrame(int object_index,float f);
|
||||
int GetMaxFrame() {return (m_EndF / m_UnitF);}
|
||||
// effect scale setting func
|
||||
void SetScale(float x,float y,float z);
|
||||
void SetEffectPos(float x,float y,float z);
|
||||
void SetEffectPos(D3DXVECTOR3 pos);
|
||||
void SetCurrentFrame(float f);
|
||||
void SetCurrentFrame(float f,int *,DWORD *,bool *,bool update = false);
|
||||
|
||||
void SetSrcBlend(DWORD s) {m_SrcBlend = s;}
|
||||
void SetDstBlend(DWORD d) {m_DstBlend = d;}
|
||||
void SetBlend(DWORD s,DWORD d) { m_SrcBlend = s; m_DstBlend = d;}
|
||||
void SetColor(int object_index,int r,int g,int b);
|
||||
void SetNullTexture(bool b) {m_bNullTexture = b;}
|
||||
void SetPickObject(int index);
|
||||
void SetVot(float v) {m_Vot = v;}
|
||||
void SetLoop(bool b) {m_bLoop = b;}
|
||||
int GetObjectNum() {return m_ObjectNum;}
|
||||
void SetStartTexAni(bool b) {m_bTexAni = b;}
|
||||
void SetAxis(D3DXMATRIX & );
|
||||
void GetAxis(float ,float ,float ,float );
|
||||
void GetAxis(D3DXQUATERNION tmp) {m_AxisSet = true; m_Axis = tmp;}
|
||||
// ANI MESH USE
|
||||
void SetRandAni(bool b) {m_RandAni = b;}
|
||||
void SetRandAniMax(float s) {m_RandAniMax = s;}
|
||||
void SetRandAniMin(float s) {m_RandAniMin = s;}
|
||||
void SetSwitchAni(bool b) {m_SwitchAni = b;}
|
||||
void SetAniRad(float r) {m_AniRad = r;}
|
||||
// light <20><><EFBFBD><EFBFBD> mesh
|
||||
void SetLight(bool b) {m_bLight = b;}
|
||||
void SetVertexMorphData(int i);
|
||||
|
||||
char *GetFileName() {return m_FileName;}
|
||||
|
||||
FILE *m_GemFile;
|
||||
//multy uv
|
||||
int m_bMulty;
|
||||
|
||||
int m_StartF;
|
||||
int m_EndF;
|
||||
int m_UnitF;
|
||||
int m_ObjectNum;
|
||||
int m_PickObject;
|
||||
|
||||
int m_MatNum;
|
||||
bool m_bNullTexture;
|
||||
bool m_bLoop;
|
||||
bool m_bCash;
|
||||
|
||||
bool m_bTexAni;
|
||||
bool m_Mine;
|
||||
bool m_bDecal;
|
||||
|
||||
DWORD m_SrcBlend,m_DstBlend;
|
||||
|
||||
float m_CurrentF;
|
||||
LPDIRECT3DDEVICE8 m_Device;
|
||||
D3DXMATRIX m_Scale;
|
||||
D3DXMATRIX m_TrMatrix;
|
||||
D3DXVECTOR3 m_Pos;
|
||||
D3DXQUATERNION global;
|
||||
D3DXQUATERNION m_Axis;
|
||||
bool m_AxisSet;
|
||||
//ANI MESH
|
||||
float m_Xrot,m_Yrot,m_Zrot;
|
||||
bool m_RandAni;
|
||||
float m_RandAniMax;
|
||||
float m_RandAniMin;
|
||||
float m_AniRad;
|
||||
bool m_SwitchAni;
|
||||
bool m_StartSwitch;
|
||||
GemMaterial *m_Mtl;
|
||||
|
||||
|
||||
GemObject *m_Object;
|
||||
GemSubFace *m_Sub;
|
||||
|
||||
LPDIRECT3DVERTEXBUFFER8 m_ObjectVertex;
|
||||
int m_iTotalVertexNum;
|
||||
int m_iTotalFaceNum;
|
||||
|
||||
GemTexture *m_Texture;
|
||||
GemTexture *m_TexAni;
|
||||
|
||||
int m_TexNum;
|
||||
float m_Vot;
|
||||
|
||||
//// vertex buffer <20><><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD> vert pointer
|
||||
//GemVertex *m_Vert;
|
||||
int VbufferNum;
|
||||
// multy uv ani
|
||||
CGemRender *m_Multy;
|
||||
bool m_bLight;
|
||||
char m_FileName[256];
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user