From d4b258f15bc7f8d09a5d798ef728c5a38f3bc31e Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 11 May 2016 13:57:49 +0200 Subject: [PATCH] - don't place the chasecam right at the hit position of the trace. This will be the intersection with a wall or sector plane and may cause clipping issues. Instead place it very slightly in front of the actual hit position. --- src/p_map.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/p_map.cpp b/src/p_map.cpp index 923799668..d1fc77268 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -2535,7 +2535,11 @@ bool P_CheckMove(AActor *thing, const DVector2 &pos, int flags) } else if ((flags & PCM_DROPOFF) && !(thing->flags & (MF_FLOAT|MF_DROPOFF))) { - if (newz - tm.dropoffz > thing->MaxDropOffHeight) + const DVector3 oldpos = thing->Pos(); + thing->SetOrigin(pos.X, pos.Y, newz, true); + bool hcheck = (newz - thing->dropoffz > thing->MaxDropOffHeight); + thing->SetOrigin(oldpos, true); + if (hcheck) { return false; } @@ -4840,7 +4844,7 @@ void P_AimCamera(AActor *t1, DVector3 &campos, DAngle &camangle, sector_t *&Came } else { - campos = trace.HitPos; + campos = trace.HitPos - trace.HitVector * 1/256.; } CameraSector = trace.Sector; unlinked = trace.unlinked;