Initial gamelib integration AAS2 with some animation and physics and another integration pass on idLib.
This commit is contained in:
@@ -1,171 +1,317 @@
|
||||
#pragma once
|
||||
|
||||
// Reconstructed C++ declarations from IDA Local Types and PDB/DIA metadata.
|
||||
// Original PDB header: w:\tech5\engine\gamelib\physics\clip.h
|
||||
// Recovered logical types: 9
|
||||
// Signatures retain Xbox 360 ABI evidence and may still require manual review.
|
||||
#include "cm/jobs/collisionresults.h"
|
||||
#include "cm/jobs/collisionquery.h"
|
||||
#include "gamelib/physics/clipmodel.h"
|
||||
#include "idlib/blockalloc_base.h"
|
||||
#include "idlib/containers/list.h"
|
||||
#include "idlib/containers/staticlist.h"
|
||||
#include "idlib/math/rotation.h"
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
// IDA Local Type ordinal 1833; PDB kind: enum.
|
||||
enum idClip::idClipCollisionQuery::type_t : __int32
|
||||
{
|
||||
QUERY_VALID = 0x0,
|
||||
QUERY_CANCELED = 0x1,
|
||||
QUERY_SUBMITTED_TRANSLATION = 0x2,
|
||||
QUERY_SUBMITTED_ROTATION = 0x3,
|
||||
QUERY_SUBMITTED_MOTION = 0x4,
|
||||
QUERY_SUBMITTED_MOTION_CONTACTS = 0x5,
|
||||
QUERY_SUBMITTED_STEPMOVE = 0x6,
|
||||
QUERY_SUBMITTED_STEPMOVE_CONTACTS = 0x7,
|
||||
QUERY_SUBMITTED_SLIDEMOVE = 0x8,
|
||||
QUERY_SUBMITTED_SLIDEMOVE_CONTACTS = 0x9,
|
||||
QUERY_SUBMITTED_CONTENTS = 0xA,
|
||||
QUERY_SUBMITTED_CONTACTS = 0xB,
|
||||
QUERY_SUBMITTED_CLIP = 0xC,
|
||||
class idAAS2;
|
||||
class idCollisionModel;
|
||||
class idFixedWinding;
|
||||
class idTraceModel;
|
||||
class idTraceModelCache;
|
||||
class idTraceModelRecycler;
|
||||
class idTypeInfoTools;
|
||||
struct idPositionedCollisionModel;
|
||||
|
||||
#ifndef ID_CLIP_QUERY_DEFINED
|
||||
#define ID_CLIP_QUERY_DEFINED
|
||||
struct idClipQuery { std::uint64_t index; };
|
||||
#endif
|
||||
|
||||
struct idGatherQuery { std::uint64_t index; };
|
||||
#ifndef ID_RESIDENCY_QUERY_DEFINED
|
||||
#define ID_RESIDENCY_QUERY_DEFINED
|
||||
struct idResidencyQuery { std::uint64_t index; };
|
||||
#endif
|
||||
|
||||
struct clipSector_t {
|
||||
int axis;
|
||||
float dist;
|
||||
clipSector_t* children[2];
|
||||
clipLink_t* clipLinks;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 2572; PDB kind: enum.
|
||||
enum idClip::gatherType_t : __int32
|
||||
{
|
||||
GATHER_TOUCHING_BOUNDS = 0x0,
|
||||
GATHER_TOUCHING_LINE = 0x1,
|
||||
GATHER_TOUCHING_CLIPMODEL = 0x2,
|
||||
struct clipQueryStats_t {
|
||||
const char* userName;
|
||||
int count;
|
||||
int max;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14068; PDB kind: class.
|
||||
class idClip
|
||||
{
|
||||
class idClip {
|
||||
public:
|
||||
idClipModel *world;
|
||||
idClipModel *temporaryClipModel;
|
||||
idClipModel *defaultClipModel;
|
||||
idClipModel *playerMeleeClipModel;
|
||||
idClipModel *clip8x8;
|
||||
idClipModel *clip8x8x8;
|
||||
idClipModel *clip16x16;
|
||||
idClipModel *clip16x16x16;
|
||||
idClipModel *clip24x24;
|
||||
idClipModel *clip32x32;
|
||||
idClipModel *clip8x16;
|
||||
idClipModel *clip48x48;
|
||||
idClipModel *clip96x96;
|
||||
idClipModel *clip24x24x96;
|
||||
idClipModel *clip32x32x96;
|
||||
idClipModel *clip48x48x96;
|
||||
idBlockAlloc<clipLink_t,256,13> clipLinkAllocator;
|
||||
idStaticList<clipSector_t,8191> clipSectors;
|
||||
int touchCount;
|
||||
idAAS2 *aases[8];
|
||||
idTraceModelCache *traceModelCache;
|
||||
idTraceModelRecycler *traceModelRecycler;
|
||||
idClipModel *deletedClipModels;
|
||||
idList<int,13> streamAreas;
|
||||
idClip::idClipQueryParms *queryParms;
|
||||
int numQueryParms;
|
||||
idStaticList<unsigned int,2048> translationQueries;
|
||||
idStaticList<unsigned int,2048> rotationQueries;
|
||||
idStaticList<unsigned int,2048> motionQueries;
|
||||
idStaticList<unsigned int,2048> motionContactsQueries;
|
||||
idStaticList<unsigned int,2048> stepMoveQueries;
|
||||
idStaticList<unsigned int,2048> stepMoveContactsQueries;
|
||||
idStaticList<unsigned int,2048> slideMoveQueries;
|
||||
idStaticList<unsigned int,2048> slideMoveContactsQueries;
|
||||
idStaticList<unsigned int,2048> contentsQueries;
|
||||
idStaticList<unsigned int,2048> contactsQueries;
|
||||
idStaticList<unsigned int,2048> clipQueries;
|
||||
idStaticList<unsigned int,2048> localTranslationQueries;
|
||||
idStaticList<unsigned int,2048> localContentsQueries;
|
||||
idStaticList<unsigned int,2048> translationTraceModelQueries;
|
||||
idClip::idClipCollisionQuery collisionQueries[4096];
|
||||
unsigned __int64 collisionQueryFirstSubmittedIndex;
|
||||
unsigned __int64 collisionQueryLastSubmittedIndex;
|
||||
unsigned __int64 collisionQueryFirstAllocedIndex;
|
||||
unsigned __int64 collisionQueryLastAllocedIndex;
|
||||
unsigned __int64 collisionQueryLastResolvedIndex;
|
||||
const char *gatherQueryUserNames[256];
|
||||
idClip::idClipGatherQuery gatherQueries[256];
|
||||
unsigned __int64 gatherQueryFirstSubmittedIndex;
|
||||
unsigned __int64 gatherQueryLastSubmittedIndex;
|
||||
unsigned __int64 gatherQueryFirstAllocedIndex;
|
||||
unsigned __int64 gatherQueryLastAllocedIndex;
|
||||
idClip::idGatherResult gatherResults[2048];
|
||||
unsigned __int64 gatherResultFirstSubmittedIndex;
|
||||
unsigned __int64 gatherResultLastSubmittedIndex;
|
||||
unsigned __int64 gatherResultFirstAllocedIndex;
|
||||
unsigned __int64 gatherResultLastAllocedIndex;
|
||||
idClip::idClipResidencyQuery residencyQueries[1024];
|
||||
unsigned __int64 residencyQueryFirstSubmittedIndex;
|
||||
unsigned __int64 residencyQueryLastSubmittedIndex;
|
||||
unsigned __int64 residencyQueryFirstAllocedIndex;
|
||||
unsigned __int64 residencyQueryLastAllocedIndex;
|
||||
enum queryType_t : int {
|
||||
QUERY_VALID = 0,
|
||||
QUERY_CANCELED,
|
||||
QUERY_SUBMITTED_TRANSLATION,
|
||||
QUERY_SUBMITTED_ROTATION,
|
||||
QUERY_SUBMITTED_MOTION,
|
||||
QUERY_SUBMITTED_MOTION_CONTACTS,
|
||||
QUERY_SUBMITTED_STEPMOVE,
|
||||
QUERY_SUBMITTED_STEPMOVE_CONTACTS,
|
||||
QUERY_SUBMITTED_SLIDEMOVE,
|
||||
QUERY_SUBMITTED_SLIDEMOVE_CONTACTS,
|
||||
QUERY_SUBMITTED_CONTENTS,
|
||||
QUERY_SUBMITTED_CONTACTS,
|
||||
QUERY_SUBMITTED_CLIP
|
||||
};
|
||||
|
||||
enum gatherType_t : int {
|
||||
GATHER_TOUCHING_BOUNDS = 0,
|
||||
GATHER_TOUCHING_LINE = 1,
|
||||
GATHER_TOUCHING_CLIPMODEL = 2
|
||||
};
|
||||
|
||||
struct idClipQueryParms {
|
||||
idVec3 start;
|
||||
idVec3 end;
|
||||
idVec3 origin;
|
||||
idVec3 vec;
|
||||
float f1;
|
||||
float f2;
|
||||
idMat3 startAxis;
|
||||
int clipMask;
|
||||
std::uint16_t passEntityNumber;
|
||||
std::uint16_t flags;
|
||||
std::uint8_t pad[12];
|
||||
unsigned int queryIndex;
|
||||
const idClipModel* clipModel;
|
||||
const idTraceModel* traceModel;
|
||||
const char* userName;
|
||||
};
|
||||
|
||||
struct idClipCollisionQuery {
|
||||
queryType_t type;
|
||||
int parmIndex;
|
||||
idClipModel* clipModel;
|
||||
idCollisionQuery query;
|
||||
};
|
||||
|
||||
struct idClipGatherQuery {
|
||||
idVec3 vectors[4];
|
||||
int clipMask;
|
||||
std::int16_t passEntityNumber;
|
||||
std::int16_t gatherType;
|
||||
std::uint16_t firstResultIndex;
|
||||
std::uint16_t numResults;
|
||||
const idClipModel* clipModel;
|
||||
};
|
||||
|
||||
struct idGatherResult {
|
||||
idCollisionQuery query;
|
||||
int physicsId;
|
||||
std::int16_t bodyId;
|
||||
std::int16_t entityNumber;
|
||||
};
|
||||
|
||||
struct idClipResidencyQuery {
|
||||
idBounds absBounds;
|
||||
bool resident;
|
||||
std::uint8_t pad[7];
|
||||
};
|
||||
|
||||
idClip();
|
||||
~idClip();
|
||||
void Init(idCollisionModel* worldModel, idTraceModelCache* cache,
|
||||
idTraceModelRecycler* recycler);
|
||||
void Shutdown();
|
||||
void StartQueryFrame();
|
||||
void EndQueryFrame();
|
||||
void ResolveCollisionQueries();
|
||||
void DeleteClipModels();
|
||||
void DeleteClipModel(idClipModel* clipModel);
|
||||
void InitializeAASLinks(int aasType);
|
||||
const idBounds& GetWorldBounds() const;
|
||||
void AddStreamArea(int areaNum);
|
||||
void ClearStreamAreas();
|
||||
int FindStreamArea(const idClipModel* clipModel);
|
||||
|
||||
int GetClipModelsTouchingBounds(const idBounds& bounds, int contentMask,
|
||||
idClipModel** clipModels, int maxClipModels) const;
|
||||
int GetClipModelsTouchingLine(const idVec3& start, const idVec3& end,
|
||||
int contentMask, idClipModel** clipModels,
|
||||
int maxClipModels) const;
|
||||
int GetEntitiesTouchingBounds(const idBounds& bounds, int contentMask,
|
||||
int* entityNumbers, int maxEntities) const;
|
||||
int GetEntitiesTouchingLine(const idVec3& start, const idVec3& end,
|
||||
int contentMask, int* entityNumbers, int maxEntities) const;
|
||||
idGatherQuery GatherTouchingBounds(const idBounds& bounds,
|
||||
int contentMask, int passEntityNumber, const char* userName);
|
||||
idGatherQuery GatherTouchingClipModel(const idVec3& origin,
|
||||
const idClipModel* clipModel, const idMat3& axis, int contentMask,
|
||||
int passEntityNumber, const char* userName);
|
||||
int GetGatheredClipModels(const idGatherQuery& query,
|
||||
idClipModel** clipModels, int maxClipModels);
|
||||
int GetGatheredEntities(const idGatherQuery& query,
|
||||
int* entityNumbers, int maxEntities);
|
||||
idResidencyQuery TestResidency(const idBounds& bounds);
|
||||
|
||||
idClipQuery Translation(trace_t* result, const idVec3& start,
|
||||
const idVec3& end, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, int passEntityNumber,
|
||||
bool ignoreWorld, const char* userName);
|
||||
idClipQuery LocalTranslation(idClipQuery localSpace,
|
||||
const idVec3& start, const idVec3& end,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, bool ignoreWorld,
|
||||
const char* userName);
|
||||
idClipQuery TranslationTraceModel(trace_t* result,
|
||||
const idVec3& start, const idVec3& end,
|
||||
const idClipModel* clipModel, const idVec3& modelOrigin,
|
||||
const idMat3& modelAxis, int contentMask, const char* userName);
|
||||
idClipQuery Rotation(trace_t* result, const idVec3& start,
|
||||
const idRotation& rotation, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, int passEntityNumber,
|
||||
bool ignoreWorld, const char* userName);
|
||||
idClipQuery Motion(trace_t* result, const idVec3& start,
|
||||
const idVec3& end, const idRotation& rotation,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, bool ignoreWorld,
|
||||
const char* userName);
|
||||
idClipQuery MotionContacts(trace_t* result, contactsResult_t* contacts,
|
||||
const idVec3& start, const idVec3& end,
|
||||
const idRotation& rotation, float depth,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, bool ignoreWorld,
|
||||
const char* userName);
|
||||
idClipQuery StepMove(trace_t* result, const idVec3& start,
|
||||
const idVec3& end, const idVec3& downNormal,
|
||||
float stepUp, float stepDown, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, int passEntityNumber,
|
||||
bool ignoreWorld, const char* userName);
|
||||
idClipQuery StepMoveContacts(trace_t* result,
|
||||
contactsResult_t* contacts, const idVec3& start,
|
||||
const idVec3& end, const idVec3& downNormal,
|
||||
float stepUp, float stepDown, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, int passEntityNumber,
|
||||
bool ignoreWorld, const char* userName);
|
||||
idClipQuery SlideMoveContacts(trace_t* result,
|
||||
contactsResult_t* contacts, const idVec3& start,
|
||||
const idVec3& end, const idVec3& downNormal,
|
||||
float stepUp, const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, bool ignoreWorld,
|
||||
const char* userName);
|
||||
idClipQuery Contents(trace_t* result, const idVec3& start,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, const char* userName);
|
||||
idClipQuery LocalContents(idClipQuery localSpace, const idVec3& start,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, const char* userName);
|
||||
idClipQuery Contacts(contactsResult_t* result, const idVec3& start,
|
||||
const idVec3& direction, float depth,
|
||||
const idClipModel* clipModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, const char* userName);
|
||||
idClipQuery Clip(clipResult_t* result, const idVec3& start,
|
||||
const idTraceModel* traceModel, const idMat3& axis,
|
||||
int contentMask, int passEntityNumber, const char* userName);
|
||||
|
||||
void TranslationModel(trace_t& result, const idVec3& start,
|
||||
const idVec3& end, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, const idVec3& modelOrigin,
|
||||
const idClipModel* model, const idMat3& modelAxis) const;
|
||||
void RotationModel(trace_t& result, const idVec3& start,
|
||||
const idRotation& rotation, const idClipModel* clipModel,
|
||||
const idMat3& axis, int contentMask, const idVec3& modelOrigin,
|
||||
const idClipModel* model, const idMat3& modelAxis) const;
|
||||
void ContentsModel(trace_t& result, const idVec3& start,
|
||||
const idClipModel* clipModel, const idMat3& axis, int contentMask,
|
||||
const idVec3& modelOrigin, const idClipModel* model,
|
||||
const idMat3& modelAxis) const;
|
||||
bool GetModelContactFeature(const contactInfo_t& contact,
|
||||
const idClipModel* model, idFixedWinding& winding) const;
|
||||
void PrintStatistics();
|
||||
void DrawWorld(const idVec3&, const idMat3&, float, bool) {}
|
||||
void DrawSingleClipModel(idClipModel*, const idVec3&,
|
||||
const idMat3&, int) {}
|
||||
void ShowCollisionPoint(const contactInfo_t&,
|
||||
const idTypeInfoTools*) {}
|
||||
void ShowCollisionSurfaces(const idVec3&, const idMat3&, int, int,
|
||||
const idTypeInfoTools*) {}
|
||||
|
||||
idClipModel* world;
|
||||
idClipModel* temporaryClipModel;
|
||||
idClipModel* defaultClipModel;
|
||||
idClipModel* playerMeleeClipModel;
|
||||
idClipModel* clip8x8;
|
||||
idClipModel* clip8x8x8;
|
||||
idClipModel* clip16x16;
|
||||
idClipModel* clip16x16x16;
|
||||
idClipModel* clip24x24;
|
||||
idClipModel* clip32x32;
|
||||
idClipModel* clip8x16;
|
||||
idClipModel* clip48x48;
|
||||
idClipModel* clip96x96;
|
||||
idClipModel* clip24x24x96;
|
||||
idClipModel* clip32x32x96;
|
||||
idClipModel* clip48x48x96;
|
||||
idBlockAlloc<clipLink_t, 256, 13> clipLinkAllocator;
|
||||
idStaticList<clipSector_t, 8191> clipSectors;
|
||||
int touchCount;
|
||||
idAAS2* aases[8];
|
||||
idTraceModelCache* traceModelCache;
|
||||
idTraceModelRecycler* traceModelRecycler;
|
||||
idClipModel* deletedClipModels;
|
||||
idList<int, 13> streamAreas;
|
||||
idClipQueryParms* queryParms;
|
||||
int numQueryParms;
|
||||
idStaticList<unsigned int, 2048> translationQueries;
|
||||
idStaticList<unsigned int, 2048> rotationQueries;
|
||||
idStaticList<unsigned int, 2048> motionQueries;
|
||||
idStaticList<unsigned int, 2048> motionContactsQueries;
|
||||
idStaticList<unsigned int, 2048> stepMoveQueries;
|
||||
idStaticList<unsigned int, 2048> stepMoveContactsQueries;
|
||||
idStaticList<unsigned int, 2048> slideMoveQueries;
|
||||
idStaticList<unsigned int, 2048> slideMoveContactsQueries;
|
||||
idStaticList<unsigned int, 2048> contentsQueries;
|
||||
idStaticList<unsigned int, 2048> contactsQueries;
|
||||
idStaticList<unsigned int, 2048> clipQueries;
|
||||
idStaticList<unsigned int, 2048> localTranslationQueries;
|
||||
idStaticList<unsigned int, 2048> localContentsQueries;
|
||||
idStaticList<unsigned int, 2048> translationTraceModelQueries;
|
||||
idClipCollisionQuery collisionQueries[4096];
|
||||
std::uint64_t collisionQueryFirstSubmittedIndex;
|
||||
std::uint64_t collisionQueryLastSubmittedIndex;
|
||||
std::uint64_t collisionQueryFirstAllocedIndex;
|
||||
std::uint64_t collisionQueryLastAllocedIndex;
|
||||
std::uint64_t collisionQueryLastResolvedIndex;
|
||||
const char* gatherQueryUserNames[256];
|
||||
idClipGatherQuery gatherQueries[256];
|
||||
std::uint64_t gatherQueryFirstSubmittedIndex;
|
||||
std::uint64_t gatherQueryLastSubmittedIndex;
|
||||
std::uint64_t gatherQueryFirstAllocedIndex;
|
||||
std::uint64_t gatherQueryLastAllocedIndex;
|
||||
idGatherResult gatherResults[2048];
|
||||
std::uint64_t gatherResultFirstSubmittedIndex;
|
||||
std::uint64_t gatherResultLastSubmittedIndex;
|
||||
std::uint64_t gatherResultFirstAllocedIndex;
|
||||
std::uint64_t gatherResultLastAllocedIndex;
|
||||
idClipResidencyQuery residencyQueries[1024];
|
||||
std::uint64_t residencyQueryFirstSubmittedIndex;
|
||||
std::uint64_t residencyQueryLastSubmittedIndex;
|
||||
std::uint64_t residencyQueryFirstAllocedIndex;
|
||||
std::uint64_t residencyQueryLastAllocedIndex;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14128; PDB kind: class.
|
||||
class idClip::idClipQueryParms
|
||||
{
|
||||
public:
|
||||
idVec3 start;
|
||||
idVec3 end;
|
||||
idVec3 origin;
|
||||
idVec3 vec;
|
||||
float f1;
|
||||
float f2;
|
||||
idMat3 startAxis;
|
||||
int clipMask;
|
||||
unsigned __int16 passEntityNumber;
|
||||
unsigned __int16 flags;
|
||||
unsigned __int8 pad[12];
|
||||
unsigned int queryIndex;
|
||||
const idClipModel *clipModel;
|
||||
const idTraceModel *traceModel;
|
||||
const char *userName;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14131; PDB kind: class.
|
||||
class idClip::idClipCollisionQuery
|
||||
{
|
||||
public:
|
||||
idClip::idClipCollisionQuery::type_t type;
|
||||
int parmIndex;
|
||||
idClipModel *clipModel;
|
||||
idCollisionQuery query;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14132; PDB kind: class.
|
||||
class idClip::idClipGatherQuery
|
||||
{
|
||||
public:
|
||||
idVec3 vectors[4];
|
||||
int clipMask;
|
||||
__int16 passEntityNumber;
|
||||
__int16 gatherType;
|
||||
unsigned __int16 firstResultIndex;
|
||||
unsigned __int16 numResults;
|
||||
const idClipModel *clipModel;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14133; PDB kind: class.
|
||||
class idClip::idGatherResult
|
||||
{
|
||||
public:
|
||||
idCollisionQuery query;
|
||||
int physicsId;
|
||||
__int16 bodyId;
|
||||
__int16 entityNumber;
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 14134; PDB kind: class.
|
||||
class idClip::idClipResidencyQuery
|
||||
{
|
||||
public:
|
||||
idBounds absBounds;
|
||||
bool resident;
|
||||
unsigned __int8 pad[7];
|
||||
};
|
||||
|
||||
// IDA Local Type ordinal 23461; PDB kind: struct.
|
||||
struct idClip::GetClipModelsTouchingLine::__l2::stackPoints_t
|
||||
{
|
||||
idVec4 start;
|
||||
idVec4 end;
|
||||
};
|
||||
static_assert(sizeof(idClipQuery) == 8,
|
||||
"Recovered clip-query ABI changed");
|
||||
static_assert(sizeof(idGatherQuery) == 8,
|
||||
"Recovered gather-query ABI changed");
|
||||
static_assert(sizeof(idResidencyQuery) == 8,
|
||||
"Recovered residency-query ABI changed");
|
||||
#if INTPTR_MAX == INT32_MAX
|
||||
static_assert(sizeof(idClip::idClipQueryParms) == 128,
|
||||
"Recovered clip query parameters ABI changed");
|
||||
static_assert(sizeof(idClip::idClipCollisionQuery) == 24,
|
||||
"Recovered collision query ABI changed");
|
||||
static_assert(sizeof(idClip::idClipGatherQuery) == 64,
|
||||
"Recovered gather query ABI changed");
|
||||
static_assert(sizeof(idClip::idGatherResult) == 16,
|
||||
"Recovered gather result ABI changed");
|
||||
static_assert(sizeof(idClip::idClipResidencyQuery) == 32,
|
||||
"Recovered residency state ABI changed");
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user