diff --git a/apps/openmw/mwworld/physicssystem.cpp b/apps/openmw/mwworld/physicssystem.cpp index ad0f5bea51..aba120baae 100644 --- a/apps/openmw/mwworld/physicssystem.cpp +++ b/apps/openmw/mwworld/physicssystem.cpp @@ -829,15 +829,15 @@ namespace MWWorld const PtrVelocityList& PhysicsSystem::applyQueuedMovement(float dt) { - // Collision events are only tracked for a single frame, so reset first - mCollisions.clear(); - mStandingCollisions.clear(); - mMovementResults.clear(); mTimeAccum += dt; if(mTimeAccum >= 1.0f/60.0f) { + // Collision events should be available on every frame + mCollisions.clear(); + mStandingCollisions.clear(); + const MWBase::World *world = MWBase::Environment::get().getWorld(); PtrVelocityList::iterator iter = mMovementQueue.begin(); for(;iter != mMovementQueue.end();++iter) diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index 92e240d7a8..383641d2df 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -2078,6 +2078,9 @@ namespace MWWorld void World::hurtStandingActors(const Ptr &object, float healthPerSecond) { + if (MWBase::Environment::get().getWindowManager()->isGuiMode()) + return; + std::vector actors; mPhysics->getActorsStandingOn(object, actors); for (std::vector::iterator it = actors.begin(); it != actors.end(); ++it) @@ -2106,6 +2109,9 @@ namespace MWWorld void World::hurtCollidingActors(const Ptr &object, float healthPerSecond) { + if (MWBase::Environment::get().getWindowManager()->isGuiMode()) + return; + std::vector actors; mPhysics->getActorsCollidingWith(object, actors); for (std::vector::iterator it = actors.begin(); it != actors.end(); ++it)