| 1078 | } |
| 1079 | |
| 1080 | void CalculateCamera(const CollisionInfo& coll) |
| 1081 | { |
| 1082 | if (ItemCameraOn) |
| 1083 | return; |
| 1084 | |
| 1085 | if (!HandlePlayerOptics(*LaraItem)) |
| 1086 | { |
| 1087 | Camera.pos = LastPosition; |
| 1088 | Camera.target = LastTarget; |
| 1089 | } |
| 1090 | |
| 1091 | if (Lara.Control.Look.IsUsingBinoculars) |
| 1092 | { |
| 1093 | BinocularCamera(LaraItem); |
| 1094 | return; |
| 1095 | } |
| 1096 | else |
| 1097 | { |
| 1098 | LastPosition = Camera.pos; |
| 1099 | } |
| 1100 | |
| 1101 | if (UseForcedFixedCamera) |
| 1102 | { |
| 1103 | Camera.type = CameraType::Fixed; |
| 1104 | if (Camera.oldType != CameraType::Fixed) |
| 1105 | Camera.speed = 1; |
| 1106 | } |
| 1107 | |
| 1108 | // Camera is in a water room, play water sound effect. |
| 1109 | if (TestEnvironment(ENV_FLAG_WATER, Camera.pos.RoomNumber)) |
| 1110 | { |
| 1111 | SoundEffect(SFX_TR4_UNDERWATER, nullptr, SoundEnvironment::Always); |
| 1112 | if (Camera.underwater == false) |
| 1113 | Camera.underwater = true; |
| 1114 | } |
| 1115 | else |
| 1116 | { |
| 1117 | if (Camera.underwater == true) |
| 1118 | Camera.underwater = false; |
| 1119 | } |
| 1120 | |
| 1121 | ItemInfo* item = nullptr; |
| 1122 | bool isFixedCamera = false; |
| 1123 | if (Camera.item != nullptr && |
| 1124 | (Camera.type == CameraType::Fixed || Camera.type == CameraType::Heavy)) |
| 1125 | { |
| 1126 | item = Camera.item; |
| 1127 | isFixedCamera = true; |
| 1128 | } |
| 1129 | else |
| 1130 | { |
| 1131 | item = LaraItem; |
| 1132 | isFixedCamera = false; |
| 1133 | } |
| 1134 | |
| 1135 | auto bounds = GameBoundingBox(item); |
| 1136 | |
| 1137 | int x; |
no test coverage detected