Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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
        }
Exemplo n.º 6
0
        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);
        }