Accept a ConstPtr in various physics getters

This commit is contained in:
scrawl 2015-12-18 17:36:14 +01:00
parent 795032621c
commit 0796f49c17
5 changed files with 24 additions and 24 deletions

View file

@ -374,7 +374,7 @@ namespace MWBase
virtual bool isUnderwater(const MWWorld::CellStore* cell, const osg::Vec3f &pos) const = 0; virtual bool isUnderwater(const MWWorld::CellStore* cell, const osg::Vec3f &pos) const = 0;
virtual bool isOnGround(const MWWorld::Ptr &ptr) const = 0; virtual bool isOnGround(const MWWorld::Ptr &ptr) const = 0;
virtual osg::Matrixf getActorHeadTransform(const MWWorld::Ptr& actor) const = 0; virtual osg::Matrixf getActorHeadTransform(const MWWorld::ConstPtr& actor) const = 0;
virtual void togglePOV() = 0; virtual void togglePOV() = 0;
virtual bool isFirstPerson() const = 0; virtual bool isFirstPerson() const = 0;
@ -541,14 +541,14 @@ namespace MWBase
/// Resets all actors in the current active cells to their original location within that cell. /// Resets all actors in the current active cells to their original location within that cell.
virtual void resetActors() = 0; virtual void resetActors() = 0;
virtual bool isWalkingOnWater (const MWWorld::Ptr& actor) = 0; virtual bool isWalkingOnWater (const MWWorld::ConstPtr& actor) = 0;
/// Return a vector aiming the actor's weapon towards a target. /// Return a vector aiming the actor's weapon towards a target.
/// @note The length of the vector is the distance between actor and target. /// @note The length of the vector is the distance between actor and target.
virtual osg::Vec3f aimToTarget(const MWWorld::Ptr& actor, const MWWorld::Ptr& target) = 0; virtual osg::Vec3f aimToTarget(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target) = 0;
/// Return the distance between actor's weapon and target's collision box. /// Return the distance between actor's weapon and target's collision box.
virtual float getHitDistance(const MWWorld::Ptr& actor, const MWWorld::Ptr& target) = 0; virtual float getHitDistance(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target) = 0;
virtual void removeContainerScripts(const MWWorld::Ptr& reference) = 0; virtual void removeContainerScripts(const MWWorld::Ptr& reference) = 0;
}; };

View file

