Lephisto/src/model_body.h
Rtch90 6b4b76f3b2 [Remove] Some bits of ODE collision detection from ModelBody.
[Add] Some Accessor/Mutator's for rotations/position in geoms and
Dynamic bodies.
2018-04-06 22:38:48 +01:00

50 lines
1.2 KiB
C++

#pragma once
#include <vector>
#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;
};