| 599 | } |
| 600 | |
| 601 | bool RopeSwingCollision(ItemInfo* item, CollisionInfo* coll, bool testForStumble) |
| 602 | { |
| 603 | auto* lara = GetLaraInfo(item); |
| 604 | |
| 605 | coll->Setup.Mode = CollisionProbeMode::FreeForward; |
| 606 | coll->Setup.ForwardAngle = lara->Control.Rope.Direction ? item->Pose.Orientation.y : -item->Pose.Orientation.y; |
| 607 | GetCollisionInfo(coll, item); |
| 608 | |
| 609 | bool stumble = testForStumble && |
| 610 | ((coll->CollisionType != CollisionType::None && |
| 611 | coll->CollisionType != CollisionType::Top && |
| 612 | coll->CollisionType != CollisionType::TopFront) || |
| 613 | coll->HitStatic); |
| 614 | |
| 615 | if (stumble || |
| 616 | TestEnvironment(RoomEnvFlags::ENV_FLAG_WATER, item->RoomNumber) || |
| 617 | TestEnvironment(RoomEnvFlags::ENV_FLAG_SWAMP, item->RoomNumber)) |
| 618 | { |
| 619 | ShiftItem(item, coll); |
| 620 | FallFromRope(item, stumble); |
| 621 | return true; |
| 622 | } |
| 623 | |
| 624 | return false; |
| 625 | } |
| 626 | |
| 627 | void JumpOffRope(ItemInfo* item) |
| 628 | { |
no test coverage detected