+ loaded.emplace_back();
+ loaded.back().Position(tgt_pos);
+ Generate(loaded.back());
+ return loaded.back();
+}
+
+
+void World::Update(int dt) {
+ player.Update(dt);
+
+ if (!to_generate.empty()) {
+ Generate(to_generate.front());
+ loaded.splice(loaded.end(), to_generate, to_generate.begin());
+ }
+}
+
+
+void World::Render(DirectionalLighting &program) {
+ program.SetLightDirection({ -1.0f, -3.0f, -2.0f });
+ program.SetView(glm::inverse(player.Transform()));
+
+ for (Chunk &chunk : LoadedChunks()) {
+ program.SetM(chunk.Transform());
+ chunk.Draw();
+ }