mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-21 09:39:56 +00:00
Merge branch 'misc_cleanup' into 'master'
Small cleanup See merge request OpenMW/openmw!482
This commit is contained in:
commit
ce36dd8a52
@ -2,11 +2,6 @@
|
|||||||
|
|
||||||
#include <BulletCollision/CollisionDispatch/btCollisionObject.h>
|
#include <BulletCollision/CollisionDispatch/btCollisionObject.h>
|
||||||
|
|
||||||
#include <components/misc/convert.hpp>
|
|
||||||
|
|
||||||
#include "../mwbase/world.hpp"
|
|
||||||
#include "../mwbase/environment.hpp"
|
|
||||||
|
|
||||||
#include "collisiontype.hpp"
|
#include "collisiontype.hpp"
|
||||||
#include "projectile.hpp"
|
#include "projectile.hpp"
|
||||||
|
|
||||||
|
@ -41,15 +41,21 @@ namespace MWPhysics
|
|||||||
btCollisionWorld::ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
|
btCollisionWorld::ClosestRayResultCallback::addSingleResult(rayResult, normalInWorldSpace);
|
||||||
if (mProjectile)
|
if (mProjectile)
|
||||||
{
|
{
|
||||||
auto* holder = static_cast<PtrHolder*>(rayResult.m_collisionObject->getUserPointer());
|
switch (rayResult.m_collisionObject->getBroadphaseHandle()->m_collisionFilterGroup)
|
||||||
if (auto* target = dynamic_cast<Actor*>(holder))
|
|
||||||
{
|
{
|
||||||
mProjectile->hit(target->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
case CollisionType_Actor:
|
||||||
}
|
{
|
||||||
else if (auto* target = dynamic_cast<Projectile*>(holder))
|
auto* target = static_cast<Actor*>(rayResult.m_collisionObject->getUserPointer());
|
||||||
{
|
mProjectile->hit(target->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
||||||
target->hit(mProjectile->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
break;
|
||||||
mProjectile->hit(target->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
}
|
||||||
|
case CollisionType_Projectile:
|
||||||
|
{
|
||||||
|
auto* target = static_cast<Projectile*>(rayResult.m_collisionObject->getUserPointer());
|
||||||
|
target->hit(mProjectile->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
||||||
|
mProjectile->hit(target->getPtr(), m_hitPointWorld, m_hitNormalWorld);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,16 +236,7 @@ namespace MWPhysics
|
|||||||
mMovedActors.emplace_back(data.mActorRaw->getPtr());
|
mMovedActors.emplace_back(data.mActorRaw->getPtr());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
updateStats(frameStart, frameNumber, stats);
|
||||||
if (mFrameNumber == frameNumber - 1)
|
|
||||||
{
|
|
||||||
stats.setAttribute(mFrameNumber, "physicsworker_time_begin", mTimer->delta_s(mFrameStart, mTimeBegin));
|
|
||||||
stats.setAttribute(mFrameNumber, "physicsworker_time_taken", mTimer->delta_s(mTimeBegin, mTimeEnd));
|
|
||||||
stats.setAttribute(mFrameNumber, "physicsworker_time_end", mTimer->delta_s(mFrameStart, mTimeEnd));
|
|
||||||
}
|
|
||||||
mFrameStart = frameStart;
|
|
||||||
mTimeBegin = mTimer->tick();
|
|
||||||
mFrameNumber = frameNumber;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// init
|
// init
|
||||||
@ -529,4 +520,17 @@ namespace MWPhysics
|
|||||||
actorData.mActorRaw->setStandingOnPtr(actorData.mStandingOn);
|
actorData.mActorRaw->setStandingOnPtr(actorData.mStandingOn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PhysicsTaskScheduler::updateStats(osg::Timer_t frameStart, unsigned int frameNumber, osg::Stats& stats)
|
||||||
|
{
|
||||||
|
if (mFrameNumber == frameNumber - 1)
|
||||||
|
{
|
||||||
|
stats.setAttribute(mFrameNumber, "physicsworker_time_begin", mTimer->delta_s(mFrameStart, mTimeBegin));
|
||||||
|
stats.setAttribute(mFrameNumber, "physicsworker_time_taken", mTimer->delta_s(mTimeBegin, mTimeEnd));
|
||||||
|
stats.setAttribute(mFrameNumber, "physicsworker_time_end", mTimer->delta_s(mFrameStart, mTimeEnd));
|
||||||
|
}
|
||||||
|
mFrameStart = frameStart;
|
||||||
|
mTimeBegin = mTimer->tick();
|
||||||
|
mFrameNumber = frameNumber;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ namespace MWPhysics
|
|||||||
void refreshLOSCache();
|
void refreshLOSCache();
|
||||||
void updateAabbs();
|
void updateAabbs();
|
||||||
void updatePtrAabb(const std::weak_ptr<PtrHolder>& ptr);
|
void updatePtrAabb(const std::weak_ptr<PtrHolder>& ptr);
|
||||||
|
void updateStats(osg::Timer_t frameStart, unsigned int frameNumber, osg::Stats& stats);
|
||||||
|
|
||||||
std::unique_ptr<WorldFrameData> mWorldFrameData;
|
std::unique_ptr<WorldFrameData> mWorldFrameData;
|
||||||
std::vector<ActorFrameData> mActorsFrameData;
|
std::vector<ActorFrameData> mActorsFrameData;
|
||||||
|
@ -694,8 +694,6 @@ namespace MWPhysics
|
|||||||
if (found != mActors.end())
|
if (found != mActors.end())
|
||||||
{
|
{
|
||||||
bool cmode = found->second->getCollisionMode();
|
bool cmode = found->second->getCollisionMode();
|
||||||
if (cmode)
|
|
||||||
resetPosition(found->first);
|
|
||||||
cmode = !cmode;
|
cmode = !cmode;
|
||||||
found->second->enableCollisionMode(cmode);
|
found->second->enableCollisionMode(cmode);
|
||||||
// NB: Collision body isn't disabled for vanilla TCL compatibility
|
// NB: Collision body isn't disabled for vanilla TCL compatibility
|
||||||
|
@ -5,9 +5,6 @@
|
|||||||
#include <BulletCollision/CollisionDispatch/btCollisionWorld.h>
|
#include <BulletCollision/CollisionDispatch/btCollisionWorld.h>
|
||||||
#include <BulletCollision/CollisionShapes/btConvexShape.h>
|
#include <BulletCollision/CollisionShapes/btConvexShape.h>
|
||||||
|
|
||||||
#include "../mwbase/world.hpp"
|
|
||||||
#include "../mwbase/environment.hpp"
|
|
||||||
|
|
||||||
#include "collisiontype.hpp"
|
#include "collisiontype.hpp"
|
||||||
#include "actor.hpp"
|
#include "actor.hpp"
|
||||||
#include "closestnotmeconvexresultcallback.hpp"
|
#include "closestnotmeconvexresultcallback.hpp"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user