1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-04 03:40:14 +00:00
OpenMW/apps/openmw/mwclass/static.hpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

98 lines
3.9 KiB
C++
Raw Normal View History

2010-08-03 15:24:44 +02:00
#ifndef GAME_MWCLASS_STATIC_H
#define GAME_MWCLASS_STATIC_H
2023-04-09 14:16:58 +02:00
#include "../mwworld/cellstore.hpp"
2022-04-04 02:44:53 +02:00
#include "../mwworld/registeredclass.hpp"
2010-08-03 15:24:44 +02:00
2023-04-09 14:16:58 +02:00
#include "classmodel.hpp"
2010-08-03 15:24:44 +02:00
namespace MWClass
{
2022-04-04 02:44:53 +02:00
class Static : public MWWorld::RegisteredClass<Static>
2010-08-03 15:24:44 +02:00
{
2022-04-04 02:44:53 +02:00
friend MWWorld::RegisteredClass<Static>;
Static();
MWWorld::Ptr copyToCellImpl(const MWWorld::ConstPtr& ptr, MWWorld::CellStore& cell) const override;
public:
void insertObjectRendering(const MWWorld::Ptr& ptr, const std::string& model,
MWRender::RenderingInterface& renderingInterface) const override;
///< Add reference into a cell for rendering
void insertObject(const MWWorld::Ptr& ptr, const std::string& model, const osg::Quat& rotation,
MWPhysics::PhysicsSystem& physics) const override;
void insertObjectPhysics(const MWWorld::Ptr& ptr, const std::string& model, const osg::Quat& rotation,
MWPhysics::PhysicsSystem& physics) const override;
std::string_view getName(const MWWorld::ConstPtr& ptr) const override;
///< \return name or ID; can return an empty string.
bool hasToolTip(const MWWorld::ConstPtr& ptr) const override;
///< @return true if this object has a tooltip when focused (default implementation: true)
std::string getModel(const MWWorld::ConstPtr& ptr) const override;
};
2023-04-09 14:16:58 +02:00
namespace ESM4StaticImpl
{
void insertObjectRendering(
const MWWorld::Ptr& ptr, const std::string& model, MWRender::RenderingInterface& renderingInterface);
void insertObjectPhysics(const MWWorld::Ptr& ptr, const std::string& model, const osg::Quat& rotation,
MWPhysics::PhysicsSystem& physics);
}
// Templated because it is used as a dummy MWClass implementation for several ESM4 recors
template <typename Record>
class ESM4Static : public MWWorld::RegisteredClass<ESM4Static<Record>>
{
friend MWWorld::RegisteredClass<ESM4Static>;
2023-04-09 14:16:58 +02:00
ESM4Static()
: MWWorld::RegisteredClass<ESM4Static>(Record::sRecordId)
{
}
2023-04-09 14:16:58 +02:00
MWWorld::Ptr copyToCellImpl(const MWWorld::ConstPtr& ptr, MWWorld::CellStore& cell) const override
{
const MWWorld::LiveCellRef<Record>* ref = ptr.get<Record>();
return MWWorld::Ptr(cell.insert(ref), &cell);
}
2010-08-03 15:24:44 +02:00
public:
void insertObjectRendering(const MWWorld::Ptr& ptr, const std::string& model,
2023-04-09 14:16:58 +02:00
MWRender::RenderingInterface& renderingInterface) const override
{
2023-04-09 19:08:21 +02:00
const MWWorld::LiveCellRef<Record>* ref = ptr.get<Record>();
if (ref->mBase->mFlags & ESM4::Rec_Marker)
return;
2023-04-09 14:16:58 +02:00
ESM4StaticImpl::insertObjectRendering(ptr, model, renderingInterface);
}
2010-08-03 15:24:44 +02:00
void insertObject(const MWWorld::Ptr& ptr, const std::string& model, const osg::Quat& rotation,
2023-04-09 14:16:58 +02:00
MWPhysics::PhysicsSystem& physics) const override
{
insertObjectPhysics(ptr, model, rotation, physics);
}
void insertObjectPhysics(const MWWorld::Ptr& ptr, const std::string& model, const osg::Quat& rotation,
2023-04-09 14:16:58 +02:00
MWPhysics::PhysicsSystem& physics) const override
{
2023-04-09 19:08:21 +02:00
const MWWorld::LiveCellRef<Record>* ref = ptr.get<Record>();
if (ref->mBase->mFlags & ESM4::Rec_Marker)
return;
2023-04-09 14:16:58 +02:00
ESM4StaticImpl::insertObjectPhysics(ptr, model, rotation, physics);
}
2023-04-09 14:16:58 +02:00
std::string_view getName(const MWWorld::ConstPtr& ptr) const override { return ""; }
///< \return name or ID; can return an empty string.
2011-11-11 23:01:12 -05:00
2023-04-09 14:16:58 +02:00
bool hasToolTip(const MWWorld::ConstPtr& ptr) const override { return false; }
///< @return true if this object has a tooltip when focused (default implementation: true)
2010-08-03 15:24:44 +02:00
2023-04-09 14:16:58 +02:00
std::string getModel(const MWWorld::ConstPtr& ptr) const override { return getClassModel<Record>(ptr); }
2010-08-03 15:24:44 +02:00
};
}
#endif