}
/// send the previously prepared packet
std::uint16_t Send();
- /// send the previously prepared packet of non-default length
+ /// send the previously prepared packet of given payload length
std::uint16_t Send(std::size_t len);
void AttachPlayer(Player &);
void On(const Packet::Login &) override;
void On(const Packet::Part &) override;
void On(const Packet::PlayerUpdate &) override;
+ void On(const Packet::ChunkBegin &) override;
+ void On(const Packet::Message &) override;
+ void CheckEntities();
bool CanSpawn(const Entity &) const noexcept;
bool CanDespawn(const Entity &) const noexcept;
void SendSpawn(SpawnStatus &);
void SendDespawn(SpawnStatus &);
+ /// true if entity updates are pushed to the client this frame
+ bool SendingUpdates() const noexcept;
void QueueUpdate(SpawnStatus &);
void SendUpdates();
unsigned int confirm_wait;
std::vector<SpawnStatus *> entity_updates;
+ unsigned int entity_updates_skipped;
EntityState player_update_state;
std::uint16_t player_update_pack;
- IntervalTimer player_update_timer;
+ CoarseTimer player_update_timer;
std::uint8_t old_actions;
ChunkTransmitter transmitter;
std::deque<glm::ivec3> chunk_queue;
glm::ivec3 old_base;
+ unsigned int chunk_blocks_skipped;
};