collide_particles.inc.c (2944B)
1 // collide_particles.inc.c 2 3 static s16 sTinyTriMovementParams[] = { 0xD000, 0, 0x3000, 0, 0xDE67, 0x2199, 4 0x2199, 0x2199, 0xDE67, 0xDE67, 0x2199, 0xDE67 }; 5 6 static s16 sTinyStarMovementParams[] = { 0xE000, 0, 0, 0, 0x2000, 0, 0xE99A, 7 0x1666, 0x1666, 0x1666, 0xE99A, 0xE99A, 0x1666, 0xE99A }; 8 9 void bhv_punch_tiny_triangle_loop(void) { 10 if (o->oTimer == 0) { 11 s16 sp1E = o->oMoveAngleYaw; 12 o->oCollisionParticleUnkF4 = 1.28f; 13 cur_obj_set_pos_relative(gMarioObject, 0.0f, 60.0f, 100.0f); 14 o->oMoveAngleYaw = sp1E; 15 } 16 17 cur_obj_move_using_fvel_and_gravity(); 18 o->oAnimState = 5; 19 cur_obj_scale(o->oCollisionParticleUnkF4); 20 o->oCollisionParticleUnkF4 -= 0.2f; 21 22 if (gDebugInfo[DEBUG_PAGE_EFFECTINFO][0] + 6 < o->oTimer) { 23 obj_mark_for_deletion(o); 24 } 25 } 26 27 void bhv_punch_tiny_triangle_init(void) { 28 s32 i; 29 UNUSED u8 filler[4]; 30 31 for (i = 0; i < 6; i++) { 32 struct Object *triangle = spawn_object(o, MODEL_DIRT_ANIMATION, bhvPunchTinyTriangle); 33 triangle->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + sTinyTriMovementParams[2 * i] + 0x8000; 34 triangle->oVelY = sins(sTinyTriMovementParams[2 * i + 1]) * 25.0f; 35 triangle->oForwardVel = coss(sTinyTriMovementParams[2 * i + 1]) * 25.0f; 36 } 37 } 38 39 void bhv_wall_tiny_star_particle_loop(void) { 40 if (o->oTimer == 0) { 41 s16 sp1E = o->oMoveAngleYaw; 42 o->oCollisionParticleUnkF4 = 0.28f; 43 cur_obj_set_pos_relative(gMarioObject, 0.0f, 30.0f, 110.0f); 44 o->oMoveAngleYaw = sp1E; 45 } 46 47 cur_obj_move_using_fvel_and_gravity(); 48 o->oAnimState = 4; 49 cur_obj_scale(o->oCollisionParticleUnkF4); 50 o->oCollisionParticleUnkF4 -= 0.015f; 51 } 52 53 void bhv_tiny_star_particles_init(void) { 54 s32 i; 55 UNUSED u8 filler[4]; 56 57 for (i = 0; i < 7; i++) { 58 struct Object *particle = spawn_object(o, MODEL_CARTOON_STAR, bhvWallTinyStarParticle); 59 particle->oMoveAngleYaw = gMarioObject->oMoveAngleYaw + sTinyStarMovementParams[2 * i] + 0x8000; 60 particle->oVelY = sins(sTinyStarMovementParams[2 * i + 1]) * 25.0f; 61 particle->oForwardVel = coss(sTinyStarMovementParams[2 * i + 1]) * 25.0f; 62 } 63 } 64 65 void bhv_pound_tiny_star_particle_loop(void) { 66 if (o->oTimer == 0) { 67 o->oCollisionParticleUnkF4 = 0.28f; 68 o->oForwardVel = 25.0f; 69 o->oPosY -= 20.0f; 70 o->oVelY = 14.0f; 71 } 72 73 cur_obj_move_using_fvel_and_gravity(); 74 o->oAnimState = 4; 75 cur_obj_scale(o->oCollisionParticleUnkF4); 76 o->oCollisionParticleUnkF4 -= 0.015f; 77 } 78 79 void bhv_pound_tiny_star_particle_init(void) { 80 s32 sp24; 81 s32 sp20 = 8; 82 83 for (sp24 = 0; sp24 < sp20; sp24++) { 84 struct Object *particle = spawn_object(o, MODEL_CARTOON_STAR, bhvPoundTinyStarParticle); 85 particle->oMoveAngleYaw = (sp24 * 65536) / sp20; 86 } 87 }