///////////////////////////////////////////////////////////////////////////////
//  CTransform.cpp

#include "CTransform.h"

namespace math3d {

CTransform::CTransform() :
	m_Scale(1.0f, 1.0f, 1.0f)
{
}

CTransform::CTransform(const S3D& Scale, const SQuaternion& Rotate, const S3D& Pos) :
	m_Scale(Scale),
	m_Rotate(Rotate),
	m_Pos(Pos)
{
}

void CTransform::SetScale(const S3D& Scale)
{
	m_Scale = Scale;
}

const S3D& CTransform::GetScale() const
{
	return m_Scale;
}

void CTransform::SetRotate(const SQuaternion& Rotate)
{
	m_Rotate = Rotate;
}

const SQuaternion& CTransform::GetRotate() const
{
	return m_Rotate;
}

void CTransform::SetPos(const S3D& Pos)
{
	m_Pos = Pos;
}

const S3D& CTransform::GetPos() const
{
	return m_Pos;
}

SMatrix CTransform::GetMatrix() const
{
	return
		SMatrix::CreateScale(m_Scale) *
		m_Rotate.GetMatrix() *
		SMatrix::CreateMove(m_Pos);
}

}

