]> git.localhorst.tv Git - blank.git/blobdiff - src/client/net.cpp
split geometry lib
[blank.git] / src / client / net.cpp
index 6677f5143d3647d9bd3bc7e24ad1a6ec4beca9b3..1c13f9e2912c7c79971a5042806079194bf0ab5e 100644 (file)
@@ -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<WorldCollision> 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;