| 314 | } |
| 315 | |
| 316 | void MoveCamera(GameVector* ideal, int speed, bool force) |
| 317 | { |
| 318 | if (Lara.Control.Look.IsUsingBinoculars) |
| 319 | speed = 1; |
| 320 | |
| 321 | if (OldCam.pos.Orientation != LaraItem->Pose.Orientation || |
| 322 | OldCam.pos2.Orientation.x != Lara.ExtraHeadRot.x || |
| 323 | OldCam.pos2.Orientation.y != Lara.ExtraHeadRot.y || |
| 324 | OldCam.pos2.Position.x != Lara.ExtraTorsoRot.x || |
| 325 | OldCam.pos2.Position.y != Lara.ExtraTorsoRot.y || |
| 326 | OldCam.pos.Position != LaraItem->Pose.Position || |
| 327 | OldCam.ActiveState != LaraItem->Animation.ActiveState || |
| 328 | OldCam.TargetState != LaraItem->Animation.TargetState || |
| 329 | OldCam.targetDistance != Camera.targetDistance || |
| 330 | OldCam.targetElevation != Camera.targetElevation || |
| 331 | OldCam.actualElevation != Camera.actualElevation || |
| 332 | OldCam.actualAngle != Camera.actualAngle || |
| 333 | OldCam.target.x != Camera.target.x || |
| 334 | OldCam.target.y != Camera.target.y || |
| 335 | OldCam.target.z != Camera.target.z || |
| 336 | Camera.oldType != Camera.type || |
| 337 | Lara.Control.Look.IsUsingBinoculars || |
| 338 | force) |
| 339 | { |
| 340 | OldCam.pos.Orientation = LaraItem->Pose.Orientation; |
| 341 | OldCam.pos2.Orientation.x = Lara.ExtraHeadRot.x; |
| 342 | OldCam.pos2.Orientation.y = Lara.ExtraHeadRot.y; |
| 343 | OldCam.pos2.Position.x = Lara.ExtraTorsoRot.x; |
| 344 | OldCam.pos2.Position.y = Lara.ExtraTorsoRot.y; |
| 345 | OldCam.pos.Position = LaraItem->Pose.Position; |
| 346 | OldCam.ActiveState = LaraItem->Animation.ActiveState; |
| 347 | OldCam.TargetState = LaraItem->Animation.TargetState; |
| 348 | OldCam.targetDistance = Camera.targetDistance; |
| 349 | OldCam.targetElevation = Camera.targetElevation; |
| 350 | OldCam.actualElevation = Camera.actualElevation; |
| 351 | OldCam.actualAngle = Camera.actualAngle; |
| 352 | OldCam.target.x = Camera.target.x; |
| 353 | OldCam.target.y = Camera.target.y; |
| 354 | OldCam.target.z = Camera.target.z; |
| 355 | LastIdeal.x = ideal->x; |
| 356 | LastIdeal.y = ideal->y; |
| 357 | LastIdeal.z = ideal->z; |
| 358 | LastIdeal.RoomNumber = ideal->RoomNumber; |
| 359 | } |
| 360 | else |
| 361 | { |
| 362 | ideal->x = LastIdeal.x; |
| 363 | ideal->y = LastIdeal.y; |
| 364 | ideal->z = LastIdeal.z; |
| 365 | ideal->RoomNumber = LastIdeal.RoomNumber; |
| 366 | } |
| 367 | |
| 368 | Camera.pos.x += (ideal->x - Camera.pos.x) / speed; |
| 369 | Camera.pos.y += (ideal->y - Camera.pos.y) / speed; |
| 370 | Camera.pos.z += (ideal->z - Camera.pos.z) / speed; |
| 371 | Camera.pos.RoomNumber = ideal->RoomNumber; |
| 372 | |
| 373 | CalculateBounce(false); |
no test coverage detected