mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-05 18:45:34 +00:00
Restore fall damage
This commit is contained in:
parent
e5392cabf1
commit
978af12c2d
1 changed files with 12 additions and 11 deletions
|
@ -515,26 +515,27 @@ namespace MWPhysics
|
||||||
mPreStepBarrier->wait();
|
mPreStepBarrier->wait();
|
||||||
|
|
||||||
int job = 0;
|
int job = 0;
|
||||||
while ((job = mNextJob.fetch_add(1, std::memory_order_relaxed)) < mNumJobs)
|
while (mRemainingSteps && (job = mNextJob.fetch_add(1, std::memory_order_relaxed)) < mNumJobs)
|
||||||
{
|
{
|
||||||
MaybeSharedLock<std::shared_timed_mutex> lockColWorld(mCollisionWorldMutex, mThreadSafeBullet);
|
MaybeSharedLock<std::shared_timed_mutex> lockColWorld(mCollisionWorldMutex, mThreadSafeBullet);
|
||||||
if(const auto actor = mActorsFrameData[job].mActor.lock())
|
if(const auto actor = mActorsFrameData[job].mActor.lock())
|
||||||
{
|
|
||||||
if (mRemainingSteps)
|
|
||||||
MovementSolver::move(mActorsFrameData[job], mPhysicsDt, mCollisionWorld.get(), *mWorldFrameData);
|
MovementSolver::move(mActorsFrameData[job], mPhysicsDt, mCollisionWorld.get(), *mWorldFrameData);
|
||||||
else
|
|
||||||
{
|
|
||||||
auto& actorData = mActorsFrameData[job];
|
|
||||||
handleFall(actorData, mAdvanceSimulation);
|
|
||||||
mMovementResults[actorData.mPtr] = interpolateMovements(actorData, mTimeAccum, mPhysicsDt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mPostStepBarrier->wait();
|
mPostStepBarrier->wait();
|
||||||
|
|
||||||
if (!mRemainingSteps)
|
if (!mRemainingSteps)
|
||||||
{
|
{
|
||||||
|
while ((job = mNextJob.fetch_add(1, std::memory_order_relaxed)) < mNumJobs)
|
||||||
|
{
|
||||||
|
if(const auto actor = mActorsFrameData[job].mActor.lock())
|
||||||
|
{
|
||||||
|
auto& actorData = mActorsFrameData[job];
|
||||||
|
handleFall(actorData, mAdvanceSimulation);
|
||||||
|
mMovementResults[actorData.mPtr] = interpolateMovements(actorData, mTimeAccum, mPhysicsDt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (mLOSCacheExpiry >= 0)
|
if (mLOSCacheExpiry >= 0)
|
||||||
refreshLOSCache();
|
refreshLOSCache();
|
||||||
mPostSimBarrier->wait();
|
mPostSimBarrier->wait();
|
||||||
|
|
Loading…
Reference in a new issue