internal static bool DeferredSpawner_AddressablesTask_Spawn_Prefix(DeferredSpawner.AddressablesTask __instance, ref IEnumerator __result) { if (!ModPrefab.TryGetFromFileName(__instance.key, out ModPrefab prefab)) { return(true); } __result = SpawnAsyncReplacement(__instance, prefab); return(false); }
internal static IEnumerator SpawnAsyncReplacement(DeferredSpawner.AddressablesTask task, ModPrefab modPrefab) { TaskResult <GameObject> prefabResult = new TaskResult <GameObject>(); yield return(modPrefab.GetGameObjectInternalAsync(prefabResult)); GameObject prefab = prefabResult.Get(); if (prefab != null) { task.spawnedObject = UnityEngine.Object.Instantiate <GameObject>(prefab, task.parent, task.position, task.rotation, task.instantiateActivated); } if (task.spawnedObject == null) { task.forceCancelled = true; } task.HandleLateCancelledSpawn(); yield break; }