mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-25 05:25:14 +00:00
Geo2 removal wip
This commit is contained in:
parent
975c68ae1e
commit
df7904e288
14 changed files with 164 additions and 2913 deletions
|
@ -16,6 +16,4 @@
|
||||||
#include "water_splash/geo.inc.c"
|
#include "water_splash/geo.inc.c"
|
||||||
#include "sparkle_animation/geo.inc.c"
|
#include "sparkle_animation/geo.inc.c"
|
||||||
#include "mario/geo.inc.c"
|
#include "mario/geo.inc.c"
|
||||||
#include "mario/geo2.inc.c"
|
|
||||||
#include "luigi/geo.inc.c"
|
#include "luigi/geo.inc.c"
|
||||||
#include "luigi/geo2.inc.c"
|
|
||||||
|
|
|
@ -1,954 +0,0 @@
|
||||||
#include "src/game/envfx_snow.h"
|
|
||||||
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt1[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_1___eye_half_1),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt2[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt3[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt4[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt5[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt6[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt7[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_7___eye_X_3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_armature_002_switch_option_002[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt1),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt2),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt3),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt4),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt5),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt6),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt1_switch_face_opt7),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_right_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_left_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_left_hand_peace_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_left_hand_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_left_hand_wing_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_006_switch_option_left_hand_wing_cap_wings_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt1[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_1___eye_half_1),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt2[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt3[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt4[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt5[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt6[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt7[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_face_7___eye_X_3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_armature_002_switch_option_002[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt1),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt2),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt3),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt4),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt5),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt6),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt1_switch_face_opt7),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_right_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_peace_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_wing_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_006_switch_option_left_hand_wing_cap_wings_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt1[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_1___eye_half_1),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt2[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt3[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_face_7___eye_X_3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt1[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(0, geo_move_mario_part_from_parent),
|
|
||||||
GEO_ASM(1, geo_mario_tilt_torso),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 74, 0, 0, luigi_000_offset_001_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 87, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(1, geo_mario_head_rotation),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt1),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt2),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_000_switch_opt0_000_switch_001_opt3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_armature_002_switch_option_002),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(2, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_001_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(3, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_002_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, -10, 70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_003_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_004_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(3, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(5, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_003_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_right_hand_open_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 68, -10, -70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_006_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_007_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(2, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(4, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_004_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_open_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_peace_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_cap_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1_jump_luigi_left_hand_wing_cap_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, 38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_009_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_010_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 67, 0, 0, luigi_000_offset_011_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, -38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_012_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_013_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(6, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_005_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_armature_002_switch_option_002[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_002_switch_option_head__no_cap__mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_right_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_peace_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_wing_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_006_switch_option_left_hand_wing_cap_wings_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt2[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(0, geo_move_mario_part_from_parent),
|
|
||||||
GEO_ASM(1, geo_mario_tilt_torso),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 74, 0, 0, luigi_000_offset_001_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 87, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(1, geo_mario_head_rotation),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_armature_002_switch_option_002),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(2, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_000_displaylist_001_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(3, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_000_displaylist_002_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, -10, 70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_003_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_004_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(3, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(5, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_003_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi_002_switch_opt0_001_switch_opt2_jump_luigi_right_hand_open_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 68, -10, -70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_006_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_007_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(2, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(4, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_004_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_open_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_peace_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_cap_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2_jump_luigi_left_hand_wing_cap_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, 38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_009_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_010_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, luigi_000_offset_011_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, -38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_012_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_013_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(6, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_005_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_armature_002_switch_option_002[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_002_switch_option_head__no_cap__mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_right_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_right_hand_open_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_open_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_002_switch_option_left_hand_open_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_peace_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_004_switch_option_left_hand_peace_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_005_switch_option_left_hand_cap_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_wing_cap_armature[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 60, 0, 0, luigi_006_switch_option_left_hand_wing_cap_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_006_switch_option_left_hand_wing_cap_wings_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt3[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(0, geo_move_mario_part_from_parent),
|
|
||||||
GEO_ASM(1, geo_mario_tilt_torso),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 74, 0, 0, luigi_000_offset_001_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 87, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(1, geo_mario_head_rotation),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_armature_002_switch_option_002),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(2, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_001_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(3, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_002_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, -10, 70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_003_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_004_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(3, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(5, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_003_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi_002_switch_opt0_001_switch_opt3_jump_luigi_right_hand_open_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 68, -10, -70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_006_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 65, 0, 0, luigi_000_offset_007_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(2, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(4, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_004_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_open_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_peace_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_cap_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3_jump_luigi_left_hand_wing_cap_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, 38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_009_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_010_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 67, 0, 0, luigi_000_offset_011_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, -38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 0, 0, 0, luigi_000_offset_012_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(5, 89, 0, 0, luigi_000_offset_013_mesh_mat_override_metal_0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(6, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_000_displaylist_005_mesh_mat_override_metal_0),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt1[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_1___eye_half_1),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt2[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_2___eye_closed_2),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt3[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh_mat_override_face_7___eye_X_3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_RETURN(),
|
|
||||||
};
|
|
||||||
const GeoLayout luigi2_geo[] = {
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SHADOW(0, 180, 100),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SCALE(0, 17202),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(0, geo_mirror_mario_backface_culling),
|
|
||||||
GEO_ASM(0, geo_mirror_mario_set_alpha),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_stand_run),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_cap_effect),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(0, geo_move_mario_part_from_parent),
|
|
||||||
GEO_ASM(1, geo_mario_tilt_torso),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 74, 0, 0, luigi_000_offset_001_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 87, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(1, geo_mario_head_rotation),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_cap_on_off),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(1, geo_switch_mario_eyes),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt1),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt2),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt0_000_switch_opt0_000_switch_001_opt3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_armature_002_switch_option_002),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, -126, 15, -33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(2, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_000_displaylist_001_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_TRANSLATE_ROTATE(0, 142, -51, 126, -15, 33, -133),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(3, geo_mario_rotate_wing_cap_wings),
|
|
||||||
GEO_ROTATION_NODE(0, 0, 0, 0),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_000_displaylist_002_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, -10, 70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_003_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_004_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(3, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(5, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_003_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_right_hand_open_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 68, -10, -70, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_006_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 65, 0, 0, luigi_000_offset_007_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_SWITCH_CASE(2, geo_switch_mario_hand),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_NODE_START(),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 60, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(4, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_004_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_HELD_OBJECT(1, 0, 0, 2, geo_switch_mario_hand_grab_pos),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_left_hand_open_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_left_hand_peace_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_left_hand_cap_armature),
|
|
||||||
GEO_BRANCH(1, luigi2_left_hand_wing_cap_armature),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, 38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_009_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_010_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, luigi_000_offset_011_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 13, -8, -38, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 0, 0, 0, luigi_000_offset_012_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 89, 0, 0, luigi_000_offset_013_mesh),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ANIMATED_PART(1, 67, 0, 0, NULL),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_ASM(6, geo_mario_hand_foot_scaler),
|
|
||||||
GEO_SCALE(0, 65536),
|
|
||||||
GEO_OPEN_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_000_displaylist_005_mesh),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt1),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt2),
|
|
||||||
GEO_BRANCH(1, luigi2_002_switch_opt0_001_switch_opt3),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_ASM(1, geo_mirror_mario_backface_culling),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_DISPLAY_LIST(0, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(1, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(2, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(3, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(4, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(5, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(6, luigi_material_revert_render_settings),
|
|
||||||
GEO_DISPLAY_LIST(7, luigi_material_revert_render_settings),
|
|
||||||
GEO_CLOSE_NODE(),
|
|
||||||
GEO_END(),
|
|
||||||
};
|
|
File diff suppressed because it is too large
Load diff
|
@ -24,11 +24,7 @@
|
||||||
/* Global models that are loaded for every level */
|
/* Global models that are loaded for every level */
|
||||||
|
|
||||||
#define MODEL_MARIO 0x01 // mario_geo
|
#define MODEL_MARIO 0x01 // mario_geo
|
||||||
#define MODEL_MARIO2 0x02 // mario2_geo
|
|
||||||
|
|
||||||
#define MODEL_LUIGI 0xE2 // luigi_geo
|
#define MODEL_LUIGI 0xE2 // luigi_geo
|
||||||
#define MODEL_LUIGI2 0xE3 // luigi2_geo
|
|
||||||
|
|
||||||
#define MODEL_BUBBLE_PLAYER 0xE4 // water_bomb_geo
|
#define MODEL_BUBBLE_PLAYER 0xE4 // water_bomb_geo
|
||||||
|
|
||||||
/* Various static level geometry, the geo layout differs but terrain object presets treat them the same.*/
|
/* Various static level geometry, the geo layout differs but terrain object presets treat them the same.*/
|
||||||
|
|
|
@ -66,9 +66,7 @@ const LevelScript level_main_scripts_entry[] = {
|
||||||
LOAD_RAW( /*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),
|
LOAD_RAW( /*seg*/ 0x13, _behaviorSegmentRomStart, _behaviorSegmentRomEnd),
|
||||||
ALLOC_LEVEL_POOL(),
|
ALLOC_LEVEL_POOL(),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_MARIO, mario_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_MARIO, mario_geo),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_MARIO2, mario2_geo),
|
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGI, luigi_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_LUIGI, luigi_geo),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_LUIGI2, luigi2_geo),
|
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_BUBBLE_PLAYER, water_bomb_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_BUBBLE_PLAYER, water_bomb_geo),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_SMOKE, smoke_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_SMOKE, smoke_geo),
|
||||||
LOAD_MODEL_FROM_GEO(MODEL_SPARKLES, sparkles_geo),
|
LOAD_MODEL_FROM_GEO(MODEL_SPARKLES, sparkles_geo),
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
set -e
|
set -e
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1
|
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 -j
|
||||||
else
|
else
|
||||||
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1
|
make BETTERCAMERA=1 NODRAWINGDISTANCE=1 DEBUG=1 IMMEDIATELOAD=1 STRICT=1 -j
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# find file
|
# find file
|
||||||
|
|
|
@ -425,15 +425,28 @@ static void level_cmd_23(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void level_cmd_init_mario(void) {
|
static void level_cmd_init_mario(void) {
|
||||||
vec3s_set(gMarioSpawnInfo->startPos, 0, 0, 0);
|
u32 behaviorArg = CMD_GET(u32, 4);
|
||||||
vec3s_set(gMarioSpawnInfo->startAngle, 0, 0, 0);
|
void* behaviorScript = CMD_GET(void*, 8);
|
||||||
|
struct GraphNode* unk18 = gLoadedGraphNodes[CMD_GET(u8, 3)];
|
||||||
|
|
||||||
gMarioSpawnInfo->activeAreaIndex = -1;
|
struct SpawnInfo* lastSpawnInfo = NULL;
|
||||||
gMarioSpawnInfo->areaIndex = 0;
|
for (int i = 0; i < MAX_PLAYERS; i++) {
|
||||||
gMarioSpawnInfo->behaviorArg = CMD_GET(u32, 4);
|
struct SpawnInfo* spawnInfo = &gPlayerSpawnInfos[i];
|
||||||
gMarioSpawnInfo->behaviorScript = CMD_GET(void *, 8);
|
vec3s_set(spawnInfo->startPos, 0, 0, 0);
|
||||||
gMarioSpawnInfo->unk18 = gLoadedGraphNodes[CMD_GET(u8, 3)];
|
vec3s_set(spawnInfo->startAngle, 0, 0, 0);
|
||||||
gMarioSpawnInfo->next = NULL;
|
|
||||||
|
spawnInfo->activeAreaIndex = -1;
|
||||||
|
spawnInfo->areaIndex = 0;
|
||||||
|
spawnInfo->behaviorArg = i;
|
||||||
|
spawnInfo->behaviorScript = behaviorScript;
|
||||||
|
spawnInfo->unk18 = unk18;
|
||||||
|
spawnInfo->next = NULL;
|
||||||
|
|
||||||
|
if (lastSpawnInfo != NULL) {
|
||||||
|
lastSpawnInfo->next = spawnInfo;
|
||||||
|
}
|
||||||
|
lastSpawnInfo = spawnInfo;
|
||||||
|
}
|
||||||
|
|
||||||
sCurrentCmd = CMD_NEXT;
|
sCurrentCmd = CMD_NEXT;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2075,11 +2075,7 @@ void init_mario(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// set mario/luigi model
|
// set mario/luigi model
|
||||||
if (isLocal) {
|
gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_MARIO : MODEL_LUIGI];
|
||||||
gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_MARIO : MODEL_LUIGI];
|
|
||||||
} else {
|
|
||||||
gMarioState->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[(gNetworkType == NT_SERVER) ? MODEL_LUIGI2 : MODEL_MARIO2];
|
|
||||||
}
|
|
||||||
|
|
||||||
skippy:
|
skippy:
|
||||||
if (isLocal) {
|
if (isLocal) {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "object_helpers.h"
|
#include "object_helpers.h"
|
||||||
#include "obj_behaviors.h"
|
#include "obj_behaviors.h"
|
||||||
#include "level_update.h"
|
#include "level_update.h"
|
||||||
|
#include "mario_step.h"
|
||||||
|
|
||||||
#define POLE_NONE 0
|
#define POLE_NONE 0
|
||||||
#define POLE_TOUCHED_FLOOR 1
|
#define POLE_TOUCHED_FLOOR 1
|
||||||
|
|
|
@ -318,14 +318,20 @@ static Gfx *make_gfx_mario_alpha(struct GraphNodeGenerated *node, s16 alpha) {
|
||||||
return gfxHead;
|
return gfxHead;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct MarioBodyState* geo_get_body_state(void) {
|
||||||
|
return (gCurGraphNodeProcessingObject == NULL)
|
||||||
|
? &gBodyStates[0]
|
||||||
|
: &gBodyStates[gCurGraphNodeProcessingObject->oBehParams - 1];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the correct blend mode and color for mirror Mario.
|
* Sets the correct blend mode and color for mirror Mario.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
UNUSED u8 unused1[4];
|
UNUSED u8 unused1[4];
|
||||||
Gfx *gfx = NULL;
|
Gfx* gfx = NULL;
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
s16 alpha;
|
s16 alpha;
|
||||||
UNUSED u8 unused2[4];
|
UNUSED u8 unused2[4];
|
||||||
|
|
||||||
|
@ -341,9 +347,9 @@ Gfx *geo_mirror_mario_set_alpha(s32 callContext, struct GraphNode *node, UNUSED
|
||||||
* If Mario is standing still, he is always high poly. If he is running,
|
* If Mario is standing still, he is always high poly. If he is running,
|
||||||
* his level of detail depends on the distance to the camera.
|
* his level of detail depends on the distance to the camera.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {
|
Gfx* geo_switch_mario_stand_run(s32 callContext, struct GraphNode* node, UNUSED Mat4* mtx) {
|
||||||
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
|
struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
// assign result. 0 if moving, 1 if stationary.
|
// assign result. 0 if moving, 1 if stationary.
|
||||||
|
@ -355,9 +361,9 @@ Gfx *geo_switch_mario_stand_run(s32 callContext, struct GraphNode *node, UNUSED
|
||||||
/**
|
/**
|
||||||
* Geo node script that makes Mario blink
|
* Geo node script that makes Mario blink
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_switch_mario_eyes(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
|
struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
s16 blinkFrame;
|
s16 blinkFrame;
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
|
@ -365,10 +371,12 @@ Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4
|
||||||
blinkFrame = ((switchCase->numCases * 32 + gAreaUpdateCounter) >> 1) & 0x1F;
|
blinkFrame = ((switchCase->numCases * 32 + gAreaUpdateCounter) >> 1) & 0x1F;
|
||||||
if (blinkFrame < 7) {
|
if (blinkFrame < 7) {
|
||||||
switchCase->selectedCase = gMarioBlinkAnimation[blinkFrame];
|
switchCase->selectedCase = gMarioBlinkAnimation[blinkFrame];
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
switchCase->selectedCase = 0;
|
switchCase->selectedCase = 0;
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
switchCase->selectedCase = bodyState->eyeState - 1;
|
switchCase->selectedCase = bodyState->eyeState - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -378,14 +386,14 @@ Gfx *geo_switch_mario_eyes(s32 callContext, struct GraphNode *node, UNUSED Mat4
|
||||||
/**
|
/**
|
||||||
* Makes Mario's upper body tilt depending on the rotation stored in his bodyState
|
* Makes Mario's upper body tilt depending on the rotation stored in his bodyState
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, Mat4 *mtx) {
|
Gfx* geo_mario_tilt_torso(s32 callContext, struct GraphNode* node, Mat4* mtx) {
|
||||||
Mat4* curTransform = mtx;
|
Mat4 * curTransform = mtx;
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
s32 action = bodyState->action;
|
s32 action = bodyState->action;
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;
|
struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next;
|
||||||
|
|
||||||
if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING
|
if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING
|
||||||
&& action != ACT_RIDING_SHELL_GROUND) {
|
&& action != ACT_RIDING_SHELL_GROUND) {
|
||||||
|
@ -404,23 +412,25 @@ Gfx *geo_mario_tilt_torso(s32 callContext, struct GraphNode *node, Mat4 *mtx) {
|
||||||
/**
|
/**
|
||||||
* Makes Mario's head rotate with the camera angle when in C-up mode
|
* Makes Mario's head rotate with the camera angle when in C-up mode
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_mario_head_rotation(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
s32 action = bodyState->action;
|
s32 action = bodyState->action;
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;
|
struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next;
|
||||||
struct Camera *camera = gCurGraphNodeCamera->config.camera;
|
struct Camera* camera = gCurGraphNodeCamera->config.camera;
|
||||||
|
|
||||||
if (camera->mode == CAMERA_MODE_C_UP) {
|
if (camera->mode == CAMERA_MODE_C_UP) {
|
||||||
rotNode->rotation[0] = gPlayerCameraState->headRotation[1];
|
rotNode->rotation[0] = gPlayerCameraState->headRotation[1];
|
||||||
rotNode->rotation[2] = gPlayerCameraState->headRotation[0];
|
rotNode->rotation[2] = gPlayerCameraState->headRotation[0];
|
||||||
} else if (action & ACT_FLAG_WATER_OR_TEXT) {
|
}
|
||||||
|
else if (action & ACT_FLAG_WATER_OR_TEXT) {
|
||||||
rotNode->rotation[0] = bodyState->headAngle[1];
|
rotNode->rotation[0] = bodyState->headAngle[1];
|
||||||
rotNode->rotation[1] = bodyState->headAngle[2];
|
rotNode->rotation[1] = bodyState->headAngle[2];
|
||||||
rotNode->rotation[2] = bodyState->headAngle[0];
|
rotNode->rotation[2] = bodyState->headAngle[0];
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
vec3s_set(bodyState->headAngle, 0, 0, 0);
|
vec3s_set(bodyState->headAngle, 0, 0, 0);
|
||||||
vec3s_set(rotNode->rotation, 0, 0, 0);
|
vec3s_set(rotNode->rotation, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
@ -432,19 +442,21 @@ Gfx *geo_mario_head_rotation(s32 callContext, struct GraphNode *node, UNUSED Mat
|
||||||
* Switch between hand models.
|
* Switch between hand models.
|
||||||
* Possible options are described in the MarioHandGSCId enum.
|
* Possible options are described in the MarioHandGSCId enum.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_switch_mario_hand(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
|
struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases >> 1];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
if (bodyState->handState == MARIO_HAND_FISTS) {
|
if (bodyState->handState == MARIO_HAND_FISTS) {
|
||||||
// switch between fists (0) and open (1)
|
// switch between fists (0) and open (1)
|
||||||
switchCase->selectedCase = ((bodyState->action & ACT_FLAG_SWIMMING_OR_FLYING) != 0);
|
switchCase->selectedCase = ((bodyState->action & ACT_FLAG_SWIMMING_OR_FLYING) != 0);
|
||||||
} else {
|
}
|
||||||
if ((switchCase->numCases & 0x01) == 0) {
|
else {
|
||||||
|
if (switchCase->numCases == 0) {
|
||||||
switchCase->selectedCase =
|
switchCase->selectedCase =
|
||||||
(bodyState->handState < 5) ? bodyState->handState : MARIO_HAND_OPEN;
|
(bodyState->handState < 5) ? bodyState->handState : MARIO_HAND_OPEN;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
switchCase->selectedCase =
|
switchCase->selectedCase =
|
||||||
(bodyState->handState < 2) ? bodyState->handState : MARIO_HAND_FISTS;
|
(bodyState->handState < 2) ? bodyState->handState : MARIO_HAND_FISTS;
|
||||||
}
|
}
|
||||||
|
@ -461,28 +473,29 @@ Gfx *geo_switch_mario_hand(s32 callContext, struct GraphNode *node, UNUSED Mat4
|
||||||
* ! Since the animation gets updated in GEO_CONTEXT_RENDER, drawing Mario multiple times
|
* ! Since the animation gets updated in GEO_CONTEXT_RENDER, drawing Mario multiple times
|
||||||
* (such as in the mirror room) results in a faster and desynced punch / kick animation.
|
* (such as in the mirror room) results in a faster and desynced punch / kick animation.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, Mat4 *mtx) {
|
Gfx* geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode* node, Mat4* mtx) {
|
||||||
Mat4* curTransform = mtx;
|
Mat4 * curTransform = mtx;
|
||||||
static s16 sMarioAttackAnimCounter = 0;
|
static s16 sMarioAttackAnimCounter = 0;
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
struct GraphNodeScale *scaleNode = (struct GraphNodeScale *) node->next;
|
struct GraphNodeScale* scaleNode = (struct GraphNodeScale*) node->next;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[asGenerated->parameter >> 2];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
scaleNode->scale = 1.0f;
|
scaleNode->scale = 1.0f;
|
||||||
if ((asGenerated->parameter & 0x03) == bodyState->punchState >> 6) {
|
if (asGenerated->parameter == bodyState->punchState >> 6) {
|
||||||
if (sMarioAttackAnimCounter != gAreaUpdateCounter && (bodyState->punchState & 0x3F) > 0) {
|
if (sMarioAttackAnimCounter != gAreaUpdateCounter && (bodyState->punchState & 0x3F) > 0) {
|
||||||
bodyState->punchState -= 1;
|
bodyState->punchState -= 1;
|
||||||
sMarioAttackAnimCounter = gAreaUpdateCounter;
|
sMarioAttackAnimCounter = gAreaUpdateCounter;
|
||||||
}
|
}
|
||||||
scaleNode->scale =
|
scaleNode->scale =
|
||||||
gMarioAttackScaleAnimation[(asGenerated->parameter & 0x03) * 6 + (bodyState->punchState & 0x3F)]
|
gMarioAttackScaleAnimation[asGenerated->parameter * 6 + (bodyState->punchState & 0x3F)]
|
||||||
/ 10.0f;
|
/ 10.0f;
|
||||||
}
|
}
|
||||||
// update hand/foot position in bodyState
|
// update hand/foot position in bodyState
|
||||||
get_pos_from_transform_mtx(bodyState->handFootPos[(asGenerated->parameter & 0x03)],
|
get_pos_from_transform_mtx(bodyState->handFootPos[(asGenerated->parameter & 0x03)],
|
||||||
*curTransform,
|
*curTransform,
|
||||||
*gCurGraphNodeCamera->matrixPtr);
|
*gCurGraphNodeCamera->matrixPtr);
|
||||||
|
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -490,9 +503,9 @@ Gfx *geo_mario_hand_foot_scaler(s32 callContext, struct GraphNode *node, Mat4 *m
|
||||||
/**
|
/**
|
||||||
* Switch between normal cap, wing cap, vanish cap and metal cap.
|
* Switch between normal cap, wing cap, vanish cap and metal cap.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_switch_mario_cap_effect(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
|
struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
switchCase->selectedCase = bodyState->modelState >> 8;
|
switchCase->selectedCase = bodyState->modelState >> 8;
|
||||||
|
@ -504,10 +517,10 @@ Gfx *geo_switch_mario_cap_effect(s32 callContext, struct GraphNode *node, UNUSED
|
||||||
* Determine whether Mario's head is drawn with or without a cap on.
|
* Determine whether Mario's head is drawn with or without a cap on.
|
||||||
* Also sets the visibility of the wing cap wings on or off.
|
* Also sets the visibility of the wing cap wings on or off.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNode *next = node->next;
|
struct GraphNode* next = node->next;
|
||||||
struct GraphNodeSwitchCase *switchCase = (struct GraphNodeSwitchCase *) node;
|
struct GraphNodeSwitchCase* switchCase = (struct GraphNodeSwitchCase*) node;
|
||||||
struct MarioBodyState *bodyState = &gBodyStates[switchCase->numCases];
|
struct MarioBodyState* bodyState = geo_get_body_state();
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
switchCase->selectedCase = bodyState->capState & 1;
|
switchCase->selectedCase = bodyState->capState & 1;
|
||||||
|
@ -515,7 +528,8 @@ Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED
|
||||||
if (next->type == GRAPH_NODE_TYPE_TRANSLATION_ROTATION) {
|
if (next->type == GRAPH_NODE_TYPE_TRANSLATION_ROTATION) {
|
||||||
if (bodyState->capState & 2) {
|
if (bodyState->capState & 2) {
|
||||||
next->flags |= GRAPH_RENDER_ACTIVE;
|
next->flags |= GRAPH_RENDER_ACTIVE;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
next->flags &= ~GRAPH_RENDER_ACTIVE;
|
next->flags &= ~GRAPH_RENDER_ACTIVE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -529,21 +543,23 @@ Gfx *geo_switch_mario_cap_on_off(s32 callContext, struct GraphNode *node, UNUSED
|
||||||
* Geo node script that makes the wings on Mario's wing cap flap.
|
* Geo node script that makes the wings on Mario's wing cap flap.
|
||||||
* Should be placed before a rotation node.
|
* Should be placed before a rotation node.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
s16 rotX;
|
s16 rotX;
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
struct GraphNodeRotation *rotNode = (struct GraphNodeRotation *) node->next;
|
struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next;
|
||||||
|
|
||||||
if (gBodyStates[asGenerated->parameter >> 1].wingFlutter == FALSE) {
|
if (gBodyStates[asGenerated->parameter >> 1].wingFlutter == FALSE) {
|
||||||
rotX = (coss((gAreaUpdateCounter & 0xF) << 12) + 1.0f) * 4096.0f;
|
rotX = (coss((gAreaUpdateCounter & 0xF) << 12) + 1.0f) * 4096.0f;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rotX = (coss((gAreaUpdateCounter & 7) << 13) + 1.0f) * 6144.0f;
|
rotX = (coss((gAreaUpdateCounter & 7) << 13) + 1.0f) * 6144.0f;
|
||||||
}
|
}
|
||||||
if (!(asGenerated->parameter & 1)) {
|
if (!(asGenerated->parameter & 1)) {
|
||||||
rotNode->rotation[0] = -rotX;
|
rotNode->rotation[0] = -rotX;
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
rotNode->rotation[0] = rotX;
|
rotNode->rotation[0] = rotX;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -553,37 +569,39 @@ Gfx *geo_mario_rotate_wing_cap_wings(s32 callContext, struct GraphNode *node, UN
|
||||||
/**
|
/**
|
||||||
* Geo node that updates the held object node and the HOLP.
|
* Geo node that updates the held object node and the HOLP.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *mtx) {
|
Gfx* geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode* b, Mat4* mtx) {
|
||||||
struct GraphNodeHeldObject *asHeldObj = (struct GraphNodeHeldObject *) b;
|
struct GraphNodeHeldObject* asHeldObj = (struct GraphNodeHeldObject*) b;
|
||||||
Mat4 *curTransform = mtx;
|
Mat4* curTransform = mtx;
|
||||||
struct MarioState *marioState = &gMarioStates[asHeldObj->playerIndex];
|
struct MarioState* marioState = &gMarioStates[asHeldObj->playerIndex];
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
asHeldObj->objNode = NULL;
|
asHeldObj->objNode = NULL;
|
||||||
if (marioState->heldObj != NULL) {
|
if (marioState->heldObj != NULL) {
|
||||||
asHeldObj->objNode = marioState->heldObj;
|
asHeldObj->objNode = marioState->heldObj;
|
||||||
switch (marioState->marioBodyState->grabPos) {
|
switch (marioState->marioBodyState->grabPos) {
|
||||||
case GRAB_POS_LIGHT_OBJ:
|
case GRAB_POS_LIGHT_OBJ:
|
||||||
if (marioState->action & ACT_FLAG_THROWING) {
|
if (marioState->action & ACT_FLAG_THROWING) {
|
||||||
vec3s_set(asHeldObj->translation, 50, 0, 0);
|
vec3s_set(asHeldObj->translation, 50, 0, 0);
|
||||||
} else {
|
}
|
||||||
vec3s_set(asHeldObj->translation, 50, 0, 110);
|
else {
|
||||||
}
|
vec3s_set(asHeldObj->translation, 50, 0, 110);
|
||||||
break;
|
}
|
||||||
case GRAB_POS_HEAVY_OBJ:
|
break;
|
||||||
vec3s_set(asHeldObj->translation, 145, -173, 180);
|
case GRAB_POS_HEAVY_OBJ:
|
||||||
break;
|
vec3s_set(asHeldObj->translation, 145, -173, 180);
|
||||||
case GRAB_POS_BOWSER:
|
break;
|
||||||
vec3s_set(asHeldObj->translation, 80, -270, 1260);
|
case GRAB_POS_BOWSER:
|
||||||
break;
|
vec3s_set(asHeldObj->translation, 80, -270, 1260);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (callContext == GEO_CONTEXT_HELD_OBJ) {
|
}
|
||||||
|
else if (callContext == GEO_CONTEXT_HELD_OBJ) {
|
||||||
// ! The HOLP is set here, which is why it only updates when the held object is drawn.
|
// ! The HOLP is set here, which is why it only updates when the held object is drawn.
|
||||||
// This is why it won't update during a pause buffered hitstun or when the camera is very far
|
// This is why it won't update during a pause buffered hitstun or when the camera is very far
|
||||||
// away.
|
// away.
|
||||||
get_pos_from_transform_mtx(marioState->marioBodyState->heldObjLastPosition, *curTransform,
|
get_pos_from_transform_mtx(marioState->marioBodyState->heldObjLastPosition, *curTransform,
|
||||||
*gCurGraphNodeCamera->matrixPtr);
|
gCurGraphNodeCamera->matrixPtr);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -595,44 +613,45 @@ Gfx *geo_switch_mario_hand_grab_pos(s32 callContext, struct GraphNode *b, Mat4 *
|
||||||
* Geo node that creates a clone of Mario's geo node and updates it to becomes
|
* Geo node that creates a clone of Mario's geo node and updates it to becomes
|
||||||
* a mirror image of the player.
|
* a mirror image of the player.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_render_mirror_mario(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
f32 mirroredX;
|
f32 mirroredX;
|
||||||
struct Object *mario = gMarioStates->marioObj;
|
struct Object* mario = gMarioStates->marioObj;
|
||||||
|
|
||||||
switch (callContext) {
|
switch (callContext) {
|
||||||
case GEO_CONTEXT_CREATE:
|
case GEO_CONTEXT_CREATE:
|
||||||
init_graph_node_object(NULL, &gMirrorMario, NULL, gVec3fZero, gVec3sZero, gVec3fOne);
|
init_graph_node_object(NULL, &gMirrorMario, NULL, gVec3fZero, gVec3sZero, gVec3fOne);
|
||||||
break;
|
break;
|
||||||
case GEO_CONTEXT_AREA_LOAD:
|
case GEO_CONTEXT_AREA_LOAD:
|
||||||
geo_add_child(node, &gMirrorMario.node);
|
geo_add_child(node, &gMirrorMario.node);
|
||||||
break;
|
break;
|
||||||
case GEO_CONTEXT_AREA_UNLOAD:
|
case GEO_CONTEXT_AREA_UNLOAD:
|
||||||
geo_remove_child(&gMirrorMario.node);
|
geo_remove_child(&gMirrorMario.node);
|
||||||
break;
|
break;
|
||||||
case GEO_CONTEXT_RENDER:
|
case GEO_CONTEXT_RENDER:
|
||||||
if (mario->header.gfx.pos[0] > 1700.0f) {
|
if (mario->header.gfx.pos[0] > 1700.0f) {
|
||||||
// TODO: Is this a geo layout copy or a graph node copy?
|
// TODO: Is this a geo layout copy or a graph node copy?
|
||||||
gMirrorMario.sharedChild = mario->header.gfx.sharedChild;
|
gMirrorMario.sharedChild = mario->header.gfx.sharedChild;
|
||||||
gMirrorMario.unk18 = mario->header.gfx.unk18;
|
gMirrorMario.unk18 = mario->header.gfx.unk18;
|
||||||
vec3s_copy(gMirrorMario.angle, mario->header.gfx.angle);
|
vec3s_copy(gMirrorMario.angle, mario->header.gfx.angle);
|
||||||
vec3f_copy(gMirrorMario.pos, mario->header.gfx.pos);
|
vec3f_copy(gMirrorMario.pos, mario->header.gfx.pos);
|
||||||
vec3f_copy(gMirrorMario.scale, mario->header.gfx.scale);
|
vec3f_copy(gMirrorMario.scale, mario->header.gfx.scale);
|
||||||
// FIXME: why does this set unk38, an inline struct, to a ptr to another one? wrong
|
// FIXME: why does this set unk38, an inline struct, to a ptr to another one? wrong
|
||||||
// GraphNode types again?
|
// GraphNode types again?
|
||||||
gMirrorMario.unk38 = *(struct GraphNodeObject_sub *) &mario->header.gfx.unk38.animID;
|
gMirrorMario.unk38 = *(struct GraphNodeObject_sub*) & mario->header.gfx.unk38.animID;
|
||||||
mirroredX = MIRROR_X - gMirrorMario.pos[0];
|
mirroredX = MIRROR_X - gMirrorMario.pos[0];
|
||||||
gMirrorMario.pos[0] = mirroredX + MIRROR_X;
|
gMirrorMario.pos[0] = mirroredX + MIRROR_X;
|
||||||
gMirrorMario.angle[1] = -gMirrorMario.angle[1];
|
gMirrorMario.angle[1] = -gMirrorMario.angle[1];
|
||||||
gMirrorMario.scale[0] *= -1.0f;
|
gMirrorMario.scale[0] *= -1.0f;
|
||||||
// FIXME: Why doesn't this match?
|
// FIXME: Why doesn't this match?
|
||||||
// gMirrorMario.node.flags |= 1;
|
// gMirrorMario.node.flags |= 1;
|
||||||
((s16 *) &gMirrorMario)[1] |= 1;
|
((s16*)&gMirrorMario)[1] |= 1;
|
||||||
} else {
|
}
|
||||||
// FIXME: Why doesn't this match?
|
else {
|
||||||
// gMirrorMario.node.flags &= ~1;
|
// FIXME: Why doesn't this match?
|
||||||
((s16 *) &gMirrorMario)[1] &= ~1;
|
// gMirrorMario.node.flags &= ~1;
|
||||||
}
|
((s16*)&gMirrorMario)[1] &= ~1;
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -641,9 +660,9 @@ Gfx *geo_render_mirror_mario(s32 callContext, struct GraphNode *node, UNUSED Mat
|
||||||
* Since Mirror Mario has an x scale of -1, the mesh becomes inside out.
|
* Since Mirror Mario has an x scale of -1, the mesh becomes inside out.
|
||||||
* This node corrects that by changing the culling mode accordingly.
|
* This node corrects that by changing the culling mode accordingly.
|
||||||
*/
|
*/
|
||||||
Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node, UNUSED Mat4 *c) {
|
Gfx* geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode* node, UNUSED Mat4* c) {
|
||||||
struct GraphNodeGenerated *asGenerated = (struct GraphNodeGenerated *) node;
|
struct GraphNodeGenerated* asGenerated = (struct GraphNodeGenerated*) node;
|
||||||
Gfx *gfx = NULL;
|
Gfx* gfx = NULL;
|
||||||
|
|
||||||
if (callContext == GEO_CONTEXT_RENDER && gCurGraphNodeObject == &gMirrorMario) {
|
if (callContext == GEO_CONTEXT_RENDER && gCurGraphNodeObject == &gMirrorMario) {
|
||||||
gfx = alloc_display_list(3 * sizeof(*gfx));
|
gfx = alloc_display_list(3 * sizeof(*gfx));
|
||||||
|
@ -652,7 +671,8 @@ Gfx *geo_mirror_mario_backface_culling(s32 callContext, struct GraphNode *node,
|
||||||
gSPClearGeometryMode(&gfx[0], G_CULL_BACK);
|
gSPClearGeometryMode(&gfx[0], G_CULL_BACK);
|
||||||
gSPSetGeometryMode(&gfx[1], G_CULL_FRONT);
|
gSPSetGeometryMode(&gfx[1], G_CULL_FRONT);
|
||||||
gSPEndDisplayList(&gfx[2]);
|
gSPEndDisplayList(&gfx[2]);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
gSPClearGeometryMode(&gfx[0], G_CULL_FRONT);
|
gSPClearGeometryMode(&gfx[0], G_CULL_FRONT);
|
||||||
gSPSetGeometryMode(&gfx[1], G_CULL_BACK);
|
gSPSetGeometryMode(&gfx[1], G_CULL_BACK);
|
||||||
gSPEndDisplayList(&gfx[2]);
|
gSPEndDisplayList(&gfx[2]);
|
||||||
|
|
|
@ -33,4 +33,6 @@ s32 stationary_ground_step(struct MarioState *);
|
||||||
s32 perform_ground_step(struct MarioState *);
|
s32 perform_ground_step(struct MarioState *);
|
||||||
s32 perform_air_step(struct MarioState *, u32);
|
s32 perform_air_step(struct MarioState *, u32);
|
||||||
|
|
||||||
|
void set_vel_from_pitch_and_yaw(struct MarioState* m);
|
||||||
|
|
||||||
#endif // MARIO_STEP_H
|
#endif // MARIO_STEP_H
|
||||||
|
|
|
@ -146,6 +146,8 @@ s32 gMtxTblSize;
|
||||||
static Gfx *sViewportPos;
|
static Gfx *sViewportPos;
|
||||||
static Vp sPrevViewport;
|
static Vp sPrevViewport;
|
||||||
|
|
||||||
|
struct Object* gCurGraphNodeProcessingObject;
|
||||||
|
|
||||||
void mtx_patch_interpolated(void) {
|
void mtx_patch_interpolated(void) {
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
|
@ -1065,10 +1067,10 @@ static void interpolate_matrix(Mat4 result, Mat4 a, Mat4 b) {
|
||||||
* Process an object node.
|
* Process an object node.
|
||||||
*/
|
*/
|
||||||
static void geo_process_object(struct Object *node) {
|
static void geo_process_object(struct Object *node) {
|
||||||
|
gCurGraphNodeProcessingObject = node;
|
||||||
Mat4 mtxf;
|
Mat4 mtxf;
|
||||||
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
s32 hasAnimation = (node->header.gfx.node.flags & GRAPH_RENDER_HAS_ANIMATION) != 0;
|
||||||
Vec3f scaleInterpolated;
|
Vec3f scaleInterpolated;
|
||||||
|
|
||||||
if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) {
|
if (node->header.gfx.unk18 == gCurGraphNodeRoot->areaIndex) {
|
||||||
if (node->header.gfx.throwMatrix != NULL) {
|
if (node->header.gfx.throwMatrix != NULL) {
|
||||||
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
mtxf_mul(gMatStack[gMatStackIndex + 1], *node->header.gfx.throwMatrix,
|
||||||
|
@ -1184,6 +1186,7 @@ static void geo_process_object(struct Object *node) {
|
||||||
node->header.gfx.throwMatrix = NULL;
|
node->header.gfx.throwMatrix = NULL;
|
||||||
node->header.gfx.throwMatrixInterpolated = NULL;
|
node->header.gfx.throwMatrixInterpolated = NULL;
|
||||||
}
|
}
|
||||||
|
gCurGraphNodeProcessingObject = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -12,6 +12,7 @@ extern struct GraphNodeCamera *gCurGraphNodeCamera;
|
||||||
extern struct GraphNodeObject *gCurGraphNodeObject;
|
extern struct GraphNodeObject *gCurGraphNodeObject;
|
||||||
extern struct GraphNodeHeldObject *gCurGraphNodeHeldObject;
|
extern struct GraphNodeHeldObject *gCurGraphNodeHeldObject;
|
||||||
extern u16 gAreaUpdateCounter;
|
extern u16 gAreaUpdateCounter;
|
||||||
|
extern struct Object* gCurGraphNodeProcessingObject;
|
||||||
|
|
||||||
// after processing an object, the type is reset to this
|
// after processing an object, the type is reset to this
|
||||||
#define ANIM_TYPE_NONE 0
|
#define ANIM_TYPE_NONE 0
|
||||||
|
|
|
@ -42,6 +42,7 @@ void network_receive_player(struct Packet* p) {
|
||||||
u16 oldActionState = gMarioStates[1].actionState;
|
u16 oldActionState = gMarioStates[1].actionState;
|
||||||
u16 oldActionArg = gMarioStates[1].actionArg;
|
u16 oldActionArg = gMarioStates[1].actionArg;
|
||||||
u16 playerIndex = gMarioStates[1].playerIndex;
|
u16 playerIndex = gMarioStates[1].playerIndex;
|
||||||
|
u32 oldBehParams = gMarioStates[1].marioObj->oBehParams;
|
||||||
|
|
||||||
// load mario information from packet
|
// load mario information from packet
|
||||||
packet_read(p, &gMarioStates[1], sizeof(u32) * 24);
|
packet_read(p, &gMarioStates[1], sizeof(u32) * 24);
|
||||||
|
@ -59,6 +60,7 @@ void network_receive_player(struct Packet* p) {
|
||||||
|
|
||||||
// reset player index
|
// reset player index
|
||||||
gMarioStates[1].playerIndex = playerIndex;
|
gMarioStates[1].playerIndex = playerIndex;
|
||||||
|
gMarioStates[1].marioObj->oBehParams = oldBehParams;
|
||||||
|
|
||||||
// reset mario sound play flag so that their jump sounds work
|
// reset mario sound play flag so that their jump sounds work
|
||||||
if (gMarioStates[1].action != oldAction) {
|
if (gMarioStates[1].action != oldAction) {
|
||||||
|
|
Loading…
Reference in a new issue