private static LSEffect GenEffect(EffectCode effectCode, int id = -1) { FastStack <LSEffect> pool = EffectPool[effectCode]; LSEffect effect = null; if (pool.Count > 0) { effect = pool.Pop(); } else { Debug.Log(effectCode); EffectDataItem dataItem = CodeDataMap[effectCode]; effect = GameObject.Instantiate <GameObject> (dataItem.Prefab).GetComponent <LSEffect> (); effect.Setup(effectCode); } if (id == -1) { id = GenerateID(); } if (effect.Create(id)) { return(effect); } else { return(GenEffect(effectCode, id)); } }
public static void Setup() { EffectDataItem[] effectData = LSDatabaseManager.CurrentDatabase.EffectData; EffectPool = new Dictionary <EffectCode, FastStack <LSEffect> >(effectData.Length); CodeDataMap = new Dictionary <EffectCode, EffectDataItem>(effectData.Length); for (int i = 0; i < effectData.Length; i++) { EffectDataItem dataItem = effectData[i]; EffectCode code = (EffectCode)dataItem.MappedCode; EffectPool.Add(code, new FastStack <LSEffect> ()); CodeDataMap.Add(code, dataItem); } }
public static void Setup() { EffectDataItem[] effectData = (LSDatabaseManager.CurrentDatabase as DefaultLSDatabase).EffectData; EffectPool = new Dictionary <string, FastStack <LSEffect> >(effectData.Length); CodeDataMap = new Dictionary <string, EffectDataItem>(effectData.Length); for (int i = 0; i < effectData.Length; i++) { EffectDataItem dataItem = effectData[i]; string code = (string)dataItem.Name; EffectPool.Add(code, new FastStack <LSEffect> ()); CodeDataMap.Add(code, dataItem); } }