public void ScanProfile(IValidationProfile profile) { EditorApplication.delayCall += () => { var results = new List <ValidationProfileResult>(); this.validationProfileTree.CleanProfile(profile); try { foreach (var result in profile.Validate(this.runner)) { this.validationProfileTree.AddResultToTree(result); results.Add(result); if (GUIHelper.DisplaySmartUpdatingCancellableProgressBar(result.Profile.Name, result.Name, result.Progress)) { break; } } } finally { EditorUtility.ClearProgressBar(); this.overview.ProfileResults = results; this.overview.Update(); this.validationProfileTree.MarkDirty(); this.validationProfileTree.UpdateMenuTree(); this.validationProfileTree.AddErrorAndWarningIcons(); } }; }
public void OnHookExecuting() { using (var runner = new ValidationRunner()) { bool stopTriggeringEvent = false; try { foreach (var validation in this.Validations) { bool openValidatorWindow = false; IValidationProfile actuallyFailingProfile = null; try { foreach (var profile in validation.ProfilesToRun) { foreach (var result in profile.Validate(runner)) { if (GUIHelper.DisplaySmartUpdatingCancellableProgressBar("Executing Validation Hook: " + this.Name + " (Profile: " + profile.Name + ")", result.Name, result.Progress)) { // Cancel validation return; } foreach (var subResult in result.Results) { bool couldExitFromFailure = false; if (subResult.ResultType == ValidationResultType.Error) { if (validation.HasActionFlag(AutomatedValidation.Action.LogError)) { var source = result.GetSource() as UnityEngine.Object; Debug.LogError("Validation error on object '" + source + "', path '" + subResult.Path + "': " + subResult.Message, source); } if (validation.HasActionFlag(AutomatedValidation.Action.OpenValidatorIfError)) { openValidatorWindow = true; couldExitFromFailure = true; } if (validation.HasActionFlag(AutomatedValidation.Action.StopHookEventOnError)) { stopTriggeringEvent = true; couldExitFromFailure = true; } } else if (subResult.ResultType == ValidationResultType.Warning) { if (validation.HasActionFlag(AutomatedValidation.Action.LogWarning)) { var source = result.GetSource() as UnityEngine.Object; Debug.LogWarning("Validation warning on object '" + source + "', path '" + subResult.Path + "': " + subResult.Message, source); } if (validation.HasActionFlag(AutomatedValidation.Action.OpenValidatorIfWarning)) { openValidatorWindow = true; couldExitFromFailure = true; } if (validation.HasActionFlag(AutomatedValidation.Action.StopHookEventOnWarning)) { stopTriggeringEvent = true; couldExitFromFailure = true; } } if (couldExitFromFailure) { actuallyFailingProfile = profile; if (!this.FinishValidationOnFailures) { return; } } } } } } finally { if (openValidatorWindow) { if (this.Hook is OnPlayValidationHook) { stopTriggeringEvent = true; } this.OpenValidator(validation.ProfilesToRun, actuallyFailingProfile); } if (stopTriggeringEvent) { this.Hook.StopTriggeringEvent(); } } } } finally { EditorUtility.ClearProgressBar(); } } }