// Token: 0x0600017A RID: 378 RVA: 0x0000CFAC File Offset: 0x0000B1AC private static void CheckTaskForErrors(Task task, bool projectLevelBehavior, ref List <ErrorDetails> errorDetails) { if (task.Disabled) { return; } if (task is UnknownTask || task is UnknownParentTask) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.UnknownTask, task, -1, null); } if (task.GetType().GetCustomAttributes(typeof(SkipErrorCheckAttribute), false).Length == 0) { FieldInfo[] allFields = TaskUtility.GetAllFields(task.GetType()); for (int i = 0; i < allFields.Length; i++) { ErrorCheck.CheckField(task, projectLevelBehavior, ref errorDetails, allFields[i], i, allFields[i].GetValue(task)); } } if (task is ParentTask && task.NodeData.NodeDesigner != null && !(task.NodeData.NodeDesigner as NodeDesigner).IsEntryDisplay) { ParentTask parentTask = task as ParentTask; if (parentTask.Children == null || parentTask.Children.Count == 0) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.MissingChildren, task, -1, null); } else { for (int j = 0; j < parentTask.Children.Count; j++) { ErrorCheck.CheckTaskForErrors(parentTask.Children[j], projectLevelBehavior, ref errorDetails); } } } }
// Token: 0x0600017B RID: 379 RVA: 0x0000D0CC File Offset: 0x0000B2CC private static void CheckField(Task task, bool projectLevelBehavior, ref List <ErrorDetails> errorDetails, FieldInfo field, int index, object value) { if (value == null) { return; } if (TaskUtility.HasAttribute(field, typeof(RequiredFieldAttribute)) && !ErrorCheck.IsRequiredFieldValid(field.FieldType, value)) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.RequiredField, task, index, field.Name); } if (typeof(SharedVariable).IsAssignableFrom(field.FieldType)) { SharedVariable sharedVariable = value as SharedVariable; if (sharedVariable != null) { if (sharedVariable.IsShared && string.IsNullOrEmpty(sharedVariable.Name) && !TaskUtility.HasAttribute(field, typeof(SharedRequiredAttribute))) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.SharedVariable, task, index, field.Name); } object value2 = sharedVariable.GetValue(); if (!EditorApplication.isPlaying && projectLevelBehavior && !sharedVariable.IsShared && value2 is Object && AssetDatabase.GetAssetPath(value2 as Object).Length <= 0) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.InvalidTaskReference, task, index, field.Name); } } } else if (value is Object) { bool flag = AssetDatabase.GetAssetPath(value as Object).Length > 0; if (!EditorApplication.isPlaying && !flag) { ErrorCheck.AddError(ref errorDetails, ErrorDetails.ErrorType.InvalidTaskReference, task, index, field.Name); } } else if (!typeof(Delegate).IsAssignableFrom(field.FieldType) && (field.FieldType.IsClass || (field.FieldType.IsValueType && !field.FieldType.IsPrimitive))) { FieldInfo[] allFields = TaskUtility.GetAllFields(field.FieldType); for (int i = 0; i < allFields.Length; i++) { ErrorCheck.CheckField(task, projectLevelBehavior, ref errorDetails, allFields[i], index, allFields[i].GetValue(value)); } } }