#ifndef __IPhysicsEntity_h
#define __IPhysicsEntity_h


#include "PhysicsGlobal.h"
#include "IPhysicsBaseEntity.h"

/// Entity interface.
//! This is the interface for controlling all basic physics entities, from cubes to terrains.
class IPhysicsEntity : public IPhysicsBaseEntity
{
public:
	virtual void serialize(stringc file) = 0;

	virtual void setMaterial(int material) = 0;
	/// Set the position.
	virtual void setPosition(vector3df position) = 0; 
	/// Set the rotation.
	virtual void setRotation(vector3df rotation) = 0; 
	/// Set the scale.
	virtual void setScale(vector3df scale) = 0;
	/// Get position.
	virtual vector3df getPosition() = 0; 
	/// Get rotation.
	virtual vector3df getRotation() = 0; 
	/// Get scale.
	virtual vector3df getScale() = 0;
	/// Get a pointer to the Newton body. You should only need this if you need to make calls directly to Newton.
	virtual NewtonBody* getBody() = 0; 

	virtual void createConvexHullModifier() = 0;
	virtual matrix4 getMatrix() = 0;
	virtual void setMatrix(matrix4 matrix) = 0;

	virtual void setUserID(int id) = 0;
	virtual int getUserID() = 0;
	virtual f32 calculateVolume() = 0;
	virtual vector3df calculateInertia() = 0;
	virtual vector3df calculateCentreOfMass() = 0;
};



#endif