MCPcopy Create free account
hub / github.com/bfbbdecomp/bfbb / xFXFireworksUpdate

Function xFXFireworksUpdate

src/SB/Core/x/xFX.cpp:895–998  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

893 for (S32 i = 0; i < FIREWORK_COUNT; ++i)
894 {
895 if (sFirework[i].state == 0)
896 {
897 continue;
898 }
899 if (sFirework[i].state == 1)
900 {
901 sFirework[i].timer -= dt;
902 if (sFirework[i].timer <= 0.0f)
903 {
904 sFirework[i].vel.x = 13.0f * xurand() + 6.5f;
905 sFirework[i].vel.y = 0.0f;
906 sFirework[i].vel.z = 13.0f * xurand() + 6.5f;
907 sFirework[i].state = 2;
908
909 if (sFireworkLaunchSoundID != 0)
910 {
911 xSndPlay3D(sFireworkLaunchSoundID,
912 0.308f, // Volume
913 0.0f, // Pitch
914 0x80, // Priority
915 0, // Flags
916 &sFirework[i].pos,
917 20.0f, // Radius
918 5.0f, SND_CAT_GAME,
919 0.0f); // Delay
920 }
921 }
922 }
923 else
924 {
925 sFirework[i].fuel -= dt;
926 if (sFirework[i].fuel > 0.0f)
927 {
928 sFirework[i].vel.y += 15.0f * dt;
929 }
930 xParEmitterCustomSettings settings;
931 settings.custom_flags = 0x100;
932 sFirework[i].pos.x += sFirework[i].vel.x * dt;
933 sFirework[i].pos.y += sFirework[i].vel.y * dt;
934 sFirework[i].pos.z += sFirework[i].vel.z * dt;
935 settings.pos = sFirework[i].pos;
936 xParEmitterEmitCustom(sFireworkTrailEmit, dt, &settings);
937
938 if (sFirework[i].fuel <= 0.0f)
939 {
940 sFirework[i].state = 0;
941 sFirework[i].timer = 0.0f;
942
943 zParEmitter* emit = sFirework1Emit;
944 if (xurand() < 0.75f)
945 {
946 emit = sFirework2Emit;
947 }
948
949 xParEmitterCustomSettings settings2;
950 settings2.custom_flags = 0xD00;
951 settings2.pos = sFirework[i].pos;
952

Callers 1

zSceneUpdateFunction · 0.50

Calls 9

xurandFunction · 0.85
memcpyFunction · 0.85
xVec3SubFunction · 0.85
xEntGetPosFunction · 0.85
xSndPlay3DFunction · 0.70
xParEmitterEmitCustomFunction · 0.70
xScrFXGlareAddFunction · 0.70
zRumbleStartDistanceFunction · 0.50
setMethod · 0.45

Tested by

no test coverage detected