46T2FS_CREATE_SWAP_STRUCT(
T2FSDataLevelInfo, (4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2));
98T2FS_CREATE_SWAP_STRUCT(
T2FSDataLevelMeshIndices, (2, 2, 2, 2, 2, 2, 2, 2, 2, 2));
163T2FS_CREATE_SWAP_STRUCT(
T2FSDataScriptedObject, (2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2));
280T2FS_CREATE_SWAP_STRUCT(
T2FSDataTiledObject, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1));
326T2FS_CREATE_SWAP_STRUCT(
T2FSDataTiledObjectT2MP, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1));
375T2FS_CREATE_SWAP_STRUCT(
T2FSDataTiledObjectShadow, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2));
419T2FS_CREATE_SWAP_STRUCT(
T2FSDataStaticObject, (2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1));
465T2FS_CREATE_SWAP_STRUCT(
T2FSDataStaticObjectShadow, (2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1));
488T2FS_CREATE_SWAP_STRUCT(
T2FSDataLevelItem, (4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2));
struct s_T2FSArray T2FSArray
struct s_T2FSDataStaticObject T2FSDataStaticObject
struct s_T2FSDataLevelMeshBuffer T2FSDataLevelMeshBuffer
struct s_T2FSDataLevel_unk_1_0 T2FSDataLevel_unk_1_0
struct s_T2FSDataLevel_unk_4_3 T2FSDataLevel_unk_4_3
struct s_T2FSDataLevel_unk_2_x_0 T2FSDataLevel_unk_2_x_0
struct s_T2FSDataStaticObjectShadow T2FSDataStaticObjectShadow
struct s_T2FSDataLevel_unk_4_2 T2FSDataLevel_unk_4_2
struct s_T2FSDataTiledObject T2FSDataTiledObject
struct s_T2FSDataLevelItem T2FSDataLevelItem
struct s_T2FSDataLevel_unk_7_0 T2FSDataLevel_unk_7_0
struct s_T2FSDataLevel_unk_4_1 T2FSDataLevel_unk_4_1
struct s_T2FSDataLevel_unk_4_0 T2FSDataLevel_unk_4_0
struct s_T2FSDataLevel_unk_7_1 T2FSDataLevel_unk_7_1
struct s_T2FSDataLevel_unk_5_x_3 T2FSDataLevel_unk_5_x_3
struct s_T2FSDataLevel_unk_7_3 T2FSDataLevel_unk_7_3
struct s_T2FSDataTiledObjectT2MP T2FSDataTiledObjectT2MP
struct s_T2FSDataScriptedObject T2FSDataScriptedObject
struct s_T2FSDataWorldCoordF32 T2FSDataWorldCoordF32
struct s_T2FSDataRegionBounds T2FSDataRegionBounds
struct s_T2FSDataLevelMeshIndices T2FSDataLevelMeshIndices
struct s_T2FSDataTiledObjectShadow T2FSDataTiledObjectShadow
struct s_T2FSDataTileBounds T2FSDataTileBounds
struct s_T2FSDataLevel_unk_7_2 T2FSDataLevel_unk_7_2
struct s_T2FSDataLevel_unk_6 T2FSDataLevel_unk_6
struct s_T2FSDataCoordF32 T2FSDataCoordF32
struct s_T2FSDataCoordS32 T2FSDataCoordS32
yeah.. not kiddin
struct s_T2FSDataLevelInfo T2FSDataLevelInfo
struct s_T2FSDataLevel_unk_2_x_1 T2FSDataLevel_unk_2_x_1
struct s_T2FSLevel T2FSLevel
void t2fs_level_clear(T2FSLevel *level)
int t2fs_level_get_scripted_objects(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_set_node(T2FSContext *ctx, T2FSNode *levelNode, T2FSLevel *level)
int t2fs_level_get_region_bounds(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_get_mesh_indices(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_get_unk_1_0(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_get_tile_bounds(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_get_items(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId)
uint32_t t2fs_level_get_tile_count(T2FSLevel *level)
int t2fs_level_get_mesh_buffer(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest)
int t2fs_level_get_objects(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId)
void t2fs_level_unload(T2FSLevel *level)
Free level data.
int t2fs_level_load(T2FSContext *ctx, T2FSLevel *level, uint32_t id)
Loads level data into memory.
int t2fs_level_get_tiled_objects(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId)
int t2fs_level_get_unk5_x_3_array(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId)
uint32_t t2fs_level_count(T2FSContext *ctx)
#define SASSERT_SIZE(what, size)
Definition models/common.h:26
#define T2FS_CREATE_SWAP_STRUCT(name, sizes)
Definition models/common.h:36
float gridMultiplier
Definition levels.h:32
uint16_t unk_u16_09
Definition levels.h:42
uint16_t unk_u16_04
Definition levels.h:37
uint16_t unk_u16_00
Definition levels.h:33
uint16_t unk_u16_02
Definition levels.h:35
uint16_t unk_u16_08
Definition levels.h:41
uint16_t unk_u16_03
Definition levels.h:36
uint16_t unk_u16_06
Definition levels.h:39
uint16_t unk_u16_07
Definition levels.h:40
uint16_t unk_u16_01
Definition levels.h:34
uint16_t unk_u16_05
Definition levels.h:38
int16_t unk_s16_08
Definition levels.h:483
float unk_u32_04
Definition levels.h:478
uint16_t modelId
Definition levels.h:479
int16_t unk_s16_09
Definition levels.h:484
int16_t unk_s16_07
Definition levels.h:482
uint32_t unk_u32_00
Definition levels.h:475
int16_t unk_s16_06
Definition levels.h:481
T2FSDataWorldCoordF32 position
Definition levels.h:476
int16_t unk_s16_05
Definition levels.h:480
uint32_t unk
Definition levels.h:68
T2FSDataCoordS32 position
needs to be scaled to something.. * 0.03f looks reasonable but it's off.. is it a fixed point thingy?
Definition levels.h:67
uint16_t indexC
index to entry of T2FSDataLevelMeshBuffer
Definition levels.h:87
uint16_t flags
guess, but strongly looks like flags, purpose unknown.
Definition levels.h:83
uint16_t indexToSelfC
max value seems to match last index of this array.
Definition levels.h:91
uint16_t someIndex
looks like index for T2FSDataLevel_unk_1_0
Definition levels.h:82
uint16_t indexB
index to entry of T2FSDataLevelMeshBuffer
Definition levels.h:86
uint16_t indexToSelfA
max value seems to match last index of this array.
Definition levels.h:89
uint16_t unk_u16_08
0xFFFF
Definition levels.h:94
uint16_t indexToSelfB
max value seems to match last index of this array.
Definition levels.h:90
uint16_t indexA
index to entry of T2FSDataLevelMeshBuffer
Definition levels.h:85
uint16_t unk_u16_07
0xFFFF
Definition levels.h:93
uint8_t unk[100]
Definition levels.h:56
uint8_t unk[8]
Definition levels.h:121
uint8_t unk[28]
Definition levels.h:132
uint32_t unk
Definition levels.h:172
uint32_t unk
Definition levels.h:183
uint32_t unk
Definition levels.h:194
uint32_t unk
Definition levels.h:205
uint8_t unk[72]
Definition levels.h:498
uint8_t unk[44]
Definition levels.h:509
uint8_t unk[4]
Definition levels.h:520
uint8_t unk[20]
Definition levels.h:531
uint8_t unk[4]
Definition levels.h:542
uint8_t unk[20]
Definition levels.h:553
float unk
Definition levels.h:111
float max_x
Definition levels.h:110
float min_y
Definition levels.h:109
float max_y
Definition levels.h:110
float min_x
Definition levels.h:109
int16_t rotz
Needs to be scaled, see T2FS_OBJ_ROT_SCALE_FACTOR.
Definition levels.h:158
T2FSDataWorldCoordF32 position
Definition levels.h:152
T2FSDataWorldCoordF32 scale
Definition levels.h:153
uint16_t unk_u16_00
0xFFFF
Definition levels.h:149
int16_t unk_u16_06
Definition levels.h:159
int16_t unk_u16_02
Definition levels.h:155
uint16_t modelId
Definition levels.h:154
int16_t unk_u16_03
Definition levels.h:156
uint16_t unk_u16_01
0xFFFF
Definition levels.h:150
int16_t unk_u16_04
Definition levels.h:157
float unk_u32_20
Definition levels.h:439
int8_t unk_u8_06
Definition levels.h:458
int16_t unk_u16_02
Definition levels.h:433
int16_t unk_u16_2C
Definition levels.h:447
T2FSDataWorldCoordF32 position
Definition levels.h:435
float unk_u32_1C
Definition levels.h:438
int16_t modelId
Definition levels.h:442
int8_t unk_u8_02
Definition levels.h:453
int8_t unk_u8_07
Definition levels.h:459
int8_t unk_u8_01
Definition levels.h:452
int8_t unk_u8_05
Definition levels.h:457
T2FSDataCoordF32 scale
Definition levels.h:436
int8_t unk_u8_03
Definition levels.h:454
int8_t unk_u8_00
Definition levels.h:450
int8_t rotzMultiplier
This needs testing.
Definition levels.h:449
uint8_t unk_u8_02xx
Definition levels.h:445
uint8_t unk_u8_01xx
Definition levels.h:444
int8_t unk_u8_08
Definition levels.h:460
int8_t unk_u8_04
Definition levels.h:455
float unk_u32_24
Definition levels.h:440
int16_t unk_u16_00
Definition levels.h:432
uint8_t unk_u8_01xx
Definition levels.h:404
int16_t unk_u16_00
Definition levels.h:387
int8_t unk_u8_02
Definition levels.h:413
int16_t unk_u16_2C
Definition levels.h:407
uint8_t unk_u8_02xx
Definition levels.h:405
int8_t unk_u8_00
Definition levels.h:410
T2FSDataWorldCoordF32 position
Definition levels.h:392
float unk_u32_24
Definition levels.h:400
int16_t unk_u16_02
Definition levels.h:388
float unk_u32_20
Definition levels.h:399
T2FSDataCoordF32 scale
Definition levels.h:396
int8_t unk_u8_04
Definition levels.h:415
int8_t rotzMultiplier
multiplied by 90
Definition levels.h:409
int8_t unk_u8_03
Definition levels.h:414
int8_t unk_u8_01
Definition levels.h:412
int16_t modelId
Definition levels.h:402
float unk_u32_1C
Definition levels.h:398
float max_y
Definition levels.h:219
float max_x
Definition levels.h:219
uint16_t unk2
Definition levels.h:221
float min_y
Definition levels.h:218
float min_x
Definition levels.h:218
uint16_t unk
Definition levels.h:220
int8_t unk_8_11
Is this bbox maxy?
Definition levels.h:363
int8_t unk_8_10
Is this bbox miny?
Definition levels.h:362
uint8_t y
Multiply by the level it's grid multiplier to get the real float y.
Definition levels.h:368
int8_t unk_8_09
Is this bbox maxz?
Definition levels.h:361
uint16_t unk_u16_02
New in Shadow.
Definition levels.h:371
uint8_t x
Multiply by the level it's grid multiplier to get the real float x.
Definition levels.h:367
uint32_t unk_u32_00
Definition levels.h:336
uint8_t unk_u8_15
Always set to 0b10000001 ? (signed -127, unsigned 129).
Definition levels.h:369
float scale
Definition levels.h:337
uint16_t rotFlags
Definition levels.h:345
int16_t z
Multiply with approx 5.12f for real float z position.
Definition levels.h:355
uint16_t modelId
Definition levels.h:338
uint16_t unk_u16_05
Definition levels.h:347
int8_t unk_8_07
Is this bbox maxx?
Definition levels.h:359
int8_t unk_8_06
Is this bbox minx?
Definition levels.h:358
int8_t unk_8_08
Is this bbox minz?
Definition levels.h:360
uint16_t unk_u16_01
New in Shadow.
Definition levels.h:370
int16_t unk_16_00
Definition levels.h:340
uint8_t posFlags
Contains flags whether the x or y position is negative.
Definition levels.h:365
uint32_t unk_u32_00
Definition levels.h:288
int16_t z
Multiply with approx 5.12f for real float z position.
Definition levels.h:308
uint8_t posFlags
Contains flags whether the x or y position is negative.
Definition levels.h:318
uint16_t modelId
Definition levels.h:300
float scale
Definition levels.h:289
uint8_t y
Multiply by the level it's grid multiplier to get the real float y.
Definition levels.h:321
int8_t unk_8_09
Is this bbox maxz?
Definition levels.h:314
int8_t unk_8_08
Is this bbox minz?
Definition levels.h:313
uint8_t x
Multiply by the level it's grid multiplier to get the real float x.
Definition levels.h:320
int8_t unk_8_10
Is this bbox miny?
Definition levels.h:315
int8_t unk_8_06
Is this bbox minx?
Definition levels.h:311
uint8_t unk_u8_15
Always set to 0b10000001 ? (signed -127, unsigned 129).
Definition levels.h:322
int16_t unk_16_00
Definition levels.h:291
uint16_t rotFlags
Definition levels.h:296
int8_t unk_8_11
Is this bbox maxy?
Definition levels.h:316
uint16_t unk_u16_05
Definition levels.h:298
int8_t unk_8_07
Is this bbox maxx?
Definition levels.h:312
float scale
Definition levels.h:244
uint8_t x
Multiply by the level it's grid multiplier to get the real float x.
Definition levels.h:274
uint16_t unk_u16_05
Definition levels.h:254
int8_t unk_8_08
Is this bbox minz?
Definition levels.h:267
uint8_t posFlags
Contains flags whether the x or y position is negative.
Definition levels.h:272
int8_t unk_8_11
Is this bbox maxy?
Definition levels.h:270
uint8_t unk_u8_15
Always set to 0b10000001 ? (signed -127, unsigned 129).
Definition levels.h:276
uint16_t rotFlags
Definition levels.h:252
uint16_t modelId
Definition levels.h:245
int8_t unk_8_06
Is this bbox minx?
Definition levels.h:265
uint32_t unk_u32_00
Definition levels.h:243
int8_t unk_8_07
Is this bbox maxx?
Definition levels.h:266
int8_t unk_8_09
Is this bbox maxz?
Definition levels.h:268
int16_t z
Multiply with approx 5.12f for real float z position.
Definition levels.h:262
int16_t unk_16_00
Definition levels.h:247
int8_t unk_8_10
Is this bbox miny?
Definition levels.h:269
uint8_t y
Multiply by the level it's grid multiplier to get the real float y.
Definition levels.h:275
T2FSNode * nodeUnk1
Definition levels.h:570
T2FSNode * nodeUnk5
Definition levels.h:573
uint8_t isValid
Definition levels.h:565
T2FSDataLevelInfo * info
Definition levels.h:567
T2FSNode * nodeUnk4
Definition levels.h:572
T2FSNode * nodeUnk3
Definition levels.h:571
T2FSNode * node
Definition levels.h:564
uint8_t const * name
Definition levels.h:575
struct s_T2FSNode T2FSNode
This is the core object to describe a path inside the tree.
Definition t2fs.h:110
struct s_T2FSContext T2FSContext
This is the core LibT2FS object that you will be passing around.
Definition t2fs.h:53