46 lines
1.1 KiB
C++
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;
|
|
};
|
|
|