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 void processChangedSettings (const Settings::CategorySettingVector& settings) = 0;
|
||||||
|
|
||||||
virtual bool isSwimming(const MWWorld::Ptr &object) = 0;
|
virtual bool isSwimming(const MWWorld::Ptr &object) const = 0;
|
||||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) = 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 togglePOV() = 0;
|
||||||
virtual void togglePreviewMode(bool enable) = 0;
|
virtual void togglePreviewMode(bool enable) = 0;
|
||||||
|
|
|
@ -1379,7 +1379,7 @@ namespace MWWorld
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
World::isSwimming(const MWWorld::Ptr &object)
|
World::isSwimming(const MWWorld::Ptr &object) const
|
||||||
{
|
{
|
||||||
/// \todo add check ifActor() - only actors can swim
|
/// \todo add check ifActor() - only actors can swim
|
||||||
float *fpos = object.getRefData().getPosition().pos;
|
float *fpos = object.getRefData().getPosition().pos;
|
||||||
|
@ -1393,7 +1393,7 @@ namespace MWWorld
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
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)) {
|
if (!(cell.mData.mFlags & ESM::Cell::HasWater)) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -1401,6 +1401,13 @@ namespace MWWorld
|
||||||
return pos.z < cell.mWater;
|
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()
|
void World::renderPlayer()
|
||||||
{
|
{
|
||||||
mRendering->renderPlayer(mPlayer->getPlayer());
|
mRendering->renderPlayer(mPlayer->getPlayer());
|
||||||
|
|
|
@ -314,8 +314,9 @@ namespace MWWorld
|
||||||
|
|
||||||
virtual void processChangedSettings(const Settings::CategorySettingVector& settings);
|
virtual void processChangedSettings(const Settings::CategorySettingVector& settings);
|
||||||
|
|
||||||
virtual bool isSwimming(const MWWorld::Ptr &object);
|
virtual bool isSwimming(const MWWorld::Ptr &object) const;
|
||||||
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos);
|
virtual bool isUnderwater(const ESM::Cell &cell, const Ogre::Vector3 &pos) const;
|
||||||
|
virtual bool isOnGround(const MWWorld::Ptr &ptr) const;
|
||||||
|
|
||||||
virtual void togglePOV() {
|
virtual void togglePOV() {
|
||||||
mRendering->togglePOV();
|
mRendering->togglePOV();
|
||||||
|
|
Loading…
Reference in a new issue