#pragma once #include #include "body.h" #include "vector3.h" #include "matrix4x4.h" #include "sbre/sbre.h" class ObjMesh; class CollMeshSet; class Geom; class ModelBody: public Body { public: OBJDEF(ModelBody, Body, MODELBODY); ModelBody(void); virtual ~ModelBody(void); void SetPosition(vector3d p); virtual void SetRotMatrix(const matrix4x4d& r); /* Not valid to SetVelocity on these. If you want them to move, use a DynamicBody. */ vector3d GetPosition(void) const; virtual double GetRadius(void) const; void TransformToModelCoords(const Frame* camFrame); void GetRotMatrix(matrix4x4d& m) const; virtual void SetFrame(Frame* f); void GeomsSetBody(dBodyID body); /* To remove from simulation for a period. */ virtual void Disable(void); virtual void Enable(void); void GetAabb(Aabb& aabb); void TriMeshUpdateLastPos(matrix4x4d currentTransform); void SetModel(int sbreModel); void RenderSbreModel(const Frame* camFrame, int model, ObjParams* params); class GeomBit : public Object { public: OBJDEF(GeomBit, Object, GEOM); Body* parent; int flags; }; protected: virtual void Save(void); virtual void Load(void); private: CollMeshSet* m_collMeshSet; Geom* m_geom; };