| 127 | } |
| 128 | |
| 129 | static int GetLookCameraVerticalOffset(const ItemInfo& item, const CollisionInfo& coll) |
| 130 | { |
| 131 | constexpr auto VERTICAL_OFFSET_DEFAULT = -BLOCK(1 / 16.0f); |
| 132 | constexpr auto VERTICAL_OFFSET_SWAMP = BLOCK(0.4f); |
| 133 | constexpr auto VERTICAL_OFFSET_MONKEY_SWING = BLOCK(0.25f); |
| 134 | constexpr auto VERTICAL_OFFSET_TREADING_WATER = BLOCK(0.5f); |
| 135 | |
| 136 | const auto& player = GetLaraInfo(item); |
| 137 | |
| 138 | bool isInSwamp = TestEnvironment(ENV_FLAG_SWAMP, item.RoomNumber); |
| 139 | |
| 140 | // Determine contextual vertical offset. |
| 141 | float verticalOffset = coll.Setup.Height; |
| 142 | if (player.Control.IsMonkeySwinging) |
| 143 | { |
| 144 | verticalOffset -= VERTICAL_OFFSET_MONKEY_SWING; |
| 145 | } |
| 146 | else if (player.Control.WaterStatus == WaterStatus::TreadWater) |
| 147 | { |
| 148 | verticalOffset -= VERTICAL_OFFSET_TREADING_WATER; |
| 149 | } |
| 150 | else if (isInSwamp) |
| 151 | { |
| 152 | verticalOffset = VERTICAL_OFFSET_SWAMP; |
| 153 | } |
| 154 | else |
| 155 | { |
| 156 | verticalOffset -= VERTICAL_OFFSET_DEFAULT; |
| 157 | } |
| 158 | |
| 159 | // Get floor-to-ceiling height. |
| 160 | auto pointColl = GetPointCollision(item); |
| 161 | int floorToCeilHeight = abs(pointColl.GetCeilingHeight() - pointColl.GetFloorHeight()); |
| 162 | |
| 163 | // Return appropriate vertical offset. |
| 164 | return -((verticalOffset < floorToCeilHeight) ? verticalOffset : floorToCeilHeight); |
| 165 | } |
| 166 | |
| 167 | void LookCamera(ItemInfo& item, const CollisionInfo& coll) |
| 168 | { |
no test coverage detected