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
Data Fields |
s32 |
key |
|
s32 |
halfSizeX |
|
f32 |
minX |
|
char |
unk_0C[0x04] |
|
s32 |
halfSizeY |
|
f32 |
minY |
|
char |
unk_18[0x04] |
|
s32 |
halfSizeZ |
|
f32 |
minZ |
|
char |
unk_24[0x8] |
|
f32 |
maxX |
|
char |
unk_30[0x8] |
|
f32 |
maxY |
|
char |
unk_3C[0x8] |
|
f32 |
maxZ |
|
◆ ModelNodeProperty
◆ ModelGroupData
◆ ModelDisplayData
Data Fields |
Gfx * |
displayList |
|
char |
unk_04[0x4] |
|
◆ ModelNode
◆ Model
◆ ModelTransformGroup
struct ModelTransformGroup |
Data Fields |
u16 |
flags |
|
u16 |
groupModelID |
|
Mtx * |
bakedMtx |
|
ModelNode * |
baseModelNode |
|
Mtx * |
finalMtx |
|
Mtx |
savedMtx |
|
Matrix4f |
userTransformMtx |
|
Vec3f |
center |
|
u8 |
minChildModelIndex |
|
u8 |
maxChildModelIndex |
|
u8 |
renderMode |
|
u8 |
matrixFreshness |
|
◆ 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
Data Fields |
Gfx * |
gfx |
|
TextureHeader |
header |
|
u8 * |
raster |
|
u16 * |
palette |
|
u8 * |
auxRaster |
|
u16 * |
auxPalette |
|
◆ 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 3919 of file model.c.
3919 {
3929}
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 2431 of file model.c.
2431 {
2442 } else {
2452 }
2453}
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 482 of file animator.c.
482 {
485 s32 i;
486
488 return;
489 }
490
493
495 return;
496 }
497
499 return;
500 }
501
504
506 if (
animator->nextUpdateTime <= 0.0f) {
508 do {
511 } else {
514 do {
517 }
518 }
520 return;
521 }
522
524
531 }
532 }
533 }
534
541 }
542 }
543 }
544}
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 546 of file animator.c.
546 {
549 s32 i;
550
552 return;
553 }
554
557
559 return;
560 }
561
563 return;
564 }
565
568
570 if (
animator->nextUpdateTime <= 0.0f) {
572 do {
575 } else {
578 do {
581 }
582 }
584 return;
585 }
586
588
595 }
596 }
597 }
598
605 }
606 }
607 }
608}
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 3831 of file model.c.
3831 {
3832 if (customGfxIndex == -1) {
3833 customGfxIndex =
model->customGfxIndex & 0xF;
3834 }
3835
3838 }
3839
3840 model->customGfxIndex = (customGfxIndex & 0xF) + ((
tintType & 0xF) << 4);
3841}
Referenced by mdl_set_all_tint_type().
◆ get_model_property()
Definition at line 2285 of file model.c.
2285 {
2286 s32 numProperties =
node->numProperties;
2288 s32 i;
2289
2290 for (i = 0; i < numProperties; i++, propertyList++) {
2291 if (propertyList->
key == key) {
2292 return propertyList;
2293 }
2294 }
2296}
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 2173 of file model.c.
2173 {
2184
2188
2189 if (
strcmp(header->
name,
"end_of_textures") == 0) {
2190 return;
2191 }
2192
2194
2195 break;
2196 }
2197
2199
2200
2204 while (header->
mainW /
d >= 16 && header->
mainH /
d > 0) {
2207 }
2208 }
2209 rasterSize /= 2;
2213 while (header->
mainW /
d >= 8 && header->
mainH /
d > 0) {
2216 }
2217 }
2221 while (header->
mainW /
d >= 4 && header->
mainH /
d > 0) {
2224 }
2225 }
2226 rasterSize *= 2;
2230 while (header->
mainW /
d >= 2 && header->
mainH /
d > 0) {
2233 }
2234 }
2235 rasterSize *= 4;
2236 }
2237
2238
2243 }
2244 } else {
2246 }
2247
2248
2256 } else {
2259 }
2260 }
2265 }
2266 } else {
2268 }
2269 } else {
2272 }
2273
2274 textureID++;
2278
2282 }
2283}
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 610 of file animator.c.
610 {
616
617 switch (*args++) {
619 return -1;
623 return 1;
627 break;
630 return 1;
633 return 1;
638 return 1;
644 return 1;
650 return 1;
654 return 1;
657 x = (
f32)*args++ * 180.0 / 32767.0;
658 y = (
f32)*args++ * 180.0 / 32767.0;
659 z = (
f32)*args++ * 180.0 / 32767.0;
661
667 return 1;
670 x = (
f32)*args++ * 180.0 / 32767.0;
671 y = (
f32)*args++ * 180.0 / 32767.0;
672 z = (
f32)*args++ * 180.0 / 32767.0;
674
680 return 1;
683 x = *args++;
684 y = *args++;
685 z = *args++;
692 return 1;
695 x = (
f32)*args++ * 180.0 / 32767.0;
696 y = (
f32)*args++ * 180.0 / 32767.0;
697 z = (
f32)*args++ * 180.0 / 32767.0;
699
705 return 1;
706 }
707 return 0;
708}
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 1028 of file animator.c.
1028 {
1030}
AnimatorNode * get_animator_child_for_model(AnimatorNode *node, s32 modelId)
◆ animator_update_model_transforms()
Definition at line 710 of file animator.c.
710 {
712
717 break;
720 break;
723 break;
724 default:
726 break;
727 }
729 }
730}
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 732 of file animator.c.
733 {
735 s32 i;
736
742
745 }
746
748
751
756 }
757
761 }
762 }
763}
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 826 of file animator.c.
826 {
828
831 }
832
835
836
842 break;
845 break;
848 break;
851 break;
854 break;
857 break;
860 break;
861 }
862 break;
867 break;
870 break;
873 break;
876 break;
879 break;
882 break;
885 break;
886 }
887
890 break;
891 }
892
896}
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 1258 of file animator.c.
1258 {
1260 s32 i;
1261
1264
1267 }
1268
1272}
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 1274 of file animator.c.
1274 {
1281
1282 switch (*args++) {
1284 return -1;
1288 return 1;
1290 args++;
1292 return 1;
1297 return 1;
1301 break;
1305 return 1;
1310 return 1;
1316 return 1;
1322 return 1;
1326 return 1;
1329 x = (
f32)*args++ * 180.0 / 32767.0;
1330 y = (
f32)*args++ * 180.0 / 32767.0;
1331 z = (
f32)*args++ * 180.0 / 32767.0;
1339 return 1;
1340 } else {
1343 break;
1344 }
1345 }
1346 return 1;
1349 x = (
f32)*args++ * 180.0 / 32767.0;
1350 y = (
f32)*args++ * 180.0 / 32767.0;
1351 z = (
f32)*args++ * 180.0 / 32767.0;
1359 return 1;
1360 } else {
1363 break;
1364 }
1365 }
1366 return 1;
1369 x = *args++;
1370 y = *args++;
1371 z = *args++;
1379 return 1;
1380 } else {
1383 break;
1384 }
1385 }
1386 return 1;
1389 x = (
f32)*args++ * 180.0 / 32767.0;
1390 y = (
f32)*args++ * 180.0 / 32767.0;
1391 z = (
f32)*args++ * 180.0 / 32767.0;
1399 return 1;
1400 } else {
1403 break;
1404 }
1405 }
1406 return 1;
1407 }
1408 return 0;
1409}
Referenced by update_model_animator(), and update_model_animator_with_transform().
◆ set_custom_gfx_builders()
Definition at line 3848 of file model.c.
3848 {
3849 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2] =
pre;
3850 (*gCurrentCustomModelGfxBuildersPtr)[customGfxIndex * 2 + 1] =
post;
3851}
◆ mdl_make_local_vertex_copy()
void mdl_make_local_vertex_copy |
( |
s32 | arg0, |
|
|
u16 | treeIdx, |
|
|
s32 | isMakingCopy ) |
Definition at line 4039 of file model.c.
4039 {
4040 s32 numVertices;
4042 s32 gfxCount;
4046 s32 i;
4047
4051
4053
4060 }
4062 } else {
4066 }
4068 }
4069
4071 copy->numVertices = numVertices;
4073}
@ 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 1113 of file animator.c.
1113 {
1116 s32 i;
1117
1120 }
1121
1126
1129 }
1130}
void update_model_animator(s32 animatorID)
◆ mdl_set_shroud_tint_params()
◆ gCurrentModelTreeNodeInfo
◆ gCurrentModels