Exemplo n.º 1
0
        public TempList <AttributeVariable> GetAttributeVariables(IAttributeProvider attributeProvider)
        {
            var list = TempList <AttributeVariable> .Alloc();

            if (Attributes != null && Attributes.Length > 0)
            {
                switch (Type)
                {
                case AttributeSetType.NORMAL:
                    foreach (AttributeMetadata attribute in Attributes)
                    {
                        AttributeVariable v = new AttributeVariable((int)attribute.Type, new AttributeValue(attribute.ModifyType, attribute.Value));
                        list.Add(v);
                    }
                    break;

                case AttributeSetType.CHANGE:
                    AttributeVariable variable = attributeProvider.GetAttributeVariable((int)ChangeType);
                    if (!variable.Value.Value1.IsZero())
                    {
                        double d = variable.Value.Value1 / ChangeValue;
                        foreach (AttributeMetadata attribute in Attributes)
                        {
                            AttributeVariable v = new AttributeVariable((int)attribute.Type, new AttributeValue(AttributeModifyType.ABSOLUTE, attribute.Value * d));
                            list.Add(v);
                        }
                    }
                    break;
                }
            }
            return(list);
        }
Exemplo n.º 2
0
        public IWork BootLoad()
        {
            if (state == ManagerState.INIT)
            {
                state = ManagerState.BOOT_LOADING;
                var loaders = TempList <IWork> .Alloc();

                var loader = DoLoad();
                if (loader != null)
                {
                    loaders.Add(loader);
                }

                foreach (var module in modules.Values)
                {
                    var work = module.Load();
                    if (work != null)
                    {
                        loaders.Add(work);
                    }
                }
                if (loaders.Count > 0)
                {
                    return(bootLoader = new ParallelWork("", loaders));
                }
            }

            return(null);
        }
Exemplo n.º 3
0
        public override IWork LoadConfigAutomatically()
        {
            var loaders = TempList <IWork> .Alloc();

            for (int i = 0; i < Serializer.Fields.Length; i++)
            {
                var field = Serializer.Fields[i];

                int index = i;
                DoLoadConfigAutomatically(field, index, loaders);
            }
            if (loaders.Count > 0)
            {
                return(new SequenceWork("", loaders));
            }
            return(null);
        }
Exemplo n.º 4
0
        public IWork BootLoadAllManagers()
        {
            var loaders = TempList <IWork> .Alloc();

            for (int index = 0; index < managers.Count; index++)
            {
                var loader = managers[index].BootLoad();
                if (loader != null)
                {
                    loaders.Add(loader);
                }
            }
            if (loaders.Count > 0)
            {
                return(new ParallelWork("", loaders));
            }
            return(new CommonWork());
        }
Exemplo n.º 5
0
        private void CheckAndDestoryPool(bool cleanPreloadPool)
        {
            var curTime = Time.time;

            if (curTime - lastCleanPoolTime > 1)
            {
                lastCleanPoolTime = curTime;
            }
            else
            {
                return;
            }

            cleanPreloadPool &= CleanPreloadPool;
            using (var removeList = TempList <string> .Alloc())
            {
                while (pools.GetEnumerator().MoveNext())
                {
                    var item = pools.GetEnumerator().Current;
                    if (item.Value.IsTemporaryPool || cleanPreloadPool)
                    {
                        if (item.Value.CanDestory() && curTime - item.Value.LastUsedTime > AutoCleanTime)
                        {
                            removeList.Add(item.Key);
                        }
                    }
                }

                for (var i = 0; i < removeList.Count; ++i)
                {
#if UNITY_EDITOR
                    InPoolCounter.Remove(removeList[i]);
                    OutOfPoolBundles.Remove(removeList[i]);
#endif
                    var pool = pools[removeList[i]];
                    DestroyPool(pool);
                    pools.Remove(removeList[i]);
                }
            }
        }