#ifndef MAP_MAP_OBJ_DEF_H #define MAP_MAP_OBJ_DEF_H DECLARE_STRUCT(CMapObjDef); DECLARE_STRUCT(CMapObjDefGroup); DECLARE_STRUCT(CMapObjDefGroupMapObjDefLink); DECLARE_STRUCT(CMapObjDefMapChunkLink); DECLARE_STRUCT(CMapObjDefGroupDoodadDefLink); DECLARE_STRUCT(CMapObjDefGroupMapEntityLink); DECLARE_STRUCT(CMapObjDefMapObjDefGroupLink); #include "map/maparea.h" #include "map/mapdoodaddef.h" #include "map/mapentity.h" #include "map/mapobj.h" #include "storm/array.h" #include "storm/list.h" #include "tempest/box.h" #include "tempest/matrix.h" #include "tempest/sphere.h" #include "tempest/vector.h" STORM_TS_LIST(CMapObjDefMapObjDefGroupLink); struct CMapObjDefMapObjDefGroupLink { uint32_t objectIndex; // 0x00 CMapObjDefGroup* owner; // 0x04 CMapObjDef* ref; // 0x08 TSLink_CMapObjDefMapObjDefGroupLink refLink; // 0x0C - 0x14 TSLink_CMapObjDefMapObjDefGroupLink ownerLink; // 0x14 - 0x1C }; STORM_TS_LIST(CMapObjDefGroupMapObjDefLink); struct CMapObjDefGroupMapObjDefLink { uint32_t objectIndex; // 0x00 CMapObjDefGroup* owner; // 0x04 CMapObjDef* ref; // 0x08 TSLink_CMapObjDefGroupMapObjDefLink refLink; // 0x0C - 0x14 TSLink_CMapObjDefGroupMapObjDefLink ownerLink; // 0x14 - 0x1C }; STORM_TS_LIST(CMapObjDefGroupDoodadDefLink); struct CMapObjDefGroupDoodadDefLink { uint32_t objectIndex; // 0x00 CMapDoodadDef* owner; // 0x04 CMapObjDef* ref; // 0x08 TSLink_CMapObjDefGroupDoodadDefLink refLink; // 0x0C - 0x14 TSLink_CMapObjDefGroupDoodadDefLink ownerLink; // 0x14 - 0x1C }; STORM_TS_LIST(CMapObjDefGroupMapEntityLink); struct CMapObjDefGroupMapEntityLink { uint32_t objectIndex; // 0x00 CMapEntity* owner; // 0x04 CMapObjDef* ref; // 0x08 TSLink_CMapObjDefGroupMapEntityLink refLink; // 0x0C - 0x14 TSLink_CMapObjDefGroupMapEntityLink ownerLink; // 0x14 - 0x1C }; STORM_TS_GROWABLE_ARRAY(CMapObjDefGroup); struct CMapObjDefGroup { void* vtable; // 0x00 int32_t objectIndex; // 0x04 uint16_t type; // 0x08 uint16_t refCount; // 0x0A int32_t unk_C; // 0x0C CMapObjDefGroup* prev; // 0x10 CMapObjDefGroup* next; // 0x14 TSExplicitList_CMapObjDefGroupMapObjDefLink linkList; CAaBox bbox; CAaSphere sphere; float unk_4C; // 0x4C uint32_t groupNum; // 0x50 uint32_t unkFlags; // 0x54 int32_t unk_58; // 0x58 uint32_t ambientColor; // 0x5C int32_t unk_60; // 0x60 int32_t unk_64; // 0x64 int32_t unk_68; // 0x68 // CWFrustum int32_t TSExplicitList__m_linkoffset_unk_6C; // 0x6C void* TSExplicitList__m_ptr1_unk_70; // 0x70 void* TSExplicitList__m_ptr2_unk_74; // 0x74 TSExplicitList_CMapObjDefGroupDoodadDefLink doodadDefLinkList; TSExplicitList_CMapObjDefGroupMapEntityLink mapEntityLinkList; int32_t TSExplicitList__m_linkoffset_unk_90; // 0x90 void* TSExplicitList__m_ptr1_unk_94; // 0x94 void* TSExplicitList__m_ptr2_unk_98; // 0x98 int32_t TSExplicitList__m_linkoffset_unk_9C; // 0x9C void* TSExplicitList__m_ptr1_unk_A0; // 0xA0 void* TSExplicitList__m_ptr2_unk_A4; // 0xA4 int32_t unk_A8; // 0xA8 int32_t unk_AC; // 0xAC int32_t unk_B0; // 0xB0 int32_t unk_B4; // 0xB4 int32_t unk_B8; // 0xB8 int32_t unk_BC; // 0xBC }; STORM_TS_LIST(CMapObjDefMapChunkLink); struct CMapObjDefMapChunkLink { uint32_t objectIndex; // 0x00 CMapObjDef* owner; // 0x04 CMapChunk* ref; // 0x08 TSLink_CMapObjDefMapChunkLink refLink; // 0x0C - 0x14 TSLink_CMapObjDefMapChunkLink ownerLink; // 0x14 - 0x1C }; struct CMapObjDef { void** vtable; // 0x00 int32_t objectIndex; // 0x04 uint16_t type; // 0x08 uint16_t refCount; // 0x0A int32_t unk_C; // 0x0C CMapObjDef* prev; // 0x10 CMapObjDef* next; // 0x14 TSExplicitList_CMapObjDefMapChunkLink linkList; void* unk_24; // 0x24 void* unk_28; // 0x28 void* unk_2C; // 0x2C void* unk_30; // 0x30 void* unk_34; // 0x34 int32_t unk_38; // 0x38 C3Vector position; CAaBox bbox; CAaSphere sphere; C44Matrix mat; C44Matrix invMat; int32_t unk_F0; // 0xF0 CMapObj* owner; // 0xF4 int32_t unk_F8; // 0xF8 uint32_t unkFlags; // 0xFC int32_t unk_100; // 0x100 int32_t unk_104; // 0x104 int32_t unk_108; // 0x108 int32_t unk_10C; // 0x10C int32_t unk_110; // 0x110 TSExplicitList_CMapObjDefMapObjDefGroupLink mapObjDefGroupLinkList; TSGrowableArray_CMapObjDefGroup defGroups; void* unk_130; // 0x130 int32_t TSGrowableArray__m_alloc; // 0x134 int32_t TSGrowableArray__m_count; // 0x138 void* TSGrowableArray__m_data; // 0x13C int32_t TSGrowableArray__m_chunk; // 0x140 uint32_t argbColor; // 0x144 int32_t unk_148; // 0x148 int32_t unk_14C; // 0x14C int32_t unk_150; // 0x150 void* unk_154; // 0x154 }; #endif