#pragma once
#include "baseinterface.h"
#include "structures.h"
#include <string>
namespace M3D
{

/**
 * Предоставляет доступ к объектам.
 * @author Denis A. Biryukov
 */
class ModelInterface : public BaseInterface
{
	public:
		~ModelInterface(){};

                /**
                 * Производит загрузку объекта из .m3d файла
                 * @param fname имя файла для загрузки
                 */
                void load(const std::string &fname);
		/**
	  	 * Получение текущих координат объекта
		 * @return текущие координаты объекта
		 */
		const Coords& get_location() const;
		/**
		 * Получение текущей ориентации объекта в пространстве 
		 * @return ориентация объекта в пространстве
		 */
		const Rotation& get_rotation() const;
		/**
		 * Получение текущего масшаба объекта
		 * @return текущий масштаб объекта
		 */
		const Scale& get_scale() const;

		/**
		 * Смена текущего положения объекта 
		 * @param location новое положение объекта
		 */
		void set_location( const Coords &location );
		/**
		 * Смена текущей ориентации объекта в пространстве
		 * @param rotation новая ориентация объекта в пространстве
		 */
		void set_rotation( const Rotation &rotation );
		/**
		 * Смена масштаба объекта
		 * @param scale масштаб объекта
		 */
		void set_scale( const Scale &scale );
		/**
		 * Создание точной копии объекта
		 * @return интерфейс нового объекта
		 */
		ModelInterface clone();

		ModelInterface( int obj_id, EngineInterface *intf ) : BaseInterface( obj_id, intf ) {};
		ModelInterface( ) : BaseInterface( -1, 0) {};
};


}
