diff options
Diffstat (limited to 'src/libjin/Math/je_transform.cpp')
-rw-r--r-- | src/libjin/Math/je_transform.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/libjin/Math/je_transform.cpp b/src/libjin/Math/je_transform.cpp new file mode 100644 index 0000000..c0676cb --- /dev/null +++ b/src/libjin/Math/je_transform.cpp @@ -0,0 +1,99 @@ +#include "je_transform.h" + +namespace JinEngine +{ + namespace Math + { + + Transform::Transform() + : mScale(1, 1) + , mPosition(0, 0) + , mOrigin(0, 0) + , mRotation(0) + { + } + + void Transform::set(float x, float y, float sx, float sy, float r, float ox, float oy) + { + setPosition(x, y); + setScale(sx, sy); + setRotation(r); + setOrigin(ox, oy); + } + + void Transform::setScale(float sx, float sy) + { + mScale.set(sx, sy); + } + + Vector2<float> Transform::getScale() const + { + return mScale; + } + + void Transform::scale(float sx, float sy) + { + mScale.x *= sx; + mScale.y *= sy; + } + + void Transform::setPosition(const Vector2<float>& p) + { + setPosition(p.x, p.y); + } + + void Transform::setPosition(float x, float y) + { + mPosition.set(x, y); + } + + Vector2<float> Transform::getPosition() const + { + return mPosition; + } + + void Transform::move(float x, float y) + { + mPosition.x += x; + mPosition.y += y; + } + + void Transform::move(const Vector2<float>& v) + { + move(v.x, v.y); + } + + void Transform::setOrigin(float x, float y) + { + mOrigin.set(x, y); + } + + Vector2<float> Transform::getOrigin() const + { + return mOrigin; + } + + void Transform::setRotation(float r) + { + mRotation = r; + } + + float Transform::getRotation() const + { + return mRotation; + } + + void Transform::rotate(float r) + { + mRotation += r; + } + + Matrix Transform::getMatrix() const + { + Matrix m; + m.setTransformation(mPosition.x, mPosition.y, mRotation, mScale.x, mScale.y, mOrigin.x, mOrigin.y); + return m; + } + + } +}
\ No newline at end of file |