1 #ifndef BLANK_WORLD_ENTITY_HPP_
2 #define BLANK_WORLD_ENTITY_HPP_
6 #include "../model/Model.hpp"
9 #include <glm/gtc/quaternion.hpp>
22 bool HasShape() const noexcept { return shape; }
23 const Shape *GetShape() const noexcept { return shape; }
24 void SetShape(const Shape *, const glm::vec3 &color);
25 void SetShapeless() noexcept;
27 const glm::vec3 &Velocity() const noexcept { return velocity; }
28 void Velocity(const glm::vec3 &) noexcept;
30 const Block::Pos &Position() const noexcept { return position; }
31 void Position(const Block::Pos &) noexcept;
32 void Move(const glm::vec3 &delta) noexcept;
34 const Chunk::Pos ChunkCoords() const noexcept { return chunk; }
36 const glm::quat &AngularVelocity() const noexcept { return angular_velocity; }
37 void AngularVelocity(const glm::quat &) noexcept;
39 const glm::mat4 &Rotation() const noexcept { return rotation; }
40 void Rotation(const glm::mat4 &) noexcept;
41 void Rotate(const glm::quat &delta) noexcept;
43 glm::mat4 Transform(const Chunk::Pos &chunk_offset) const noexcept;
44 Ray Aim(const Chunk::Pos &chunk_offset) const noexcept;
46 void Update(int dt) noexcept;
58 glm::quat angular_velocity;