示例#1
0
        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);
        }
示例#2
0
        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);
                        }
                    }
                }
            });
        }
示例#3
0
        public void OnOpen()
        {
            if (settings == null)
            {
                settings = ValidatorSettingsUtility.GetOrCreateSettings();
            }

            if (!avatar && Selection.activeGameObject)
            {
                avatar = Selection.activeGameObject.GetComponent <VRCAvatarDescriptor>();
                Validate();
            }
        }