public GameObject Instantiate(EiInstantiateData data) { #if EITRUM_POOLING return(poolData.Dequeue(data)); #else var go = MonoBehaviour.Instantiate(GameObject, data.position, data.rotation, data.parent); if (data.scale.HasValue) { var goScale = go.transform.localScale; goScale.Scale(data.scale.Value); go.transform.localScale = goScale; } return(go); #endif }
public GameObject Dequeue(EiInstantiateData data) { if (pooledObjects.Count == 0) { Edit.LoadPrefab(); return(Dequeue(data)); } var go = pooledObjects.Dequeue(); var t = go.transform; t.SetParent(data.parent, false); t.localPosition = data.position; t.localRotation = data.rotation; if (data.scale.HasValue) { t.localScale = data.scale.Value; } if (poolableCallbacks) { if (optimizedCallbacks) { var list = go.GetComponent <EiEntity>().Poolables; for (int i = 0, length = list.Length; i < length; i++) { list[i].OnInstantiate(); } } else { var list = go.GetComponentsInChildren <IPoolable>(); for (int i = 0, length = list.Length; i < length; i++) { list[i].OnInstantiate(); } } } return(go); }