mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
45 lines
1.4 KiB
C
45 lines
1.4 KiB
C
// rotating_platform.c.inc
|
|
|
|
#include "levels/wf/header.h"
|
|
#include "levels/wdw/header.h"
|
|
|
|
struct WFRotatingPlatformData sWFRotatingPlatformData[] = {
|
|
{ 0, 100, wf_seg7_collision_rotating_platform, 2000 },
|
|
{ 0, 150, wdw_seg7_collision_070186B4, 1000 }
|
|
};
|
|
|
|
void bhv_wf_rotating_wooden_platform_loop(void) {
|
|
if (o->oSyncID == 0) {
|
|
network_init_object(o, SYNC_DISTANCE_ONLY_EVENTS);
|
|
network_init_object_field(o, &o->oAction);
|
|
network_init_object_field(o, &o->oAngleVelYaw);
|
|
network_init_object_field(o, &o->oFaceAngleYaw);
|
|
network_init_object_field(o, &o->oTimer);
|
|
}
|
|
|
|
if (o->oAction == 0) {
|
|
o->oAngleVelYaw = 0;
|
|
if (o->oTimer > 60 && network_owns_object(o)) {
|
|
o->oAction++;
|
|
network_send_object(o);
|
|
}
|
|
} else {
|
|
o->oAngleVelYaw = 0x100;
|
|
if (o->oTimer > 126) {
|
|
o->oAction = 0;
|
|
}
|
|
cur_obj_play_sound_1(SOUND_ENV_ELEVATOR2);
|
|
}
|
|
cur_obj_rotate_face_angle_using_vel();
|
|
}
|
|
|
|
void bhv_rotating_platform_loop(void) {
|
|
s8 sp1F = o->oBehParams >> 24;
|
|
if (o->oTimer == 0) {
|
|
obj_set_collision_data(o, sWFRotatingPlatformData[o->oBehParams2ndByte].collisionData);
|
|
o->oCollisionDistance = sWFRotatingPlatformData[o->oBehParams2ndByte].collisionDistance;
|
|
cur_obj_scale(sWFRotatingPlatformData[o->oBehParams2ndByte].scale * 0.01f);
|
|
}
|
|
o->oAngleVelYaw = sp1F << 4;
|
|
o->oFaceAngleYaw += o->oAngleVelYaw;
|
|
}
|