Go to the source code of this file.
|
| enum | ModelPropertyKeys {
MODEL_PROP_KEY_RENDER_MODE = 0x5C
, MODEL_PROP_KEY_CAMERA_DATA = 0x5D
, MODEL_PROP_KEY_TEXTURE_NAME = 0x5E
, MODEL_PROP_KEY_SPECIAL = 0x5F
,
MODEL_PROP_KEY_GROUP_INFO = 0x60
, MODEL_PROP_KEY_BOUNDING_BOX = 0x61
, MODEL_PROP_KEY_62 = 0x62
} |
| |
| enum | ShapeTypes { SHAPE_TYPE_MODEL = 2
, SHAPE_TYPE_GROUP = 5
, SHAPE_TYPE_ROOT = 7
, SHAPE_TYPE_SPECIAL_GROUP = 10
} |
| |
| enum | GroupTypes { GROUP_TYPE_0 = 0
, GROUP_TYPE_1 = 1
} |
| |
| enum | ExtraTileTypes {
EXTRA_TILE_NONE = 0
, EXTRA_TILE_MIPMAPS = 1
, EXTRA_TILE_AUX_SAME_AS_MAIN = 2
, EXTRA_TILE_AUX_INDEPENDENT = 3
,
EXTRA_TILE_4 = 4
} |
| |
|
| void | mdl_set_depth_tint_params (u8 primR, u8 primG, u8 primB, u8 primA, u8 fogR, u8 fogG, u8 fogB, s32 fogStart, s32 fogEnd) |
| |
| void | mdl_set_remap_tint_params (u8 primR, u8 primG, u8 primB, u8 envR, u8 envG, u8 envB) |
| |
| void | mdl_get_remap_tint_params (u8 *primR, u8 *primG, u8 *primB, u8 *envR, u8 *envG, u8 *envB) |
| |
| void | init_model_data (void) |
| |
| void | update_model_animator (s32) |
| |
| void | update_model_animator_with_transform (s32 animatorID, Mtx *mtx) |
| |
| void | set_mdl_custom_gfx_set (Model *, s32, u32) |
| |
| ModelNodeProperty * | get_model_property (ModelNode *node, ModelPropertyKeys key) |
| |
| void | load_texture_variants (u32 romOffset, s32 textureID, s32 baseOffset, s32 size) |
| |
| s32 | step_model_animator (ModelAnimator *animator) |
| |
| AnimatorNode * | get_animator_node_for_tree_index (ModelAnimator *animator, s32 treeIndex) |
| |
| AnimatorNode * | get_animator_node_with_id (ModelAnimator *animator, s32 id) |
| |
| void | animator_update_model_transforms (ModelAnimator *animator, Mtx *rootTransform) |
| |
| void | render_animated_model (s32 animatorID, Mtx *rootTransform) |
| |
| void | animator_node_update_model_transform (ModelAnimator *animator, f32(*flipMtx)[4], AnimatorNode *node, Mtx *rootTransform) |
| |
| void | init_worker_list (void) |
| |
| ModelAnimator * | get_animator_by_index (s32 animModelID) |
| |
| void | reset_animator_list (void) |
| |
| void | delete_model_animator_node (AnimatorNode *node) |
| |
| void | delete_model_animator_nodes (ModelAnimator *animator) |
| |
| void | delete_model_animator (ModelAnimator *animator) |
| |
| void | render_animated_model_with_vertices (s32 animatorID, Mtx *rootTransform, s32 segment, void *baseAddr) |
| |
| void | appendGfx_animator (ModelAnimator *animator) |
| |
| ModelAnimator * | set_animator_render_callback (s32 animModelID, void *callbackArg, void(*callbackFunc)(void *)) |
| |
| void | reload_mesh_animator_tree (ModelAnimator *animator) |
| |
| s32 | step_mesh_animator (ModelAnimator *animator) |
| |
| void | set_custom_gfx_builders (s32 customGfxIndex, ModelCustomGfxBuilderFunc pre, ModelCustomGfxBuilderFunc post) |
| |
| void | mdl_make_local_vertex_copy (s32 arg0, u16 treeIdx, s32) |
| |
| void | play_model_animation_starting_from (s32 index, s16 *animPos, s32 framesToSkip) |
| |
| void | mdl_set_shroud_tint_params (u8 r, u8 g, u8 b, u8 a) |
| |
◆ ModelNodePropertyData
| union ModelNodePropertyData |
◆ ModelBoundingBox
◆ ModelNodeProperty
◆ ModelGroupData
◆ ModelDisplayData
| Data Fields |
|
Gfx * |
displayList |
|
|
char |
unk_04[0x4] |
|
◆ ModelNode
◆ Model
◆ ModelTransformGroup
| struct ModelTransformGroup |
◆ ModelIDList
| Data Fields |
|
u16 |
count |
|
|
u16 |
list[] |
|
◆ ModelLocalVertexCopy
| struct ModelLocalVertexCopy |
| Data Fields |
|
s32 |
numVertices |
|
|
Vtx * |
minVertexAddr |
|
|
Gfx * |
gfxCopy[2] |
|
|
Vtx * |
vtxCopy[2] |
|
|
s32 |
selector |
|
◆ ModelTreeInfo
| Data Fields |
|
u8 |
modelIndex |
|
|
u8 |
treeDepth |
|
|
u8 |
textureID |
|
|
char |
unk_03 |
|
◆ TextureHandle
◆ ModelBlueprint
◆ ShapeFileHeader
◆ ShapeFile
◆ SHAPE_SIZE_LIMIT
| #define SHAPE_SIZE_LIMIT 0x8000 |
◆ ModelList
◆ ModelTransformGroupList
◆ ModelLocalVertexCopyList
◆ ModelCustomGfxBuilderFunc
◆ ModelCustomGfxList
◆ ModelCustomGfxBuilderList
◆ ModelTreeInfoList
◆ ModelPropertyKeys
| Enumerator |
|---|
| MODEL_PROP_KEY_RENDER_MODE | |
| MODEL_PROP_KEY_CAMERA_DATA | |
| MODEL_PROP_KEY_TEXTURE_NAME | |
| MODEL_PROP_KEY_SPECIAL | |
| MODEL_PROP_KEY_GROUP_INFO | |
| MODEL_PROP_KEY_BOUNDING_BOX | |
| MODEL_PROP_KEY_62 | |
Definition at line 141 of file model.h.
141 {
@ MODEL_PROP_KEY_CAMERA_DATA
@ MODEL_PROP_KEY_BOUNDING_BOX
@ MODEL_PROP_KEY_GROUP_INFO
@ MODEL_PROP_KEY_TEXTURE_NAME
@ MODEL_PROP_KEY_RENDER_MODE
◆ ShapeTypes
| Enumerator |
|---|
| SHAPE_TYPE_MODEL | |
| SHAPE_TYPE_GROUP | |
| SHAPE_TYPE_ROOT | |
| SHAPE_TYPE_SPECIAL_GROUP | |
Definition at line 151 of file model.h.
151 {
@ SHAPE_TYPE_SPECIAL_GROUP
◆ GroupTypes
| Enumerator |
|---|
| GROUP_TYPE_0 | |
| GROUP_TYPE_1 | |
Definition at line 158 of file model.h.
◆ ExtraTileTypes
| Enumerator |
|---|
| EXTRA_TILE_NONE | |
| EXTRA_TILE_MIPMAPS | |
| EXTRA_TILE_AUX_SAME_AS_MAIN | |
| EXTRA_TILE_AUX_INDEPENDENT | |
| EXTRA_TILE_4 | |
Definition at line 163 of file model.h.
163 {
@ EXTRA_TILE_AUX_INDEPENDENT
@ EXTRA_TILE_AUX_SAME_AS_MAIN
◆ mdl_set_depth_tint_params()
| void mdl_set_depth_tint_params |
( |
u8 | primR, |
|
|
u8 | primG, |
|
|
u8 | primB, |
|
|
u8 | primA, |
|
|
u8 | fogR, |
|
|
u8 | fogG, |
|
|
u8 | fogB, |
|
|
s32 | fogStart, |
|
|
s32 | fogEnd ) |
Definition at line 3916 of file model.c.
3916 {
3926}
BSS s32 PopupMenu_SelectedIndex
◆ mdl_set_remap_tint_params()
| void mdl_set_remap_tint_params |
( |
u8 | primR, |
|
|
u8 | primG, |
|
|
u8 | primB, |
|
|
u8 | envR, |
|
|
u8 | envG, |
|
|
u8 | envB ) |
◆ mdl_get_remap_tint_params()
| void mdl_get_remap_tint_params |
( |
u8 * | primR, |
|
|
u8 * | primG, |
|
|
u8 * | primB, |
|
|
u8 * | envR, |
|
|
u8 * | envG, |
|
|
u8 * | envB ) |
◆ init_model_data()
Definition at line 2430 of file model.c.
2430 {
2441 } else {
2451 }
2452}
ModelCustomGfxList * gCurrentCustomModelGfxPtr
BSS s8 bBackgroundTintMode
BSS ModelTreeInfoList wModelTreeNodeInfo
ModelNode ** gCurrentModelTreeRoot
BSS s8 wBackgroundTintMode
BSS ModelNode * bModelTreeRoot
BSS ModelTransformGroupList bTransformGroups
BSS ModelTreeInfoList bModelTreeNodeInfo
BSS ModelLocalVertexCopyList bModelLocalVtxBuffers
BSS FogSettings bFogSettings
BSS ModelNode * wModelTreeRoot
u8 * gBackgroundTintModePtr
BSS ModelCustomGfxBuilderList bCustomModelGfxBuilders
ModelCustomGfxBuilderList * gCurrentCustomModelGfxBuildersPtr
ModelTransformGroupList * gCurrentTransformGroups
BSS FogSettings * gFogSettings
ModelTreeInfoList * gCurrentModelTreeNodeInfo
BSS ModelCustomGfxList bCustomModelGfx
BSS FogSettings wFogSettings
BSS ModelLocalVertexCopyList wModelLocalVtxBuffers
ModelList * gCurrentModels
BSS ModelCustomGfxBuilderList wCustomModelGfxBuilders
BSS ModelTransformGroupList wTransformGroups
BSS ModelLocalVertexCopyList * gCurrentModelLocalVtxBuffers
BSS ModelCustomGfxList wCustomModelGfx
GameStatus * gGameStatusPtr
Referenced by state_step_end_battle(), and state_step_unpause().
◆ update_model_animator()
| void update_model_animator |
( |
s32 | animatorID | ) |
|
Definition at line 481 of file animator.c.
481 {
485
487 return;
488 }
489
492
494 return;
495 }
496
498 return;
499 }
500
503
505 if (
animator->nextUpdateTime <= 0.0f) {
507 do {
510 } else {
513 do {
516 }
517 }
519 return;
520 }
521
523
530 }
531 }
532 }
533
540 }
541 }
542 }
543}
BSS AnimatedMeshVertexCopyList D_801536C0
void reload_mesh_animator_tree(ModelAnimator *animator)
s32 step_mesh_animator(ModelAnimator *animator)
s32 step_model_animator(ModelAnimator *animator)
BSS AnimatedMeshVertexCopyList D_801533C0
void animator_update_model_transforms(ModelAnimator *animator, Mtx *rootTransform)
@ MODEL_ANIMATOR_FLAG_MESH
@ MODEL_ANIMATOR_FLAG_FREEZE_ANIMATION
s32 general_heap_free(void *data)
Referenced by load_split_entity_data(), play_model_animation_starting_from(), update_entities(), and update_shadows().
◆ update_model_animator_with_transform()
| void update_model_animator_with_transform |
( |
s32 | animatorID, |
|
|
Mtx * | mtx ) |
Definition at line 545 of file animator.c.
545 {
549
551 return;
552 }
553
556
558 return;
559 }
560
562 return;
563 }
564
567
569 if (
animator->nextUpdateTime <= 0.0f) {
571 do {
574 } else {
577 do {
580 }
581 }
583 return;
584 }
585
587
594 }
595 }
596 }
597
604 }
605 }
606 }
607}
Referenced by update_animated_models().
◆ set_mdl_custom_gfx_set()
| void set_mdl_custom_gfx_set |
( |
Model * | model, |
|
|
s32 | customGfxIndex, |
|
|
u32 | tintType ) |
Definition at line 3828 of file model.c.
3828 {
3829 if (customGfxIndex == -1) {
3830 customGfxIndex =
model->customGfxIndex & 0xF;
3831 }
3832
3835 }
3836
3837 model->customGfxIndex = (customGfxIndex & 0xF) + ((
tintType & 0xF) << 4);
3838}
Referenced by mdl_set_all_tint_type().
◆ get_model_property()
Definition at line 2284 of file model.c.
2284 {
2285 s32 numProperties =
node->numProperties;
2288
2289 for (i = 0; i < numProperties; i++, propertyList++) {
2290 if (propertyList->
key == key) {
2291 return propertyList;
2292 }
2293 }
2294 return nullptr;
2295}
Referenced by appendGfx_model(), func_80117D00(), func_8011B1D8(), get_model_center_and_size(), load_model_transforms(), load_next_model_textures(), mdl_calculate_model_sizes(), mdl_create_model(), mdl_make_transform_group(), mdl_update_transform_matrices(), and render_transform_group_node().
◆ load_texture_variants()
| void load_texture_variants |
( |
u32 | romOffset, |
|
|
s32 | textureID, |
|
|
s32 | baseOffset, |
|
|
s32 | size ) |
Definition at line 2172 of file model.c.
2172 {
2183
2187
2188 if (
strcmp(header->
name,
"end_of_textures") == 0) {
2189 return;
2190 }
2191
2193
2194 break;
2195 }
2196
2198
2199
2203 while (header->
mainW /
d >= 16 && header->
mainH /
d > 0) {
2206 }
2207 }
2208 rasterSize /= 2;
2212 while (header->
mainW /
d >= 8 && header->
mainH /
d > 0) {
2215 }
2216 }
2220 while (header->
mainW /
d >= 4 && header->
mainH /
d > 0) {
2223 }
2224 }
2225 rasterSize *= 2;
2229 while (header->
mainW /
d >= 2 && header->
mainH /
d > 0) {
2232 }
2233 }
2234 rasterSize *= 4;
2235 }
2236
2237
2242 }
2243 } else {
2245 }
2246
2247
2255 } else {
2258 }
2259 }
2264 }
2265 } else {
2267 }
2268 } else {
2271 }
2272
2273 textureID++;
2277
2281 }
2282}
u32 dma_copy(Addr romStart, Addr romEnd, void *vramDest)
TextureHandle TextureHandles[128]
void load_texture_impl(u32 romOffset, TextureHandle *handle, TextureHeader *header, s32 mainSize, s32 mainPalSize, s32 auxSize, s32 auxPalSize)
Referenced by load_texture_by_name().
◆ step_model_animator()
Definition at line 609 of file animator.c.
609 {
615
616 switch (*args++) {
618 return -1;
622 return 1;
626 break;
629 return 1;
632 return 1;
637 return 1;
643 return 1;
649 return 1;
653 return 1;
656 x = (
f32)*args++ * 180.0 / 32767.0;
657 y = (
f32)*args++ * 180.0 / 32767.0;
658 z = (
f32)*args++ * 180.0 / 32767.0;
660
666 return 1;
669 x = (
f32)*args++ * 180.0 / 32767.0;
670 y = (
f32)*args++ * 180.0 / 32767.0;
671 z = (
f32)*args++ * 180.0 / 32767.0;
673
679 return 1;
682 x = *args++;
683 y = *args++;
684 z = *args++;
691 return 1;
694 x = (
f32)*args++ * 180.0 / 32767.0;
695 y = (
f32)*args++ * 180.0 / 32767.0;
696 z = (
f32)*args++ * 180.0 / 32767.0;
698
704 return 1;
705 }
706 return 0;
707}
AnimatorNode * get_animator_child_with_id(ModelAnimator *animator, s32 id)
#define ASSERT(condition)
@ MODEL_ANIMATOR_FLAG_NO_FLIP
Referenced by update_model_animator(), and update_model_animator_with_transform().
◆ get_animator_node_for_tree_index()
◆ get_animator_node_with_id()
Definition at line 1027 of file animator.c.
1027 {
1029}
AnimatorNode * get_animator_child_for_model(AnimatorNode *node, s32 modelId)
◆ animator_update_model_transforms()
Definition at line 709 of file animator.c.
709 {
711
712 if (
animator->rootNode !=
nullptr) {
716 break;
719 break;
722 break;
723 default:
725 break;
726 }
728 }
729}
void animator_node_update_model_transform(ModelAnimator *animator, f32(*flipMtx)[4], AnimatorNode *node, Mtx *rootTransform)
void animator_make_identity(Matrix4f mtx)
void animator_make_mirrorX(Matrix4f mtx)
void animator_make_mirrorY(Matrix4f mtx)
void animator_make_mirrorZ(Matrix4f mtx)
@ MODEL_ANIMATOR_FLAG_FLIP_Y
@ MODEL_ANIMATOR_FLAG_FLIP_X
@ MODEL_ANIMATOR_FLAG_FLIP_Z
Referenced by update_model_animator(), and update_model_animator_with_transform().
◆ render_animated_model()
| void render_animated_model |
( |
s32 | animatorID, |
|
|
Mtx * | rootTransform ) |
◆ animator_node_update_model_transform()
Definition at line 731 of file animator.c.
732 {
735
741
744 }
745
747
750
755 }
756
758 if (
node->children[i] !=
nullptr) {
760 }
761 }
762}
BSS Matrix4f gAnimRotScaleMtx
BSS Matrix4f gAnimTranslateMtx
BSS Matrix4f gAnimScaleMtx
@ MODEL_FLAG_MATRIX_DIRTY
@ MODEL_ANIMATOR_FLAG_HAS_MODEL
s32 get_model_list_index_from_tree_index(s32 treeIndex)
struct Model * get_model_from_list_index(s32 listIndex)
void copy_matrix(Matrix4f src, Matrix4f dest)
Referenced by animator_node_update_model_transform(), and animator_update_model_transforms().
◆ init_worker_list()
◆ get_animator_by_index()
◆ reset_animator_list()
◆ delete_model_animator_node()
◆ delete_model_animator_nodes()
◆ delete_model_animator()
◆ render_animated_model_with_vertices()
| void render_animated_model_with_vertices |
( |
s32 | animatorID, |
|
|
Mtx * | rootTransform, |
|
|
s32 | segment, |
|
|
void * | baseAddr ) |
◆ appendGfx_animator()
Definition at line 825 of file animator.c.
825 {
827
828 if (
animator->baseAddr !=
nullptr) {
830 }
831
834
835
837 case false:
841 break;
844 break;
847 break;
850 break;
853 break;
856 break;
859 break;
860 }
861 break;
862 case true:
866 break;
869 break;
872 break;
875 break;
878 break;
881 break;
884 break;
885 }
886
889 break;
890 }
891
895}
Gfx Gfx_RM3_SURFACE_OPA[]
void appendGfx_animator_node(ModelAnimator *, AnimatorNode *, Matrix4f)
Gfx Gfx_RM1_INTERSECTING_OPA[]
Gfx Gfx_RM1_INTERSECTING_XLU[]
Gfx Gfx_RM1_SURFACE_XLU[]
Gfx Gfx_RM3_INTERSECTING_OPA[]
Gfx Gfx_RM3_INTERSECTING_XLU[]
Gfx Gfx_RM1_SURFACE_OPA[]
Gfx Gfx_RM3_SURFACE_XLU[]
@ RENDER_MODE_INTERSECTING_XLU
@ RENDER_MODE_INTERSECTING_OPA
@ RENDER_MODE_SURFACE_OPA
@ RENDER_MODE_SURFACE_XLU_LAYER1
#define VIRTUAL_TO_PHYSICAL(addr)
DisplayContext * gDisplayContext
Referenced by render_animated_model(), and render_animated_model_with_vertices().
◆ set_animator_render_callback()
◆ reload_mesh_animator_tree()
Definition at line 1257 of file animator.c.
1257 {
1260
1263
1266 }
1267
1271}
void set_animator_tree_to_node_map(ModelAnimator *animator, s32 *nodeIDs, s32 count)
void delete_model_animator_nodes(ModelAnimator *animator)
void reload_mesh_animator_node(StaticAnimatorNode *node, ModelAnimator *animator, s32 parentNodeID, s32 *treeIndexToNodeIDs)
BSS StaticAnimatorNode ** gAnimTreeRoot
Referenced by step_mesh_animator(), update_model_animator(), and update_model_animator_with_transform().
◆ step_mesh_animator()
Definition at line 1273 of file animator.c.
1273 {
1280
1281 switch (*args++) {
1283 return -1;
1287 return 1;
1289 args++;
1291 return 1;
1296 return 1;
1300 break;
1304 return 1;
1309 return 1;
1315 return 1;
1321 return 1;
1325 return 1;
1328 x = (
f32)*args++ * 180.0 / 32767.0;
1329 y = (
f32)*args++ * 180.0 / 32767.0;
1330 z = (
f32)*args++ * 180.0 / 32767.0;
1334 if (
node !=
nullptr) {
1338 return 1;
1339 } else {
1342 break;
1343 }
1344 }
1345 return 1;
1348 x = (
f32)*args++ * 180.0 / 32767.0;
1349 y = (
f32)*args++ * 180.0 / 32767.0;
1350 z = (
f32)*args++ * 180.0 / 32767.0;
1354 if (
node !=
nullptr) {
1358 return 1;
1359 } else {
1362 break;
1363 }
1364 }
1365 return 1;
1368 x = *args++;
1369 y = *args++;
1370 z = *args++;
1374 if (
node !=
nullptr) {
1378 return 1;
1379 } else {
1382 break;
1383 }
1384 }
1385 return 1;
1388 x = (
f32)*args++ * 180.0 / 32767.0;
1389 y = (
f32)*args++ * 180.0 / 32767.0;
1390 z = (
f32)*args++ * 180.0 / 32767.0;
1394 if (
node !=
nullptr) {
1398 return 1;
1399 } else {
1402 break;
1403 }
1404 }
1405 return 1;
1406 }
1407 return 0;
1408}
Referenced by update_model_animator(), and update_model_animator_with_transform().
◆ set_custom_gfx_builders()
Definition at line 3845 of file model.c.
3845 {
3846 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2] =
pre;
3847 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2 + 1] =
post;
3848}
◆ mdl_make_local_vertex_copy()
| void mdl_make_local_vertex_copy |
( |
s32 | arg0, |
|
|
u16 | treeIdx, |
|
|
s32 | isMakingCopy ) |
Definition at line 4035 of file model.c.
4035 {
4043
4047
4049
4056 }
4058 } else {
4060 copy->gfxCopy[i] =
nullptr;
4061 copy->vtxCopy[i] =
nullptr;
4062 }
4064 }
4065
4067 copy->numVertices = numVertices;
4069}
@ MODEL_FLAG_HAS_LOCAL_VERTEX_COPY
void * heap_malloc(s32 size)
void mdl_local_gfx_copy_vertices(Vtx *src, s32 num, Vtx *dest)
s32 get_model_list_index_from_tree_index(s32 treeIndex)
void mdl_get_vertex_count(Gfx *gfx, s32 *numVertices, Vtx **baseVtx, s32 *gfxCount, Vtx *baseAddr)
Model * get_model_from_list_index(s32 listIndex)
void mdl_local_gfx_update_vtx_pointers(Gfx *nodeDlist, Vtx *baseVtx, Gfx *arg2, Vtx *arg3)
◆ play_model_animation_starting_from()
| void play_model_animation_starting_from |
( |
s32 | index, |
|
|
s16 * | animPos, |
|
|
s32 | framesToSkip ) |
Definition at line 1112 of file animator.c.
1112 {
1116
1117 if (
animator->animationBuffer !=
nullptr) {
1119 }
1120
1125
1128 }
1129}
void update_model_animator(s32 animatorID)
◆ mdl_set_shroud_tint_params()
◆ gCurrentModelTreeNodeInfo
◆ gCurrentModels