diff options
Diffstat (limited to 'src/libjin/math/transform.cpp')
-rw-r--r-- | src/libjin/math/transform.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/src/libjin/math/transform.cpp b/src/libjin/math/transform.cpp new file mode 100644 index 0000000..84c8327 --- /dev/null +++ b/src/libjin/math/transform.cpp @@ -0,0 +1,104 @@ +#include "transform.h" + +namespace JinEngine +{ + namespace Math + { + + Transform::Transform() + : mScale(1, 1) + , mPosition(0, 0) + , mOrigin(0, 0) + , mRotation(0) + { + } + + Transform::Transform(float x, float y, float sx, float sy, float r, float ox, float oy) + { + set(x, y, sx, sy, r, ox, oy); + } + + 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 |