2025-09-06 20:46:19 +03:00
|
|
|
#ifndef CMAPAREA_H
|
|
|
|
|
#define CMAPAREA_H
|
|
|
|
|
|
|
|
|
|
DECLARE_STRUCT(CMapArea);
|
|
|
|
|
DECLARE_STRUCT(CMapChunk);
|
|
|
|
|
DECLARE_STRUCT(CMapAreaTexture);
|
|
|
|
|
|
|
|
|
|
struct CMapAreaTexture
|
|
|
|
|
{
|
|
|
|
|
char* textureName;
|
|
|
|
|
CTexture* texture;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct CMapChunk;
|
|
|
|
|
|
|
|
|
|
#include "async/object.h"
|
|
|
|
|
#include "ADTchunks.h"
|
|
|
|
|
#include "storm/array.h"
|
|
|
|
|
#include "texture/texture.h"
|
|
|
|
|
|
|
|
|
|
STORM_TS_GROWABLE_ARRAY(CMapAreaTexture);
|
|
|
|
|
|
|
|
|
|
struct CMapArea
|
|
|
|
|
{
|
|
|
|
|
void** vtable;
|
2025-09-10 00:40:40 +03:00
|
|
|
uint32_t objectIndex;
|
2025-09-06 20:46:19 +03:00
|
|
|
uint16_t flags;
|
|
|
|
|
uint16_t pad_0A;
|
2025-09-10 00:40:40 +03:00
|
|
|
uint32_t unk_0C;
|
2025-09-06 20:46:19 +03:00
|
|
|
CMapArea* perv;
|
|
|
|
|
CMapArea* next;
|
|
|
|
|
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_18;
|
|
|
|
|
void* TSExplicitList__ptr_1C;
|
|
|
|
|
void* TSExplicitList__ptr2_20;
|
|
|
|
|
|
|
|
|
|
C3Vector bottomRight;
|
|
|
|
|
C3Vector topLeft;
|
|
|
|
|
C3Vector topLeft2;
|
|
|
|
|
|
|
|
|
|
C2iVector index;
|
|
|
|
|
C2iVector tileChunkIndex;
|
|
|
|
|
|
|
|
|
|
TSGrowableArray_CMapAreaTexture textures;
|
|
|
|
|
|
|
|
|
|
SMMapHeader* header;
|
|
|
|
|
|
|
|
|
|
int32_t unk_6C;
|
|
|
|
|
CAsyncObject* asyncObject;
|
|
|
|
|
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_unk_74;
|
|
|
|
|
void* TSExplicitList__ptr_unk_78;
|
|
|
|
|
void* TSExplicitList__ptr2_unk_7C;
|
|
|
|
|
|
|
|
|
|
void* filePtr;
|
|
|
|
|
int32_t fileSize;
|
|
|
|
|
|
|
|
|
|
SMChunkInfo* chunkInfo;
|
|
|
|
|
int32_t unk_8C;
|
|
|
|
|
SMDoodadDef* doodadDef;
|
|
|
|
|
SMMapObjDef* mapObjDef;
|
|
|
|
|
int32_t doodadDefCount;
|
|
|
|
|
int32_t mapObjDefCount;
|
|
|
|
|
char* m2FileNames;
|
|
|
|
|
char* wmoFileNames;
|
|
|
|
|
uint32_t* modelFilenamesOffsets;
|
|
|
|
|
uint32_t* wmoFilenamesOffsets;
|
|
|
|
|
int16_t* flyingBbox;
|
|
|
|
|
int32_t* textureFlags;
|
|
|
|
|
uint8_t* unk_B8; //MH20
|
|
|
|
|
|
2025-09-07 13:32:50 +03:00
|
|
|
CMapChunk* mapChunks[256];
|
2025-09-06 20:46:19 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct CMapChunk
|
|
|
|
|
{
|
|
|
|
|
void** vtable;
|
2025-09-10 00:40:40 +03:00
|
|
|
uint32_t objectIndex;
|
|
|
|
|
uint16_t flags;
|
|
|
|
|
uint16_t pad_0A;
|
|
|
|
|
uint32_t unk_0C;
|
|
|
|
|
CMapChunk* prev;
|
|
|
|
|
CMapChunk* next;
|
2025-09-06 20:46:19 +03:00
|
|
|
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_18;
|
|
|
|
|
void* TSExplicitList__ptr1_1C;
|
|
|
|
|
void* TSExplicitList__ptr2_20;
|
|
|
|
|
|
|
|
|
|
C2iVector aIndex;
|
|
|
|
|
C2iVector sOffset;
|
|
|
|
|
C2iVector cOffset;
|
|
|
|
|
|
|
|
|
|
C3Vector center;
|
|
|
|
|
float radius;
|
|
|
|
|
CAaBox bbox;
|
|
|
|
|
C3Vector bottomRight;
|
|
|
|
|
C3Vector topLeft;
|
|
|
|
|
C3Vector topLeftCoords;
|
|
|
|
|
float distToCamera;
|
|
|
|
|
CAaBox bbox2;
|
|
|
|
|
|
|
|
|
|
void* detailDoodadInstPtr;
|
|
|
|
|
void* renderChunkPtr;
|
|
|
|
|
|
|
|
|
|
int32_t unk_AC;
|
|
|
|
|
int32_t areaId;
|
|
|
|
|
int32_t unk_B4;
|
|
|
|
|
int32_t unk_B8;
|
|
|
|
|
int32_t unk_BC;
|
|
|
|
|
int32_t unk_C0;
|
|
|
|
|
|
|
|
|
|
// CMapDoodadDef
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_C4;
|
|
|
|
|
void* TSExplicitList__ptr_C8;
|
|
|
|
|
void* TSExplicitList__ptr2_CC;
|
|
|
|
|
|
|
|
|
|
// CMapObjDef
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_D0;
|
|
|
|
|
void* TSExplicitList__ptr_D4;
|
|
|
|
|
void* TSExplicitList__ptr2_D8;
|
|
|
|
|
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_DC;
|
|
|
|
|
void* TSExplicitList__ptr_E0;
|
|
|
|
|
void* TSExplicitList__ptr2_E4;
|
|
|
|
|
|
|
|
|
|
// Light
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_E8;
|
|
|
|
|
void* TSExplicitList__ptr_EC;
|
|
|
|
|
void* TSExplicitList__ptr2_F0;
|
|
|
|
|
|
|
|
|
|
// CMapSoundEmitter
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_F4;
|
|
|
|
|
void* TSExplicitList__ptr_F8;
|
|
|
|
|
void* TSExplicitList__ptr2_FC;
|
|
|
|
|
|
|
|
|
|
// CChunkLiquid
|
|
|
|
|
int32_t TSExplicitList__m_linkoffset_100;
|
|
|
|
|
void* TSExplicitList__ptr_104;
|
|
|
|
|
void* TSExplicitList__ptr2_108;
|
|
|
|
|
|
|
|
|
|
uint8_t* chunkInfoBeginPtr;
|
|
|
|
|
SMChunk* header;
|
|
|
|
|
uint8_t* lowQualityTexMap;
|
|
|
|
|
uint8_t* predTexture;
|
|
|
|
|
float* vertices;
|
|
|
|
|
uint32_t* vertexShading;
|
|
|
|
|
int8_t* normals;
|
|
|
|
|
uint8_t* shadowMap;
|
|
|
|
|
SMLayer* layers;
|
|
|
|
|
uint8_t* additionalShadowmap;
|
|
|
|
|
uint8_t* MCRF_ptr;
|
|
|
|
|
SMLiquidChunk* liquid;
|
|
|
|
|
CWSoundEmitter* soundEmitters;
|
|
|
|
|
|
|
|
|
|
// liquid related fields
|
|
|
|
|
int32_t unk_140;
|
|
|
|
|
int32_t unk_144;
|
|
|
|
|
int32_t unk_148;
|
|
|
|
|
int32_t unk_14C;
|
|
|
|
|
int32_t unk_150;
|
|
|
|
|
int32_t unk_154;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|