Пример #1
0
 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);
     }
 }
Пример #2
0
 public FloatValueHolder GetHolder(string id)
 {
     if (!_valueCollections.TryGetValue(id, out var holder))
     {
         holder = new FloatValueHolder();
         _valueCollections.Add(id, holder);
     }
     return(holder);
 }
Пример #3
0
    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();
    }