Lephisto/src/model_body.h

46 lines
1.1 KiB
C++

#pragma once
#include <vector>
#include "body.h"
#include "vector3.h"
#include "matrix4x4.h"
#include "sbre/sbre.h"
class ObjMesh;
class ModelBody: public Body {
public:
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);
virtual double GetRadius(void) const;
void TransformToModelCoords(const Frame* camFrame);
void GetRotMatrix(matrix4x4d& m);
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 TriMeshUpdateLastPos(void);
void SetModel(int sbreModel);
void RenderSbreModel(const Frame* camFrame, int model, ObjParams* params);
class Geom : public Object {
public:
virtual Type GetType(void) { return Object::GEOM; }
Body* parent;
int flags;
};
protected:
std::vector<Geom> geomColl;
private:
std::vector<dGeomID> geoms;
dReal triMeshTrans[32];
int triMeshLastMatrixIndex;
};