X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fclient%2Fclient.cpp;h=455550afeccc27500120409a1b8162be50a5fdc6;hb=54f3f1260b95a924fcb40d9d6de3fa2e2c382f6f;hp=89e306bee60cb775dc1a61ff63b976f8a296a95a;hpb=07b8335e7bfd631e0878e183c87238812d632c56;p=blank.git diff --git a/src/client/client.cpp b/src/client/client.cpp index 89e306b..455550a 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -65,6 +65,10 @@ InteractiveState::InteractiveState(MasterState &master, uint32_t player_id) save.Write(master.GetWorldConf()); } res.Load(master.GetEnv().loader, "default"); + if (res.models.size() < 1) { + throw std::runtime_error("need at least one model to run"); + } + res.models[0].Instantiate(player.GetEntity().GetModel()); sounds.Load(master.GetEnv().loader, res.snd_index); interface.SetInventorySlots(res.block_types.size() - 1); chunk_renderer.LoadTextures(master.GetEnv().loader, res.tex_index); @@ -143,7 +147,9 @@ void InteractiveState::Update(int dt) { } void InteractiveState::Render(Viewport &viewport) { - viewport.WorldPosition(player.GetEntity().Transform(player.GetEntity().ChunkCoords())); + viewport.WorldPosition( + player.GetEntity().Transform(player.GetEntity().ChunkCoords()) + * player.GetEntity().GetModel().EyesTransform()); if (master.GetConfig().video.world) { chunk_renderer.Render(viewport); world.Render(viewport); @@ -376,6 +382,8 @@ void MasterState::On(const Packet::Join &pack) { state.reset(new InteractiveState(*this, player_id)); pack.ReadPlayerState(state->GetPlayer().GetEntity().GetState()); + glm::vec3 orient(glm::eulerAngles(state->GetPlayer().GetEntity().Orientation())); + state->GetPlayerController().TurnHead(orient.x, orient.y); env.state.PopAfter(this); env.state.Push(state.get());