#ifndef INCLUDED_PHYSICS_MODEL
#define INCLUDED_PHYSICS_MODEL

#include <Math/Vector.h>

#include <memory>
#include <vector>

class btCollisionShape;

//////////////////////////////////////////////////////////////
namespace Dubious {
namespace Utility {
class AC3DFile;
class AC3DModel;
}
namespace Physics {

class Model;
typedef std::shared_ptr<Model> ModelPtr;
typedef std::vector<ModelPtr> ModelPtrVector;

/// @brief A Model for use in the Physics engine
///
/// The Physics Model represents the shape in the physics engine.
///	It's a very thin wrapper around the Bullet Physics btCompoundShape
class Model
{
public:
	Model( const Utility::AC3DFile& File );
	Model( const Math::CubeVector& Size );
	~Model();

private:
	Model();
	Model( const Model& Model );
	Model& operator=( const Model& Model );

	friend class		PhysicalObject;

	btCollisionShape*	m_pShape;
};

}
}

#endif
