mirror of
https://github.com/thunderbrewhq/binana.git
synced 2025-12-12 09:52:28 +00:00
feat(profile): CMapArea and CMapChunk structs
This commit is contained in:
parent
75c348f784
commit
4b49d692fa
3 changed files with 331 additions and 0 deletions
164
profile/3.3.5a-windows-386/include/map/ADTchunks.h
Normal file
164
profile/3.3.5a-windows-386/include/map/ADTchunks.h
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
#ifndef ADTCHUNKS_H
|
||||
#define ADTCHUNKS_H
|
||||
|
||||
DECLARE_STRUCT(SMMapHeader);
|
||||
DECLARE_STRUCT(SMChunkInfo);
|
||||
DECLARE_STRUCT(SMDoodadDef);
|
||||
DECLARE_STRUCT(SMMapObjDef);
|
||||
DECLARE_STRUCT(SMChunk);
|
||||
DECLARE_STRUCT(SMLayer);
|
||||
DECLARE_STRUCT(SMLiquidChunk);
|
||||
DECLARE_STRUCT(CWSoundEmitter);
|
||||
|
||||
#include "tempest/vector.h"
|
||||
#include "tempest/box.h"
|
||||
#include "tempest/sphere.h"
|
||||
|
||||
struct SMMapHeader
|
||||
{
|
||||
uint32_t flags;
|
||||
uint32_t mcin; // MCIN*, Cata+: obviously gone. probably all offsets gone, except mh2o(which remains in root file).
|
||||
uint32_t mtex; // MTEX*
|
||||
uint32_t mmdx; // MMDX*
|
||||
uint32_t mmid; // MMID*
|
||||
uint32_t mwmo; // MWMO*
|
||||
uint32_t mwid; // MWID*
|
||||
uint32_t mddf; // MDDF*
|
||||
uint32_t modf; // MODF*
|
||||
uint32_t mfbo; // MFBO* this is only set if flags & mhdr_MFBO.
|
||||
uint32_t mh2o; // MH2O*
|
||||
uint32_t mtxf; // MTXF*
|
||||
uint8_t mamp_value; // Cata+, explicit MAMP chunk overrides data
|
||||
uint8_t padding[3];
|
||||
uint32_t unused[3];
|
||||
};
|
||||
|
||||
struct SMChunkInfo
|
||||
{
|
||||
uint32_t offset; // absolute offset.
|
||||
uint32_t size; // the size of the MCNK chunk, this is refering to.
|
||||
uint32_t flags; // always 0. only set in the client., FLAG_LOADED = 1
|
||||
union
|
||||
{
|
||||
char pad[4];
|
||||
uint32_t asyncId; // not in the adt file. client use only
|
||||
};
|
||||
};
|
||||
|
||||
struct SMDoodadDef
|
||||
{
|
||||
uint32_t nameId; // references an entry in the MMID chunk, specifying the model t // if flag mddf_entry_is_filedata_id is set, a file data id instead, ignoring MMID.
|
||||
uint32_t uniqueId; // this ID should be unique for all ADTs currently loaded. Best, they are unique for the whole map. Blizzar // these unique for the whole game.
|
||||
C3Vector position; // This is relative to a corner of the map. Subtract 17066 from the non vertical values and you should start t // something that makes sense. You'll then likely have to negate one of the non vertical values in wha // coordinate system you're using to finally move it into place.
|
||||
C3Vector rotation; // degrees. This is not the same coordinate system orientation like the ADT itself! (see history.)
|
||||
uint16_t scale; // 1024 is the default size equaling 1.0f.
|
||||
uint16_t flags; // values from enum MDDFFlags.
|
||||
};
|
||||
|
||||
struct SMMapObjDef
|
||||
{
|
||||
uint32_t nameId; // references an entry in the MWID chunk, specifying the model to use.
|
||||
uint32_t uniqueId; // this ID should be unique for all ADTs currently loaded. Best, they are unique for the whole map.
|
||||
C3Vector position;
|
||||
C3Vector rotation; // same as in MDDF.
|
||||
CAaBox extents; // position plus the transformed wmo bounding box. used for defining if they are rendered as well as collision.
|
||||
uint16_t flags; // values from enum MODFFlags.
|
||||
uint16_t doodadSet; // which WMO doodad set is used. Traditionally references WMO#MODS_chunk, if modf_use_sets_from_mwds is set, references #MWDR_.28Shadowlands.2B.29
|
||||
uint16_t nameSet; // which WMO name set is used. Used for renaming goldshire inn to northshire inn while using the same model.
|
||||
uint16_t scale; // Legion+: scale, 1024 means 1 (same as MDDF). Padding in 0.5.3 alpha.
|
||||
};
|
||||
|
||||
struct SMChunk
|
||||
{
|
||||
uint32_t flags;
|
||||
C2iVector index;
|
||||
uint32_t nLayers;
|
||||
uint32_t nDoodadRefs;
|
||||
uint32_t ofsHeight;
|
||||
uint32_t ofsNormal;
|
||||
uint32_t ofsLayer;
|
||||
uint32_t ofsRefs;
|
||||
uint32_t ofsAlpha;
|
||||
uint32_t sizeAlpha;
|
||||
uint32_t ofsShadow;
|
||||
uint32_t sizeShadow;
|
||||
uint32_t areaid;
|
||||
uint32_t nMapObjRefs;
|
||||
uint32_t holes;
|
||||
uint8_t low_quality_texture_map[0x10];
|
||||
uint32_t predTex;
|
||||
uint32_t nEffectDoodad;
|
||||
uint32_t ofsSndEmitters;
|
||||
uint32_t nSndEmitters;
|
||||
uint32_t ofsLiquid;
|
||||
uint32_t sizeLiquid;
|
||||
C3Vector position;
|
||||
uint32_t ofsMCCV;
|
||||
uint32_t unused1;
|
||||
uint32_t unused2;
|
||||
};
|
||||
|
||||
struct SMLayer
|
||||
{
|
||||
uint32_t textureId;
|
||||
uint32_t flags;
|
||||
uint32_t offsetInMCAL;
|
||||
uint32_t offectId;
|
||||
};
|
||||
|
||||
struct SMLiquidChunk
|
||||
{
|
||||
float minHeight;
|
||||
float maxHeight;
|
||||
struct SLVert
|
||||
{
|
||||
union
|
||||
{
|
||||
struct SWVert
|
||||
{
|
||||
char depth;
|
||||
char flow0Pct;
|
||||
char flow1Pct;
|
||||
char filler;
|
||||
float height;
|
||||
} waterVert;
|
||||
struct SOVert
|
||||
{
|
||||
char depth;
|
||||
char foam;
|
||||
char wet;
|
||||
char filler;
|
||||
} oceanVert;
|
||||
struct SMVert
|
||||
{
|
||||
uint16_t s;
|
||||
uint16_t t;
|
||||
float height;
|
||||
} magmaVert;
|
||||
};
|
||||
} verts[9*9];
|
||||
|
||||
struct SLTiles
|
||||
{
|
||||
char tiles[8][8];
|
||||
} tiles;
|
||||
|
||||
uint32_t nFlowvs;
|
||||
struct SWFlowv
|
||||
{
|
||||
CAaSphere sphere;
|
||||
C3Vector dir;
|
||||
float velocity;
|
||||
float amplitude;
|
||||
float frequency;
|
||||
} flowvs[2];
|
||||
};
|
||||
|
||||
struct CWSoundEmitter
|
||||
{
|
||||
uint32_t entry_id;
|
||||
C3Vector position;
|
||||
C3Vector size;
|
||||
};
|
||||
|
||||
#endif
|
||||
165
profile/3.3.5a-windows-386/include/map/CMapArea.h
Normal file
165
profile/3.3.5a-windows-386/include/map/CMapArea.h
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
#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;
|
||||
int32_t objectIndex;
|
||||
uint16_t flags;
|
||||
uint16_t pad_0A;
|
||||
int32_t unk_0C;
|
||||
|
||||
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
|
||||
|
||||
CMapChunk mapChunks[256];
|
||||
};
|
||||
|
||||
struct CMapChunk
|
||||
{
|
||||
void** vtable;
|
||||
int32_t objectIndex;
|
||||
int32_t unk_08;
|
||||
|
||||
int32_t TSExplicitList__m_linkoffset_0C;
|
||||
void* TSExplicitList__ptr1_10;
|
||||
void* TSExplicitList__ptr2_14;
|
||||
|
||||
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
|
||||
Loading…
Add table
Add a link
Reference in a new issue