+ controller.Update(dt);
+ world.Update(dt);
+
+ Ray aim = controller.Aim();
+ Chunk *chunk;
+ int blkid;
+ float dist;
+ glm::vec3 normal;
+ if (world.Intersection(aim, glm::mat4(1.0f), &chunk, &blkid, &dist, &normal)) {
+ glm::vec3 pos = Chunk::ToCoords(blkid);
+ outline_visible = true;
+ outline.Clear();
+ chunk->Type(chunk->BlockAt(blkid)).FillOutlineModel(outline);
+ outline_transform = glm::translate(chunk->Transform(world.Player().ChunkCoords()), pos);
+ outline_transform = glm::scale(outline_transform, glm::vec3(1.0001f));
+ } else {
+ outline_visible = false;
+ }
+
+ if (pick) {
+ if (chunk) {
+ place_id = chunk->BlockAt(blkid).type;
+ hud.Display(*world.BlockTypes()[place_id]);
+ }
+ pick = false;