Added initial version 0.1.0

This commit is contained in:
Anders Ejlersen 2026-05-17 22:12:04 +02:00
parent 6aa4cb8596
commit 416759c213
64 changed files with 2181 additions and 0 deletions

View file

@ -0,0 +1,51 @@
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
using UnityEditor.UIElements;
using UnityEditorInternal;
namespace Module.ProjectValidator.Editor
{
internal sealed class ProjectValidatorSettings : ScriptableObject
{
public List<string> assemblies = new();
private const string AssetPath = "ProjectSettings/ProjectValidatorSettings.asset";
private const string StyleSheetName = "StyleSheetProjectValidatorSettings";
internal static ProjectValidatorSettings GetOrCreate()
{
var objects = InternalEditorUtility.LoadSerializedFileAndForget(AssetPath);
if (objects.Length != 0)
return (ProjectValidatorSettings)objects[0];
var settings = CreateInstance<ProjectValidatorSettings>();
InternalEditorUtility.SaveToSerializedFileAndForget(new Object[] { settings }, AssetPath, true);
return settings;
}
[SettingsProvider]
public static SettingsProvider CreateProvider()
{
return new SettingsProvider("Project/Project Validator", SettingsScope.Project)
{
label = "Project Validator",
activateHandler = (_, root) =>
{
var settings = GetOrCreate();
var serializedObject = new SerializedObject(settings);
var container = new VisualElement { style = { flexDirection = FlexDirection.Column } };
var propertyField = new PropertyField(serializedObject.FindProperty("assemblies"), "Assemblies");
propertyField.RegisterCallback<ChangeEvent<string>>(_ => InternalEditorUtility.SaveToSerializedFileAndForget(new[] { serializedObject.targetObject }, AssetPath, true));
container.Add(propertyField);
root.Add(container);
root.Bind(serializedObject);
root.styleSheets.Add(EditorAssetUtility.LoadFirstAsset<StyleSheet>(StyleSheetName));
},
keywords = new HashSet<string>(new[] { "Project", "Validator", "Assemblies" })
};
}
}
}