obfuz/Editor/Settings/ObfuzSettingsProvider.cs

104 lines
3.6 KiB
C#
Raw Permalink 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-12 08:46:44 +08:00
private SerializedProperty _assemblySettings;
private SerializedProperty _obfuscationPassSettings;
private SerializedProperty _secretSettings;
2025-05-11 10:37:42 +08:00
private SerializedProperty _encryptionVMSettings;
2025-05-05 09:09:53 +08:00
private SerializedProperty _symbolObfusSettings;
2025-05-09 19:26:59 +08:00
private SerializedProperty _constEncryptSettings;
2025-05-10 19:50:03 +08:00
private SerializedProperty _fieldEncryptSettings;
2025-05-09 20:18:24 +08:00
private SerializedProperty _callObfusSettings;
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-12 08:46:44 +08:00
_assemblySettings = _serializedObject.FindProperty("assemblySettings");
_obfuscationPassSettings = _serializedObject.FindProperty("obfuscationPassSettings");
_secretSettings = _serializedObject.FindProperty("secretSettings");
2025-05-05 09:09:53 +08:00
2025-05-11 10:37:42 +08:00
_encryptionVMSettings = _serializedObject.FindProperty("encryptionVMSettings");
2025-05-05 09:09:53 +08:00
_symbolObfusSettings = _serializedObject.FindProperty("symbolObfusSettings");
2025-05-09 19:26:59 +08:00
_constEncryptSettings = _serializedObject.FindProperty("constEncryptSettings");
2025-05-10 19:50:03 +08:00
_fieldEncryptSettings = _serializedObject.FindProperty("fieldEncryptSettings");
2025-05-09 20:18:24 +08:00
_callObfusSettings = _serializedObject.FindProperty("callObfusSettings");
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);
2025-05-12 08:46:44 +08:00
EditorGUILayout.PropertyField(_assemblySettings);
EditorGUILayout.PropertyField(_obfuscationPassSettings);
EditorGUILayout.PropertyField(_secretSettings);
2025-05-08 12:36:06 +08:00
2025-05-11 10:37:42 +08:00
EditorGUILayout.PropertyField(_encryptionVMSettings);
2025-05-05 09:09:53 +08:00
EditorGUILayout.PropertyField(_symbolObfusSettings);
2025-05-09 19:26:59 +08:00
EditorGUILayout.PropertyField(_constEncryptSettings);
2025-05-10 19:50:03 +08:00
EditorGUILayout.PropertyField(_fieldEncryptSettings);
2025-05-09 20:18:24 +08:00
EditorGUILayout.PropertyField(_callObfusSettings);
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
}
}
}