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

48 lines
1.6 KiB
C++

#pragma once
#include "framework/resource.h"
#include "idlib/containers/list.h"
#include "idlib/math/vector.h"
#include "idlib/text/str.h"
class idRenderWorld;
class idAAS2DebugAreaModelData {
public:
struct areaTri_t { int v0; int v1; int v2; };
struct debugAreaInfo_t { idList<areaTri_t, 5> tris; };
idAAS2DebugAreaModelData();
~idAAS2DebugAreaModelData();
using drawTriangleCallback_t = void (*)(idRenderWorld* renderWorld,
const idVec3& v0, const idVec3& v1, const idVec3& v2,
const float color[4]);
static void SetDrawTriangleCallback(drawTriangleCallback_t callback);
void Draw(idRenderWorld* renderWorld,
const idList<int, 5>& visibleAreas) const;
static void BuildResourceNameFromAASName(const char* aasName,
idStr& resourceName);
void Free();
idResource::resourceError_t LoadBinary(const char* binaryFileName,
idStr& errorMessage);
static constexpr int BINARY_VERSION_HI = 1;
static constexpr int BINARY_VERSION_LO = 0;
static constexpr const char* BINARY_FILE_EXTENSION = "baasd";
static constexpr const char* TEXT_FILE_EXTENSION = ".aasd";
idList<idVec3, 5> vertices;
idList<debugAreaInfo_t, 5> areas;
};
#if INTPTR_MAX == INT32_MAX
static_assert(sizeof(idAAS2DebugAreaModelData::areaTri_t) == 12,
"Recovered debug area triangle ABI changed");
static_assert(sizeof(idAAS2DebugAreaModelData::debugAreaInfo_t) == 16,
"Recovered debug area info ABI changed");
static_assert(sizeof(idAAS2DebugAreaModelData) == 32,
"Recovered debug area data ABI changed");
#endif