5#include <glm/gtx/quaternion.hpp>
18 Moveable(
Position position = { 0.0f, 0.0f, 0.0f }, glm::vec3 rotationEuler = { 0.0f, 0.0f, 0.0f }) : position{ position },
mutex{} {
23 std::scoped_lock lock{
mutex };
29 std::scoped_lock lock{
mutex };
34 std::scoped_lock lock{
mutex };
35 this->position = position;
44 std::scoped_lock lock{
mutex };
49 std::scoped_lock lock{
mutex };
51 auto yaw = glm::yaw(rotation);
52 auto pitch = glm::pitch(rotation);
53 auto roll = glm::roll(rotation);
55 return { yaw, pitch, roll };
59 std::scoped_lock lock{
mutex };
60 this->rotation = rotation;
Definition: Foundations.h:230
A Movable object is an object which can be moved and rotated.
Definition: Moveable.h:16
std::mutex & getMutex()
Definition: Moveable.h:68
virtual const glm::quat & getRotation() const
Definition: Moveable.h:43
virtual Moveable & rotate(float angle, glm::vec3 axis)
Definition: Moveable.h:38
virtual const glm::vec3 & getRotationEuler() const
Definition: Moveable.h:48
virtual void setRotation(glm::quat rotation)
Definition: Moveable.h:58
virtual void setPosition(Position position)
Definition: Moveable.h:33
virtual const Position & getPosition() const
Definition: Moveable.h:28
std::mutex mutex
Definition: Moveable.h:74
virtual void setRotation(glm::vec3 eulerAngles)
Definition: Moveable.h:63
virtual Moveable & translate(DeltaSpace delta)
Definition: Moveable.h:22
Moveable(Position position={ 0.0f, 0.0f, 0.0f }, glm::vec3 rotationEuler={ 0.0f, 0.0f, 0.0f })
Definition: Moveable.h:18
Definition: Foundations.h:187
Definition: Cinematicable.h:9