Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
map_api.c
Go to the documentation of this file.
1#include "common.h"
2#include "model.h"
3#include "evt.h"
4#include "game_modes.h"
5
7extern s32 LastSafeFloor;
9
10API_CALLABLE(TranslateModel) {
11 Bytecode* args = script->ptrReadPos;
12 s32 modelIndex = evt_get_variable(script, *args++);
13 f32 x;
14 f32 y;
15 f32 z;
16 Model* model;
17
18 modelIndex = get_model_list_index_from_tree_index(modelIndex);
19 x = evt_get_float_variable(script, *args++);
20 y = evt_get_float_variable(script, *args++);
21 z = evt_get_float_variable(script, *args++);
22 model = get_model_from_list_index(modelIndex);
23
24 if (!(model->flags & MODEL_FLAG_HAS_TRANSFORM)) {
25 guTranslateF(model->userTransformMtx, x, y, z);
27 } else {
28 Matrix4f mtx;
29
30 guTranslateF(mtx, x, y, z);
31 guMtxCatF(mtx, model->userTransformMtx, model->userTransformMtx);
32 }
33
34 return ApiStatus_DONE2;
35}
36
37API_CALLABLE(RotateModel) {
38 Bytecode* args = script->ptrReadPos;
39 s32 var1 = evt_get_variable(script, *args++);
41 f32 a = evt_get_float_variable(script, *args++);
42 f32 x = evt_get_float_variable(script, *args++);
43 f32 y = evt_get_float_variable(script, *args++);
44 f32 z = evt_get_float_variable(script, *args++);
46
47 if (!(model->flags & MODEL_FLAG_HAS_TRANSFORM)) {
48 guRotateF(model->userTransformMtx, a, x, y, z);
50 } else {
51 Matrix4f mtx;
52
53 guRotateF(mtx, a, x, y, z);
54 guMtxCatF(mtx, model->userTransformMtx, model->userTransformMtx);
55 }
56
57 return ApiStatus_DONE2;
58}
59
60API_CALLABLE(ScaleModel) {
61 Bytecode* args = script->ptrReadPos;
62 s32 modelIndex = evt_get_variable(script, *args++);
63 f32 x;
64 f32 y;
65 f32 z;
66 Model* model;
67
68 modelIndex = get_model_list_index_from_tree_index(modelIndex);
69 x = evt_get_float_variable(script, *args++);
70 y = evt_get_float_variable(script, *args++);
71 z = evt_get_float_variable(script, *args++);
72 model = get_model_from_list_index(modelIndex);
73
74 if (!(model->flags & MODEL_FLAG_HAS_TRANSFORM)) {
75 guScaleF(model->userTransformMtx, x, y, z);
77 } else {
78 Matrix4f mtx;
79
80 guScaleF(mtx, x, y, z);
81 guMtxCatF(mtx, model->userTransformMtx, model->userTransformMtx);
82 }
83
84 return ApiStatus_DONE2;
85}
86
87API_CALLABLE(GetModelIndex) {
88 Bytecode* args = script->ptrReadPos;
89 Bytecode modelID = evt_get_variable(script, *args++);
90 Bytecode index = *args++;
91
93 return ApiStatus_DONE2;
94}
95
96API_CALLABLE(InvalidateModelTransform) {
97 Bytecode* args = script->ptrReadPos;
98 Bytecode modelID = evt_get_variable(script, *args++);
100
102 return ApiStatus_DONE2;
103}
104
105API_CALLABLE(CloneModel) {
106 Bytecode* args = script->ptrReadPos;
109
111 return ApiStatus_DONE2;
112}
113
114API_CALLABLE(GetModelCenter) {
115 Bytecode* args = script->ptrReadPos;
116 f32 centerX;
117 f32 centerY;
118 f32 centerZ;
119 f32 sizeX;
120 f32 sizeY;
121 f32 sizeZ;
122
123 get_model_center_and_size(evt_get_variable(script, *args++), &centerX, &centerY, &centerZ, &sizeX, &sizeY,
124 &sizeZ);
125 script->varTable[0] = centerX;
126 script->varTable[1] = centerY;
127 script->varTable[2] = centerZ;
128 return ApiStatus_DONE2;
129}
130
131API_CALLABLE(SetTexPanner) {
132 Bytecode* args = script->ptrReadPos;
133 s32 treeIndex = evt_get_variable(script, *args++);
134 s32 var2 = evt_get_variable(script, *args++);
136
137 set_tex_panner(model, var2);
139 return ApiStatus_DONE2;
140}
141
142API_CALLABLE(SetCustomGfxEnabled) {
143 Bytecode* args = script->ptrReadPos;
144 Bytecode treeIndex = evt_get_variable(script, *args++);
147
148 if (enable) {
150 } else {
152 }
153 return ApiStatus_DONE2;
154}
155
156API_CALLABLE(SetModelCustomGfx) {
157 Bytecode* args = script->ptrReadPos;
158 s32 treeIndex = evt_get_variable(script, *args++);
160 s32 var3 = evt_get_variable(script, *args++);
161 Model* model;
162
163 treeIndex = get_model_list_index_from_tree_index(treeIndex);
164 model = get_model_from_list_index(treeIndex);
165
167 if (customGfxUnit != -1) {
169 }
170 return ApiStatus_DONE2;
171}
172
173API_CALLABLE(SetModelTexVariant) {
174 Bytecode* args = script->ptrReadPos;
175 Bytecode modelID = evt_get_variable(script, *args++);
176 Bytecode variation = evt_get_variable(script, *args++);
177 s32 modelIndex = get_model_list_index_from_tree_index(modelID);
179
180 model->textureVariation = variation;
181 return ApiStatus_DONE2;
182}
183
184API_CALLABLE(EnableTexPanning) {
185 Bytecode* args = script->ptrReadPos;
186 s32 modelID = evt_get_variable(script, *args++);
187 s32 flag = evt_get_variable(script, *args++);
188 s32 modelIndex = get_model_list_index_from_tree_index(modelID);
190
191 if (flag) {
193 } else {
195 }
196 return ApiStatus_DONE2;
197}
198
199API_CALLABLE(EnableModel) {
200 Bytecode* args = script->ptrReadPos;
202 Bytecode enabled = evt_get_variable(script, *args++);
204
205 if (enabled) {
206 model->flags &= ~MODEL_FLAG_HIDDEN;
207 } else {
208 model->flags |= MODEL_FLAG_HIDDEN;
209 }
210 return ApiStatus_DONE2;
211}
212
213API_CALLABLE(SetGroupVisibility) {
214 Bytecode* args = script->ptrReadPos;
215 Bytecode groupModelID = evt_get_variable(script, *args++);
216 Bytecode enabled = evt_get_variable(script, *args++);
217
218 mdl_group_set_visibility(groupModelID, MODEL_FLAG_HIDDEN, enabled);
219 return ApiStatus_DONE2;
220}
221
222API_CALLABLE(SetTexPanOffset) {
223 Bytecode* args = script->ptrReadPos;
226 Bytecode u = evt_get_variable(script, *args++);
227 Bytecode v = evt_get_variable(script, *args++);
228
229 if (tileSelect == 0) {
232 } else {
235 }
236
237 return ApiStatus_DONE2;
238}
239
240API_CALLABLE(SetCustomGfx) {
241 Bytecode* args = script->ptrReadPos;
242 s32 idx = evt_get_variable(script, *args++);
243 Gfx* pre = (Gfx*) evt_get_variable(script, *args++);
244 Gfx* post = (Gfx*) evt_get_variable(script, *args++);
245
247 return ApiStatus_DONE2;
248}
249
250API_CALLABLE(SetCustomGfxBuilders) {
251 Bytecode* args = script->ptrReadPos;
252 s32 index = evt_get_variable(script, *args++);
255
257 return ApiStatus_DONE2;
258}
259
260API_CALLABLE(SetModelFlags) {
261 Bytecode* args = script->ptrReadPos;
262 s32 modelIndex;
263 s32 a1;
264 s32 enable;
265 Model* model;
266
267 modelIndex = evt_get_variable(script, *args++);
268 modelIndex = get_model_list_index_from_tree_index(modelIndex);
269 a1 = *args++;
270 enable = evt_get_variable(script, *args++);
271 model = get_model_from_list_index(modelIndex);
272
273 if (enable) {
274 model->flags |= a1;
275 } else {
276 model->flags &= ~a1;
277 }
278
279 return ApiStatus_DONE2;
280}
281
288 s32 modelIndex;
289 s32 firstChild;
291 s32 i;
292
293 firstChild = -1;
295 modelIndex = (*gCurrentModelTreeNodeInfo)[parentModelID].modelIndex;
296 lastChild = -1;
297
298 if (modelIndex < 0xFF) {
299 firstChild = lastChild = modelIndex;
300 } else {
301 s32 treeDepth = (*gCurrentModelTreeNodeInfo)[parentModelID].treeDepth;
302
303 // check all models with a lowerID in the tree
304 for (i = parentModelID - 1; i >= 0; i--) {
305 childModelInfo = &(*gCurrentModelTreeNodeInfo)[i];
306
307 if (treeDepth < childModelInfo->treeDepth) {
308 s32 childModelIndex = childModelInfo->modelIndex;
309
310 if (childModelIndex < 0xFF) {
311 if (lastChild == -1) {
313 }
314 firstChild = childModelIndex;
315 }
316 } else {
317 // if node is no longer deeper than parent, we've exhausted the children
318 break;
319 }
320 }
321 }
322
323 // copy the input script into a local one we will modify
324 localEvt = *script;
325
326 argsPtr = localEvt.ptrReadPos;
328
329 for (i = firstChild; i <= lastChild; i++) {
330 Model* model = (*gCurrentModels)[i];
331
332 localEvt.ptrReadPos = argsPtr;
334
335 apiFunc(&localEvt, true);
336 }
337
339}
340
341API_CALLABLE(MakeTransformGroup) {
343 return ApiStatus_DONE2;
344}
345
346API_CALLABLE(SetTransformGroupEnabled) {
347 Bytecode* args = script->ptrReadPos;
348 u16 modelID = evt_get_variable(script, *args++);
349 s32 enable = evt_get_variable(script, *args++);
350
351 if (enable) {
352 enable_transform_group(modelID);
353 } else {
355 }
356 return ApiStatus_DONE2;
357}
358
359API_CALLABLE(TranslateGroup) {
360 Bytecode* args = script->ptrReadPos;
361 s32 modelID = evt_get_variable(script, *args++);
362 s32 index = get_transform_group_index(modelID);
364 Matrix4f mtx;
365 f32 x, y, z;
366
367 if (index == -1) {
369 return ApiStatus_DONE2;
370 }
371
372 x = evt_get_float_variable(script, *args++);
373 y = evt_get_float_variable(script, *args++);
374 z = evt_get_float_variable(script, *args++);
375
377
379 guTranslateF(mtx, x, y, z);
380 guMtxCatF(mtx, transformGroup->userTransformMtx, transformGroup->userTransformMtx);
381 } else {
382 guTranslateF(transformGroup->userTransformMtx, x, y, z);
385 }
386
387 return ApiStatus_DONE2;
388}
389
390API_CALLABLE(RotateGroup) {
391 Bytecode* args = script->ptrReadPos;
392 s32 modelID = evt_get_variable(script, *args++);
393 s32 index = get_transform_group_index(modelID);
395 Matrix4f mtx;
396 f32 a, x, y, z;
397
398 if (index == -1) {
400 return ApiStatus_DONE2;
401 }
402
403 a = evt_get_float_variable(script, *args++);
404 x = evt_get_float_variable(script, *args++);
405 y = evt_get_float_variable(script, *args++);
406 z = evt_get_float_variable(script, *args++);
407
409
411 guRotateF(mtx, a, x, y, z);
412 guMtxCatF(mtx, transformGroup->userTransformMtx, transformGroup->userTransformMtx);
413 } else {
414 guRotateF(transformGroup->userTransformMtx, a, x, y, z);
417 }
418
419 return ApiStatus_DONE2;
420}
421
422API_CALLABLE(ScaleGroup) {
423 Bytecode* args = script->ptrReadPos;
424 s32 modelID = evt_get_variable(script, *args++);
427 Matrix4f mtx;
428 f32 x, y, z;
429
430 if (transformIndex == -1) {
432 return ApiStatus_DONE2;
433 }
434
435 x = evt_get_float_variable(script, *args++);
436 y = evt_get_float_variable(script, *args++);
437 z = evt_get_float_variable(script, *args++);
438
440
442 guScaleF(mtx, x, y, z);
443 guMtxCatF(mtx, transformGroup->userTransformMtx, transformGroup->userTransformMtx);
444 } else {
445 guScaleF(transformGroup->userTransformMtx, x, y, z);
448 }
449
450 return ApiStatus_DONE2;
451}
452
453API_CALLABLE(GetTransformGroup) {
454 Bytecode* args = script->ptrReadPos;
455 s32 modelID = evt_get_variable(script, *args++);
456 Bytecode var2 = *args++;
457
459 return ApiStatus_DONE2;
460}
461
462API_CALLABLE(EnableGroup) {
463 Bytecode* args = script->ptrReadPos;
464 s32 modelID = evt_get_variable(script, *args);
465 s32 index = get_transform_group_index(modelID);
468
469 if (index == -1) {
471 return ApiStatus_DONE2;
472 }
473
474 args++;
475
478
479 for (index = transformGroup->minChildModelIndex; index <= transformGroup->maxChildModelIndex; index++) {
481 if (flagUnset) {
482 model->flags &= ~MODEL_FLAG_HIDDEN;
483 } else {
484 model->flags |= MODEL_FLAG_HIDDEN;
485 }
486 }
487
488 return ApiStatus_DONE2;
489}
490
491API_CALLABLE(MakeLocalVertexCopy) {
492 Bytecode* args = script->ptrReadPos;
494 u16 modelID = evt_get_variable(script, *args++);
496
498 return ApiStatus_DONE2;
499}
500
503
504 if (collider->nextSibling >= 0) {
505 modify_collider_family_flags(collider->nextSibling, flags, mode);
506 }
507
508 if (collider->firstChild >= 0) {
509 modify_collider_family_flags(collider->firstChild, flags, mode);
510 }
511
512 switch (mode) {
514 collider->flags |= flags;
515 break;
517 collider->flags &= ~flags;
518 break;
520 collider->flags = flags;
521 break;
523 collider->flags &= ~0xFF;
524 collider->flags |= flags & 0xFF;
525 break;
526
527 }
528}
529
530API_CALLABLE(ModifyColliderFlags) {
531 Bytecode* args = script->ptrReadPos;
532 s32 mode = evt_get_variable(script, *args++);
533 s32 index = evt_get_variable(script, *args++);
534 s32 flags = evt_get_variable(script, *args++);
536
537 if (collider->firstChild >= 0) {
538 modify_collider_family_flags(collider->firstChild, flags, mode);
539 }
540
541 switch (mode) {
543 collider->flags |= flags;
544 break;
546 collider->flags &= ~flags;
547 break;
549 collider->flags = flags;
550 break;
552 collider->flags &= ~0xFF;
553 collider->flags |= flags & 0xFF;
554 break;
555 }
556
557 return ApiStatus_DONE2;
558}
559
560//TODO rename to MonitorLastSafeFloor
561API_CALLABLE(ResetFromLava) {
562 Bytecode* args = script->ptrReadPos;
566
567 if (isInitialCall) {
569
570 while (true) {
571 if (lavaReset->colliderID == -1) {
572 break;
573 }
575 if (collider->firstChild >= 0) {
577 }
579 lavaReset++;
580 }
581
582 LastSafeFloor = -1;
583 }
584
585 if (!(collisionStatus->curFloor & COLLISION_WITH_ENTITY_BIT)) {
587 if (collider->flags & COLLIDER_FLAG_SAFE_FLOOR) {
588 LastSafeFloor = collisionStatus->curFloor;
589 return ApiStatus_BLOCK;
590 }
591 }
592
593 return ApiStatus_BLOCK;
594}
595
597 Vec4f *temp_v0;
599
600 if (LastSafeFloor == -1) {
602 *outX = temp_v0->x;
603 *outY = temp_v0->y;
604 *outZ = temp_v0->z;
605 return -1;
606 }
607
608 while (true) {
609 if (lavaReset->colliderID == -1) {
610 break;
611 }
612
613 if (lavaReset->colliderID == LastSafeFloor) {
614 *outX = lavaReset->pos.x;
615 *outY = lavaReset->pos.y;
616 *outZ = lavaReset->pos.z;
617 return 1;
618 }
619 lavaReset++;
620 }
621 return 0;
622}
623
624API_CALLABLE(GetColliderCenter) {
625 f32 x, y, z;
626
627 get_collider_center(evt_get_variable(script, *script->ptrReadPos), &x, &y, &z);
628
629 script->varTable[0] = x;
630 script->varTable[1] = y;
631 script->varTable[2] = z;
632
633 return ApiStatus_DONE2;
634}
635
636API_CALLABLE(ParentColliderToModel) {
637 Bytecode* args = script->ptrReadPos;
638 s16 colliderID = evt_get_variable(script, *args++);
639 s32 treeIndex = evt_get_variable(script, *args++);
640
642 update_collider_transform(colliderID);
643 return ApiStatus_DONE2;
644}
645
646API_CALLABLE(UpdateColliderTransform) {
648 return ApiStatus_DONE2;
649}
650
653
654 if (zone->nextSibling >= 0) {
655 set_zone_enabled(zone->nextSibling, enabled);
656 }
657 if (zone->firstChild >= 0) {
658 set_zone_enabled(zone->firstChild, enabled);
659 }
660
661 switch (enabled) {
662 case 0:
664 break;
665 case 1:
667 break;
668 }
669}
670
671API_CALLABLE(SetZoneEnabled) {
672 Bytecode* args = script->ptrReadPos;
673 s32 zoneID = evt_get_variable(script, *args++);
674 s32 enabled = evt_get_variable(script, *args++);
676
677 if (zone->firstChild >= 0) {
678 set_zone_enabled(zone->firstChild, enabled);
679 }
680
681 switch (enabled) {
682 case false:
684 break;
685 case true:
687 break;
688 }
689
690 return ApiStatus_DONE2;
691}
692
693void goto_map(Evt* script, s32 mode) {
694 Bytecode* args = script->ptrReadPos;
695 s16 mapID;
696 s16 areaID;
698
699 if (mode == 2) {
700 areaID = evt_get_variable(script, *args++);
701 mapID = evt_get_variable(script, *args++);
702 } else {
703 get_map_IDs_by_name_checked((char*)evt_get_variable(script, *args++), &areaID, &mapID);
704 }
705
706 gGameStatusPtr->areaID = areaID;
707 gGameStatusPtr->mapID = mapID;
709
710 if (mode == 1) {
712 }
713
716}
717
718API_CALLABLE(GotoMap) {
719 goto_map(script, 0);
720 return ApiStatus_DONE1;
721}
722
723API_CALLABLE(GotoMapSpecial) {
724 goto_map(script, 1);
725 return ApiStatus_DONE1;
726}
727
728API_CALLABLE(GotoMapByID) {
729 goto_map(script, 2);
730 return ApiStatus_DONE1;
731}
732
733API_CALLABLE(GetEntryID) {
735 return ApiStatus_DONE2;
736}
737
738API_CALLABLE(GetMapID) {
740 return ApiStatus_DONE2;
741}
742
743API_CALLABLE(GetLoadType) {
745 return ApiStatus_DONE2;
746}
747
748API_CALLABLE(SetRenderMode) {
749 Bytecode* args = script->ptrReadPos;
750 s32 treeIndex = evt_get_variable(script, *args++);
751 s8 renderMode = evt_get_variable(script, *args++);
752
754
755 return ApiStatus_DONE2;
756}
757
758API_CALLABLE(PlaySoundAtModel) {
759 Bytecode* args = script->ptrReadPos;
760 s32 modelID = evt_get_variable(script, *args++);
761 s32 soundID = evt_get_variable(script, *args++);
763 f32 x, y, z;
764 f32 sx, sy, sz;
765
766 get_model_center_and_size(modelID, &x, &y, &z, &sx, &sy, &sz);
767 sfx_play_sound_at_position(soundID, soundSpace, x, y, z);
768
769 return ApiStatus_DONE2;
770}
771
772API_CALLABLE(PlaySoundAtCollider) {
773 Bytecode* args = script->ptrReadPos;
774 s32 colliderID = evt_get_variable(script, *args++);
775 s32 soundID = evt_get_variable(script, *args++);
776 s32 var3 = evt_get_variable(script, *args++);
777 f32 x, y, z;
778
779 get_collider_center(colliderID, &x, &y, &z);
780 sfx_play_sound_at_position(soundID, var3, x, y, z);
781
782 return ApiStatus_DONE2;
783}
BSS s32 PopupMenu_SelectedIndex
Collider * colliderList
f32 Matrix4f[4][4]
s8 flags
Definition demo_api.c:15
#define guRotateF
#define sfx_play_sound_at_position
#define guTranslateF
#define guMtxCatF
#define guScaleF
@ TRANSITION_STANDARD
Definition enums.h:2348
@ TRANSFORM_GROUP_FLAG_HAS_TRANSFORM
Definition enums.h:4668
@ TRANSFORM_GROUP_FLAG_MATRIX_DIRTY
Definition enums.h:4669
@ TEMP_SET_ZONE_ENABLED_FLAG_10000
Definition enums.h:4646
@ MODEL_FLAG_HAS_TRANSFORM
Definition enums.h:3952
@ MODEL_FLAG_HIDDEN
Definition enums.h:3943
@ MODEL_FLAG_USES_CUSTOM_GFX
Definition enums.h:3946
@ MODEL_FLAG_MATRIX_DIRTY
Definition enums.h:3954
@ MODEL_FLAG_HAS_TEX_PANNER
Definition enums.h:3953
@ COLLIDER_FLAG_SAFE_FLOOR
Definition enums.h:4279
@ MODIFY_COLLIDER_FLAGS_SET_BITS
Definition enums.h:4290
@ MODIFY_COLLIDER_FLAGS_SET_SURFACE
Definition enums.h:4293
@ MODIFY_COLLIDER_FLAGS_SET_VALUE
Definition enums.h:4292
@ MODIFY_COLLIDER_FLAGS_CLEAR_BITS
Definition enums.h:4291
s32 ApiStatus
Definition evt.h:116
#define ApiStatus_DONE2
Definition evt.h:119
s32 Bytecode
Definition evt.h:7
#define ApiStatus_DONE1
Definition evt.h:118
#define ApiStatus_BLOCK
Definition evt.h:117
void clone_model(u16 srcModelID, u16 newModelID)
Definition model.c:3617
s32 evt_get_variable(Evt *script, Bytecode var)
Definition evt.c:1730
void enable_transform_group(u16 modelID)
Definition model.c:3583
s32 get_model_list_index_from_tree_index(s32 treeIndex)
Definition model.c:3393
void get_map_IDs_by_name_checked(const char *mapName, s16 *areaID, s16 *mapID)
Same as get_map_IDs_by_name, but will panic if the map doesn't exist.
Definition world.c:247
void mdl_group_set_visibility(u16, s32, s32)
Definition model.c:3633
void set_map_transition_effect(ScreenTransition)
s32 evt_set_variable(Evt *script, Bytecode var, s32 value)
Definition evt.c:1887
void update_collider_transform(s16 colliderID)
Definition collision.c:391
struct Model * get_model_from_list_index(s32 listIndex)
Definition model.c:3312
void disable_transform_group(u16 modelID)
Definition model.c:3600
void mdl_make_transform_group(u16 modelID)
Definition model.c:3510
void set_custom_gfx(s32 customGfxIndex, Gfx *pre, Gfx *post)
Definition model.c:3840
s32 get_transform_group_index(s32)
Definition model.c:3414
void get_collider_center(s32 colliderID, f32 *x, f32 *y, f32 *z)
Definition collision.c:497
void set_aux_pan_v(s32 texPannerID, s32 value)
Definition model.c:3824
void set_main_pan_u(s32 texPannerID, s32 value)
Definition model.c:3812
void set_aux_pan_u(s32 texPannerID, s32 value)
Definition model.c:3820
void parent_collider_to_model(s16 colliderID, s16 modelIndex)
Definition collision.c:320
void set_tex_panner(struct Model *model, s32 texPannerID)
Definition model.c:3808
f32 evt_get_float_variable(Evt *script, Bytecode var)
Definition evt.c:1970
void set_main_pan_v(s32 texPannerID, s32 value)
Definition model.c:3816
struct ModelTransformGroup * get_transform_group(s32 index)
Definition model.c:3449
void get_model_center_and_size(u16 modelID, f32 *centerX, f32 *centerY, f32 *centerZ, f32 *sizeX, f32 *sizeY, f32 *sizeZ)
Definition model.c:3429
void set_game_mode(s32 modeID)
Definition game_modes.c:127
@ GAME_MODE_CHANGE_MAP
Definition game_modes.h:13
s32 get_lava_reset_pos(f32 *outX, f32 *outY, f32 *outZ)
Definition map_api.c:596
void set_zone_enabled(s32 zoneID, s32 enabled)
Definition map_api.c:651
s32 LastSafeFloor
Definition script_list.c:26
void apply_transform_to_children(ApiStatus(*apiFunc)(Evt *, s32), Evt *script)
Definition map_api.c:282
ModelTreeInfoList * gCurrentModelTreeNodeInfo
Definition model.c:107
LavaReset * gLavaResetList
Definition script_list.c:25
void goto_map(Evt *script, s32 mode)
Definition map_api.c:693
void modify_collider_family_flags(s32 index, s32 flags, s32 mode)
Definition map_api.c:501
void mdl_make_local_vertex_copy(s32 arg0, u16 treeIdx, s32)
Definition model.c:4035
void(* ModelCustomGfxBuilderFunc)(s32 index)
Definition model.h:136
s8 renderMode
Definition model.h:72
void set_custom_gfx_builders(s32 customGfxIndex, ModelCustomGfxBuilderFunc pre, ModelCustomGfxBuilderFunc post)
Definition model.c:3845
void set_mdl_custom_gfx_set(Model *, s32, u32)
Definition model.c:3828
u16 modelID
Definition model.h:61
ModelTreeInfo ModelTreeInfoList[0x200]
Definition model.h:187
Definition model.h:59
ApiStatus SetCustomGfxBuilders(Evt *script, b32 isInitialCall)
ApiStatus EnableGroup(Evt *script, b32 isInitialCall)
Enables or disables the given group.
ApiStatus RotateGroup(Evt *script, b32 isInitialCall)
Rotates the given group's position.
ApiStatus SetGroupVisibility(Evt *script, b32 isInitialCall)
Enables or disables the given group.
ApiStatus SetModelCustomGfx(Evt *script, b32 isInitialCall)
ApiStatus PlaySoundAtModel(Evt *script, b32 isInitialCall)
Plays the given sound at the given model.
ApiStatus SetCustomGfxEnabled(Evt *script, b32 isInitialCall)
ApiStatus GetEntryID(Evt *script, b32 isInitialCall)
Returns the entryID of the Entry that the player entered the map from.
ApiStatus EnableModel(Evt *script, b32 isInitialCall)
Enables or disables the given model.
ApiStatus GotoMap(Evt *script, b32 isInitialCall)
Makes the player go to the given map and at the given entrance.
ApiStatus TranslateModel(Evt *script, b32 isInitialCall)
Translates the given model's position.
ApiStatus SetTransformGroupEnabled(Evt *script, b32 isInitialCall)
ApiStatus GetTransformGroup(Evt *script, b32 isInitialCall)
ApiStatus SetCustomGfx(Evt *script, b32 isInitialCall)
ApiStatus RotateModel(Evt *script, b32 isInitialCall)
Rotates the model the given amount on the selected axis.
ApiStatus GetMapID(Evt *script, b32 isInitialCall)
Returns the mapID of the map the player is currently on.
ApiStatus PlaySoundAtCollider(Evt *script, b32 isInitialCall)
Plays the given sound at the given collider.
ApiStatus SetTexPanOffset(Evt *script, b32 isInitialCall)
Sets offsets for texture panners.
ApiStatus SetModelTexVariant(Evt *script, b32 isInitialCall)
ApiStatus ScaleGroup(Evt *script, b32 isInitialCall)
Scales the given group's position.
ApiStatus SetModelFlags(Evt *script, b32 isInitialCall)
Sets flags for models.
ApiStatus ScaleModel(Evt *script, b32 isInitialCall)
Scales the model the given amount along the selected axis.
ApiStatus GetColliderCenter(Evt *script, b32 isInitialCall)
Returns the center of the given collider.
ApiStatus MakeTransformGroup(Evt *script, b32 isInitialCall)
ApiStatus GetModelCenter(Evt *script, b32 isInitialCall)
Returns the center of the given model.
ApiStatus ResetFromLava(Evt *script, b32 isInitialCall)
ApiStatus SetZoneEnabled(Evt *script, b32 isInitialCall)
Enables or disables the given zone.
ApiStatus TranslateGroup(Evt *script, b32 isInitialCall)
Translates the given group's position.
ApiStatus UpdateColliderTransform(Evt *script, b32 isInitialCall)
Applies transformation from parent model.
ApiStatus EnableTexPanning(Evt *script, b32 isInitialCall)
Enables or disables texture panning on the given model.
ApiStatus GotoMapSpecial(Evt *script, b32 isInitialCall)
Makes the player go to the given map and at the given entrance with a unique fadeout effect.
ApiStatus ParentColliderToModel(Evt *script, b32 isInitialCall)
Associates a model with a collider and applies the model's transformation.
ApiStatus GetModelIndex(Evt *script, b32 isInitialCall)
Returns the given model's index.
ApiStatus SetRenderMode(Evt *script, b32 isInitialCall)
ApiStatus MakeLocalVertexCopy(Evt *script, b32 isInitialCall)
ApiStatus InvalidateModelTransform(Evt *script, b32 isInitialCall)
ApiStatus CloneModel(Evt *script, b32 isInitialCall)
Clones the given model.
ApiStatus GetLoadType(Evt *script, b32 isInitialCall)
Returns the way the player loaded into the map, commonly used by to put the player in the correct pos...
ApiStatus SetTexPanner(Evt *script, b32 isInitialCall)
Sets a model's pannerID and sets the texture pan flag.
ApiStatus GotoMapByID(Evt *script, b32 isInitialCall)
ApiStatus ModifyColliderFlags(Evt *script, b32 isInitialCall)
Set flags for collider + siblings + children.
#define COLLISION_WITH_ENTITY_BIT
Definition macros.h:163
MapSettings * get_current_map_settings(void)
Definition world.c:224
EntryList * entryList
Definition map.h:24
CollisionData gZoneCollisionData
Definition collision.c:36
CollisionStatus gCollisionStatus
Definition 7BB60.c:5
GameStatus * gGameStatusPtr
Definition main_loop.c:31
CollisionData gCollisionData
Definition collision.c:35