aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/math/transform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/math/transform.cpp')
-rw-r--r--src/libjin/math/transform.cpp104
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