Files
tech5/source/engine/aas2file/aastraversalchaindata.h
2026-08-09 02:48:01 -07:00

86 lines
2.4 KiB
C++

#pragma once
#include "idlib/index.h"
#include "idlib/math/vector.h"
#include <cstdint>
enum aasType_t : int {
AAS_MONSTER16 = 0,
AAS_MONSTER24 = 1,
AAS_MONSTER32 = 2,
AAS_MONSTER48 = 3,
AAS_MONSTER96 = 4,
AAS_MONSTER128 = 5,
AAS_MONSTER160 = 6,
AAS_FILE_EXTENSION_MAX = 8
};
enum invalidReachability_t : int { INVALID_REACHABILITY_INDEX = -1 };
enum invalidAASAnimIndex_t : int { INVALID_AAS_ANIM_INDEX = -1 };
enum invalidAASTree_t : int { INVALID_AAS_TREE_INDEX = -1 };
enum invalidAASDependencyIndex_t : int { INVALID_AAS_DEPENDENCY_NODE = -1 };
enum invalidAASInteractionEntIndex_t : int { INVALID_AAS_INTERACTION_ENT = -1 };
enum invalidAASTraversalNameIndex_t : int { INVALID_AAS_TRAVERSAL_NAME = -1 };
struct aas2Traversal_t {
idVec3 startPoint;
idVec3 endPoint;
idQuantizedVec3 orientationFwd;
idQuantizedVec3 extrusionFwd;
idIndex<short, invalidAASAnimIndex_t> animIndex;
idIndex<short, invalidReachability_t> reachabilityIndex;
idIndex<short, invalidAASDependencyIndex_t> dependencyIndex;
idIndex<short, invalidAASInteractionEntIndex_t> interactionEntIndex;
std::int16_t extrusionDistance;
std::int16_t startAreaNum;
std::int16_t endAreaNum;
idIndex<short, invalidAASTraversalNameIndex_t> traversalNameIndex;
std::uint32_t flags;
aas2Traversal_t();
void Clear();
void CalcExtrusionPoint(idVec3& extrusionPoint, const idVec3& up) const;
};
using aasTraversalNameIndex_t =
idIndex<short, invalidAASTraversalNameIndex_t>;
class idDeclAnimWeb;
class idAASTraversalChainData {
public:
enum localFlags_t : int {
EVASION_ONLY = 0x1,
EMERGENCY_ONLY = 0x2,
COMBAT_ONLY = 0x4,
ENABLED = 0x8,
RUN_WHEN_DONE = 0x10,
DELTA_CORRECT = 0x20,
MAX_FLAG_BITS = 6
};
enum localClass_t : int {
CLASS_A = 0x1,
CLASS_B = 0x2,
CLASS_C = 0x4,
CLASS_D = 0x8,
CLASS_E = 0x10,
MAX_CLASS_BITS = 5
};
struct flagMap_t { int gameFlag; int aasFlag; };
aasType_t mAASType;
localClass_t mClass;
localFlags_t mFlags;
idVec3 mExtrusionEndpoint;
const idDeclAnimWeb* mAnimWeb;
};
#if INTPTR_MAX == INT32_MAX
static_assert(sizeof(aas2Traversal_t) == 56,
"Recovered aas2Traversal_t ABI changed");
static_assert(sizeof(idAASTraversalChainData) == 28,
"Recovered idAASTraversalChainData ABI changed");
#endif