public static void OnAwake(KMonoBehaviour c) { Type type = c.GetType(); FieldData[] fields = GetFields(type); FieldData[] array = fields; foreach (FieldData fieldData in array) { CmpFns cmpFns = fieldData.cmpFns; FieldInfo fieldInfo = fieldData.fieldInfo; if (!((UnityEngine.Object)(Component) fieldInfo.GetValue(c) != (UnityEngine.Object)null)) { if (fieldData.myCmpType == MyCmpType.Add) { Component value = cmpFns.mFindOrAddFn(c); fieldInfo.SetValue(c, value); } else if (fieldData.myCmpType == MyCmpType.Req) { Component value2 = cmpFns.mFindFn(c); fieldInfo.SetValue(c, value2); } else if (fieldData.myCmpType == MyCmpType.Get) { Component value3 = cmpFns.mFindFn(c); fieldInfo.SetValue(c, value3); } } } }
public static CmpFns GetCmpFns(Type type) { CmpFns value = null; if (!sCmpFns.TryGetValue(type, out value)) { value = new CmpFns(type); sCmpFns[type] = value; } return(value); }
public static void OnStart(KMonoBehaviour c) { Type type = c.GetType(); FieldData[] fields = GetFields(type); FieldData[] array = fields; foreach (FieldData fieldData in array) { CmpFns cmpFns = fieldData.cmpFns; FieldInfo fieldInfo = fieldData.fieldInfo; if ((UnityEngine.Object)(Component) fieldInfo.GetValue(c) != (UnityEngine.Object)null) { Component cmp = fieldInfo.GetValue(c) as Component; Util.SpawnComponent(cmp); } else if (fieldData.myCmpType == MyCmpType.Add) { Component cmp2 = cmpFns.mFindOrAddFn(c); Util.SpawnComponent(cmp2); } else if (fieldData.myCmpType == MyCmpType.Req) { Component component = cmpFns.mRequireFn(c); if ((UnityEngine.Object)component == (UnityEngine.Object)null) { Debug.LogError("The behaviour " + type.ToString() + " required but couldn't find a " + fieldInfo.FieldType.Name); } Util.SpawnComponent(component); fieldInfo.SetValue(c, component); } else if (fieldData.myCmpType == MyCmpType.Get) { Component component2 = cmpFns.mFindFn(c); Util.SpawnComponent(component2); fieldInfo.SetValue(c, component2); } } }