Beispiel #1
0
        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);
        }
Beispiel #2
0
        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;
        }