diff options
author | Sergeanur <s.anureev@yandex.ua> | 2021-07-22 07:26:19 +0300 |
---|---|---|
committer | Sergeanur <s.anureev@yandex.ua> | 2021-07-22 20:37:49 +0300 |
commit | 5e34b1efcf4443124beece5ec97082da776df074 (patch) | |
tree | efda81ec77a2f6038d7c997c57ce49d38222af61 /src/peds | |
parent | 953e4fc4ff96e9e2c180f74b36e3b591c979b1e2 (diff) |
Possible fix of RemoveAndAdd crash
Diffstat (limited to 'src/peds')
-rw-r--r-- | src/peds/Ped.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index b52d054c..002cbe3b 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2362,12 +2362,12 @@ CPed::ProcessControl(void) } else { obstacleForFlyingOtherDirZ = 501.0f; } - uint8 flyDir = 0; + int16 flyDir = 0; float feetZ = GetPosition().z - FEET_OFFSET; #ifdef FIX_BUGS - if (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f) + if (obstacleForFlyingZ > feetZ && obstacleForFlyingZ < 500.0f) flyDir = 1; - else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingZ < 500.0f) + else if (obstacleForFlyingOtherDirZ > feetZ && obstacleForFlyingOtherDirZ < 501.0f) flyDir = 2; #else if ((obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ < 500.0f) || (obstacleForFlyingZ > feetZ && obstacleForFlyingOtherDirZ > feetZ)) @@ -2376,8 +2376,8 @@ CPed::ProcessControl(void) flyDir = 2; #endif - if (flyDir != 0 && !bHeadStuckInCollision) { - SetPosition((flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point)); + if (flyDir > 0 && !bHeadStuckInCollision) { + GetMatrix().SetTranslateOnly(flyDir == 2 ? obstacleForFlyingOtherDir.point : obstacleForFlying.point); GetMatrix().GetPosition().z += FEET_OFFSET; GetMatrix().UpdateRW(); SetLanding(); |