only works for yaw, obviously
 
        World &GetWorld() noexcept { return world; }
        Player &GetPlayer() noexcept { return player; }
+       PlayerController &GetPlayerController() noexcept { return input; }
        ChunkReceiver &GetChunkReceiver() noexcept { return chunk_receiver; }
 
        void OnEnter() override;
 
        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());
 
        chunk_renderer.FogDensity(wc.fog_density);
        if (save.Exists(player)) {
                save.Read(player);
+               glm::vec3 orient(glm::eulerAngles(player.GetEntity().Orientation()));
+               input.TurnHead(orient.x, orient.y);
        } else {
                spawn_player = true;
        }