void Velocity(const glm::vec3 &) noexcept;
const Block::Pos &Position() const noexcept { return position; }
+ void Position(const Chunk::Pos &, const Block::Pos &) noexcept;
void Position(const Block::Pos &) noexcept;
void Move(const glm::vec3 &delta) noexcept;
const Chunk::Pos ChunkCoords() const noexcept { return chunk; }
+ glm::vec3 AbsolutePosition() const noexcept {
+ return glm::vec3(chunk * Chunk::Extent()) + position;
+ }
+ glm::vec3 AbsoluteDifference(const Entity &other) const noexcept {
+ return glm::vec3((chunk - other.chunk) * Chunk::Extent()) + position - other.position;
+ }
+
const glm::quat &AngularVelocity() const noexcept { return angular_velocity; }
void AngularVelocity(const glm::quat &) noexcept;
glm::mat4 Transform(const Chunk::Pos &chunk_offset) const noexcept;
Ray Aim(const Chunk::Pos &chunk_offset) const noexcept;
+ void Remove() noexcept { remove = true; }
+ bool CanRemove() const noexcept { return remove; }
+
void Update(int dt) noexcept;
void Draw() noexcept;
glm::mat4 rotation;
bool world_collision;
+ bool remove;
};