| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using UnityEditor;
- using UnityEngine;
- using System;
- using UnityEngine.UIElements;
- using UnityEditor.UIElements;
- using System.IO;
- namespace com.bbbirder.injection.editor
- {
- public class InjectionSettingsWindow : EditorWindow
- {
- const string rootUiAssetGUID = "64949e9c31ce0a04b8aa1a3d01d72ab1";
- const string ElementUiAssetGUID = "e0689cb498ad5f8459d2bee8fd022488";
- [MenuItem("Tools/bbbirder/Unity Injection")]
- public static void ShowWindow()
- {
- var window = GetWindow<InjectionSettingsWindow>();
- window.titleContent = new GUIContent("Unity Injection");
- window.Show();
- }
- // public override void SaveChanges()
- // {
- // base.SaveChanges();
- // DebugHelper.Log("save");
- // }
- void CreateGUI()
- {
- var settings = InjectionSettings.instance;
- settings.hideFlags &= ~HideFlags.NotEditable;
- var uiAsset = GetVisualTreeAssetByGUID(rootUiAssetGUID);
- var uiEleAsset = GetVisualTreeAssetByGUID(ElementUiAssetGUID);
- uiAsset.CloneTree(rootVisualElement);
- var lstSource = rootVisualElement.Q<ListView>("lstSource");
- var lstError = rootVisualElement.Q<ListView>("lstError");
- lstSource.makeItem = uiEleAsset.CloneTree;
- lstSource.bindItem = (v, i) =>
- {
- var data = settings.injectionSources[i];
- v.Q<Label>().text = Path.GetFileName(data.path);
- };
- lstError.makeItem = () => new Label();
- var btnInject = rootVisualElement.Q<Button>("btnInject");
- btnInject.clicked += () =>
- {
- UnityInjectUtils.InjectEditor(AppDomain.CurrentDomain.GetAssemblies());
- };
- var btnInstall = rootVisualElement.Q<Button>("btnInstall");
- btnInstall.clicked += () =>
- {
- FixHelper.InstallAll();
- };
- var serializedObject = new SerializedObject(settings);
- rootVisualElement.Bind(serializedObject);
- rootVisualElement.TrackSerializedObjectValue(serializedObject, so =>
- {
- settings.Save();
- });
- }
- VisualTreeAsset GetVisualTreeAssetByGUID(string guid) =>
- AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(AssetDatabase.GUIDToAssetPath(guid));
- }
- }
|