#include "NetworkedInput.hpp"
#include "../app/init.hpp"
+#include "../geometry/distance.hpp"
#include "../io/WorldSave.hpp"
#include "../net/Packet.hpp"
#include "../world/Chunk.hpp"
void ChunkReceiver::LoadOne() {
if (!store.HasMissing()) return;
- Chunk::Pos pos = store.NextMissing();
+ ExactLocation::Coarse pos = store.NextMissing();
Chunk *chunk = store.Allocate(pos);
if (!chunk) {
// chunk store corrupted?
replay.SetState(corrected_state);
if (entry != end) {
- entry->state.chunk_pos = replay.GetState().chunk_pos;
- entry->state.block_pos = replay.GetState().block_pos;
+ entry->state.pos = replay.GetState().pos;
++entry;
}
while (entry != end) {
SetMovement(entry->movement);
GetWorld().Update(replay, entry->delta_t);
- entry->state.chunk_pos = replay.GetState().chunk_pos;
- entry->state.block_pos = replay.GetState().block_pos;
+ entry->state.pos = replay.GetState().pos;
++entry;
}
constexpr float max_disp = 0.0001f; // (1/100)^2
if (disp_squared > warp_thresh) {
- player_state.chunk_pos = replay.GetState().chunk_pos;
- player_state.block_pos = replay.GetState().block_pos;
+ player_state.pos = replay.GetState().pos;
} else if (disp_squared < max_disp) {
- player_state.block_pos += displacement;
+ player_state.pos.block += displacement;
} else {
displacement *= 0.01f / sqrt(disp_squared);
- player_state.block_pos += displacement;
+ player_state.pos.block += displacement;
}
GetPlayer().GetEntity().SetState(player_state);
SetMovement(restore_movement);