public void ScanForMethods() { Component[] components = base.gameObject.GetComponents <Component>(); foreach (Component component in components) { MemberInfo[] members = component.GetType().GetMembers(); for (int j = 0; j < members.Length; j++) { if (members[j].ToString().Contains("FloatValueHolder ")) { MethodInfo[] methods = component.GetType().GetMethods(); for (int k = 0; k < methods.Length; k++) { string name = members[j].Name; if (methods[k].Name.ToLower() == name.ToLower()) { FloatValueHolder floatValueHolder = component.GetType().GetField(name).GetValue(component) as FloatValueHolder; if (floatValueHolder.useExternalReference) { List <ValuesModule.Holder.MethodRefHolder> list = new List <ValuesModule.Holder.MethodRefHolder>(this.values[floatValueHolder.index].methodsHolder); list.Add(new ValuesModule.Holder.MethodRefHolder(component, methods[k].Name)); this.values[floatValueHolder.index].methodsHolder = list.ToArray(); } } } } } } for (int l = 0; l < this.links.Length; l++) { this.AddToUpdateDelegates(this.links[l].a); this.AddToUpdateDelegates(this.links[l].b); } }
public FloatValueHolder GetHolder(string id) { if (!_valueCollections.TryGetValue(id, out var holder)) { holder = new FloatValueHolder(); _valueCollections.Add(id, holder); } return(holder); }
private void AddToUpdateDelegates(FloatValueHolder a) { if (!a.useExternalReference) { return; } List <ValuesModule.Holder.MethodRefHolder> list = new List <ValuesModule.Holder.MethodRefHolder>(this.values[a.index].methodsHolder); for (int i = 0; i < list.Count; i++) { if (list[i].methodName == "Recalculate") { return; } } list.Add(new ValuesModule.Holder.MethodRefHolder(this, "Recalculate")); this.values[a.index].methodsHolder = list.ToArray(); }