public bool OnBuildRequested(VRCSDKRequestedBuildType requestedBuildType) { var settings = ValidatorSettingsUtility.GetOrCreateSettings(); if (!settings.validateOnUploadAvatar) { return(true); } var type = typeof(VRCSdkControlPanelAvatarBuilder); var field = type.GetField("_selectedAvatar", BindingFlags.InvokeMethod | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); var avatar = field.GetValue(null) as VRCAvatarDescriptor; if (avatar == null) { return(true); } Selection.activeObject = avatar.gameObject; var resultDictionary = VRCAvatars3Validator.ValidateAvatars3(avatar, settings.rules); if (resultDictionary .Any(result => result.Value.Any( r => r.ResultType == ValidateResult.ValidateResultType.Error || r.ResultType == ValidateResult.ValidateResultType.Warning))) { VRCAvatars3ValidatorView.Open(); return(false); } return(true); }
public static SettingsProvider CreateSettingsProvider() { return(new SettingsProvider("Project/VRCAvatars3Validator", SettingsScope.Project) { label = "VRCAvatars3Validator", keywords = new HashSet <string>(new string[] { "VRChat", "VRC", "Avatars3.0" }), guiHandler = (searchContext) => { var settings = ValidatorSettingsUtility.GetOrCreateSettings(); settings.validateOnUploadAvatar = EditorGUILayout.Toggle("Validate OnUploadAvatar", settings.validateOnUploadAvatar); EditorGUILayout.Space(); EditorGUILayout.LabelField("Enable Rules", EditorStyles.boldLabel); var ruleNames = settings.rules.Select(rule => rule.Name).ToArray(); for (int i = 0; i < ruleNames.Length; i++) { var validateRule = settings.rules[i].Enabled; var ruleName = ruleNames[i]; var ruleSummary = RuleUtility.FilePath2IRule(settings.rules[i].FilePath).RuleSummary; using (var check = new EditorGUI.ChangeCheckScope()) { settings.rules[i].Enabled = EditorGUILayout.ToggleLeft($"[{ruleName}] {ruleSummary}", validateRule); } } } }); }
public void OnOpen() { if (settings == null) { settings = ValidatorSettingsUtility.GetOrCreateSettings(); } if (!avatar && Selection.activeGameObject) { avatar = Selection.activeGameObject.GetComponent <VRCAvatarDescriptor>(); Validate(); } }