#include "../app/Environment.hpp"
#include "../app/init.hpp"
+#include "../geometry/distance.hpp"
#include "../model/Model.hpp"
#include "../io/WorldSave.hpp"
#include "../world/ChunkIndex.hpp"
, manip(master.GetEnv().audio, sounds, player.GetEntity())
, input(world, player, master.GetClient())
, interface(master.GetConfig(), master.GetEnv().keymap, input, *this)
-, chunk_receiver(world.Chunks(), save)
+, chunk_receiver(master.GetClient(), world.Chunks(), save)
, chunk_renderer(player.GetChunks())
, loop_timer(16)
, stat_timer(1000)
chunk_renderer.FogDensity(master.GetWorldConf().fog_density);
loop_timer.Start();
stat_timer.Start();
- if (save.Exists(player)) {
- save.Read(player);
- }
}
void InteractiveState::OnResume() {
if (input.BlockFocus()) {
hud.FocusBlock(input.BlockFocus().GetChunk(), input.BlockFocus().block);
} else if (input.EntityFocus()) {
- hud.FocusEntity(*input.EntityFocus().entity);
+ hud.FocusEntity(input.EntityFocus().GetEntity());
} else {
hud.FocusNone();
}
if (master.GetConfig().video.world) {
chunk_renderer.Render(viewport);
world.Render(viewport);
+ if (master.GetConfig().video.debug) {
+ world.RenderDebug(viewport);
+ }
sky.Render(viewport);
}
hud.Render(viewport);
}
}
+void InteractiveState::NextCamera() {
+ if (iszero(master.GetEnv().viewport.CameraOffset())) {
+ master.GetEnv().viewport.OffsetCamera(glm::vec3(0.0f, 0.0f, -5.0f));
+ } else {
+ master.GetEnv().viewport.OffsetCamera(glm::vec3(0.0f, 0.0f, 0.0f));
+ }
+}
+
void InteractiveState::Exit() {
save.Write(player);
master.Quit();