State: LS_MONKEY_BACK (163) Control: lara_as_monkey_back()
| 295 | // State: LS_MONKEY_BACK (163) |
| 296 | // Control: lara_as_monkey_back() |
| 297 | void 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() |
nothing calls this directly
no test coverage detected