29#define T2FS_VERTEX_CACHE_SIZE 32
30#define T2FS_VERTEX_GLOBAL_UNSET (uint32_t)-1
32#define T2FS_MODEL_BONE_SYMBOL_LEG 0b001
33#define T2FS_MODEL_BONE_SYMBOL_NOT_HEAD 0b010
34#define T2FS_MODEL_BONE_SYMBOL_RIGHT 0b100
36#define T2FS_MATERIAL_FLAG_UNK_0 0b0000000000000001
37#define T2FS_MATERIAL_FLAG_UNK_1 0b0000000000000010
38#define T2FS_MATERIAL_FLAG_CULBF 0b0000000000000100
39#define T2FS_MATERIAL_FLAG_UNK_3 0b0000000000001000
40#define T2FS_MATERIAL_FLAG_UNK_4 0b0000000000010000
41#define T2FS_MATERIAL_FLAG_UNK_5 0b0000000000100000
42#define T2FS_MATERIAL_FLAG_UNK_6 0b0000000001000000
43#define T2FS_MATERIAL_FLAG_UNK_7 0b0000000010000000
44#define T2FS_MATERIAL_FLAG_TRANSPARENCY 0b0000000100000000
45#define T2FS_MATERIAL_FLAG_UNK_9 0b0000001000000000
46#define T2FS_MATERIAL_FLAG_UNK_10 0b0000010000000000
47#define T2FS_MATERIAL_FLAG_UNK_11 0b0000100000000000
48#define T2FS_MATERIAL_FLAG_UNK_12 0b0001000000000000
49#define T2FS_MATERIAL_FLAG_UNK_13 0b0010000000000000
50#define T2FS_MATERIAL_FLAG_UNK_14 0b0100000000000000
51#define T2FS_MATERIAL_FLAG_UNK_15 0b1000000000000000
72T2FS_CREATE_SWAP_STRUCT(
T2FSDataModelInfo, (4,4,4,4,4,4,1,1,1,1,2,2));
211T2FS_CREATE_SWAP_STRUCT(
T2FSDataAnimationHeader, (2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2));
238T2FS_CREATE_SWAP_STRUCT(
T2FSDataUnk2_x_4, (2, 2, 2, 4, 4, 4, 2, 2, 1, 1, 1, 1, 1, 1));
296T2FS_CREATE_SWAP_STRUCT(
T2FSDataMaterial, (4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2));
327T2FS_CREATE_SWAP_STRUCT(
T2FSDataVertex, (2, 2, 2, 2, 4, 4, 1, 1, 1, 1));
339T2FS_CREATE_SWAP_STRUCT(
T2FSDataVertexN64, (2, 2, 2, 2, 2, 2, 1, 1, 1, 1));
struct s_T2FSDataModelInfo T2FSDataModelInfo
struct s_T2FSDataMaterial T2FSDataMaterial
struct s_T2FSDataHotpoint T2FSDataHotpoint
struct s_T2FSDataAnimationHeader T2FSDataAnimationHeader
struct s_T2FSDataBone T2FSDataBone
struct s_T2FSDataAnimationBoneIndices T2FSDataAnimationBoneIndices
struct s_T2FSDataVertex T2FSDataVertex
struct s_T2FSDataColorRGBA8 T2FSDataColorRGBA8
struct s_T2FSDataModelInfoDino T2FSDataModelInfoDino
struct s_T2FSDataBoneOrientation T2FSDataBoneOrientation
struct s_T2FSDataBoneOrientationE3 T2FSDataBoneOrientationE3
struct s_T2FSDataCoordF32 T2FSDataCoordF32
#define SASSERT_SIZE(what, size)
Definition models/common.h:26
#define T2FS_CREATE_SWAP_STRUCT(name, sizes)
Definition models/common.h:36
struct s_T2FSSurface T2FSSurface
struct s_T2FSDataVertexN64 T2FSDataVertexN64
struct s_T2FSAnimationFrame T2FSAnimationFrame
void t2fs_model_init(T2FSModel *mdl)
Init our unified model struct.
struct s_T2FSVtxCache T2FSVtxCache
uint32_t t2fs_model_count(T2FSContext *ctx)
Get the amount of models present.
e_T2FSModelType
Definition models.h:383
@ T2FS_MDL_TYPE_ANIMATED
Definition models.h:385
@ T2FS_MDL_TYPE_STATIC
Definition models.h:384
struct s_T2FSDataVertexNormal T2FSDataVertexNormal
void t2fs_model_free(T2FSModel *mdl)
Free all allocated memory for given T2FSModel.
struct s_T2FSModel T2FSModel
struct s_T2FSDataVertexColor T2FSDataVertexColor
struct s_T2FSDataUnk2_x_4 T2FSDataUnk2_x_4
This is a guess, to try out stuff.
struct s_T2FSModelContext T2FSModelContext
helper to unify different games/versions
#define T2FS_VERTEX_CACHE_SIZE
Definition models.h:29
int t2fs_model_load_data_node(T2FSModelContext *mdlCtx, uint32_t mdlId, T2FSNode **dest)
Loads the model data into memory.
void t2fs_model_context_init(T2FSContext *ctx, T2FSModelContext *mdlCtx)
Initialize T2FSModelContext.
enum e_T2FSModelType T2FSModelType
struct s_T2FSPolygon T2FSPolygon
int t2fs_model_make(T2FSModelContext *mdlCtx, T2FSNode *mdlNode, uint32_t varId, T2FSModel *dest)
Convert the model data to our unified struct s_T2FSModel.
struct s_T2FSSurfaceVertices T2FSSurfaceVertices
Contains indices to vertices in global vertex buffer.
uint32_t t2fs_model_get_variation_count(T2FSModelContext *mdlCtx, T2FSNode *mdlNode)
Get the model variation count.
struct s_T2FSVertexBonePair T2FSVertexBonePair
void t2fs_model_unload_data_node(T2FSNode *modelNode)
Unloads the model data node.
union u_T2FSDataVertexAttr T2FSDataVertexAttr
struct s_T2FSAnimation T2FSAnimation
struct s_T2FSPolygonBuffer T2FSPolygonBuffer
float posy
Definition models.h:349
float rotz
Definition models.h:350
float rotx
Definition models.h:350
float rotw
Definition models.h:350
float posz
Definition models.h:349
float roty
Definition models.h:350
float posx
Definition models.h:349
uint32_t boneCount
Definition models.h:355
uint8_t * boneIds
Definition models.h:356
uint32_t frameCount
Definition models.h:357
T2FSAnimationFrame * frames
Definition models.h:358
int16_t rotationIndex
-1 == UNUSED (no rotation changes for this bone)
Definition models.h:162
int16_t positionIndex
-1 == UNUSED (no position changes for this bone)
Definition models.h:163
float rotw
Definition models.h:144
float rotz
Definition models.h:143
float rotx
Definition models.h:141
float roty
Definition models.h:142
T2FSDataCoordF32 pos
Definition models.h:140
int16_t rotw
Needs to be scaled, see T2FS_BONE_ROT_SCALE_FACTOR.
Definition models.h:130
T2FSDataCoordF32 pos
Definition models.h:126
int16_t roty
Needs to be scaled, see T2FS_BONE_ROT_SCALE_FACTOR.
Definition models.h:128
int16_t rotx
Needs to be scaled, see T2FS_BONE_ROT_SCALE_FACTOR.
Definition models.h:127
int16_t rotz
Needs to be scaled, see T2FS_BONE_ROT_SCALE_FACTOR.
Definition models.h:129
T2FSDataCoordF32 bbox[8]
Definition models.h:107
uint32_t flags
Definition models.h:114
uint8_t pad
Definition models.h:112
float damageScaler
Definition models.h:113
float maxBounds
Definition models.h:108
uint8_t materialType
Definition models.h:111
int8_t parentIndex
Definition models.h:109
uint8_t symbol
Definition models.h:110
uint8_t r
Definition models.h:257
uint8_t b
Definition models.h:257
uint8_t a
Definition models.h:257
uint8_t g
Definition models.h:257
T2FSDataCoordF32 pos
Definition models.h:244
uint32_t flags
Definition models.h:245
uint16_t boneId
Definition models.h:246
uint16_t unk
Definition models.h:247
T2FSDataColorRGBA8 bgColor
Definition models.h:274
uint16_t sc
Definition models.h:292
uint32_t flags
Definition models.h:270
uint32_t textureId
Definition models.h:268
T2FSDataColorRGBA8 fgColor
Definition models.h:273
uint16_t tc
Definition models.h:292
uint32_t unk_u32_1
Definition models.h:269
T2FSDataCoordF32 max
Definition models.h:81
T2FSDataCoordF32 min
Definition models.h:80
int8_t unk1
Definition models.h:66
int8_t headTrackFactor
Definition models.h:65
int8_t headTrackStartBone
Definition models.h:63
T2FSDataCoordF32 max
Definition models.h:62
int8_t headTrackEndBone
Definition models.h:64
T2FSDataCoordF32 min
Definition models.h:61
uint16_t unk2
Definition models.h:67
int16_t unk3
Definition models.h:68
This is a guess, to try out stuff.
Definition models.h:215
int8_t unk_s8_00
Definition models.h:229
int8_t unk_s8_03
Definition models.h:232
int8_t unk_s8_05
Definition models.h:234
int8_t unk_s8_01
Definition models.h:230
float unk_f32_00
Definition models.h:221
int16_t unk_s16_04
Definition models.h:225
float unk_f32_01
Definition models.h:222
int8_t unk_s8_04
Definition models.h:233
int16_t unk_s16_00
probably also some index/id (low values)
Definition models.h:217
float unk_f32_02
Definition models.h:223
int16_t unk_s16_05
Definition models.h:226
int16_t unk_s16_01
0xFFFF
Definition models.h:218
int16_t boneId
assumed based on max value and the bone count
Definition models.h:216
int8_t unk_s8_02
Definition models.h:231
uint8_t green
Definition models.h:304
uint8_t red
Definition models.h:304
uint8_t blue
Definition models.h:304
int16_t x
Definition models.h:331
uint16_t flags
Definition models.h:332
uint8_t alpha
Definition models.h:335
int16_t t
Definition models.h:333
int16_t y
Definition models.h:331
int16_t z
Definition models.h:331
int16_t s
Definition models.h:333
T2FSDataVertexAttr attr
Definition models.h:334
int8_t y
Definition models.h:300
int8_t z
Definition models.h:300
int8_t x
Definition models.h:300
int16_t y
Definition models.h:319
int16_t x
Definition models.h:319
float t
Definition models.h:321
float s
Definition models.h:321
T2FSDataVertexAttr attr
Definition models.h:322
uint8_t alpha
Definition models.h:323
int16_t z
Definition models.h:319
uint16_t flags
Definition models.h:320
helper to unify different games/versions
Definition models.h:457
T2FSContext * ctx
Definition models.h:464
uint32_t(* getVarCount)(T2FSNode *mdlNode)
Definition models.h:459
int(* make)(T2FSContext *ctx, T2FSNode *mdlNode, uint32_t varId, T2FSModel *dest)
Definition models.h:460
T2FSDataCoordF32 min
Minimum bounds.
Definition models.h:394
T2FSDataVertex * vertices
Vertex buffer.
Definition models.h:402
uint32_t var
Variation ID.
Definition models.h:391
uint8_t boneCount
Amount of bones.
Definition models.h:404
uint32_t poseCount
Amount of poses and possible amount of animations.
Definition models.h:408
T2FSSurface * surfaces
Definition models.h:416
float scale
TODO.
Definition models.h:399
int8_t headTrackStartBone
Headtrack bone ID.
Definition models.h:396
T2FSDataCoordF32 max
Maximum bounds.
Definition models.h:395
T2FSModelType type
Animated or static.
Definition models.h:393
T2FSDataBone * bones
Bone infos.
Definition models.h:405
uint32_t vertexCount
Total vertex count.
Definition models.h:401
uint32_t id
Model ID.
Definition models.h:390
T2FSDataBoneOrientation ** poses
The bone orientations per pose, like this poses[poseId][boneId].
Definition models.h:410
T2FSAnimation * animations
TODO current unused.
Definition models.h:413
uint32_t surfaceCount
Definition models.h:415
uint32_t animationCount
TODO current unused.
Definition models.h:412
int8_t headTrackEndBone
TODO.
Definition models.h:397
int8_t headTrackFactor
TODO.
Definition models.h:398
uint32_t hotpointCount
TODO current unused.
Definition models.h:418
T2FSDataHotpoint * hotpoints
TODO current unused.
Definition models.h:419
uint32_t polygonCount
Amount of valid polygons. Set per surface.
Definition models.h:449
uint32_t polygonSize
Total size of the polygon buffer. Set per surface.
Definition models.h:450
T2FSSurfaceVertices vertices
Definition models.h:452
T2FSPolygon * polygons
Set per surface.
Definition models.h:448
T2FSVtxCache cache
Definition models.h:447
uint32_t realC
For debugging.
Definition models.h:364
uint32_t realB
Definition models.h:364
uint32_t c
Definition models.h:363
uint32_t b
Definition models.h:363
uint32_t a
Definition models.h:363
uint32_t realA
Definition models.h:364
Contains indices to vertices in global vertex buffer.
Definition models.h:438
uint32_t size
Definition models.h:441
T2FSVertexBonePair * indices
Definition models.h:439
uint32_t count
Definition models.h:440
T2FSPolygon * polygons
Definition models.h:379
uint32_t polygonCount
Definition models.h:378
uint32_t vertexCount
Definition models.h:376
T2FSDataMaterial material
Definition models.h:375
T2FSVertexBonePair * vertices
indices to global vertex buffer
Definition models.h:377
uint32_t vertexIndex
Index in global vertex buffer.
Definition models.h:369
int32_t boneId
The bone ID to add this vertex to.
Definition models.h:370
uint32_t curVertCount
Definition models.h:433
uint32_t localOffset
Definition models.h:430
uint32_t buf[T2FS_VERTEX_CACHE_SIZE]
Mimic N64 vertex cache.
Definition models.h:424
int8_t bones[T2FS_VERTEX_CACHE_SIZE]
Keep track of what boneId the vertices belong to.
Definition models.h:425
uint32_t globalOffset
Current offset to global vertex buffer.
Definition models.h:426
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
T2FSDataVertexNormal normals
Definition models.h:309
T2FSDataVertexColor colors
Definition models.h:310