Ray Entity::Aim(const ExactLocation::Coarse &chunk_offset) const noexcept {
glm::mat4 transform = ViewTransform(chunk_offset);
- Ray ray{ glm::vec3(transform[3]), -glm::vec3(transform[2]) };
+ Ray ray{ glm::vec3(transform[3]), -glm::vec3(transform[2]), { } };
ray.Update();
return ray;
}
}
}
-void Entity::OrientHead(float dt) noexcept {
+void Entity::OrientHead(float) noexcept {
// maximum yaw of head (60°)
constexpr float max_head_yaw = PI / 3.0f;
// use local Y as up
return true;
}
-void Player::Update(int dt) {
+void Player::Update(int) {
chunks.Rebase(entity.ChunkCoords());
}
return TargetVelocity(state, glm::normalize(entity.Heading() * wander_dist + wander_pos) * speed);
}
-glm::vec3 Steering::ObstacleAvoidance(const EntityState &state) const noexcept {
+glm::vec3 Steering::ObstacleAvoidance(const EntityState &) const noexcept {
return obstacle_dir;
}
}
+Player *World::FindPlayer(const std::string &name) {
+ for (Player &p : players) {
+ if (p.Name() == name) {
+ return &p;
+ }
+ }
+ return nullptr;
+}
+
+Entity *World::FindEntity(const std::string &name) {
+ // TODO: this may get inefficient
+ for (Entity &e : entities) {
+ if (e.Name() == name) {
+ return &e;
+ }
+ }
+ return nullptr;
+}
+
+
namespace {
struct Candidate {
PrimitiveMesh debug_mesh;
PlainColor &prog = viewport.WorldColorProgram();
for (const Entity &entity : entities) {
- debug_buf.OutlineBox(entity.Bounds(), TVEC4<unsigned char, glm::precision(0)>(255, 0, 0, 255));
+ debug_buf.OutlineBox(entity.Bounds(), PrimitiveMesh::Color(255, 0, 0, 255));
debug_mesh.Update(debug_buf);
prog.SetM(entity.Transform(players.front().GetEntity().ChunkCoords()));
debug_mesh.DrawLines();