mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-02 22:45:33 +00:00
Add a method to check if an object is on the ground
This commit is contained in:
parent
18b606fddf
commit
ac717373b1
3 changed files with 15 additions and 6 deletions
|
@ -286,8 +286,9 @@ namespace MWBase
|
|||
|
||||
virtual void processChangedSettings (const Settings::CategorySettingVector& settings) = 0;
|
||||
|
||||
virtual bool isSwimming(const MWWorld::Ptr &object) = 0;
|
||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) = 0;
|
||||
virtual bool isSwimming(const MWWorld::Ptr &object) const = 0;
|
||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) const = 0;
|
||||
virtual bool isOnGround(const MWWorld::Ptr &ptr) const = 0;
|
||||
|
||||
virtual void togglePOV() = 0;
|
||||
virtual void togglePreviewMode(bool enable) = 0;
|
||||
|
|
|
@ -1379,7 +1379,7 @@ namespace MWWorld
|
|||
}
|
||||
|
||||
bool
|
||||
World::isSwimming(const MWWorld::Ptr &object)
|
||||
World::isSwimming(const MWWorld::Ptr &object) const
|
||||
{
|
||||
/// \todo add check ifActor() - only actors can swim
|
||||
float *fpos = object.getRefData().getPosition().pos;
|
||||
|
@ -1393,7 +1393,7 @@ namespace MWWorld
|
|||
}
|
||||
|
||||
bool
|
||||
World::isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos)
|
||||
World::isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) const
|
||||
{
|
||||
if (!(cell.mData.mFlags & ESM::Cell::HasWater)) {
|
||||
return false;
|
||||
|
@ -1401,6 +1401,13 @@ namespace MWWorld
|
|||
return pos.z < cell.mWater;
|
||||
}
|
||||
|
||||
bool World::isOnGround(const MWWorld::Ptr &ptr) const
|
||||
{
|
||||
RefData &refdata = ptr.getRefData();
|
||||
const OEngine::Physic::PhysicActor *physactor = mPhysEngine->getCharacter(refdata.getHandle());
|
||||
return physactor && physactor->getOnGround();
|
||||
}
|
||||
|
||||
void World::renderPlayer()
|
||||
{
|
||||
mRendering->renderPlayer(mPlayer->getPlayer());
|
||||
|
|
|
@ -314,8 +314,9 @@ namespace MWWorld
|
|||
|
||||
virtual void processChangedSettings(const Settings::CategorySettingVector& settings);
|
||||
|
||||
virtual bool isSwimming(const MWWorld::Ptr &object);
|
||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos);
|
||||
virtual bool isSwimming(const MWWorld::Ptr &object) const;
|
||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) const;
|
||||
virtual bool isOnGround(const MWWorld::Ptr &ptr) const;
|
||||
|
||||
virtual void togglePOV() {
|
||||
mRendering->togglePOV();
|
||||
|
|
Loading…
Reference in a new issue