#include "ChunkReceiver.hpp"
#include "ChunkRequester.hpp"
#include "../app/IntervalTimer.hpp"
#include "ChunkReceiver.hpp"
#include "ChunkRequester.hpp"
#include "../app/IntervalTimer.hpp"
#include "../graphics/SkyBox.hpp"
#include "../io/WorldSave.hpp"
#include "../model/Skeletons.hpp"
#include "../graphics/SkyBox.hpp"
#include "../io/WorldSave.hpp"
#include "../model/Skeletons.hpp"
#include "../ui/Interface.hpp"
#include "../world/BlockTypeRegistry.hpp"
#include "../world/ChunkRenderer.hpp"
#include "../world/EntityState.hpp"
#include "../ui/Interface.hpp"
#include "../world/BlockTypeRegistry.hpp"
#include "../world/ChunkRenderer.hpp"
#include "../world/EntityState.hpp"
public:
explicit InteractiveState(MasterState &, std::uint32_t player_id);
World &GetWorld() noexcept { return world; }
public:
explicit InteractiveState(MasterState &, std::uint32_t player_id);
World &GetWorld() noexcept { return world; }
ChunkReceiver &GetChunkReceiver() noexcept { return chunk_receiver; }
Skeletons &GetSkeletons() noexcept { return skeletons; }
ChunkReceiver &GetChunkReceiver() noexcept { return chunk_receiver; }
Skeletons &GetSkeletons() noexcept { return skeletons; }
void PushPlayerUpdate(const Entity &, int dt);
void MergePlayerCorrection(std::uint16_t, const EntityState &);
void PushPlayerUpdate(const Entity &, int dt);
void MergePlayerCorrection(std::uint16_t, const EntityState &);