145 lines
2.7 KiB
C
145 lines
2.7 KiB
C
#ifndef GAMEWORLD_H
|
|
#define GAMEWORLD_H
|
|
|
|
enum nodeType : __int32
|
|
{
|
|
NODE_BADNODE = 0x0,
|
|
NODE_PATHNODE = 0x1,
|
|
NODE_COVER_STAND = 0x2,
|
|
NODE_COVER_CROUCH = 0x3,
|
|
NODE_COVER_CROUCH_WINDOW = 0x4,
|
|
NODE_COVER_PRONE = 0x5,
|
|
NODE_COVER_RIGHT = 0x6,
|
|
NODE_COVER_LEFT = 0x7,
|
|
NODE_COVER_WIDE_RIGHT = 0x8,
|
|
NODE_COVER_WIDE_LEFT = 0x9,
|
|
NODE_CONCEALMENT_STAND = 0xA,
|
|
NODE_CONCEALMENT_CROUCH = 0xB,
|
|
NODE_CONCEALMENT_PRONE = 0xC,
|
|
NODE_REACQUIRE = 0xD,
|
|
NODE_BALCONY = 0xE,
|
|
NODE_SCRIPTED = 0xF,
|
|
NODE_NEGOTIATION_BEGIN = 0x10,
|
|
NODE_NEGOTIATION_END = 0x11,
|
|
NODE_TURRET = 0x12,
|
|
NODE_GUARD = 0x13,
|
|
NODE_NUMTYPES = 0x14,
|
|
NODE_DONTLINK = 0x14,
|
|
};
|
|
|
|
struct PathLink
|
|
{
|
|
float fDist;
|
|
unsigned __int16 nodeNum;
|
|
unsigned __int8 disconnectCount;
|
|
unsigned __int8 negotiationLink;
|
|
unsigned __int8 ubBadPlaceCount[4];
|
|
};
|
|
|
|
struct PathNodeConstant
|
|
{
|
|
nodeType type;
|
|
unsigned __int16 spawnflags;
|
|
unsigned __int16 targetname;
|
|
unsigned __int16 script_linkName;
|
|
unsigned __int16 script_noteworthy;
|
|
unsigned __int16 target;
|
|
unsigned __int16 animscript;
|
|
int animscriptfunc;
|
|
float vOrigin[3];
|
|
float fAngle;
|
|
float forward[2];
|
|
float fRadius;
|
|
float minUseDistSq;
|
|
__int16 wOverlapNode[2];
|
|
__int16 wChainId;
|
|
__int16 wChainDepth;
|
|
__int16 wChainParent;
|
|
unsigned __int16 totalLinkCount;
|
|
PathLink *Links;
|
|
};
|
|
|
|
struct pathnode_dynamic_t
|
|
{
|
|
void *pOwner;
|
|
int iFreeTime;
|
|
int iValidTime[3];
|
|
int inPlayerLOSTime;
|
|
__int16 wLinkCount;
|
|
__int16 wOverlapCount;
|
|
__int16 turretEntNumber;
|
|
__int16 userCount;
|
|
};
|
|
|
|
struct pathnode_t;
|
|
struct pathnode_transient_t
|
|
{
|
|
int iSearchFrame;
|
|
pathnode_t *pNextOpen;
|
|
pathnode_t *pPrevOpen;
|
|
pathnode_t *pParent;
|
|
float fCost;
|
|
float fHeuristic;
|
|
float costFactor;
|
|
};
|
|
|
|
struct pathnode_t
|
|
{
|
|
PathNodeConstant constant;
|
|
pathnode_dynamic_t dynamic;
|
|
pathnode_transient_t transient;
|
|
};
|
|
|
|
struct PathBaseNode
|
|
{
|
|
float vOrigin[3];
|
|
unsigned int type;
|
|
};
|
|
|
|
struct PathNodeTreeNodes
|
|
{
|
|
int nodeCount;
|
|
unsigned __int16 *nodes;
|
|
};
|
|
|
|
struct PathNodeTree;
|
|
union PathNodeTreeInfo
|
|
{
|
|
PathNodeTree *child[2];
|
|
PathNodeTreeNodes s;
|
|
};
|
|
|
|
struct PathNodeTree
|
|
{
|
|
int axis;
|
|
float dist;
|
|
PathNodeTreeInfo u;
|
|
};
|
|
|
|
struct PathData
|
|
{
|
|
unsigned int nodeCount;
|
|
pathnode_t *nodes;
|
|
PathBaseNode *basenodes;
|
|
unsigned int chainNodeCount;
|
|
unsigned __int16 *chainNodeForNode;
|
|
unsigned __int16 *nodeForChainNode;
|
|
int visBytes;
|
|
unsigned __int8 *pathVis;
|
|
int nodeTreeCount;
|
|
PathNodeTree *nodeTree;
|
|
};
|
|
|
|
struct GameWorldSp
|
|
{
|
|
const char *name;
|
|
PathData path;
|
|
};
|
|
|
|
struct GameWorldMp
|
|
{
|
|
const char *name;
|
|
};
|
|
|
|
#endif // GAMEWORLD_H
|