forked from metin2/client
Solution refactoring and restructuring, removed Boost dependency, removed unused tools
This commit is contained in:
95
src/PRTerrainLib/TerrainType.h
Normal file
95
src/PRTerrainLib/TerrainType.h
Normal file
@ -0,0 +1,95 @@
|
||||
#ifndef __TERRAIn_TYPES__
|
||||
#define __TERRAIn_TYPES__
|
||||
|
||||
#include "../eterlib/GrpVertexBuffer.h"
|
||||
#include "../eterlib/GrpIndexBuffer.h"
|
||||
|
||||
#define TERRAIN_PATCHSIZE 16
|
||||
#define TERRAIN_SIZE 128
|
||||
#define TERRAIN_PATCHCOUNT TERRAIN_SIZE/TERRAIN_PATCHSIZE
|
||||
#define MAXTERRAINTEXTURES 256
|
||||
|
||||
typedef struct
|
||||
{
|
||||
long Active;
|
||||
long NeedsUpdate;
|
||||
LPDIRECT3DTEXTURE8 pd3dTexture;
|
||||
} TTerainSplat;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD TileCount[MAXTERRAINTEXTURES];
|
||||
DWORD PatchTileCount[TERRAIN_PATCHCOUNT*TERRAIN_PATCHCOUNT][MAXTERRAINTEXTURES];
|
||||
TTerainSplat Splats[MAXTERRAINTEXTURES];
|
||||
bool m_bNeedsUpdate;
|
||||
} TTerrainSplatPatch;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char used;
|
||||
short mat;
|
||||
|
||||
CGraphicVertexBuffer vb;
|
||||
CGraphicIndexBuffer ib;
|
||||
long VertexSize;
|
||||
|
||||
short NumIndices;
|
||||
|
||||
float minx, maxx;
|
||||
float miny, maxy;
|
||||
float minz, maxz;
|
||||
} TERRAIN_VBUFFER;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
char name[19];
|
||||
float ambi_r, ambi_g, ambi_b, ambi_a; /* Ambient Color */
|
||||
float diff_r, diff_g, diff_b, diff_a; /* Diffuse Color */
|
||||
float spec_r, spec_g, spec_b, spec_a; /* Specular Color */
|
||||
float spec_power; /* Specular power */
|
||||
} PR_MATERIAL;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* Public Settings */
|
||||
float PageUVLength;
|
||||
long SquaresPerTexture; /* Heightfield squares per texture (128 texels) */
|
||||
long SplatTilesX; /* Number of splat textures across map */
|
||||
long SplatTilesY; /* Number of splat textures down map */
|
||||
long DisableWrapping;
|
||||
long DisableShadow;
|
||||
long ShadowMode;
|
||||
long OutsideVisible;
|
||||
D3DXVECTOR3 SunLocation;
|
||||
} TTerrainGlobals;
|
||||
|
||||
/* Converts a floating point number to an integer by truncation, using
|
||||
the FISTP instruction */
|
||||
#define PR_FLOAT_TO_INTASM __asm \
|
||||
{ \
|
||||
__asm fld PR_FCNV \
|
||||
__asm fistp PR_ICNV \
|
||||
}
|
||||
|
||||
#define PR_FLOAT_TO_FIXED(inreal, outint) \
|
||||
{ \
|
||||
PR_FCNV = (inreal) * 65536.0f; \
|
||||
PR_FLOAT_TO_INTASM; \
|
||||
(outint) = PR_ICNV; \
|
||||
}
|
||||
|
||||
#define PR_FLOAT_TO_INT(inreal, outint) \
|
||||
{ \
|
||||
PR_FCNV = (inreal); \
|
||||
PR_FLOAT_TO_INTASM; \
|
||||
(outint) = PR_ICNV > PR_FCNV ? PR_ICNV - 1 : PR_ICNV; \
|
||||
}
|
||||
|
||||
#define PR_FLOAT_ADD_TO_INT(inreal, outint) \
|
||||
{ \
|
||||
PR_FCNV = (inreal); \
|
||||
PR_FLOAT_TO_INTASM; \
|
||||
(outint) += PR_ICNV; \
|
||||
}
|
||||
|
||||
#endif //__TERRAIn_TYPES__
|
Reference in New Issue
Block a user