public static IModel Get(int index, EModelGroup group = EModelGroup.Base) { IModel mod; #if UNITY_EDITOR if (m_instance.m_dic[(int)group].ContainsKey(index)) { mod = m_instance.m_dic[(int)group][index].Get(); } else { Log.i(ELogType.Model, "LaoHan:ModelManager dont has this index;" + index); var pool = new ModelPool(); pool.index = index; pool.storeCount = 1; m_instance.m_dic[(int)group].Add(index, pool); pool.loadHandler = m_instance.loadHandler; pool.Initialize(() => { }); mod = Get(index, group); } #else mod = m_instance.m_dic[(int)group][index].Get(); #endif if (getHandler != null) { getHandler(index); } return(mod); }
public static void Free(IModel obj, int freeTime = -1, EModelGroup group = EModelGroup.Base, EventHandler onFreeHandler = null) { #if UNITY_EDITOR if (!m_instance.m_dic[(int)group].ContainsKey(obj.index)) { Log.i(ELogType.Model, "dont has this index=>" + obj.index); if (onFreeHandler != null) { onFreeHandler(); } return; } #endif if (obj == null) { if (onFreeHandler != null) { onFreeHandler(); } return; } if (freeTime > 0) { WaitFree wait = null; if (m_instance.m_usingWaitList.Count <= 0) { wait = new WaitFree(); } else { wait = m_instance.m_usingWaitList[0]; m_instance.m_usingWaitList.RemoveAt(0); } wait.waitFree = obj; wait.freeHandler = onFreeHandler; wait.freeTime = freeTime; wait.group = group; m_instance.m_freeWaitList.Add(wait); } else { if (onFreeHandler != null) { onFreeHandler(); } m_instance.m_dic[(int)group][obj.index].Free(obj); obj.transform.SetParent(parent); if (freeHandler != null) { freeHandler(obj.index); } } }
public static void Clear(EModelGroup group) { var g = m_instance.m_dic[(int)group]; foreach (var item in g) { if (clearHandler != null) { clearHandler(item.Key); } item.Value.Clear(); m_instance.destroyHandler(item.Key); } }
public static void Store(int id, int count, EModelGroup group, EventHandler onStoreHandler) { var g = m_instance.m_dic[(int)group]; if (g.ContainsKey(id)) { g[id].Add(count); onStoreHandler(); } else { var pool = new ModelPool(); pool.index = id; pool.storeCount = count; pool.group = group; g.Add(id, pool); pool.loadHandler = m_instance.loadHandler; pool.Initialize(onStoreHandler); } }
public static void Clear(int index, EModelGroup group = EModelGroup.Base) { #if UNITY_EDITOR if (m_instance.m_dic[(int)group].ContainsKey(index)) { if (clearHandler != null) { clearHandler(index); } m_instance.m_dic[(int)group][index].Clear(); m_instance.destroyHandler(index); } else { Debug.Log.i(ELogType.Model, "Clear dont has this id:" + index); } #else m_instance.m_dic[(int)group][index].Clear(); m_instance.destroyHandler(index); #endif }
public static IModel Get(int index, Vector3 position, Quaternion rotation, Transform parent, EModelGroup group = EModelGroup.Base) { var obj = Get(index, group); if (obj != null) { obj.transform.position = position; obj.transform.rotation = rotation; obj.transform.SetParent(parent); if (!obj.gameObject.activeSelf) { obj.gameObject.SetActive(true); } } return(obj); }