private void ResetGame()
        {
            worldScene?.Dispose();

            worldScene = new WorldScene(GameplayScene.InitialGameState)
                         .OnPause(() => {
                PauseScene(worldScene);
            })
                         .OnGetIntoShip((gameState) => {
                shipScene.ResetCamera();
                SetNextScene(shipScene.WithGameState(gameState));
            })
                         .OnGameOver(() => {
                SoundManager.Play(SoundManager.Death);
                SetNextScene(gameOverScene);
            });

            shipScene = new ShipScene(GameplayScene.InitialGameState)
                        .OnGoToWater((gameState) => {
                SoundManager.Play(SoundManager.Metal);
                worldScene.ResetCamera();
                SetNextScene(worldScene.WithGameState(gameState));
            })
                        .OnPause(() => {
                PauseScene(shipScene);
            });

            gameOverScene = new GameOverScene()
                            .WithPreRender(worldScene.Render)
                            .OnGoToStartScreen(() =>
            {
                SetNextScene(this.startMenu);
                ResetGame();
            });
        }