obfuz/Editor/Settings/ObfuzSettingsProvider.cs

97 lines
3.4 KiB
C#
Raw Normal View History

2025-04-16 23:03:41 +08:00
using System;
using System.Reflection;
using UnityEditor;
using UnityEditor.Presets;
using UnityEngine;
using UnityEngine.UIElements;
2025-05-04 19:55:10 +08:00
namespace Obfuz.Settings
2025-04-16 23:03:41 +08:00
{
public class ObfuzSettingsProvider : SettingsProvider
{
private static ObfuzSettingsProvider s_provider;
[SettingsProvider]
public static SettingsProvider CreateMyCustomSettingsProvider()
{
if (s_provider == null)
{
s_provider = new ObfuzSettingsProvider();
using (var so = new SerializedObject(ObfuzSettings.Instance))
{
s_provider.keywords = GetSearchKeywordsFromSerializedObject(so);
}
}
return s_provider;
}
private SerializedObject _serializedObject;
private SerializedProperty _enable;
2025-05-03 21:43:50 +08:00
private SerializedProperty _toObfuscatedAssemblyNames;
private SerializedProperty _notObfuscatedAssemblyNamesReferencingObfuscated;
private SerializedProperty _extraAssemblySearchDirs;
2025-04-16 23:03:41 +08:00
2025-05-05 09:09:53 +08:00
private SerializedProperty _enabledObfuscationPasses;
private SerializedProperty _symbolObfusSettings;
2025-05-09 19:26:59 +08:00
private SerializedProperty _constEncryptSettings;
2025-05-05 09:09:53 +08:00
2025-04-16 23:03:41 +08:00
public ObfuzSettingsProvider() : base("Project/Obfuz", SettingsScope.Project)
{
}
public override void OnActivate(string searchContext, VisualElement rootElement)
{
InitGUI();
}
2025-05-04 19:24:14 +08:00
public override void OnDeactivate()
{
base.OnDeactivate();
ObfuzSettings.Save();
}
2025-04-16 23:03:41 +08:00
private void InitGUI()
{
var setting = ObfuzSettings.Instance;
_serializedObject?.Dispose();
_serializedObject = new SerializedObject(setting);
_enable = _serializedObject.FindProperty("enable");
2025-05-03 21:43:50 +08:00
_toObfuscatedAssemblyNames = _serializedObject.FindProperty("toObfuscatedAssemblyNames");
_notObfuscatedAssemblyNamesReferencingObfuscated = _serializedObject.FindProperty("notObfuscatedAssemblyNamesReferencingObfuscated");
_extraAssemblySearchDirs = _serializedObject.FindProperty("extraAssemblySearchDirs");
2025-05-05 09:09:53 +08:00
_enabledObfuscationPasses = _serializedObject.FindProperty("enabledObfuscationPasses");
_symbolObfusSettings = _serializedObject.FindProperty("symbolObfusSettings");
2025-05-09 19:26:59 +08:00
_constEncryptSettings = _serializedObject.FindProperty("constEncryptSettings");
2025-04-16 23:03:41 +08:00
}
public override void OnGUI(string searchContext)
{
2025-05-04 19:24:14 +08:00
if (_serializedObject == null||!_serializedObject.targetObject)
2025-04-16 23:03:41 +08:00
{
2025-05-04 19:24:14 +08:00
InitGUI();
2025-04-16 23:03:41 +08:00
}
2025-05-04 19:24:14 +08:00
_serializedObject.Update();
EditorGUI.BeginChangeCheck();
2025-04-16 23:03:41 +08:00
2025-05-04 19:24:14 +08:00
EditorGUILayout.PropertyField(_enable);
EditorGUILayout.PropertyField(_toObfuscatedAssemblyNames);
EditorGUILayout.PropertyField(_notObfuscatedAssemblyNamesReferencingObfuscated);
EditorGUILayout.PropertyField(_extraAssemblySearchDirs);
2025-05-05 09:09:53 +08:00
EditorGUILayout.PropertyField(_enabledObfuscationPasses);
2025-05-08 12:36:06 +08:00
2025-05-05 09:09:53 +08:00
EditorGUILayout.PropertyField(_symbolObfusSettings);
2025-05-09 19:26:59 +08:00
EditorGUILayout.PropertyField(_constEncryptSettings);
2025-05-05 09:09:53 +08:00
2025-04-16 23:03:41 +08:00
2025-05-04 19:24:14 +08:00
if (EditorGUI.EndChangeCheck())
{
_serializedObject.ApplyModifiedProperties();
ObfuzSettings.Save();
}
2025-04-16 23:03:41 +08:00
}
}
}