2019-09-01 15:50:50 -04:00
|
|
|
// sliding_platform_2.inc.c
|
|
|
|
|
2020-06-02 12:44:34 -04:00
|
|
|
void const *D_80331A24[] = {
|
2019-09-01 15:50:50 -04:00
|
|
|
bits_seg7_collision_0701A9A0,
|
|
|
|
bits_seg7_collision_0701AA0C,
|
|
|
|
bitfs_seg7_collision_07015714,
|
|
|
|
bitfs_seg7_collision_07015768,
|
|
|
|
rr_seg7_collision_070295F8,
|
|
|
|
rr_seg7_collision_0702967C,
|
|
|
|
NULL,
|
|
|
|
bitdw_seg7_collision_0700F688,
|
|
|
|
};
|
|
|
|
|
|
|
|
void bhv_sliding_plat_2_init(void) {
|
|
|
|
s32 val04;
|
|
|
|
|
|
|
|
val04 = ((u16)(o->oBehParams >> 16) & 0x0380) >> 7;
|
|
|
|
o->collisionData = segmented_to_virtual(D_80331A24[val04]);
|
|
|
|
o->oBackAndForthPlatformUnkF8 = 50.0f * ((u16)(o->oBehParams >> 16) & 0x003F);
|
|
|
|
|
|
|
|
if (val04 < 5 || val04 > 6) {
|
|
|
|
o->oBackAndForthPlatformUnk100 = 15.0f;
|
|
|
|
if ((u16)(o->oBehParams >> 16) & 0x0040) {
|
|
|
|
o->oMoveAngleYaw += 0x8000;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
o->oBackAndForthPlatformUnk100 = 10.0f;
|
|
|
|
if ((u16)(o->oBehParams >> 16) & 0x0040) {
|
|
|
|
o->oBackAndForthPlatformUnkF4 = -1.0f;
|
|
|
|
} else {
|
|
|
|
o->oBackAndForthPlatformUnkF4 = 1.0f;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void bhv_sliding_plat_2_loop(void) {
|
|
|
|
if (o->oTimer > 10) {
|
|
|
|
o->oBackAndForthPlatformUnkFC += o->oBackAndForthPlatformUnk100;
|
|
|
|
if (clamp_f32(&o->oBackAndForthPlatformUnkFC, -o->oBackAndForthPlatformUnkF8, 0.0f)) {
|
|
|
|
o->oBackAndForthPlatformUnk100 = -o->oBackAndForthPlatformUnk100;
|
|
|
|
o->oTimer = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
obj_perform_position_op(0);
|
|
|
|
|
|
|
|
if (o->oBackAndForthPlatformUnkF4 != 0.0f) {
|
|
|
|
o->oPosY = o->oHomeY + o->oBackAndForthPlatformUnkFC * o->oBackAndForthPlatformUnkF4;
|
|
|
|
} else {
|
|
|
|
obj_set_dist_from_home(o->oBackAndForthPlatformUnkFC);
|
|
|
|
}
|
|
|
|
|
|
|
|
obj_perform_position_op(1);
|
|
|
|
}
|