mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-10-20 12:12:39 +00:00
39 lines
1.3 KiB
C
39 lines
1.3 KiB
C
// wind.c.inc
|
|
|
|
void spawn_wind_particles(s16 pitch, s16 yaw) {
|
|
s32 i;
|
|
for (i = 0; i < 3; i++) {
|
|
struct Object *wind = spawn_object(o, MODEL_MIST, bhvWind);
|
|
wind->oMoveAngleYaw = yaw;
|
|
wind->oMoveAnglePitch = pitch;
|
|
}
|
|
}
|
|
|
|
void bhv_wind_loop(void) {
|
|
s16 sp2E = 500;
|
|
f32 sp28 = 1.0f;
|
|
if (o->oTimer == 0) {
|
|
o->oOpacity = 100;
|
|
if (o->oMoveAnglePitch == 0) {
|
|
obj_translate_xz_random(o, 900.0f);
|
|
o->oPosX += sins(o->oMoveAngleYaw + 0x8000) * sp2E; // NOP as Pitch is 0
|
|
o->oPosY += 80.0f + random_f32_around_zero(200.0f);
|
|
o->oPosZ += coss(o->oMoveAngleYaw + 0x8000) * sp2E; // -coss(a) * sp2E
|
|
o->oMoveAngleYaw += random_f32_around_zero(4000.0f);
|
|
o->oForwardVel = random_float() * 70.0f + 50.0f;
|
|
} else {
|
|
obj_translate_xz_random(o, 600.0f);
|
|
o->oPosY -= sp2E - 200; // 300
|
|
o->oVelY = random_float() * 30.0f + 50.0f;
|
|
o->oMoveAngleYaw = random_u16();
|
|
o->oForwardVel = 10.0f;
|
|
}
|
|
obj_set_billboard(o);
|
|
cur_obj_scale(sp28);
|
|
}
|
|
if (o->oTimer > 8)
|
|
obj_mark_for_deletion(o);
|
|
o->oFaceAnglePitch += 4000.0f + 2000.0f * random_float();
|
|
o->oFaceAngleYaw += 4000.0f + 2000.0f * random_float();
|
|
cur_obj_move_using_fvel_and_gravity();
|
|
}
|