#pragma once
#include "PosModel.h"

using namespace std;

class PosSceneEntity
{
public:
	PosSceneEntity(void);

	/*
	 * Sets the name of this Model (globally unique!)
	 * @param name: the name
	 */
	virtual void setName(string name) = 0;
	
	/*
	 * Gets the name of this Model
	 * @return the name
	 */
	virtual string getName(void) = 0;

	/*
	 * Sets the Transformation Matrix for this Scene Entity
	 * @param transformation:	float[16] (Column Major)
	 *							0	4	8	12
	 *							1	5	9	13
	 *							2	6	10	14
	 *							3	7	11	15
	 */
	virtual void setTransformation(float* transformation) = 0;

	/*
	 * Adds a Model and it's Transformation to this Scene Entity
	 * @param model:			The Model to add
	 * @param transformation:	The Transformation of this Model, relative
	 *							to this Scene Entity. given as a 
	 *							float[16] in Column Major format
	 *							0	4	8	12
	 *							1	5	9	13
	 *							2	6	10	14
	 *							3	7	11	15
	 */
	virtual void addModel(PosModel* model, float* transformation) = 0;

	virtual ~PosSceneEntity(void);
};
