mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-06 00:55:50 +00:00
c795e0bce6
Since actors can be active in 3x3 grid around the player, we need to first load all objects in a 5x5 grid around the player. Split load and unloading in 2 phases. Add an mInactiveCells set into the scene, which contains all cells inside the aforementioned 5x5 grid. These cells contains only heightfields and non-animated physics objects. Animated objects are tied to the scene graph, which doesn't exists yet in these cells, so we skip them.
54 lines
1.4 KiB
C++
54 lines
1.4 KiB
C++
#include "bodypart.hpp"
|
|
|
|
#include "../mwrender/renderinginterface.hpp"
|
|
#include "../mwrender/objects.hpp"
|
|
|
|
#include "../mwworld/cellstore.hpp"
|
|
|
|
namespace MWClass
|
|
{
|
|
|
|
MWWorld::Ptr BodyPart::copyToCellImpl(const MWWorld::ConstPtr &ptr, MWWorld::CellStore &cell) const
|
|
{
|
|
const MWWorld::LiveCellRef<ESM::BodyPart> *ref = ptr.get<ESM::BodyPart>();
|
|
|
|
return MWWorld::Ptr(cell.insert(ref), &cell);
|
|
}
|
|
|
|
void BodyPart::insertObjectRendering(const MWWorld::Ptr &ptr, const std::string &model, MWRender::RenderingInterface &renderingInterface) const
|
|
{
|
|
if (!model.empty()) {
|
|
renderingInterface.getObjects().insertModel(ptr, model);
|
|
}
|
|
}
|
|
|
|
std::string BodyPart::getName(const MWWorld::ConstPtr &ptr) const
|
|
{
|
|
return std::string();
|
|
}
|
|
|
|
bool BodyPart::hasToolTip(const MWWorld::ConstPtr& ptr) const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void BodyPart::registerSelf()
|
|
{
|
|
std::shared_ptr<MWWorld::Class> instance (new BodyPart);
|
|
|
|
registerClass (typeid (ESM::BodyPart).name(), instance);
|
|
}
|
|
|
|
std::string BodyPart::getModel(const MWWorld::ConstPtr &ptr) const
|
|
{
|
|
const MWWorld::LiveCellRef<ESM::BodyPart> *ref = ptr.get<ESM::BodyPart>();
|
|
|
|
const std::string &model = ref->mBase->mModel;
|
|
if (!model.empty()) {
|
|
return "meshes\\" + model;
|
|
}
|
|
return "";
|
|
}
|
|
|
|
}
|