From f5f485e1c953d42892dd07fe20e889add4df74a1 Mon Sep 17 00:00:00 2001 From: r Star Date: Mon, 27 Mar 2023 01:43:02 +0800 Subject: [PATCH] feat: check scene is dirty --- .../Editor/BookmarkEverythingEditor.cs | 35 +++++---- ...opertiesEditorWindowDoubleClickListener.cs | 75 ------------------- ...iesEditorWindowDoubleClickListener.cs.meta | 3 - BookmarkEverything/Assets/Samples.meta | 3 + BookmarkEverything/Assets/Samples/SO.asset | 14 ++++ .../Assets/Samples/SO.asset.meta | 8 ++ BookmarkEverything/Assets/Samples/SO.cs | 10 +++ BookmarkEverything/Assets/Samples/SO.cs.meta | 3 + 8 files changed, 55 insertions(+), 96 deletions(-) delete mode 100644 BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs delete mode 100644 BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs.meta create mode 100644 BookmarkEverything/Assets/Samples.meta create mode 100644 BookmarkEverything/Assets/Samples/SO.asset create mode 100644 BookmarkEverything/Assets/Samples/SO.asset.meta create mode 100644 BookmarkEverything/Assets/Samples/SO.cs create mode 100644 BookmarkEverything/Assets/Samples/SO.cs.meta diff --git a/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs b/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs index 8999489..c39a7be 100644 --- a/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs +++ b/BookmarkEverything/Assets/BookmarkEverything/Editor/BookmarkEverythingEditor.cs @@ -7,12 +7,9 @@ using System.Linq; using System.Reflection; using System.Text; -using JD.AssetizerEditor; using UnityEditor; using UnityEditor.SceneManagement; -using UnityEditor.UIElements; using UnityEngine; -using UnityEngine.SceneManagement; using Object = UnityEngine.Object; #endregion @@ -558,19 +555,18 @@ private void DrawInnerSettings() label = "OpenAsProperties"; _controlOpenAsProperties = _openAsProperties; - _openAsProperties = EditorGUILayout.Toggle(label , _openAsProperties); + // _openAsProperties = EditorGUILayout.Toggle(label , _openAsProperties); // if (_controlOpenAsProperties != _openAsProperties) // { // _visualModeChanged = true; // } - Debug.Log($"{_openAsProperties}"); - if (_controlOpenAsProperties != _openAsProperties) - { - _currentSettings.OpenAsProperties = _openAsProperties; - _currentSettings.Save(); - } + // if (_controlOpenAsProperties != _openAsProperties) + // { + // _currentSettings.OpenAsProperties = _openAsProperties; + // _currentSettings.Save(); + // } // label = "Visual Mode(Experimental!) : "; // _controlVisualMode = _visualMode; @@ -687,15 +683,12 @@ private void DrawProjectFinderEntries(string category) Selection.activeObject = asset; if (_openAsProperties) { - OpenPropertiesEditorWindowDoubleClickListener.OpenInPropertyEditor(asset); - } - else - { - var entryIsScene = asset is SceneAsset; - var prefabType = PrefabUtility.GetPrefabType(asset); - if (entryIsScene) SaveSceneDialog(path); - else if (prefabType == PrefabType.Prefab) AssetDatabase.OpenAsset(asset); + // OpenPropertiesEditorWindowDoubleClickListener.OpenInPropertyEditor(asset); } + var entryIsScene = asset is SceneAsset; + var prefabType = PrefabUtility.GetPrefabType(asset); + if (entryIsScene) SaveSceneDialog(path); + else if (prefabType == PrefabType.Prefab) AssetDatabase.OpenAsset(asset); } else OpenDir(path); } @@ -750,6 +743,12 @@ private void DrawProjectFinderEntries(string category) private static void SaveSceneDialog(string scenePath) { + var sceneIsDirty = EditorSceneManager.GetActiveScene().isDirty; + if (sceneIsDirty == false) + { + EditorSceneManager.OpenScene(scenePath , OpenSceneMode.Single); + return; + } var option = EditorUtility.DisplayDialogComplex( "Unsaved scene Changes" , "Do you want to save the changes you made before load new scene?" , diff --git a/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs b/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs deleted file mode 100644 index 2ce9c20..0000000 --- a/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs +++ /dev/null @@ -1,75 +0,0 @@ - -using System.Reflection; -using UnityEditor; -using UnityEditor.Callbacks; -using UnityEngine; - -namespace JD.AssetizerEditor -{ - /// - /// Listens (order 100) for everything except folders. - /// Opens the asset in a new window (like an unchangeable inspector). - /// Forum thread: https://forum.unity.com/threads/alt-p-is-a-godsent.834703/ - /// - public static class OpenPropertiesEditorWindowDoubleClickListener - { - private static MethodInfo openPropertyEditorInfo; - private static System.Type[] callTypes = new[] { typeof(Object), typeof(bool) }; - private static object[] callOpenBuffer = { null, true }; - - /// - /// Listens (order 100) for everything except folders. - /// - /// - /// - /// True if opening the asset is handled - [OnOpenAsset(100)] - private static bool HandleOpenAsset(int instanceID, int line) - { - Object obj = EditorUtility.InstanceIDToObject(instanceID); - if (obj == null) - { - return false; - } - - if (IsFolder(obj)) - { - return false; - } - - return OpenInPropertyEditor(obj); - } - - private static bool IsFolder(Object obj) - { - string assetPath = AssetDatabase.GetAssetPath(obj); - return !string.IsNullOrEmpty(assetPath) && AssetDatabase.IsValidFolder(assetPath); - } - - public static bool OpenInPropertyEditor(Object asset) - { - if (openPropertyEditorInfo == null) - { - System.Type propertyEditorType = typeof(Editor).Assembly.GetType("UnityEditor.PropertyEditor"); - - // Get specific method, since there is an overload starting with Unity 2021.2 - openPropertyEditorInfo = propertyEditorType.GetMethod( - "OpenPropertyEditor", - BindingFlags.Static | BindingFlags.NonPublic, - null, - callTypes, - null); - } - - - if (openPropertyEditorInfo != null) - { - callOpenBuffer[0] = asset; - openPropertyEditorInfo.Invoke(null, callOpenBuffer); - return true; - } - - return false; - } - } -} \ No newline at end of file diff --git a/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs.meta b/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs.meta deleted file mode 100644 index 4b3304f..0000000 --- a/BookmarkEverything/Assets/BookmarkEverything/Editor/OpenPropertiesEditorWindowDoubleClickListener.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 927d56f17947449fbf5a45566ce0ff49 -timeCreated: 1679235964 \ No newline at end of file diff --git a/BookmarkEverything/Assets/Samples.meta b/BookmarkEverything/Assets/Samples.meta new file mode 100644 index 0000000..d4037bd --- /dev/null +++ b/BookmarkEverything/Assets/Samples.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 60a2445611454e13b5ba8582d94e239e +timeCreated: 1679852315 \ No newline at end of file diff --git a/BookmarkEverything/Assets/Samples/SO.asset b/BookmarkEverything/Assets/Samples/SO.asset new file mode 100644 index 0000000..ee3fb5f --- /dev/null +++ b/BookmarkEverything/Assets/Samples/SO.asset @@ -0,0 +1,14 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 66fa9eb72cb841498e13510e0ec7ab87, type: 3} + m_Name: SO + m_EditorClassIdentifier: diff --git a/BookmarkEverything/Assets/Samples/SO.asset.meta b/BookmarkEverything/Assets/Samples/SO.asset.meta new file mode 100644 index 0000000..db6c3d7 --- /dev/null +++ b/BookmarkEverything/Assets/Samples/SO.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 646808570c35bb445bbcff38fd57a9a2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/BookmarkEverything/Assets/Samples/SO.cs b/BookmarkEverything/Assets/Samples/SO.cs new file mode 100644 index 0000000..0335cf6 --- /dev/null +++ b/BookmarkEverything/Assets/Samples/SO.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Samples +{ + [UnityEngine.CreateAssetMenu(fileName = "SO" , menuName = "SO" , order = 0)] + public class SO : ScriptableObject + { + + } +} \ No newline at end of file diff --git a/BookmarkEverything/Assets/Samples/SO.cs.meta b/BookmarkEverything/Assets/Samples/SO.cs.meta new file mode 100644 index 0000000..6cd5fb1 --- /dev/null +++ b/BookmarkEverything/Assets/Samples/SO.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 66fa9eb72cb841498e13510e0ec7ab87 +timeCreated: 1679852322 \ No newline at end of file