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

Function LaraDeflectEdgeJump

TombEngine/Game/Lara/lara_collide.cpp:86–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84}
85
86bool LaraDeflectEdgeJump(ItemInfo* item, CollisionInfo* coll)
87{
88 auto* lara = GetLaraInfo(item);
89
90 if (coll->CollisionType != CollisionType::None)
91 ShiftItem(item, coll);
92
93 if (coll->CollisionType == CollisionType::Front || coll->CollisionType == CollisionType::TopFront)
94 {
95 if (!lara->Control.CanClimbLadder || item->Animation.Velocity.z != 2.0f)
96 {
97 if (coll->Middle.Floor <= CLICK(1))
98 {
99 SetAnimation(item, LA_LAND);
100 LaraSnapToHeight(item, coll);
101 }
102 // TODO: Demagic. This is Lara's running velocity. Jumps have a minimum of 50.
103 else if (abs(item->Animation.Velocity.z) > 47.0f)
104 {
105 SetAnimation(item, LA_JUMP_WALL_SMASH_START, 1);
106 Rumble(0.5f, 0.15f);
107 }
108
109 item->Animation.Velocity.z /= 4;
110 lara->Control.MoveAngle += ANGLE(180.0f);
111
112 if (item->Animation.Velocity.y <= 0.0f)
113 item->Animation.Velocity.y = 1.0f;
114 }
115
116 return true;
117 }
118
119 switch (coll->CollisionType)
120 {
121 case CollisionType::Left:
122 item->Pose.Orientation.y += DEFLECT_STRAIGHT_ANGLE;
123 break;
124
125 case CollisionType::Right:
126 item->Pose.Orientation.y -= DEFLECT_STRAIGHT_ANGLE;
127 break;
128
129 case CollisionType::Top:
130 case CollisionType::TopFront:
131 if (item->Animation.Velocity.y <= 0.0f)
132 item->Animation.Velocity.y = 1.0f;
133
134 break;
135
136 case CollisionType::Clamp:
137 item->Pose.Position.z += CLICK(1.5f) * phd_cos(item->Pose.Orientation.y + ANGLE(180.0f));
138 item->Pose.Position.x += CLICK(1.5f) * phd_sin(item->Pose.Orientation.y + ANGLE(180.0f));
139 item->Animation.Velocity.z = 0.0f;
140 coll->Middle.Floor = 0.0f;
141
142 if (item->Animation.Velocity.y <= 0.0f)
143 item->Animation.Velocity.y = 16.0f;

Callers 4

lara_col_jump_forwardFunction · 0.85
lara_col_swan_diveFunction · 0.85
LaraJumpCollisionFunction · 0.85
lara_col_sprint_diveFunction · 0.85

Calls 7

ShiftItemFunction · 0.85
SetAnimationFunction · 0.85
LaraSnapToHeightFunction · 0.85
RumbleFunction · 0.85
ANGLEFunction · 0.85
phd_cosFunction · 0.85
phd_sinFunction · 0.85

Tested by

no test coverage detected