summaryrefslogtreecommitdiffstats
path: root/src/control
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2020-04-20 18:41:49 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2020-04-20 18:41:49 +0200
commit35a7f89f734f2e6e09d05cd90a945982e035b14b (patch)
tree01fa4f7ed892166777f0d8f810ccdd48c2610588 /src/control
parentMerge remote-tracking branch 'upstream/master' (diff)
parentupdate librw (matfx) (diff)
downloadre3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar.gz
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar.bz2
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar.lz
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar.xz
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.tar.zst
re3-35a7f89f734f2e6e09d05cd90a945982e035b14b.zip
Diffstat (limited to 'src/control')
-rw-r--r--src/control/Pickups.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp
index 1bf6d9ce..d5db4ad8 100644
--- a/src/control/Pickups.cpp
+++ b/src/control/Pickups.cpp
@@ -623,6 +623,34 @@ CPickups::Update()
if (CReplay::IsPlayingBack())
return;
#endif
+#ifdef CAMERA_PICKUP
+ if ( bPickUpcamActivated ) // taken from PS2
+ {
+ float dist = (FindPlayerCoors() - StaticCamCoors).Magnitude2D();
+ float mult;
+ if ( dist < 10.0f )
+ mult = 1.0f - (dist / 10.0f );
+ else
+ mult = 0.0f;
+
+ CVector pos = StaticCamCoors;
+ pos.z += (pPlayerVehicle->GetColModel()->boundingBox.GetSize().z + 2.0f) * mult;
+
+ if ( (CTimer::GetTimeInMilliseconds() - StaticCamStartTime) > 750 )
+ {
+ TheCamera.SetCamPositionForFixedMode(pos, CVector(0.0f, 0.0f, 0.0f));
+ TheCamera.TakeControl(FindPlayerVehicle(), CCam::MODE_FIXED, JUMP_CUT, CAMCONTROL_SCRIPT);
+ }
+
+ if ( FindPlayerVehicle() != pPlayerVehicle
+ || (FindPlayerCoors() - StaticCamCoors).Magnitude() > 40.0f
+ || ((CTimer::GetTimeInMilliseconds() - StaticCamStartTime) > 60000) )
+ {
+ TheCamera.RestoreWithJumpCut();
+ bPickUpcamActivated = false;
+ }
+ }
+#endif
#define PICKUPS_FRAME_SPAN (6)
#ifdef FIX_BUGS
for (uint32 i = NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN) / PICKUPS_FRAME_SPAN; i < NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1) / PICKUPS_FRAME_SPAN; i++) {