From a5e972aeb5c1a591ff2a07d2e1ed17d726d9f3e7 Mon Sep 17 00:00:00 2001 From: MiroslavR Date: Sun, 12 Oct 2014 00:13:24 +0200 Subject: [PATCH] Make collision events available on every frame (thanks, scrawl), make hurtStandingActor and hurtCollidingActor no-op in guimode --- apps/openmw/mwworld/physicssystem.cpp | 8 ++++---- apps/openmw/mwworld/worldimp.cpp | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) 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)