X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2Fnet.cpp;h=1c13f9e2912c7c79971a5042806079194bf0ab5e;hb=4fbf5a3c1b0e530706023f5fc4be2f68d30ea645;hp=6677f5143d3647d9bd3bc7e24ad1a6ec4beca9b3;hpb=150d065f431d665326fd8028748c48a74ad956bb;p=blank.git diff --git a/src/client/net.cpp b/src/client/net.cpp index 6677f51..1c13f9e 100644 --- a/src/client/net.cpp +++ b/src/client/net.cpp @@ -4,6 +4,7 @@ #include "NetworkedInput.hpp" #include "../app/init.hpp" +#include "../geometry/distance.hpp" #include "../io/WorldSave.hpp" #include "../net/Packet.hpp" #include "../world/Chunk.hpp" @@ -321,10 +322,16 @@ NetworkedInput::NetworkedInput(World &world, Player &player, Client &client) : PlayerController(world, player) , client(client) , player_hist() +, old_movement(0.0f) +, old_actions(0) , actions(0) { } +bool NetworkedInput::UpdateImportant() const noexcept { + return old_actions != actions || !iszero(old_movement - GetMovement()); +} + void NetworkedInput::Update(Entity &, float dt) { Invalidate(); UpdatePlayer(); @@ -351,6 +358,8 @@ void NetworkedInput::PushPlayerUpdate(int dt) { entry->packet = packet; player_hist.splice(player_hist.end(), player_hist, entry); } + old_movement = GetMovement(); + old_actions = actions; } void NetworkedInput::MergePlayerCorrection(uint16_t seq, const EntityState &corrected_state) { @@ -390,7 +399,6 @@ void NetworkedInput::MergePlayerCorrection(uint16_t seq, const EntityState &corr vector col; while (entry != end) { - replay.Velocity(entry->state.velocity); SetMovement(entry->movement); GetWorld().Update(replay, entry->delta_t); entry->state.chunk_pos = replay.GetState().chunk_pos;