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

Function lara_col_monkey_back

TombEngine/Game/Lara/lara_monkey.cpp:297–328  ·  view source on GitHub ↗

State: LS_MONKEY_BACK (163) Control: lara_as_monkey_back()

Source from the content-addressed store, hash-verified

295// State: LS_MONKEY_BACK (163)
296// Control: lara_as_monkey_back()
297void lara_col_monkey_back(ItemInfo* item, CollisionInfo* coll)
298{
299 auto& player = GetLaraInfo(*item);
300
301 player.Control.IsMonkeySwinging = true;
302 player.Control.MoveAngle = item->Pose.Orientation.y + ANGLE(180.0f);
303 coll->Setup.LowerFloorBound = NO_LOWER_BOUND;
304 coll->Setup.UpperFloorBound = 0;
305 coll->Setup.LowerCeilingBound = MONKEY_STEPUP_HEIGHT;
306 coll->Setup.UpperCeilingBound = -MONKEY_STEPUP_HEIGHT;
307 coll->Setup.BlockCeilingSlope = true;
308 coll->Setup.BlockMonkeySwingEdge = true;
309 coll->Setup.ForwardAngle = player.Control.MoveAngle;
310 coll->Setup.Radius = LARA_RADIUS;
311 coll->Setup.Height = LARA_HEIGHT_MONKEY;
312 GetCollisionInfo(coll, item);
313
314 if (LaraDeflectEdgeMonkey(item, coll))
315 LaraCollideStopMonkey(item, coll);
316
317 if (CanFallFromMonkeySwing(*item, *coll))
318 {
319 SetLaraMonkeyFallAnimation(item);
320 return;
321 }
322
323 if (CanPerformMonkeySwingStep(*item, *coll))
324 {
325 DoLaraMonkeyStep(item, coll);
326 return;
327 }
328}
329
330// State: LS_MONKEY_SHIMMY_LEFT (77)
331// Collision: lara_col_monkey_shimmy_left()

Callers

nothing calls this directly

Calls 8

ANGLEFunction · 0.85
GetCollisionInfoFunction · 0.85
LaraDeflectEdgeMonkeyFunction · 0.85
LaraCollideStopMonkeyFunction · 0.85
CanFallFromMonkeySwingFunction · 0.85
DoLaraMonkeyStepFunction · 0.85

Tested by

no test coverage detected