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); }
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); }
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); }
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()); }
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]); } } }