64 lines
1.1 KiB
C++
64 lines
1.1 KiB
C++
|
#include "transformation.h"
|
||
|
|
||
|
Transformation::Transformation()
|
||
|
{
|
||
|
m_stack.push(Matrix4f::IDENTITY);
|
||
|
}
|
||
|
|
||
|
void Transformation::SetIdentity()
|
||
|
{
|
||
|
m_stack.top().SetIdentity();
|
||
|
}
|
||
|
|
||
|
void Transformation::Push()
|
||
|
{
|
||
|
m_stack.push(m_stack.top());
|
||
|
}
|
||
|
|
||
|
void Transformation::Pop()
|
||
|
{
|
||
|
m_stack.pop();
|
||
|
}
|
||
|
|
||
|
void Transformation::ApplyTranslation(float x, float y, float z)
|
||
|
{
|
||
|
m_stack.top().ApplyTranslation(x, y, z);
|
||
|
}
|
||
|
|
||
|
void Transformation::ApplyTranslation(const Vector3f& v)
|
||
|
{
|
||
|
ApplyTranslation(v.x, v.y, v.z);
|
||
|
}
|
||
|
|
||
|
|
||
|
void Transformation::ApplyRotation(float angle, float x, float y, float z)
|
||
|
{
|
||
|
m_stack.top().ApplyRotation(angle, x, y, z);
|
||
|
}
|
||
|
|
||
|
void Transformation::ApplyRotation(float angle, const Vector3f& v)
|
||
|
{
|
||
|
ApplyRotation(angle, v.x, v.y, v.z);
|
||
|
}
|
||
|
|
||
|
void Transformation::ApplyScale(float x, float y, float z)
|
||
|
{
|
||
|
m_stack.top().ApplyScale(x, y, z);
|
||
|
}
|
||
|
|
||
|
void Transformation::ApplyScale(const Vector3f& v)
|
||
|
{
|
||
|
ApplyScale(v.x, v.y, v.z);
|
||
|
}
|
||
|
|
||
|
void Transformation::Use() const
|
||
|
{
|
||
|
glLoadMatrixf(m_stack.top().GetInternalValues());
|
||
|
}
|
||
|
|
||
|
const Matrix4f& Transformation::GetMatrix() const
|
||
|
{
|
||
|
return m_stack.top();
|
||
|
}
|
||
|
|