bool HasShape() const noexcept { return shape; }
const Shape *GetShape() const noexcept { return shape; }
- void SetShape(const Shape *, const glm::vec3 &color);
+ void SetShape(const Shape *, const glm::vec3 &color, float texture);
void SetShapeless() noexcept;
const std::string &Name() const noexcept { return name; }
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;
+ /// direction is rotation axis, magnitude is speed in rad/ms
+ const glm::vec3 &AngularVelocity() const noexcept { return angular_velocity; }
+ void AngularVelocity(const glm::vec3 &) noexcept;
- const glm::mat4 &Rotation() const noexcept { return rotation; }
- void Rotation(const glm::mat4 &) noexcept;
+ const glm::quat &Rotation() const noexcept { return rotation; }
+ void Rotation(const glm::quat &) noexcept;
void Rotate(const glm::quat &delta) noexcept;
glm::mat4 Transform(const Chunk::Pos &chunk_offset) const noexcept;
void Update(int dt) noexcept;
- void Draw() noexcept;
+ void Draw() noexcept {
+ model.Draw();
+ }
private:
const Shape *shape;
Block::Pos position;
Chunk::Pos chunk;
- glm::quat angular_velocity;
- glm::mat4 rotation;
+ glm::vec3 angular_velocity;
+ glm::quat rotation;
bool world_collision;
bool remove;