LibT2FS 0.1
C API for accessing TEngine data in memory.
Loading...
Searching...
No Matches
levels.h
Go to the documentation of this file.
1/* This file is part of LibT2FS.
2 *
3 * LibT2FS is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * LibT2FS is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <https://www.gnu.org/licenses/>.
15 */
16
17#ifndef H_T2FS_LEVELS
18#define H_T2FS_LEVELS
19
20#include <stdint.h>
21
22#include "t2fs.h"
23#include "models/common.h"
24
25// ********************************************************************
26// Structs as in file (possible after decompression and/or deinterleaving)
27// ********************************************************************
28
31typedef struct __attribute__((__packed__)) s_T2FSDataLevelInfo {
33 uint16_t unk_u16_00; // 0xFFFF
34 uint16_t unk_u16_01; // 0xFFFF
35 uint16_t unk_u16_02; // 0xFFFF
36 uint16_t unk_u16_03; // 0xFFFF
37 uint16_t unk_u16_04; // 0xFF??
38 uint16_t unk_u16_05;
39 uint16_t unk_u16_06;
40 uint16_t unk_u16_07;
41 uint16_t unk_u16_08;
42 uint16_t unk_u16_09;
44
46T2FS_CREATE_SWAP_STRUCT(T2FSDataLevelInfo, (4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2));
47
48
55typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_1_0 {
56 uint8_t unk[100];
58
60
61
62
66typedef struct __attribute__((__packed__)) s_T2FSDataLevelMeshBuffer {
68 uint32_t unk;
70
73
74
81typedef struct __attribute__((__packed__)) s_T2FSDataLevelMeshIndices {
82 uint16_t someIndex;
83 uint16_t flags;
84
85 uint16_t indexA;
86 uint16_t indexB;
87 uint16_t indexC;
88
89 uint16_t indexToSelfA;
90 uint16_t indexToSelfB;
91 uint16_t indexToSelfC;
92
93 uint16_t unk_u16_07;
94 uint16_t unk_u16_08;
96
98T2FS_CREATE_SWAP_STRUCT(T2FSDataLevelMeshIndices, (2, 2, 2, 2, 2, 2, 2, 2, 2, 2));
99
100
108typedef struct __attribute__((__packed__)) s_T2FSDataRegionBounds {
109 float min_x, min_y;
110 float max_x, max_y;
111 float unk;
113
116
117
120typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_2_x_0 {
121 uint8_t unk[8];
123
125
126
127
131typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_2_x_1 {
132 uint8_t unk[28];
134
136
137
138
148typedef struct __attribute__((__packed__)) s_T2FSDataScriptedObject {
149 uint16_t unk_u16_00;
150 uint16_t unk_u16_01;
151 // TODO on T2FS_FILE_PC_SEEDS_OF_EVIL_MP it's different?
154 uint16_t modelId;
155 int16_t unk_u16_02;
156 int16_t unk_u16_03;
157 int16_t unk_u16_04;
158 int16_t rotz;
159 int16_t unk_u16_06;
161
163T2FS_CREATE_SWAP_STRUCT(T2FSDataScriptedObject, (2, 2, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2));
164
165
166
171typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_4_0 {
172 uint32_t unk;
174
176
177
178
182typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_4_1 {
183 uint32_t unk;
185
187
188
189
193typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_4_2 {
194 uint32_t unk;
196
198
199
200
204typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_4_3 {
205 uint32_t unk;
207
209
210
211
217typedef struct __attribute__((__packed__)) s_T2FSDataTileBounds {
218 float min_x, min_y;
219 float max_x, max_y;
220 uint16_t unk;
221 uint16_t unk2;
223
226
227
228
242typedef struct __attribute__((__packed__)) s_T2FSDataTiledObject {
243 uint32_t unk_u32_00; // 0xFFFFFFFF
244 float scale;
245 uint16_t modelId;
246
247 int16_t unk_16_00;
248
252 uint16_t rotFlags;
253
254 uint16_t unk_u16_05;
255
262 int16_t z;
263
264 // These are probably the bbox, need to check that.. FIXME
265 int8_t unk_8_06;
266 int8_t unk_8_07;
267 int8_t unk_8_08;
268 int8_t unk_8_09;
269 int8_t unk_8_10;
270 int8_t unk_8_11;
271
272 uint8_t posFlags;
273
274 uint8_t x;
275 uint8_t y;
276 uint8_t unk_u8_15;
277} T2FSDataTiledObject; // size of 28
278
280T2FS_CREATE_SWAP_STRUCT(T2FSDataTiledObject, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1));
281
282
287typedef struct __attribute__((__packed__)) s_T2FSDataTiledObjectT2MP {
288 uint32_t unk_u32_00; // 0xFFFFFFFF
289 float scale;
290
291 int16_t unk_16_00;
292
296 uint16_t rotFlags;
297
298 uint16_t unk_u16_05;
299
300 uint16_t modelId;
301
308 int16_t z;
309
310 // These are probably the bbox, need to check that.. FIXME
311 int8_t unk_8_06;
312 int8_t unk_8_07;
313 int8_t unk_8_08;
314 int8_t unk_8_09;
315 int8_t unk_8_10;
316 int8_t unk_8_11;
317
318 uint8_t posFlags;
319
320 uint8_t x;
321 uint8_t y;
322 uint8_t unk_u8_15;
324
326T2FS_CREATE_SWAP_STRUCT(T2FSDataTiledObjectT2MP, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)); // TODO adjust
327
328
335typedef struct __attribute__((__packed__)) s_T2FSDataTiledObjectShadow {
336 uint32_t unk_u32_00; // 0xFFFFFFFF - same as s_T2FSDataTiledObject
337 float scale; // - same as s_T2FSDataTiledObject
338 uint16_t modelId;
339
340 int16_t unk_16_00;
341
345 uint16_t rotFlags;
346
347 uint16_t unk_u16_05;
348
355 int16_t z;
356
357 // These are probably the bbox, need to check that.. FIXME
358 int8_t unk_8_06;
359 int8_t unk_8_07;
360 int8_t unk_8_08;
361 int8_t unk_8_09;
362 int8_t unk_8_10;
363 int8_t unk_8_11;
364
365 uint8_t posFlags;
366
367 uint8_t x;
368 uint8_t y;
369 uint8_t unk_u8_15;
370 uint16_t unk_u16_01;
371 uint16_t unk_u16_02;
373
375T2FS_CREATE_SWAP_STRUCT(T2FSDataTiledObjectShadow, (4, 4, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2));
376
377
386typedef struct __attribute__((__packed__)) s_T2FSDataStaticObject {
387 int16_t unk_u16_00; // 00 2 0xFFFF
388 int16_t unk_u16_02; // 02 2 0xFFFF
389
393
397
398 float unk_u32_1C; // 28 4
399 float unk_u32_20; // 32 4
400 float unk_u32_24; // 36 4
401
402 int16_t modelId; // 40 2
403 //int16_t unk_u16_2A; // 42 2
404 uint8_t unk_u8_01xx;
405 uint8_t unk_u8_02xx;
406
407 int16_t unk_u16_2C; // 44 2
408
410 int8_t unk_u8_00;
411
412 int8_t unk_u8_01;
413 int8_t unk_u8_02;
414 int8_t unk_u8_03;
415 int8_t unk_u8_04;
416} T2FSDataStaticObject; // size of 52 (on Turok2Demo.lss it's 56..)
417
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));
420
421
422
431typedef struct __attribute__((__packed__)) s_T2FSDataStaticObjectShadow {
432 int16_t unk_u16_00; // 00 2 0xFFFF
433 int16_t unk_u16_02; // 02 2 0xFFFF
434
437
441
442 int16_t modelId;
443
444 uint8_t unk_u8_01xx;
445 uint8_t unk_u8_02xx;
446
447 int16_t unk_u16_2C;
448
450 int8_t unk_u8_00;
451
452 int8_t unk_u8_01;
453 int8_t unk_u8_02;
454 int8_t unk_u8_03;
455 int8_t unk_u8_04;
456
457 int8_t unk_u8_05;
458 int8_t unk_u8_06;
459 int8_t unk_u8_07;
460 int8_t unk_u8_08;
461
463
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));
466
467
474typedef struct __attribute__((__packed__)) s_T2FSDataLevelItem {
475 uint32_t unk_u32_00; // 0xFFFFFFFF
477
479 uint16_t modelId;
480 int16_t unk_s16_05;
481 int16_t unk_s16_06;
482 int16_t unk_s16_07;
483 int16_t unk_s16_08;
484 int16_t unk_s16_09;
485} T2FSDataLevelItem; // size of 32
486
488T2FS_CREATE_SWAP_STRUCT(T2FSDataLevelItem, (4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2));
489
490
497typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_5_x_3 {
498 uint8_t unk[72];
500
502
503
504
508typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_6 {
509 uint8_t unk[44];
511
513
514
515
519typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_7_0 {
520 uint8_t unk[4];
522
524
525
526
530typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_7_1 {
531 uint8_t unk[20];
533
535
536
537
541typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_7_2 {
542 uint8_t unk[4];
544
546
547
548
552typedef struct __attribute__((__packed__)) s_T2FSDataLevel_unk_7_3 {
553 uint8_t unk[20];
555
557
558
559// ********************************************************************
560// Our structs
561// ********************************************************************
562
563typedef struct s_T2FSLevel {
565 uint8_t isValid;
566
568
569 // set some nodes for later use
574
575 uint8_t const *name;
577
578
579void
581
582uint32_t
584
585int
587
588int
590
591int
593
594int
596
597int
599
600int
602
603uint32_t
605
606int
607t2fs_level_get_tiled_objects(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId);
608
609int
610t2fs_level_get_objects(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId);
611
612int
613t2fs_level_get_items(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId);
614
615int
616t2fs_level_get_unk5_x_3_array(T2FSContext *ctx, T2FSLevel *level, T2FSArray *dest, uint32_t tileId);
617
618// levelNode data should be loaded
619int
621
622
633int
634t2fs_level_load(T2FSContext *ctx, T2FSLevel *level, uint32_t id);
635
636
640void
642
643#endif
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
Definition levels.h:31
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
Definition levels.h:474
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
Definition levels.h:66
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
Definition levels.h:81
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
Definition levels.h:55
uint8_t unk[100]
Definition levels.h:56
Definition levels.h:120
uint8_t unk[8]
Definition levels.h:121
Definition levels.h:131
uint8_t unk[28]
Definition levels.h:132
Definition levels.h:171
uint32_t unk
Definition levels.h:172
Definition levels.h:182
uint32_t unk
Definition levels.h:183
Definition levels.h:193
uint32_t unk
Definition levels.h:194
Definition levels.h:204
uint32_t unk
Definition levels.h:205
Definition levels.h:497
uint8_t unk[72]
Definition levels.h:498
Definition levels.h:508
uint8_t unk[44]
Definition levels.h:509
Definition levels.h:519
uint8_t unk[4]
Definition levels.h:520
Definition levels.h:530
uint8_t unk[20]
Definition levels.h:531
Definition levels.h:541
uint8_t unk[4]
Definition levels.h:542
Definition levels.h:552
uint8_t unk[20]
Definition levels.h:553
Definition levels.h:108
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
Definition levels.h:148
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
Definition levels.h:431
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
Definition levels.h:386
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
Definition levels.h:217
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
Definition levels.h:335
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
Definition levels.h:287
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
Definition levels.h:242
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
Definition levels.h:563
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