mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-23 03:40:27 +00:00
encapsulated water level
This commit is contained in:
parent
79e723ad06
commit
b72c1c2c58
4 changed files with 20 additions and 7 deletions
|
@ -132,7 +132,7 @@ namespace MWScript
|
||||||
{
|
{
|
||||||
MWWorld::CellStore *cell = MWBase::Environment::get().getWorld()->getPlayerPtr().getCell();
|
MWWorld::CellStore *cell = MWBase::Environment::get().getWorld()->getPlayerPtr().getCell();
|
||||||
if (cell->getCell()->hasWater())
|
if (cell->getCell()->hasWater())
|
||||||
runtime.push (cell->mWaterLevel);
|
runtime.push (cell->getWaterLevel());
|
||||||
else
|
else
|
||||||
runtime.push (-std::numeric_limits<float>().max());
|
runtime.push (-std::numeric_limits<float>().max());
|
||||||
}
|
}
|
||||||
|
@ -151,8 +151,8 @@ namespace MWScript
|
||||||
if (cell->getCell()->isExterior())
|
if (cell->getCell()->isExterior())
|
||||||
throw std::runtime_error("Can't set water level in exterior cell");
|
throw std::runtime_error("Can't set water level in exterior cell");
|
||||||
|
|
||||||
cell->mWaterLevel = level;
|
cell->setWaterLevel (level);
|
||||||
MWBase::Environment::get().getWorld()->setWaterHeight(cell->mWaterLevel);
|
MWBase::Environment::get().getWorld()->setWaterHeight (cell->getWaterLevel());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -169,8 +169,8 @@ namespace MWScript
|
||||||
if (cell->getCell()->isExterior())
|
if (cell->getCell()->isExterior())
|
||||||
throw std::runtime_error("Can't set water level in exterior cell");
|
throw std::runtime_error("Can't set water level in exterior cell");
|
||||||
|
|
||||||
cell->mWaterLevel +=level;
|
cell->setWaterLevel (cell->getWaterLevel()+level);
|
||||||
MWBase::Environment::get().getWorld()->setWaterHeight(cell->mWaterLevel);
|
MWBase::Environment::get().getWorld()->setWaterHeight(cell->getWaterLevel());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -233,6 +233,16 @@ namespace MWWorld
|
||||||
return Ptr();
|
return Ptr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float CellStore::getWaterLevel() const
|
||||||
|
{
|
||||||
|
return mWaterLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CellStore::setWaterLevel (float level)
|
||||||
|
{
|
||||||
|
mWaterLevel = level;
|
||||||
|
}
|
||||||
|
|
||||||
void CellStore::load (const MWWorld::ESMStore &store, std::vector<ESM::ESMReader> &esm)
|
void CellStore::load (const MWWorld::ESMStore &store, std::vector<ESM::ESMReader> &esm)
|
||||||
{
|
{
|
||||||
if (mState!=State_Loaded)
|
if (mState!=State_Loaded)
|
||||||
|
|
|
@ -65,6 +65,7 @@ namespace MWWorld
|
||||||
const ESM::Cell *mCell;
|
const ESM::Cell *mCell;
|
||||||
State mState;
|
State mState;
|
||||||
std::vector<std::string> mIds;
|
std::vector<std::string> mIds;
|
||||||
|
float mWaterLevel;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
@ -82,7 +83,9 @@ namespace MWWorld
|
||||||
///< Will return an empty Ptr if cell is not loaded. Does not check references in
|
///< Will return an empty Ptr if cell is not loaded. Does not check references in
|
||||||
/// containers.
|
/// containers.
|
||||||
|
|
||||||
float mWaterLevel;
|
float getWaterLevel() const;
|
||||||
|
|
||||||
|
void setWaterLevel (float level);
|
||||||
|
|
||||||
// Lists for each individual object type
|
// Lists for each individual object type
|
||||||
CellRefList<ESM::Activator> mActivators;
|
CellRefList<ESM::Activator> mActivators;
|
||||||
|
|
|
@ -1760,7 +1760,7 @@ namespace MWWorld
|
||||||
if (!(cell->getCell()->mData.mFlags & ESM::Cell::HasWater)) {
|
if (!(cell->getCell()->mData.mFlags & ESM::Cell::HasWater)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return pos.z < cell->mWaterLevel;
|
return pos.z < cell->getWaterLevel();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool World::isOnGround(const MWWorld::Ptr &ptr) const
|
bool World::isOnGround(const MWWorld::Ptr &ptr) const
|
||||||
|
|
Loading…
Reference in a new issue