From 5e258294bfc41597149e14248950a3d8cabb7ec4 Mon Sep 17 00:00:00 2001 From: nakano yosuke Date: Wed, 15 Apr 2020 21:51:14 +0900 Subject: [PATCH] all apply and close --- .../Editor/AsmdefMultiEditWindow.cs | 22 +++++++++++++++++++ .../InspectorWindowWrapper.cs | 17 ++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/Assets/AsmdefHelper/MultipleEdit/Editor/AsmdefMultiEditWindow.cs b/Assets/AsmdefHelper/MultipleEdit/Editor/AsmdefMultiEditWindow.cs index 08912b1..b94c556 100644 --- a/Assets/AsmdefHelper/MultipleEdit/Editor/AsmdefMultiEditWindow.cs +++ b/Assets/AsmdefHelper/MultipleEdit/Editor/AsmdefMultiEditWindow.cs @@ -8,6 +8,8 @@ using UnityEngine; namespace AsmdefHelper.MultipleEdit.Editor { public class AsmdefMultiEditWindow : EditorWindow { + static IList windows = new List(); + [MenuItem("Window/Asmdef Helper/Find all asmdef in project")] public static void Search() { var browser = CreateInstance(); @@ -23,13 +25,33 @@ namespace AsmdefHelper.MultipleEdit.Editor { return; } + CloseWindows(); foreach (var adf in asmdefs) { Selection.objects = new[] { adf }; var w = CreateInstance(); w.GetInspectorWindow(); // LockすることでInspectorWindowの表示を固定する w.Lock(true); + windows.Add(w); } } + + [MenuItem("Window/Asmdef Helper/Apply all asmdef and close")] + public static void Apply() { + foreach (var w in windows) { + w.AllApply(); + w.CloseInspectorWindow(); + } + + windows.Clear(); + } + + static void CloseWindows() { + foreach (var w in windows) { + w.CloseInspectorWindow(); + } + + windows.Clear(); + } } } diff --git a/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/InspectorWindowWrapper.cs b/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/InspectorWindowWrapper.cs index bbaa74d..d74770c 100644 --- a/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/InspectorWindowWrapper.cs +++ b/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/InspectorWindowWrapper.cs @@ -1,4 +1,5 @@ using UnityEditor; +using UnityEditor.Experimental.AssetImporters; namespace AsmdefHelper.UnityInternal { public class InspectorWindowWrapper : EditorWindow{ @@ -13,5 +14,21 @@ namespace AsmdefHelper.UnityInternal { inspectorWindow.isLocked = isLock; } } + + public void AllApply() { + foreach (var editor in inspectorWindow.tracker.activeEditors) { + var assetImporterEditor = editor as AssetImporterEditor; + + if (assetImporterEditor != null && assetImporterEditor.HasModified()) { + assetImporterEditor.ApplyAndImport(); + } + } + } + + public void CloseInspectorWindow() { + if (inspectorWindow != null) { + inspectorWindow.Close(); + } + } } }