private void AddOrUpdateLoadedScene(SceneLoadingStatus scene)
    {
        SceneLoadingStatus existingScene = loadedScenes.FirstOrDefault(x => x.sceneId == scene.sceneId);

        if (existingScene == null)
        {
            loadedScenes.Add(scene);
        }
        else
        {
            existingScene.componentsLoading = scene.componentsLoading;
        }
    }
    private void Scene_OnStateRefreshed(ParcelScene scene)
    {
        SceneLoadingStatus refreshedScene = new SceneLoadingStatus
        {
            sceneId           = scene.GetInstanceID(),
            componentsLoading = scene.sceneLifecycleHandler.disposableNotReadyCount
        };

        switch (scene.sceneLifecycleHandler.state)
        {
        case SceneLifecycleHandler.State.WAITING_FOR_COMPONENTS:
            AddOrUpdateLoadedScene(refreshedScene);
            break;

        case SceneLifecycleHandler.State.READY:
            scene.sceneLifecycleHandler.OnStateRefreshed -= Scene_OnStateRefreshed;
            break;
        }

        RefreshFeedbackMessage();
    }
 public int Count(SceneLoadingStatus which)
 {
     return(_queue.Where(x => x.state == which).Count());
 }
 public RequestQueueMgrEnumerator GetTypeEnumerator(SceneLoadingStatus which = SceneLoadingStatus.ePending)
 {
     return(new RequestQueueMgrEnumerator(_queue.Where(x => x.state == which).ToList()));
 }