+ const glm::vec3 &Position() const noexcept { return state.block_pos; }
+ void Position(const glm::ivec3 &, const glm::vec3 &) noexcept;
+ void Position(const glm::vec3 &) noexcept;
+
+ const glm::ivec3 ChunkCoords() const noexcept { return state.chunk_pos; }
+
+ glm::vec3 AbsolutePosition() const noexcept {
+ return state.AbsolutePosition();
+ }
+ glm::vec3 AbsoluteDifference(const Entity &other) const noexcept {
+ return state.Diff(other.state);
+ }
+
+ /// direction is rotation axis, magnitude is speed in rad/ms
+ const glm::vec3 &AngularVelocity() const noexcept { return state.ang_vel; }
+ void AngularVelocity(const glm::vec3 &v) noexcept { state.ang_vel = v; }
+
+ const glm::quat &Orientation() const noexcept { return state.orient; }
+ void Orientation(const glm::quat &o) noexcept { state.orient = o; }
+
+ glm::mat4 Transform(const glm::ivec3 &reference) const noexcept {
+ return state.Transform(reference);
+ }