public T SpawnDefinition <T>(PoolDefinition poolDefinition, Vector3 position, Quaternion rotation, Transform parent = null, bool subSpawn = false, Action <GameObject> OnSpawn = null) where T : Component { GameObject clone = SpawnDefinition(poolDefinition, position, rotation, OnSpawn, parent, subSpawn); return((clone != null) ? clone.GetComponent <T>() : null); }
public GameObject SpawnDefinition(PoolDefinition poolDefinition, Vector3 position, Quaternion rotation, Action <GameObject> OnSpawn, Transform parent = null, bool subSpawn = false) { if (!IsGameObjectPrefab(poolDefinition.PooledObject)) { DevTools.Logger.LogError(PoolServiceLog, "Instanced GameObject {} can not be pooled.", () => new object[] { poolDefinition.name }); return(null); } Pool prefabPool = GetPrefabsPool(poolDefinition.PooledObject); GameObject spawnedPrefab = prefabPool.SpawnPrefab(poolDefinition, position, rotation, parent, subSpawn, (x) => OnPrefabSpawned(x), OnSpawn); activePooledGameObjects[spawnedPrefab] = prefabPool; return(spawnedPrefab); }
public GameObject SpawnPrefab(PoolDefinition poolDefinition, Vector3 position, Quaternion rotation, Transform parent, bool callOnSpawn, Action <GameObject> OnSpawn, Action <GameObject> CustomOnSpawn) { // Get GameObject GameObject clone = null; while (cache.Count > 0) { clone = cache.Pop(); if (clone == null) { continue; } clone.SetActive(true); break; } if (clone == null) { clone = InstantiateGameObject(); } // Setup Transform Transform tr = clone.transform; if (parent != null) { tr.SetParent(parent, false); } else { tr.localPosition = position; tr.localRotation = rotation; tr.SetParent(null, false); } // PoolDefinitions poolDefinition.OverrideGameObjectComponents(clone); IPool[] pItems = clone.GetComponentsInChildren <IPool>(); for (int i = 0; i < pItems.Length; i++) { pItems[i].PoolDefinition = poolDefinition; } // Spawn Events // Used by other systems to do any changes before OnSpawn is called. OnSpawn(clone); if (CustomOnSpawn != null) { CustomOnSpawn(clone); } if (!callOnSpawn) { pItems = clone.GetComponentsInChildren <IPool>(); for (int i = 0; i < pItems.Length; i++) { pItems[i].OnSpawn(); } } return(clone); }
public GameObject SpawnDefinition(PoolDefinition prefab, Vector3 position, Quaternion rotation, Transform parent = null, bool subSpawn = false) { return(null); }
public T SpawnDefinition <T>(PoolDefinition prefab, Vector3 position, Quaternion rotation, Transform parent = null, bool subSpawn = false, Action <GameObject> OnSpawn = null) where T : Component { return(default(T)); }
public GameObject SpawnDefinition(PoolDefinition prefab, Transform parent = null, bool subSpawn = false) { return(null); }
public GameObject SpawnDefinition(PoolDefinition poolDefinition, Vector3 position, Quaternion rotation, Transform parent = null, bool subSpawn = false) { return(SpawnDefinition(poolDefinition, position, rotation, null, parent, subSpawn)); }
public GameObject SpawnDefinition(PoolDefinition poolDefinition, Transform parent = null, bool subSpawn = false) { return(SpawnDefinition(poolDefinition, Vector3.zero, Quaternion.identity, parent, subSpawn)); }