MCPcopy Create free account
hub / github.com/TombEngine/TombEngine / FlareControl

Function FlareControl

TombEngine/Game/Lara/lara_flare.cpp:33–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31constexpr auto FLARE_DEATH_DELAY = 1.0f * FPS;
32
33void FlareControl(short itemNumber)
34{
35 auto& flareItem = g_Level.Items[itemNumber];
36
37 if (TestEnvironment(ENV_FLAG_SWAMP, &flareItem))
38 {
39 KillItem(itemNumber);
40 return;
41 }
42
43 if (flareItem.Animation.Velocity.y)
44 {
45 flareItem.Pose.Orientation.x -= ANGLE(5.0f);
46 flareItem.Pose.Orientation.z += ANGLE(5.0f);
47 }
48 else
49 {
50 flareItem.Pose.Orientation.x = 0;
51 flareItem.Pose.Orientation.z = 0;
52 }
53
54 auto vel = Vector3i(
55 flareItem.Animation.Velocity.z * phd_sin(flareItem.Pose.Orientation.y),
56 flareItem.Animation.Velocity.y,
57 flareItem.Animation.Velocity.z * phd_cos(flareItem.Pose.Orientation.y));
58
59 auto prevPos = flareItem.Pose.Position;
60 flareItem.Pose.Position += Vector3i(vel.x, 0, vel.z);
61
62 if (TestEnvironment(ENV_FLAG_WATER, &flareItem) ||
63 TestEnvironment(ENV_FLAG_SWAMP, &flareItem))
64 {
65 flareItem.Animation.Velocity.y += (5 - flareItem.Animation.Velocity.y) / 2;
66 flareItem.Animation.Velocity.z += (5 - flareItem.Animation.Velocity.z) / 2;
67 }
68 else
69 {
70 flareItem.Animation.Velocity.y += g_GameFlow->GetSettings()->Physics.Gravity;
71 }
72
73 flareItem.Pose.Position.y += flareItem.Animation.Velocity.y;
74 DoProjectileDynamics(itemNumber, prevPos.x, prevPos.y, prevPos.z, vel.x, vel.y, vel.z);
75
76 const auto& settings = g_GameFlow->GetSettings()->Flare;
77
78 int& life = flareItem.Data;
79 life &= 0x7FFF;
80 if (life >= (settings.Timeout * FPS))
81 {
82 if (flareItem.Animation.Velocity.y == 0.0f &&
83 flareItem.Animation.Velocity.z == 0.0f)
84 {
85 KillItem(itemNumber);
86 return;
87 }
88 }
89 else
90 {

Callers

nothing calls this directly

Calls 12

TestEnvironmentFunction · 0.85
KillItemFunction · 0.85
ANGLEFunction · 0.85
phd_sinFunction · 0.85
phd_cosFunction · 0.85
DoProjectileDynamicsFunction · 0.85
GetJointPositionFunction · 0.85
DoFlareLightFunction · 0.85
TriggerChaffEffectsFunction · 0.85
GetSettingsMethod · 0.80
Vector3iClass · 0.70
ToVector3iMethod · 0.45

Tested by

no test coverage detected