summary refs log tree commit diff
path: root/src/Camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Camera.cpp')
-rw-r--r--src/Camera.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/Camera.cpp b/src/Camera.cpp
index 5bb9aa2..59d677c 100644
--- a/src/Camera.cpp
+++ b/src/Camera.cpp
@@ -14,6 +14,13 @@ void Camera::move(Vector<3> vector) {
     m_position = m_position + vector;
 }
 
+void Camera::move_relative(Vector<3> by) {
+    auto rotation = Matrix<4, 4>::rotation(m_angles);
+
+    auto result = rotation.transpose() * Vector<4>{by.x(), by.y(), by.z(), 1.0f};
+    move(result.elements);
+}
+
 Rotation Camera::angles() {
     return m_angles;
 }