@ -808,7 +808,7 @@ namespace MWPhysics
return std::make_pair(MWWorld::Ptr(), osg::Vec3f()); return std::make_pair(MWWorld::Ptr(), osg::Vec3f());
} }
float PhysicsSystem::getHitDistance(const osg::Vec3f &point, const MWWorld::Ptr &target) const float PhysicsSystem::getHitDistance(const osg::Vec3f &point, const MWWorld::ConstPtr &target) const
{ {
btCollisionObject* targetCollisionObj = NULL; btCollisionObject* targetCollisionObj = NULL;
const Actor* actor = getActor(target); const Actor* actor = getActor(target);
@ -965,7 +965,7 @@ namespace MWPhysics
} }
} }
osg::Vec3f PhysicsSystem::getHalfExtents(const MWWorld::Ptr &actor) const osg::Vec3f PhysicsSystem::getHalfExtents(const MWWorld::ConstPtr &actor) const
{ {
const Actor* physactor = getActor(actor); const Actor* physactor = getActor(actor);
if (physactor) if (physactor)
@ -974,7 +974,7 @@ namespace MWPhysics
return osg::Vec3f(); return osg::Vec3f();
} }
osg::Vec3f PhysicsSystem::getRenderingHalfExtents(const MWWorld::Ptr &actor) const osg::Vec3f PhysicsSystem::getRenderingHalfExtents(const MWWorld::ConstPtr &actor) const
{ {
const Actor* physactor = getActor(actor); const Actor* physactor = getActor(actor);
if (physactor) if (physactor)
@ -983,7 +983,7 @@ namespace MWPhysics
return osg::Vec3f(); return osg::Vec3f();
} }
osg::Vec3f PhysicsSystem::getPosition(const MWWorld::Ptr &actor) const osg::Vec3f PhysicsSystem::getPosition(const MWWorld::ConstPtr &actor) const
{ {
const Actor* physactor = getActor(actor); const Actor* physactor = getActor(actor);
if (physactor) if (physactor)
@ -1157,7 +1157,7 @@ namespace MWPhysics
return NULL; return NULL;
} }
const Actor *PhysicsSystem::getActor(const MWWorld::Ptr &ptr) const const Actor *PhysicsSystem::getActor(const MWWorld::ConstPtr &ptr) const
{ {
ActorMap::const_iterator found = mActors.find(ptr); ActorMap::const_iterator found = mActors.find(ptr);
if (found != mActors.end()) if (found != mActors.end())

View file

@ -63,7 +63,7 @@ namespace MWPhysics
void updatePtr (const MWWorld::Ptr& old, const MWWorld::Ptr& updated); void updatePtr (const MWWorld::Ptr& old, const MWWorld::Ptr& updated);
Actor* getActor(const MWWorld::Ptr& ptr); Actor* getActor(const MWWorld::Ptr& ptr);
const Actor* getActor(const MWWorld::Ptr& ptr) const; const Actor* getActor(const MWWorld::ConstPtr& ptr) const;
// Object or Actor // Object or Actor
void remove (const MWWorld::Ptr& ptr); void remove (const MWWorld::Ptr& ptr);
@ -95,7 +95,7 @@ namespace MWPhysics
/// target vector hits the collision shape and then calculates distance from the intersection point. /// target vector hits the collision shape and then calculates distance from the intersection point.
/// This can be used to find out how much nearer we need to move to the target for a "getHitContact" to be successful. /// This can be used to find out how much nearer we need to move to the target for a "getHitContact" to be successful.
/// \note Only Actor targets are supported at the moment. /// \note Only Actor targets are supported at the moment.
float getHitDistance(const osg::Vec3f& point, const MWWorld::Ptr& target) const; float getHitDistance(const osg::Vec3f& point, const MWWorld::ConstPtr& target) const;
struct RayResult struct RayResult
{ {
@ -117,14 +117,14 @@ namespace MWPhysics
bool isOnGround (const MWWorld::Ptr& actor); bool isOnGround (const MWWorld::Ptr& actor);
/// Get physical half extents (scaled) of the given actor. /// Get physical half extents (scaled) of the given actor.
osg::Vec3f getHalfExtents(const MWWorld::Ptr& actor) const; osg::Vec3f getHalfExtents(const MWWorld::ConstPtr& actor) const;
/// @see MWPhysics::Actor::getRenderingHalfExtents /// @see MWPhysics::Actor::getRenderingHalfExtents
osg::Vec3f getRenderingHalfExtents(const MWWorld::Ptr& actor) const; osg::Vec3f getRenderingHalfExtents(const MWWorld::ConstPtr& actor) const;
/// Get the position of the collision shape for the actor. Use together with getHalfExtents() to get the collision bounds in world space. /// Get the position of the collision shape for the actor. Use together with getHalfExtents() to get the collision bounds in world space.
/// @note The collision shape's origin is in its center, so the position returned can be described as center of the actor collision box in world space. /// @note The collision shape's origin is in its center, so the position returned can be described as center of the actor collision box in world space.
osg::Vec3f getPosition(const MWWorld::Ptr& actor) const; osg::Vec3f getPosition(const MWWorld::ConstPtr& actor) const;
/// Queues velocity movement for a Ptr. If a Ptr is already queued, its velocity will /// Queues velocity movement for a Ptr. If a Ptr is already queued, its velocity will
/// be overwritten. Valid until the next call to applyQueuedMovement. /// be overwritten. Valid until the next call to applyQueuedMovement.

View file

@ -1038,9 +1038,9 @@ namespace MWWorld
return facedObject; return facedObject;
} }
osg::Matrixf World::getActorHeadTransform(const MWWorld::Ptr& actor) const osg::Matrixf World::getActorHeadTransform(const MWWorld::ConstPtr& actor) const
{ {
MWRender::Animation *anim = mRendering->getAnimation(actor); const MWRender::Animation *anim = mRendering->getAnimation(actor);
if(anim) if(anim)
{ {
const osg::Node *node = anim->getNode("Head"); const osg::Node *node = anim->getNode("Head");
@ -3285,22 +3285,22 @@ namespace MWWorld
} }
} }
bool World::isWalkingOnWater(const Ptr &actor) bool World::isWalkingOnWater(const ConstPtr &actor)
{ {
MWPhysics::Actor* physicActor = mPhysics->getActor(actor); const MWPhysics::Actor* physicActor = mPhysics->getActor(actor);
if (physicActor && physicActor->isWalkingOnWater()) if (physicActor && physicActor->isWalkingOnWater())
return true; return true;
return false; return false;
} }
osg::Vec3f World::aimToTarget(const Ptr &actor, const MWWorld::Ptr& target) osg::Vec3f World::aimToTarget(const ConstPtr &actor, const MWWorld::ConstPtr& target)
{ {
osg::Vec3f weaponPos = getActorHeadTransform(actor).getTrans(); osg::Vec3f weaponPos = getActorHeadTransform(actor).getTrans();
osg::Vec3f targetPos = mPhysics->getPosition(target); osg::Vec3f targetPos = mPhysics->getPosition(target);
return (targetPos - weaponPos); return (targetPos - weaponPos);
} }
float World::getHitDistance(const Ptr &actor, const Ptr &target) float World::getHitDistance(const ConstPtr &actor, const ConstPtr &target)
{ {
osg::Vec3f weaponPos = getActorHeadTransform(actor).getTrans(); osg::Vec3f weaponPos = getActorHeadTransform(actor).getTrans();
return mPhysics->getHitDistance(weaponPos, target); return mPhysics->getHitDistance(weaponPos, target);

View file

@ -470,7 +470,7 @@ namespace MWWorld
virtual bool isWading(const MWWorld::Ptr &object) const; virtual bool isWading(const MWWorld::Ptr &object) const;
virtual bool isOnGround(const MWWorld::Ptr &ptr) const; virtual bool isOnGround(const MWWorld::Ptr &ptr) const;
virtual osg::Matrixf getActorHeadTransform(const MWWorld::Ptr& actor) const; virtual osg::Matrixf getActorHeadTransform(const MWWorld::ConstPtr& actor) const;
virtual void togglePOV(); virtual void togglePOV();
@ -640,14 +640,14 @@ namespace MWWorld
/// Resets all actors in the current active cells to their original location within that cell. /// Resets all actors in the current active cells to their original location within that cell.
virtual void resetActors(); virtual void resetActors();
virtual bool isWalkingOnWater (const MWWorld::Ptr& actor); virtual bool isWalkingOnWater (const MWWorld::ConstPtr& actor);
/// Return a vector aiming the actor's weapon towards a target. /// Return a vector aiming the actor's weapon towards a target.
/// @note The length of the vector is the distance between actor and target. /// @note The length of the vector is the distance between actor and target.
virtual osg::Vec3f aimToTarget(const MWWorld::Ptr& actor, const MWWorld::Ptr& target); virtual osg::Vec3f aimToTarget(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target);
/// Return the distance between actor's weapon and target's collision box. /// Return the distance between actor's weapon and target's collision box.
virtual float getHitDistance(const MWWorld::Ptr& actor, const MWWorld::Ptr& target); virtual float getHitDistance(const MWWorld::ConstPtr& actor, const MWWorld::ConstPtr& target);
}; };
} }