world.AddPlayer(master.GetInterfaceConf().player_name, player_id)
)
, chunk_renderer(*interface.GetPlayer().chunks)
-, skeletons() {
+, skeletons()
+, update_timer(16) {
TextureIndex tex_index;
master.GetEnv().loader.LoadBlockTypes("default", block_types, tex_index);
chunk_renderer.LoadTextures(master.GetEnv().loader, tex_index);
skeletons.Load();
// TODO: better solution for initializing HUD
interface.SelectNext();
+ update_timer.Start();
}
void InteractiveState::OnEnter() {
world.Update(dt);
chunk_renderer.Update(dt);
+ update_timer.Update(dt);
+
Entity &player = *interface.GetPlayer().entity;
- master.GetClient().SendPlayerUpdate(player);
+ if (update_timer.Hit()) {
+ master.GetClient().SendPlayerUpdate(player);
+ }
glm::mat4 trans = player.Transform(player.ChunkCoords());
glm::vec3 dir(trans * glm::vec4(0.0f, 0.0f, -1.0f, 0.0f));
pack.ReadPlayerID(player_id);
state.reset(new InteractiveState(*this, player_id));
- pack.ReadPlayer(*state->GetInterface().GetPlayer().entity);
+ pack.ReadPlayerState(state->GetInterface().GetPlayer().entity->GetState());
env.state.PopAfter(this);
env.state.Push(state.get());
}
if (world_iter->ID() == entity_id) {
if (UpdateEntity(entity_id, pack.Seq())) {
- pack.ReadEntity(*world_iter, i);
+ pack.ReadEntityState(world_iter->GetState(), i);
}
}
}