summaryrefslogtreecommitdiffstats
path: root/src/entities
diff options
context:
space:
mode:
authorRoman Masanin <36927roma@gmail.com>2020-09-26 20:38:37 +0200
committerRoman Masanin <36927roma@gmail.com>2020-09-26 20:38:37 +0200
commitbb2e601e13bfdfae697cd0188604bb4481769285 (patch)
tree253fdf6bf532ffd362ad5fdeaac7dfddb43f1afe /src/entities
parentreturn bridge, crane and fix structures in fluff.h (diff)
parentFix coronas reflections (diff)
downloadre3-bb2e601e13bfdfae697cd0188604bb4481769285.tar
re3-bb2e601e13bfdfae697cd0188604bb4481769285.tar.gz
re3-bb2e601e13bfdfae697cd0188604bb4481769285.tar.bz2
re3-bb2e601e13bfdfae697cd0188604bb4481769285.tar.lz
re3-bb2e601e13bfdfae697cd0188604bb4481769285.tar.xz
re3-bb2e601e13bfdfae697cd0188604bb4481769285.tar.zst
re3-bb2e601e13bfdfae697cd0188604bb4481769285.zip
Diffstat (limited to 'src/entities')
-rw-r--r--src/entities/Physical.cpp30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp
index 5fe29a79..b190d03a 100644
--- a/src/entities/Physical.cpp
+++ b/src/entities/Physical.cpp
@@ -23,6 +23,11 @@
//--MIAMI: file done
+#ifdef WALLCLIMB_CHEAT
+bool gGravityCheat;
+#endif
+
+
CPhysical::CPhysical(void)
{
int i;
@@ -521,8 +526,29 @@ CPhysical::ApplySpringDampening(float damping, CVector &springDir, CVector &poin
void
CPhysical::ApplyGravity(void)
{
- if(bAffectedByGravity)
- m_vecMoveSpeed.z -= GRAVITY * CTimer::GetTimeStep();
+ if (!bAffectedByGravity)
+ return;
+#ifdef WALLCLIMB_CHEAT
+ if (gGravityCheat && this == FindPlayerVehicle()) {
+ static CVector v1(0.0f, 0.0f, 1.0f), v2(0.0f, 0.0f, 1.0f);
+ CVector prop = GetPosition() - (GetUp() + GetUp());
+ CColPoint point;
+ CEntity* entity;
+ if (CWorld::ProcessLineOfSight(GetPosition(), prop, point, entity, true, false, false, false, false, false))
+ v2 = point.normal;
+ else
+ v2 = CVector(0.0f, 0.0f, 1.0f);
+ float coef = clamp(CTimer::GetTimeStep() * 0.5f, 0.05f, 0.8f);
+ v1 = v1 * (1.0f - coef) + v2 * coef;
+ if (v1.MagnitudeSqr() < 0.1f)
+ v1 = CVector(0.0f, 0.0f, 1.0f);
+ else
+ v1.Normalise();
+ m_vecMoveSpeed -= GRAVITY * CTimer::GetTimeStep() * v1;
+ return;
+ }
+#endif
+ m_vecMoveSpeed.z -= GRAVITY * CTimer::GetTimeStep();
}
void