From 5a1b126f1f6d55226c2b5068d0c17c428fd29ba8 Mon Sep 17 00:00:00 2001 From: Mel Date: Sun, 6 Aug 2023 04:27:07 +0200 Subject: Create separate Player entity and add bad collision system --- src/Transform.hpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/Transform.hpp (limited to 'src/Transform.hpp') diff --git a/src/Transform.hpp b/src/Transform.hpp new file mode 100644 index 0000000..ea7f9b3 --- /dev/null +++ b/src/Transform.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "Math/Rotation.hpp" +#include "World/Position.hpp" + +namespace MC { + +class Transform { +public: + Transform() : m_scale(1) {} + explicit Transform(Position::World position) : m_position(position), m_scale(1) {} + Transform(Position::World position, Rotation rotation, Vector<3> scale) + : m_position(position), + m_rotation(rotation), + m_scale(scale) {} + + Vector<3> forward() const; + Vector<3> right() const; + Vector<3> up() const; + + Position::World& position() { return m_position; } + const Position::World& position() const { return m_position; } + + Rotation& rotation() { return m_rotation; } + const Rotation& rotation() const { return m_rotation; } + + Vector<3>& scale() { return m_scale; } + const Vector<3>& scale() const { return m_scale; } +private: + Vector<3> unit_vector(Vector<3> axis) const; + + // TODO: Use a non-MC::World position class. + // I don't want coupling between the game implementation + // and what is essentially engine code. + Position::World m_position; + Rotation m_rotation; + Vector<3> m_scale; +}; + +} -- cgit 1.4.1