using PashaBibko.Pacore.Attributes; using UnityEngine.SceneManagement; using System.Collections; using System.Diagnostics; using UnityEngine; using System; using Debug = UnityEngine.Debug; namespace Fruitomation.Game { [CreateInstanceOnStart] public class SceneController : MonoBehaviour { private static SceneController Instance; private void Awake() { if (Instance is not null) { Debug.LogError($"Multiple instances of [{nameof(SceneController)}] cannot exist."); return; } Instance = this; } private IEnumerator StartLoadInternal(string scene) { Stopwatch sw = Stopwatch.StartNew(); AsyncOperation operation = SceneManager.LoadSceneAsync(scene); if (operation == null) { string error = $"Unknown scene [{scene}]"; throw new ArgumentException(error); } operation.allowSceneActivation = false; operation.completed += _ => { sw.Stop(); Debug.Log($"Scene finished loading [Took {sw.ElapsedMilliseconds}ms]"); }; yield return new WaitForSeconds(5f); operation.allowSceneActivation = true; } public static void StartLoadOf(string scene) => Instance.StartCoroutine(Instance.StartLoadInternal(scene)); } }