| 183 | } |
| 184 | |
| 185 | bool LaraDeflectEdgeCrawl(ItemInfo* item, CollisionInfo* coll) |
| 186 | { |
| 187 | // Useless in the best case; Lara does not have to embed in order to perform climbing actions in crawl states. Keeping for security. @Sezz 2021.11.26 |
| 188 | if (coll->CollisionType == CollisionType::Front || coll->CollisionType == CollisionType::TopFront) |
| 189 | { |
| 190 | ShiftItem(item, coll); |
| 191 | |
| 192 | item->Animation.Velocity.z = 0; |
| 193 | item->Animation.IsAirborne = false; |
| 194 | return true; |
| 195 | } |
| 196 | |
| 197 | if (coll->CollisionType == CollisionType::Left) |
| 198 | { |
| 199 | ShiftItem(item, coll); |
| 200 | item->Pose.Orientation.y += coll->DiagonalStepAtLeft() ? DEFLECT_DIAGONAL_ANGLE_CRAWL : DEFLECT_STRAIGHT_ANGLE_CRAWL; |
| 201 | } |
| 202 | else if (coll->CollisionType == CollisionType::Right) |
| 203 | { |
| 204 | ShiftItem(item, coll); |
| 205 | item->Pose.Orientation.y -= coll->DiagonalStepAtRight() ? DEFLECT_DIAGONAL_ANGLE_CRAWL : DEFLECT_STRAIGHT_ANGLE_CRAWL; |
| 206 | } |
| 207 | |
| 208 | return false; |
| 209 | } |
| 210 | |
| 211 | bool LaraDeflectEdgeMonkey(ItemInfo* item, CollisionInfo* coll) |
| 212 | { |
no test coverage detected