Files
Client/GameTools/Zallad3D SceneClass/BspDataDefine.h
LGram16 dd97ddec92 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>
2025-11-29 20:17:20 +09:00

523 lines
7.3 KiB
C++

#include "3DMath.h"
#include "Vertex.h"
/*
*/
#define CONTENTS_DETAIL 0x8000000
#define MAX_SURFACE_VERTS 256
#define MAX_MAP_SHADER 0xff
#define MAX_MAP_MODELS 0x400
#define MAX_MAP_DRAW_SURFS 0x20000
#define MAX_MAP_DRAW_VERTS 0x80000
#define MAX_MAP_DRAW_INDEXES 0x80000
#define MAX_MAP_NODES 0x20000
#define MAX_MAP_LEAFS 0x20000
#define MAX_MAP_LEAFFACES 0x20000
#define MAX_MAP_LEAFBRUSHES 0x40000
#define MAX_MAP_BRUSHSIDES 0x20000
#define MAX_MAP_BRUSHES 0x8000
#define MAX_MAP_VISIBILITY 0x100000
#define MAX_STARTPOSITION 100
#define MAX_LIGHT 0xff
#define MAX_PATCH_SIZE 32
#define LUMP_ENTITIES 0
#define LUMP_SHADERS 1
#define LUMP_PLANES 2
#define LUMP_NODES 3
#define LUMP_LEAFS 4
#define LUMP_LEAFSURFACES 5
#define LUMP_LEAFBRUSHES 6
#define LUMP_MODELS 7
#define LUMP_BRUSHES 8
#define LUMP_BRUSHSIDES 9
#define LUMP_DRAWVERTS 10
#define LUMP_DRAWINDEXES 11
#define LUMP_FOGS 12
#define LUMP_SURFACES 13
#define LUMP_LIGHT 14
#define LUMP_LIGHTGRID 15
#define LUMP_VISIBILITY 16
#define HEADER_LUMPS 17
#define MAX_EXPANDED_AXIS 128
#define SUBDIVISION_LIMIT 8.0
#define PLANE_X 0
#define PLANE_Y 1
#define PLANE_Z 2
#define PLANE_NON_AXIAL 3
#define ON_EPSILON 0.01
class Lump
{
public:
int m_Fileofs;
int m_Filelen;
};
class DHeader
{
public:
int m_Ident;
int m_Version;
Lump m_Lump[HEADER_LUMPS];
};
#define PLANE_HASHES 1024
#define NORMAL_EPSILON 0.0001
#define DIST_EPSILON 0.02
class SPlane {
public:
vector3 m_vecNormal;
float m_fDist;
int m_Type;
SPlane *m_pHash_Chain;
};
#define MAX_POINTS_ON_WINDING 64
#define MAX_POINTS_ON_FIXED_WINDING 12
class SWinding {
public:
int m_nPoints;
vector3 m_vecPoints[MAX_POINTS_ON_FIXED_WINDING];
//vector3 m_vecPoints[4];
};
class SBspFace {
public:
SBspFace *m_pNext;
int m_nPlane;
int m_Priority;
bool m_bChecked;
bool m_bHint;
SWinding *m_pWinding;
};
class SSide {
public:
int m_nPlane;
float m_fTexMat[2][2];// Brush Primitive Texture matrix;
float m_fvecs[2][4];// Texture Coordinate mapping
SWinding *m_pWinding;
SWinding *m_pVisibleHull;
int m_nShader;
//struct shaderInfo_s *shaderInfo;
int m_Contents;
int m_SurfaceFlags;
int m_Value;
bool m_bVisible;
bool m_bBevel;
bool m_bBackSide;
};
#define MAX_BRUSH_SIDES 1024
class SBspBrush {
public:
SBspBrush *m_pNext;
int m_nEntity;
int m_nBrush;
int m_nShader;
//struct shaderInfo_s *contentShader;
int m_Contents;
bool m_bDetail;
bool m_bOpaque;
int m_nOutPut;
int m_PortalAreas[2];
SBspBrush *m_pOriginal;
vector3 m_vecMin,m_vecMax;
int m_nSides;
SSide m_Sides[6];
};
class SNode;
class SDrawSurRef
{
public:
SDrawSurRef *m_pNextRef;
int m_OutputNumber;
};
class SPortal {
public:
SPlane m_Plane;
SNode *m_pOnNode;
SNode *m_pNodes[2];
SPortal *m_pNext[2];
SWinding *m_pWinding;
bool m_bSideFound;
bool m_bHint;
SSide *m_pSide;
};
class SNode {
public:
int m_nPlane;
SNode *m_pParent;
vector3 m_vecMin,m_vecMax;
SBspBrush *m_pVolume;
SSide *m_Side;
SNode *m_pChildren[2];
bool m_bHint;
int m_nTinyPortals;
vector3 m_vecReferencePoint;
bool m_bOpaque;
bool m_bAreaPortal;
int m_Cluster;
int m_Area;
SBspBrush *m_pBrushList;
SDrawSurRef *m_pDrawSurfReferences;
int m_Occupied;
SPortal *m_pPortal;
};
class STree {
public:
SNode *m_pHeadNode;
SNode m_OutSideNode;
vector3 m_vecMin,m_vecMax;
};
class SDrawSurf
{
public:
int m_nShader;
SBspBrush *m_MapBrush;
SSide *m_Side;
SDrawSurf *m_pNextOnShader;
int m_nFog;
int m_nLightmap;
int m_nLightmapX,m_nLightmapY;
int m_LightmapWidth,m_LightmapHeight;
int m_nVerts;
BspVertex *m_pVerts;
int m_nIndex;
int *m_pIndex;
int m_nPlane;
vector3 m_vecLightmapOrigin;
vector3 m_vecLightmapVecs[3];
bool m_bPatch;
int m_PatchWidth;
int m_PatchHeight;
bool m_bMiscModel;
bool m_bFlareSurface;
};
class SEdgePoint
{
public:
float m_fIntercept;
vector3 m_vecXYZ;
SEdgePoint *m_pPrev,*m_pNext;
};
class SEdgeLine
{
public:
vector3 m_vecNormal1;
float m_fDist1;
vector3 m_vecNormal2;
float m_fDist2;
vector3 m_vecOrigin;
vector3 m_vecDir;
SEdgePoint m_Chain;
};
class SOriginalEdge {
public:
float m_fLength;
BspVertex *m_dv[2];
};
class SMesh
{
public:
int m_nWidth,m_nHeight;
BspVertex *m_pVerts;
};
class SParseMesh
{
public:
SParseMesh *m_pNext;
SMesh m_Mesh;
int m_nShader;
bool m_bGrouped;
SParseMesh *m_pGrupChain;
};
class DSurface
{
public:
int m_nShader;
int m_nFog;
int m_SurfaceType;
int m_FirstVert;
int m_nVerts;
int m_FirstIndex;
int m_nIndex;
int m_nLightmap;
int m_LightmapX,m_LightmapY;
int m_LightmapWidth,m_LightmapHeight;
vector3 m_vecLightmapOrigin;
vector3 m_vecLightmap[3];
int m_PatchWidth;
int m_PatchHeight;
};
class DPlane
{
public:
vector3 m_vecNormal;
float m_fDist;
};
class DModel
{
public:
vector3 m_vecMin,m_vecMax;
int m_nFirstSurface,m_nSurfaces;
int m_nFirstBrush,m_nBrushes;
};
class DNode
{
public:
int m_nPlane;
int m_Children[2];
vector3 m_min;
vector3 m_max;
};
class DLeaf
{
public:
int m_Cluster;
int m_Area;
vector3 m_min;
vector3 m_max;
int m_FirstLeafSurface;
int m_nLeafSurfaces;
int m_FirstLeafBrush;
int m_nLeafBrushes;
};
class DBrush
{
public:
int m_FirstSide;
int m_nSides;
int m_nShader;
};
class DBrushSide
{
public:
int m_nPlane;
int m_nShader;
};
class DVisiblity
{
public:
int nClusters;
int RowSize;
unsigned char data[1];
};
class SPassage
{
public:
SPassage *m_pNext;
BYTE m_Cansee[1];
};
typedef enum
{
stat_none,
stat_working,
stat_done
}Vstatus;
class VPortal
{
public:
int m_Num;
bool m_bHint;
bool m_bRemoved;
SPlane m_Plane;
int m_Leaf;
vector3 m_vecOrigin;
float m_fRadius;
SWinding *m_pWinding;
Vstatus m_Status;
BYTE *m_pPortalFront;
BYTE *m_pPortalFlood;
BYTE *m_pPortalVis;
int m_nMightsee;
SPassage *m_Passage;
};
#define MAX_PORTALS_ON_LEAF 128
class Leaf
{
public:
int m_nPortals;
int m_Merged;
VPortal *m_pPortals[MAX_PORTALS_ON_LEAF];
};
#define MAX_MAP_PORTALS 65536
#define MAX_SEPERATORS 64
#define MAX_PORTALS 32768
class PStack
{
public:
BYTE m_Mightsee[MAX_PORTALS/8];
PStack *m_pNext;
Leaf *m_pLeaf;
VPortal *m_pPortal;
SWinding *m_pSource;
SWinding *m_pPass;
SWinding m_Winding[3];
int m_FreeWindings[3];
SPlane m_PortalPlane;
int m_Depth;
SPlane m_Seperators[2][MAX_SEPERATORS];
int m_nSeperators[2];
};
class ThreadData
{
public:
VPortal *m_pBase;
int m_cChains;
PStack m_PStackHead;
};
class DShader
{
public:
char m_strTextureName[256];
};
class DLight
{
public:
vector3 m_vecLightPos;
color m_LightColor;
float m_fLightRange;
int m_Photons;
};
class TraceT
{
public:
vector3 m_vecFilter;
vector3 m_vecHit;
float m_fHitFraction;
bool m_bPassSolid;
};
class TraceWorkT
{
public:
vector3 m_vecStart,m_vecEnd;
int m_nOpenLeafs;
int m_OpenLeafNumbers[MAX_MAP_LEAFS];
TraceT *m_Trace;
int m_PatchShadows;
};
#define TRACE_ON_EPSILON 0.1
class TNode
{
public:
int m_Type;
vector3 m_vecNormal;
float m_fDist;
int m_Children[2];
int m_nPlaneNum;
};
#define MAX_TNODES (MAX_MAP_NODES*4)
#define TRACE_ON_EPSILON 0.1
class CFaceT
{
public:
float m_fSurface[4];
int m_nBoundaries;
float m_fBoundaries[4][4];
vector3 m_vecPoint[4];
float m_fTextureMatrix[2][4];
};
class SurfaceTestT
{
public:
vector3 m_vecMins,m_vecMaxs;
vector3 m_vecOrigins;
float m_fRadius;
bool m_bPatch;
int m_nFacets;
CFaceT *m_Facets;
int m_nShader;
};