public InitializerParameters(long entityId, Technique technique, IServiceRegistry services, SelectorDelegate selector) { EntityId = entityId; Technique = technique; Services = services; Selector = selector; }
private void SelectorSingleGeneric(GameObject go, SelectorDelegate selector, System.Reflection.MethodInfo methodInfo, object instance) { if (SelectorSingleCache.ContainsKey(go) && SelectorSingleCache[go].ContainsKey(selector)) { methodInfo.Invoke(instance, SelectorSingleCache[go][selector]); } else { var objects = selector(go); if (objects != null) { if (!SelectorSingleCache.ContainsKey(go)) { SelectorSingleCache.Add(go, new Dictionary <SelectorDelegate, object[]>()); } SelectorSingleCache[go].Add(selector, objects); methodInfo.Invoke(instance, objects); } } }
private List <object[]> SelectorQuery(SelectorDelegate selector) { if (SelectorCache.ContainsKey(selector)) { return(SelectorCache[selector]); } else { List <object[]> list = new List <object[]>(); foreach (KeyValuePair <GameObject, Dictionary <string, object> > entry in Dict) { var objects = selector(entry.Key); if (objects != null) { list.Add(objects); } } SelectorCache.Add(selector, list); return(list); } }
public static List <TResult> Select <T, TResult>(this IEnumerable <T> collection, JudgeDelegate <T> judger, SelectorDelegate <T, TResult> selector) { List <TResult> ret = new List <TResult> (); var iter = collection.GetEnumerator(); while (iter.MoveNext()) { if (judger == null || judger(iter.Current)) { ret.Add(selector(iter.Current)); } } return(ret); }
private void SelectorForEachGeneric(SelectorDelegate selector, System.Reflection.MethodInfo methodInfo, object instance) { SelectorQuery(selector).ForEach(objects => { methodInfo.Invoke(instance, objects); }); }
public void SelectorForEach <T1, T2, T3, T4>(SelectorDelegate selector, EntityDelegate <T1, T2, T3, T4> action) { SelectorForEachGeneric(selector, action.Method, action.Target); }
public void SelectorSingle <T1, T2, T3, T4>(GameObject go, SelectorDelegate selector, EntityDelegate <T1, T2, T3, T4> action) { SelectorSingleGeneric(go, selector, action.Method, action.Target); }