/********************************************************************
 * File: SceneElement.cpp
 * Author: Keith Schwarz (htiek@cs.stanford.edu)
 *
 * Implementation of the SceneElement class.
 */
#include "SceneElement.h"
using namespace std;

/* Ctor just sets everything to the proper values. */
Copper3D::SceneElement::SceneElement(const string& name,
			                         const string& modelName,
					                 const Vector<3>& position,
					                 const Orientation& orientation)
 : mName(name), mModelName(modelName), mPosition(position), mOrientation(orientation) {
}

/* Dtor just relies on the default. */
Copper3D::SceneElement::~SceneElement() {
}

/* Accessors/setters are reasonably straightforward. */
Vector<3> Copper3D::SceneElement::position() const {
	return mPosition;
}
void Copper3D::SceneElement::setPosition(const Vector<3>& position) {
	mPosition = position;
}

string Copper3D::SceneElement::name() const {
	return mName;
}
string Copper3D::SceneElement::modelName() const {
	return mModelName;
}
Copper3D::Orientation Copper3D::SceneElement::orientation() const {
	return mOrientation;
}
void Copper3D::SceneElement::setOrientation(const Orientation& orientation) {
	mOrientation = orientation;
}

/* Factory */
Copper3D::SceneElement* Copper3D::SceneElement::New(const string& name, 
							                        const string& modelName,
													const Vector<3>& position,
													const Orientation& orientation) {
	return new SceneElement(name, modelName, position, orientation);
}
