18#ifndef _GAMEOBJECT_MODEL_H
19#define _GAMEOBJECT_MODEL_H
23#include <G3D/Matrix3.h>
26#include <G3D/Vector3.h>
59 GameObjectModel() : iCollisionEnabled(false), iLosBlockingDisabled(false), iIncludeInNavMesh(false), iInvScale(0), iScale(0), iModel(nullptr) { }
61 const G3D::AABox&
getBounds()
const {
return iBound; }
67 G3D::Quat
GetRotation()
const {
return owner->GetRotation(); }
68 G3D::Matrix3
const&
GetInvRot()
const {
return iInvRot; }
79 bool IsMapObject()
const;
84 bool GetLiquidLevel(G3D::Vector3
const& point,
VMAP::LocationInfo& info,
float& liqHeight)
const;
86 static std::unique_ptr<GameObjectModel> Create(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string
const& dataPath);
88 bool UpdatePosition();
90 std::shared_ptr<VMAP::WorldModel const>
GetWorldModel()
const {
return iModel; }
93 bool initialize(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string
const& dataPath);
103 std::shared_ptr<VMAP::WorldModel>
iModel;
104 std::unique_ptr<GameObjectModelOwnerBase>
owner;
TC_COMMON_API bool LoadGameObjectModelList(std::string const &dataPath)
virtual G3D::Quat GetRotation() const =0
virtual bool IsInPhase(PhaseShift const &) const =0
virtual ~GameObjectModelOwnerBase()=default
virtual G3D::Vector3 GetPosition() const =0
virtual float GetScale() const =0
virtual void DebugVisualizeCorner(G3D::Vector3 const &) const =0
virtual uint8 GetNameSetId() const =0
virtual bool IsSpawned() const =0
virtual uint32 GetDisplayId() const =0
virtual int64 GetPackedRotation() const =0
uint8 GetNameSetId() const
void IncludeInNavMesh(bool enable)
int64 GetPackedRotation() const
bool iCollisionEnabled
Is model ignored in all checks.
void DisableLosBlocking(bool enable)
bool iIncludeInNavMesh
Is model included when generating navigation mesh.
std::shared_ptr< VMAP::WorldModel > iModel
uint32 GetDisplayId() const
const G3D::AABox & getBounds() const
bool IsCollisionEnabled() const
G3D::Vector3 const & GetPosition() const
std::shared_ptr< VMAP::WorldModel const > GetWorldModel() const
G3D::Quat GetRotation() const
bool IsIncludedInNavMesh() const
void EnableCollision(bool enable)
G3D::Matrix3 const & GetInvRot() const
bool IsLosBlockingDisabled() const
bool iLosBlockingDisabled
Is model ignored during line of sight checks (but is always included in location/height checks)
std::unique_ptr< GameObjectModelOwnerBase > owner