using System; using System.Collections.Generic; using UnityEngine.Scripting; namespace UnityEngine { // Token: 0x020003B8 RID: 952 internal class AttributeHelperEngine { // Token: 0x060037A9 RID: 14249 RVA: 0x0005EB4C File Offset: 0x0005CD4C [RequiredByNativeCode] private static Type GetParentTypeDisallowingMultipleInclusion(Type type) { Stack stack = new Stack(); while (type != null && type != typeof(MonoBehaviour)) { stack.Push(type); type = type.BaseType; } while (stack.Count > 0) { Type type2 = stack.Pop(); object[] customAttributes = type2.GetCustomAttributes(typeof(DisallowMultipleComponent), false); int num = customAttributes.Length; if (num != 0) { return type2; } } return null; } // Token: 0x060037AA RID: 14250 RVA: 0x0005EBD8 File Offset: 0x0005CDD8 [RequiredByNativeCode] private static Type[] GetRequiredComponents(Type klass) { List list = null; while (klass != null && klass != typeof(MonoBehaviour)) { RequireComponent[] array = (RequireComponent[])klass.GetCustomAttributes(typeof(RequireComponent), false); Type baseType = klass.BaseType; foreach (RequireComponent requireComponent in array) { if (list == null && array.Length == 1 && baseType == typeof(MonoBehaviour)) { return new Type[] { requireComponent.m_Type0, requireComponent.m_Type1, requireComponent.m_Type2 }; } if (list == null) { list = new List(); } if (requireComponent.m_Type0 != null) { list.Add(requireComponent.m_Type0); } if (requireComponent.m_Type1 != null) { list.Add(requireComponent.m_Type1); } if (requireComponent.m_Type2 != null) { list.Add(requireComponent.m_Type2); } } klass = baseType; } if (list == null) { return null; } return list.ToArray(); } // Token: 0x060037AB RID: 14251 RVA: 0x0005ED08 File Offset: 0x0005CF08 [RequiredByNativeCode] private static bool CheckIsEditorScript(Type klass) { while (klass != null && klass != typeof(MonoBehaviour)) { object[] customAttributes = klass.GetCustomAttributes(typeof(ExecuteInEditMode), false); int num = customAttributes.Length; if (num != 0) { return true; } klass = klass.BaseType; } return false; } // Token: 0x060037AC RID: 14252 RVA: 0x0005ED68 File Offset: 0x0005CF68 [RequiredByNativeCode] private static int GetDefaultExecutionOrderFor(Type klass) { DefaultExecutionOrder customAttributeOfType = AttributeHelperEngine.GetCustomAttributeOfType(klass); int num; if (customAttributeOfType == null) { num = 0; } else { num = customAttributeOfType.order; } return num; } // Token: 0x060037AD RID: 14253 RVA: 0x0005ED98 File Offset: 0x0005CF98 private static T GetCustomAttributeOfType(Type klass) where T : Attribute { Type typeFromHandle = typeof(T); object[] customAttributes = klass.GetCustomAttributes(typeFromHandle, true); T t; if (customAttributes != null && customAttributes.Length != 0) { t = (T)((object)customAttributes[0]); } else { t = (T)((object)null); } return t; } } }