private void UnloadUnusedScenes(ProjectionSpace projectionSpace)
    {
        switch (projectionSpace)
        {
        case ProjectionSpace.wall:
            if (activeWallScene.name != null && activeWallScene.name != activeFloorScene.name)
            {
                SceneManager.UnloadSceneAsync(activeWallScene);
            }
            activeWallScene = new Scene();
            break;

        case ProjectionSpace.floor:
            if (activeFloorScene.name != null && activeWallScene.name != activeFloorScene.name)
            {
                SceneManager.UnloadSceneAsync(activeFloorScene);
            }
            activeFloorScene = new Scene();
            break;

        case ProjectionSpace.both:
            UnloadUnusedScenes(ProjectionSpace.wall);
            UnloadUnusedScenes(ProjectionSpace.floor);
            break;

        default:
            break;
        }
    }
    public void LoadVideo(int videoId, ProjectionSpace projectionSpace)
    {
        SyncDisplayType();
        UnloadUnusedScenes(projectionSpace);

        switch (projectionSpace)
        {
        case ProjectionSpace.none:
            break;

        case ProjectionSpace.wall:
            projectionManager.wallVideoPlane.GetComponent <Renderer>().material = videoTexture[videoId];
            projectionManager.wallVideoPlane.PlayVideo();
            break;

        case ProjectionSpace.floor:
            projectionManager.floorVideoPlane.GetComponent <Renderer>().material = videoTexture[videoId];
            projectionManager.floorVideoPlane.PlayVideo();
            break;

        case ProjectionSpace.both:
            LoadVideo(videoId, ProjectionSpace.wall);
            LoadVideo(videoId, ProjectionSpace.floor);
            break;

        default:
            break;
        }

        ToggleMenu();
    }
    private void SetActiveProjectionCamera(ProjectionSpace projectionSpace, Camera cam, Scene scene)
    {
        switch (projectionSpace)
        {
        case ProjectionSpace.wall:
            if (cam.targetTexture.Equals(projectionManager.wallProjectionCamera.mainTexture))
            {
                activeWallProjectionCamera = setActiveProjection(activeWallProjectionCamera, cam);
                activeWallScene            = scene;
            }
            break;

        case ProjectionSpace.floor:
            if (cam.targetTexture.Equals(projectionManager.floorProjectionCamera.mainTexture))
            {
                activeFloorProjectionCamera = setActiveProjection(activeFloorProjectionCamera, cam);
                activeFloorScene            = scene;
            }
            break;

        case ProjectionSpace.both:
            SetActiveProjectionCamera(ProjectionSpace.wall, cam, scene);
            SetActiveProjectionCamera(ProjectionSpace.floor, cam, scene);
            break;

        default:
            break;
        }
    }
 public void SetProjectionSpace(ProjectionSpace projectionSpace)
 {
     this.projectionSpace = projectionSpace;
     setActiveMenuItem(MenuItem.Media);
 }