├── .gitignore
├── AssetBookmarker-v2.2.unitypackage
├── Assets
├── AssetBookmarker.meta
└── AssetBookmarker
│ ├── CHANGELOG.md
│ ├── CHANGELOG.md.meta
│ ├── Data.meta
│ ├── Data
│ ├── Hierarchy.meta
│ ├── Hierarchy
│ │ ├── BookmarkData.asset
│ │ └── BookmarkData.asset.meta
│ ├── Project.meta
│ └── Project
│ │ ├── BookmarkData.asset
│ │ └── BookmarkData.asset.meta
│ ├── Editor.meta
│ ├── Editor
│ ├── Core.meta
│ ├── Core
│ │ ├── Editor.meta
│ │ └── Editor
│ │ │ ├── BookmarkWindowBase.cs
│ │ │ ├── BookmarkWindowBase.cs.meta
│ │ │ ├── CustomUI.cs
│ │ │ ├── CustomUI.cs.meta
│ │ │ ├── GenericDataGenerator.cs
│ │ │ ├── GenericDataGenerator.cs.meta
│ │ │ ├── MenuConfig.cs
│ │ │ ├── MenuConfig.cs.meta
│ │ │ ├── PackageConfig.cs
│ │ │ └── PackageConfig.cs.meta
│ ├── Hierarchy.meta
│ ├── Hierarchy
│ │ ├── Editor.meta
│ │ └── Editor
│ │ │ ├── GUI.meta
│ │ │ ├── GUI
│ │ │ ├── HierarchyBookmarkWindow.cs
│ │ │ └── HierarchyBookmarkWindow.cs.meta
│ │ │ ├── Model.meta
│ │ │ ├── Model
│ │ │ ├── HierarchyBookmarkData.cs
│ │ │ ├── HierarchyBookmarkData.cs.meta
│ │ │ ├── SearchInfo.cs
│ │ │ └── SearchInfo.cs.meta
│ │ │ ├── Utility.meta
│ │ │ └── Utility
│ │ │ ├── DataLoader.cs
│ │ │ ├── DataLoader.cs.meta
│ │ │ ├── SceneHierarchyAccessor.cs
│ │ │ └── SceneHierarchyAccessor.cs.meta
│ ├── Project.meta
│ ├── Project
│ │ ├── Editor.meta
│ │ └── Editor
│ │ │ ├── GUI.meta
│ │ │ ├── GUI
│ │ │ ├── ProjectBookmarkWindow.cs
│ │ │ └── ProjectBookmarkWindow.cs.meta
│ │ │ ├── Model.meta
│ │ │ ├── Model
│ │ │ ├── ExportConfig.cs
│ │ │ ├── ExportConfig.cs.meta
│ │ │ ├── ProjectBookmarkData.cs
│ │ │ └── ProjectBookmarkData.cs.meta
│ │ │ ├── Utility.meta
│ │ │ └── Utility
│ │ │ ├── DataGenerator.cs
│ │ │ ├── DataGenerator.cs.meta
│ │ │ ├── DataLoader.cs
│ │ │ └── DataLoader.cs.meta
│ ├── asset-bookmarker.asmdef
│ └── asset-bookmarker.asmdef.meta
│ ├── LICENSE.md
│ ├── LICENSE.md.meta
│ ├── package.json
│ └── package.json.meta
├── Demo
├── 1.png
├── 2.png
├── 3.png
├── hierarchy.gif
├── hierarchy_1.png
├── hierarchy_2.png
└── hierarchy_3.png
├── Packages
└── manifest.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── NavMeshProjectSettings.asset
├── NetworkManager.asset
├── Physics2DSettings.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── TagManager.asset
├── TimeManager.asset
└── UnityConnectSettings.asset
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # =============== #
2 | # Unity generated #
3 | # =============== #
4 | Temp/
5 | Obj/
6 | UnityGenerated/
7 | Library/
8 |
9 | # ===================================== #
10 | # Visual Studio / MonoDevelop generated #
11 | # ===================================== #
12 | ExportedObj/
13 | *.svd
14 | *.userprefs
15 | *.csproj
16 | *.pidb
17 | *.suo
18 | *.sln
19 | *.user
20 | *.unityproj
21 | *.booproj
22 |
23 | # ============ #
24 | # OS generated #
25 | # ============ #
26 | .DS_Store
27 | .DS_Store?
28 | ._*
29 | .Spotlight-V100
30 | .Trashes
31 | Icon?
32 | ehthumbs.db
33 | Thumbs.db
34 |
35 | # ============ #
36 | # for others #
37 | # ============ #
38 |
39 | *.log #log files, for some plugins
40 | *.pyc #python bytecode cache, for some plugins.
41 | sysinfo.txt #Unity3D Generated File On Crash Reports
42 | .idea/
43 |
--------------------------------------------------------------------------------
/AssetBookmarker-v2.2.unitypackage:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rngtm/Unity-AssetBookmarker/a4e37c087399ddaf412ff17016b2ddaea563d676/AssetBookmarker-v2.2.unitypackage
--------------------------------------------------------------------------------
/Assets/AssetBookmarker.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 89a6a6164d36a4944ba824a3f38a1234
3 | folderAsset: yes
4 | timeCreated: 1479721422
5 | licenseType: Pro
6 | DefaultImporter:
7 | externalObjects: {}
8 | userData:
9 | assetBundleName:
10 | assetBundleVariant:
11 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## [1.0.1] - 2021-01-04
2 | ### Changes
3 | Bug fix in creating new BookmarkData asset.
4 |
5 | ## [1.0.0] - 2021-01-04
6 | ### This is the first release of *Unity Package asset-bookmarker*.
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/CHANGELOG.md.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 31c21d615b11d494894bd20572cb8abd
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ed0e0ddc80e08864b9ed2cbdf56deffd
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Hierarchy.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 730f7ed94ee7c1f4391dc50784af8f5e
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Hierarchy/BookmarkData.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 6231513db8392574c96c2b2c4d631fb1, type: 3}
13 | m_Name: BookmarkData
14 | m_EditorClassIdentifier:
15 | searchInfos:
16 | - Text:
17 | - Text: Directional Light
18 | - Text: Main Camera
19 | - Text: Directional Light
20 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Hierarchy/BookmarkData.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f258d4e8592efc54b9181a599b954a05
3 | timeCreated: 1481854645
4 | licenseType: Pro
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Project.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 18e1fb59039a211488b284d40b017e53
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Project/BookmarkData.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: ebaec9793b4213149a18625e9618e232, type: 3}
13 | m_Name: BookmarkData
14 | m_EditorClassIdentifier:
15 | assets:
16 | - {fileID: 102900000, guid: 49110bb8dcada46328ad741970bce702, type: 3}
17 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Data/Project/BookmarkData.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4c83ba0f3b8b54a4b98c48c7aba57dfe
3 | timeCreated: 1482403750
4 | licenseType: Pro
5 | NativeFormatImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1e44bf09b6dd97f4a89835765825509d
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a8fdf65414e4c8345a8c66a1d74a12f4
3 | folderAsset: yes
4 | timeCreated: 1481938077
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f597ef62db6b4e6458424fdbb8f822e4
3 | folderAsset: yes
4 | timeCreated: 1481938529
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/BookmarkWindowBase.cs:
--------------------------------------------------------------------------------
1 | using UnityEditor;
2 |
3 | namespace AssetBookmarker
4 | {
5 | ///
6 | /// ウィンドウの基底クラス
7 | ///
8 | public abstract class BookmarkWindowBase : EditorWindow
9 | {
10 | private void OnEnable()
11 | {
12 | PackageConfig.CheckInstall();
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/BookmarkWindowBase.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 123293cd93134d69b090a0db13d281dd
3 | timeCreated: 1609749542
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/CustomUI.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker
6 | {
7 | using UnityEngine;
8 |
9 | public class CustomUI
10 | {
11 | private static GUIStyle _versionLabelStyle;
12 |
13 | private static GUIStyle VersionLabelStyle { get { return _versionLabelStyle ?? (_versionLabelStyle = CreateVersionLabelStyle()); } }
14 |
15 | public static void VersionLabel()
16 | {
17 | GUI.Label(new Rect(-2, Screen.height - 72, Screen.width, 50), MenuConfig.VERSION_TEXT, VersionLabelStyle);
18 | }
19 |
20 | private static GUIStyle CreateVersionLabelStyle()
21 | {
22 | var style = new GUIStyle(GUI.skin.GetStyle("Label"));
23 | var color = new Color(style.normal.textColor.r, style.normal.textColor.g, style.normal.textColor.b, 0.4f);
24 |
25 | style.alignment = TextAnchor.LowerRight;
26 | style.normal.textColor = color;
27 |
28 | return style;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/CustomUI.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 67b6cae1c1c751d4ba81d348150d51f3
3 | timeCreated: 1480722234
4 | licenseType: Free
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/GenericDataGenerator.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 |
6 | using System.Runtime.CompilerServices;
7 | using AssetBookmarker.Project;
8 |
9 | namespace AssetBookmarker
10 | {
11 | using System.IO;
12 | using UnityEngine;
13 | using UnityEditor;
14 |
15 | ///
16 | /// ファイルの作成を行うクラス
17 | ///
18 | public static class GenericDataGenerator
19 | {
20 | ///
21 | /// データ作成(Projectウィンドウで名前入力)
22 | ///
23 | public static T CreateData(string dataName) where T : ScriptableObject
24 | {
25 | var directory = ExportConfig.GetDataExportDirectory();
26 | var path = directory + "/" + dataName + ".asset";
27 | Debug.Log(path);
28 | var instance = ScriptableObject.CreateInstance();
29 | ProjectWindowUtil.CreateAsset(instance, path);
30 |
31 | return instance;
32 | }
33 |
34 | public static T CreateDataInProject(string dataName) where T : ScriptableObject
35 | {
36 | T instance = null;
37 | string path = EditorUtility.SaveFilePanelInProject("New BookmarkData", dataName + ".asset", "asset", "Create New Bookmark Data");
38 | if (!string.IsNullOrEmpty(path))
39 | {
40 | instance = ScriptableObject.CreateInstance();
41 | AssetDatabase.CreateAsset(instance, path);
42 | EditorGUIUtility.PingObject(instance);
43 | }
44 | return instance;
45 | }
46 |
47 | ///
48 | /// データ作成(名前入力無しですぐに作成)
49 | ///
50 | public static T CreateDataImmediately(string dataName) where T : ScriptableObject
51 | {
52 | // return CreateDataImmediately_Project(rootFolderName, saveFolderRelativePath, dataName);
53 | var directory = ExportConfig.GetDataExportDirectory();
54 | var path = Path.Combine(directory, dataName + ".asset");
55 | path = AssetDatabase.GenerateUniqueAssetPath(path);
56 |
57 | var instance = ScriptableObject.CreateInstance();
58 | Debug.Log("Create: " + path, instance);
59 |
60 | AssetDatabase.CreateAsset(instance, path);
61 |
62 | EditorGUIUtility.PingObject(instance);
63 |
64 | return instance;
65 | }
66 |
67 | // ///
68 | // /// Projectディレクトリ以下へのデータ作成(名前入力無しですぐに作成)
69 | // ///
70 | // private static T CreateDataImmediately_Project(string rootFolderName, string saveFolderRelativePath, string dataName) where T : ScriptableObject
71 | // {
72 | // var guid = AssetDatabase.FindAssets(rootFolderName)[0];
73 | // var rootDirectory = AssetDatabase.GUIDToAssetPath(guid);
74 | // var directory = Path.Combine(rootDirectory, saveFolderRelativePath);
75 | // if (string.IsNullOrEmpty(rootDirectory))
76 | // {
77 | // directory = "Assets";
78 | // }
79 | //
80 | // var name = dataName + ".asset";
81 | // var path = Path.Combine(directory, name);
82 | // var instance = ScriptableObject.CreateInstance();
83 | // AssetDatabase.CreateAsset(instance, path);
84 | // Debug.Log("Create: " + path, instance);
85 | //
86 | // return instance;
87 | // }
88 | //
89 | // ///
90 | // /// Packageディレクトリ以下へのデータ作成
91 | // ///
92 | // private static T CreateDataImmediately_Package(string rootFolderName, string saveFolderRelativePath, string dataName) where T : ScriptableObject
93 | // {
94 | // var guid = AssetDatabase.FindAssets(rootFolderName)[0];
95 | // var rootDirectory = AssetDatabase.GUIDToAssetPath(guid);
96 | // var directory = Path.Combine(rootDirectory, saveFolderRelativePath);
97 | // if (string.IsNullOrEmpty(rootDirectory))
98 | // {
99 | // directory = "Assets";
100 | // }
101 | //
102 | // var name = dataName + ".asset";
103 | // var path = Path.Combine(directory, name);
104 | // var instance = ScriptableObject.CreateInstance();
105 | // AssetDatabase.CreateAsset(instance, path);
106 | // Debug.Log("Create: " + path, instance);
107 | //
108 | // return instance;
109 | // }
110 | }
111 | }
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/GenericDataGenerator.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a43841a547557004494a0e369af4cb45
3 | timeCreated: 1482399352
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/MenuConfig.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker
6 | {
7 | ///
8 | /// 設定
9 | ///
10 | public static class MenuConfig
11 | {
12 | // バージョン情報
13 | public const string VERSION_TEXT = "Asset Bookmarker v1.0.1";
14 |
15 | // Toolメニュー ルート
16 | public const string TOOL_MENU_ROOT = "Tools/Asset Bookmarker/Test/";
17 |
18 | // Menuテキスト
19 | public const string TOOL_MENU_TEXT_OPEN_BOOKMARK_PROJECT = "Tools/Asset Bookmarker/Assets";
20 | public const string GUI_MENU_TEXT_OPEN_BOOKMARK_HIERARCHY = "Tools/Asset Bookmarker/Hierarchy";
21 | public const string GUI_MENU_TEXT_REGISTER_PROJECT = "Assets/Add to bookmark list";
22 | public const string GUI_MENU_TEXT_REGISTER_HIERARCHY = "GameObject/Add to bookmark list...";
23 |
24 | // ウィンドウ内のGUIテキスト (Project Bookmark Window)
25 | public const string GUI_WINDOW_PROJECT_TEXT_TITLE = "Asset Bookmarker";
26 | public const string GUI_WINDOW_PROJECT_TEXT_OVERVIEW = "ブックマークしたアセット一覧を表示します";
27 | public const string GUI_WINDOW_PROJECT_TEXT_LIST_HEADER = "Asset Bookmarks";
28 | public const string GUI_WINDOW_PROJECT_TEXT_ASSET_REMOVE_BUTTON = "-";
29 |
30 | // ウィンドウ内のGUIテキスト (Hierarchy Bookmark Window)
31 | public const string GUI_WINDOW_HIERARCHY_TEXT_TITLE = "Asset Bookmarker";
32 | public const string GUI_WINDOW_HIERARCHY_TEXT_OVERVIEW = "ヒエラルキーの検索文字列一覧を表示します";
33 | public const string GUI_WINDOW_HIERARCHY_TEXT_LIST_HEADER = "Hierarchy Search Filters";
34 | public const string GUI_WINDOW_HIERARCHY_TEXT_FILTER_APPLY_BUTTON = "Apply";
35 | public const string GUI_WINDOW_HIERARCHY_TEXT_FILTER_REMOVE_BUTTON = "-";
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/MenuConfig.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 0fcd43dbee4d5224b8aef71ecb802e3c
3 | timeCreated: 1481857764
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/PackageConfig.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using UnityEditor;
3 | using UnityEditor.Callbacks;
4 | using UnityEditor.PackageManager;
5 | using UnityEditor.PackageManager.Requests;
6 | using UnityEngine;
7 |
8 | namespace AssetBookmarker
9 | {
10 | public static class PackageConfig
11 | {
12 | public const string PackageName = "com.rngtm.asset-bookmarker";
13 | private static bool isInstallInstallPackage = false;
14 | private static ListRequest Request;
15 | private static bool isDebugLog = false;
16 |
17 | public static string GetPackagePath(string path) => $"Packages/{PackageName}/{path}";
18 | public static bool IsInstallPackage => isInstallInstallPackage;
19 |
20 | [MenuItem(MenuConfig.TOOL_MENU_ROOT + "Check Package Installation", priority = 100)]
21 | static void CheckInstallDebug()
22 | {
23 | isDebugLog = true;
24 | CheckInstall();
25 | }
26 |
27 | [MenuItem(MenuConfig.TOOL_MENU_ROOT + "Test Path", priority = 100)]
28 | static void CheckPackagePath()
29 | {
30 | UnityEngine.Debug.Log(GetPackagePath("DataPath"));
31 | }
32 |
33 | [DidReloadScripts]
34 | public static void CheckInstall()
35 | {
36 | Request = Client.List();
37 | EditorApplication.update += Progress;
38 | }
39 |
40 | static void Progress()
41 | {
42 | if (Request.IsCompleted)
43 | {
44 | if (Request.Status == StatusCode.Success)
45 | {
46 | if (Request.Result.Select(q => q.name).Contains(PackageName))
47 | {
48 | if (isDebugLog)
49 | Debug.Log($"Is Install : {PackageName}");
50 | isInstallInstallPackage = true;
51 | }
52 | else
53 | {
54 | if (isDebugLog)
55 | Debug.Log($"Is Not Install : {PackageName}");
56 | isInstallInstallPackage = false;
57 | }
58 | }
59 | else if (Request.Status >= StatusCode.Failure)
60 | {
61 | Debug.Log(Request.Error.message);
62 | }
63 |
64 | EditorApplication.update -= Progress;
65 | isDebugLog = false;
66 | }
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Core/Editor/PackageConfig.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 496f0bf57baf2754db533a45082f0cc3
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7f77764886db52f4699648a452091338
3 | folderAsset: yes
4 | timeCreated: 1481935798
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8788de041e97ccd4d80f49d807fa421b
3 | folderAsset: yes
4 | timeCreated: 1481851167
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/GUI.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 54e19a8efeee0164cbf51a0aa0e48d66
3 | folderAsset: yes
4 | timeCreated: 1481851201
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/GUI/HierarchyBookmarkWindow.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Hierarchy
6 | {
7 | using System.Linq;
8 | using UnityEngine;
9 | using UnityEditor;
10 | using UnityEditorInternal;
11 |
12 | ///
13 | /// メインのウィンドウ
14 | ///
15 | public class HierarchyBookmarkWindow : BookmarkWindowBase
16 | {
17 | private HierarchyBookmarkData bookmarkData;
18 |
19 | ///
20 | /// 検索用テキスト表示用のReorderableList
21 | ///
22 | private ReorderableList searchInfoList;
23 |
24 | private Vector2 scrollPosition = Vector2.zero;
25 |
26 | ///
27 | /// ウィンドウ描画処理
28 | ///
29 | void OnGUI()
30 | {
31 | if (this.bookmarkData == null)
32 | {
33 | this.bookmarkData = DataLoader.LoadData();
34 | }
35 |
36 | this.scrollPosition = EditorGUILayout.BeginScrollView(this.scrollPosition);
37 |
38 | if (this.searchInfoList == null)
39 | {
40 | this.RebuildSearchInfoList();
41 | }
42 |
43 | EditorGUILayout.LabelField(MenuConfig.GUI_WINDOW_HIERARCHY_TEXT_OVERVIEW);
44 |
45 | this.searchInfoList.DoLayoutList();
46 | EditorGUILayout.EndScrollView();
47 |
48 | CustomUI.VersionLabel();
49 | }
50 |
51 | ///
52 | /// ReorderableList作成
53 | ///
54 | private void RebuildSearchInfoList()
55 | {
56 | this.searchInfoList = this.CreateSearchInfoList();
57 | }
58 |
59 | ///
60 | /// ReorderableList作成
61 | ///
62 | private ReorderableList CreateSearchInfoList()
63 | {
64 | var reorderableList = new ReorderableList(this.bookmarkData.SearchInfos, typeof(SearchInfo));
65 |
66 | // ヘッダー描画
67 | var headerRect = default(Rect);
68 | reorderableList.drawHeaderCallback = (rect) =>
69 | {
70 | headerRect = rect;
71 | EditorGUI.LabelField(rect, MenuConfig.GUI_WINDOW_HIERARCHY_TEXT_LIST_HEADER);
72 | };
73 |
74 | // フッター描画
75 | reorderableList.drawFooterCallback = (rect) =>
76 | {
77 | rect.y = headerRect.y + 3;
78 | ReorderableList.defaultBehaviours.DrawFooter(rect, reorderableList);
79 | };
80 |
81 | // 要素の描画
82 | reorderableList.drawElementCallback = (rect, index, isActive, isFocused) =>
83 | {
84 | rect.height -= 6f;
85 | rect.y += 3f;
86 |
87 | const float space = 4f;
88 | const float removeButtonWidth = 19f;
89 |
90 | var selectButtonRect = new Rect(rect);
91 | selectButtonRect.width = 42f;
92 |
93 | var textRect = new Rect(rect);
94 | textRect.width -= selectButtonRect.width + removeButtonWidth + space;
95 | textRect.x = selectButtonRect.x + selectButtonRect.width + space;
96 |
97 | var removeButtonRect = new Rect(rect);
98 | removeButtonRect.width = removeButtonWidth;
99 | removeButtonRect.height -= 1f;
100 | removeButtonRect.x = textRect.x + textRect.width + 2;
101 |
102 | // Apply Button
103 | if (GUI.Button(selectButtonRect, MenuConfig.GUI_WINDOW_HIERARCHY_TEXT_FILTER_APPLY_BUTTON, EditorStyles.miniButton))
104 | {
105 | var data = (SearchInfo)reorderableList.list[index];
106 | SceneHierarchyAccessor.SetSearchFilter(data.Text);
107 |
108 | if (!string.IsNullOrEmpty(data.Text))
109 | {
110 | SceneHierarchyAccessor.SelectTop();
111 | }
112 | }
113 |
114 | // Remove Button
115 | if (GUI.Button(removeButtonRect, MenuConfig.GUI_WINDOW_HIERARCHY_TEXT_FILTER_REMOVE_BUTTON))
116 | {
117 | this.DoRemoveButton(index);
118 | }
119 |
120 | EditorGUI.BeginChangeCheck();
121 | var text = EditorGUI.TextField(textRect, this.bookmarkData.SearchInfos[index].Text);
122 | if (EditorGUI.EndChangeCheck())
123 | {
124 | this.bookmarkData.SearchInfos[index].Text = text;
125 | EditorUtility.SetDirty(this.bookmarkData);
126 | }
127 | };
128 |
129 | reorderableList.drawElementBackgroundCallback = (rect, index, isActive, isFocused) => { };
130 |
131 | return reorderableList;
132 | }
133 |
134 | ///
135 | /// リストの要素を削除
136 | ///
137 | private void DoRemoveButton(int index)
138 | {
139 | EditorApplication.delayCall += () =>
140 | {
141 | this.bookmarkData.SearchInfos.RemoveAt(index);
142 | this.Repaint();
143 | EditorUtility.SetDirty(this.bookmarkData);
144 | };
145 | }
146 |
147 | ///
148 | /// ウィンドウを開く
149 | ///
150 | [MenuItem(MenuConfig.GUI_MENU_TEXT_OPEN_BOOKMARK_HIERARCHY)]
151 | static void Open()
152 | {
153 | var window = GetWindow();
154 | window.titleContent.text = MenuConfig.GUI_WINDOW_HIERARCHY_TEXT_TITLE;
155 | window.Repaint();
156 | }
157 |
158 | ///
159 | /// 選択オブジェクトを登録
160 | ///
161 | [MenuItem(MenuConfig.GUI_MENU_TEXT_REGISTER_HIERARCHY, false, 12)]
162 | static void RegisterSelectionToPalette()
163 | {
164 | var data = DataLoader.LoadData();
165 | data.SearchInfos.AddRange(
166 | Selection.gameObjects.Select(go => new SearchInfo { Text = go.name })
167 | );
168 | EditorUtility.SetDirty(data);
169 | Open();
170 | }
171 |
172 | ///
173 | /// RegisterSelectionToPaletteのValidateメソッド
174 | ///
175 | [MenuItem(MenuConfig.GUI_MENU_TEXT_REGISTER_HIERARCHY, true)]
176 | static bool ValidateAddSelectionToPalette()
177 | {
178 | return Selection.activeObject != null && !AssetDatabase.IsMainAsset(Selection.activeObject);
179 | }
180 |
181 | }
182 | }
183 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/GUI/HierarchyBookmarkWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fa04565616956ef43ae7f144a5f4ba7f
3 | timeCreated: 1481851259
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Model.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3d5545d0b16e16242952a4a4214eb13f
3 | folderAsset: yes
4 | timeCreated: 1481851201
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Model/HierarchyBookmarkData.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Hierarchy
6 | {
7 | using UnityEngine;
8 | using System.Collections.Generic;
9 |
10 | ///
11 | /// ブックマーク情報
12 | ///
13 | public class HierarchyBookmarkData : ScriptableObject
14 | {
15 | [SerializeField] private List searchInfos = new List();
16 |
17 | ///
18 | /// 検索情報
19 | ///
20 | public List SearchInfos { get { return this.searchInfos; } }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Model/HierarchyBookmarkData.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6231513db8392574c96c2b2c4d631fb1
3 | timeCreated: 1481854629
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Model/SearchInfo.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Hierarchy
6 | {
7 | using System;
8 |
9 | ///
10 | /// 検索用情報
11 | ///
12 | [SerializableAttribute]
13 | public class SearchInfo
14 | {
15 | public string Text;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Model/SearchInfo.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: df4e050ddf4c74c4b88a6c0fce8f2813
3 | timeCreated: 1481851259
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Utility.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5e5b90a19b7477b469fda586891eb981
3 | folderAsset: yes
4 | timeCreated: 1481851201
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Utility/DataLoader.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Hierarchy
6 | {
7 | using System.Linq;
8 | using UnityEditor;
9 |
10 | ///
11 | /// データのロードを行うクラス
12 | ///
13 | public class DataLoader
14 | {
15 | ///
16 | /// データのロード
17 | ///
18 | public static HierarchyBookmarkData LoadData()
19 | {
20 | return AssetDatabase.FindAssets("t:ScriptableObject")
21 | .Select(guid => AssetDatabase.GUIDToAssetPath(guid))
22 | .Select(path => AssetDatabase.LoadAssetAtPath(path, typeof(HierarchyBookmarkData)))
23 | .Where(obj => obj != null)
24 | .Select(obj => (HierarchyBookmarkData)obj)
25 | .FirstOrDefault();
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Utility/DataLoader.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 98a82a2a7559e8747959d932d8c018e2
3 | timeCreated: 1481851259
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Utility/SceneHierarchyAccessor.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Hierarchy
6 | {
7 | using System.Collections.Generic;
8 | using System.Reflection;
9 | using UnityEngine;
10 | using UnityEditor;
11 | using UnityEditor.IMGUI.Controls;
12 |
13 | ///
14 | /// SceneHierarchyWindowへのアクセスを行うクラス
15 | ///
16 | public class SceneHierarchyAccessor
17 | {
18 | ///
19 | /// Hierarchyの検索ボックスの文字列を設定
20 | ///
21 | /// 検索文字列
22 | public static void SetSearchFilter(string filter)
23 | {
24 | // Hierarchyウィンドウ取得
25 | var asm = Assembly.Load("UnityEditor.dll");
26 | var typeWindow = asm.GetType("UnityEditor.SceneHierarchyWindow");
27 | var window = EditorWindow.GetWindow(typeWindow);
28 |
29 | // 検索ボックスの文字列を設定
30 | var mode = (SearchableEditorWindow.SearchMode)typeWindow.GetField("m_SearchMode", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(window);
31 | var setAll = false;
32 | #if UNITY_2018_3_OR_NEWER
33 | var delayed = false;
34 | typeWindow
35 | .GetMethod("SetSearchFilter", BindingFlags.Instance | BindingFlags.NonPublic)
36 | .Invoke(window, new object[] { filter, mode, setAll, delayed });
37 | #else
38 | typeWindow
39 | .GetMethod("SetSearchFilter", BindingFlags.Instance | BindingFlags.NonPublic)
40 | .Invoke(window, new object[] { filter, mode, setAll });
41 | #endif
42 |
43 | }
44 |
45 | ///
46 | /// Hierarchyで一番上にある項目を選択
47 | ///
48 | public static void SelectTop()
49 | {
50 | var rows = GetRows();
51 | if (rows.Count < 2) { return; }
52 |
53 | var gameObject = (GameObject)EditorUtility.InstanceIDToObject(rows[1].id);
54 | Selection.activeGameObject = gameObject;
55 | }
56 |
57 | ///
58 | /// ヒエラルキーウィンドウ上の項目の一覧取得
59 | ///
60 | public static IList GetRows()
61 | {
62 | #if UNITY_2018_3_OR_NEWER
63 | return GetRows_UNITY_2018_3_OR_NEWER();
64 | #else
65 | return GetRows_OLD();
66 | #endif
67 | }
68 |
69 | ///
70 | /// ヒエラルキーウィンドウ上の項目の一覧取得
71 | ///
72 | public static IList GetRows_UNITY_2018_3_OR_NEWER()
73 | {
74 | // private SceneHierarchy m_SceneHierarchy;
75 |
76 | // Hierarchyウィンドウ取得
77 | var asm = Assembly.Load("UnityEditor.dll");
78 | var typeWindow = asm.GetType("UnityEditor.SceneHierarchyWindow");
79 | var window = EditorWindow.GetWindow(typeWindow);
80 |
81 | // Get : SceneHierarchyWindow.m_SceneHierarchy
82 | var sceneHierarchy = typeWindow
83 | .GetField("m_SceneHierarchy", BindingFlags.Instance | BindingFlags.NonPublic)
84 | .GetValue(window);
85 |
86 | // Get : m_SceneHierarchy.m_TreeView
87 | var m_TreeView = sceneHierarchy.GetType()
88 | .GetField("m_TreeView", BindingFlags.Instance | BindingFlags.NonPublic)
89 | .GetValue(sceneHierarchy);
90 |
91 | // Get : m_TreeView.data
92 | var data = m_TreeView.GetType()
93 | .GetProperty("data", BindingFlags.Instance | BindingFlags.Public)
94 | .GetValue(m_TreeView, null);
95 |
96 | // Invoke : TreeViewController.GetRows()
97 | return (IList)data.GetType()
98 | .GetMethod("GetRows", BindingFlags.Instance | BindingFlags.Public)
99 | .Invoke(data, null);
100 | }
101 |
102 | ///
103 | /// ヒエラルキーウィンドウ上の項目の一覧取得
104 | ///
105 | public static IList GetRows_OLD()
106 | {
107 | // Hierarchyウィンドウ取得
108 | var asm = Assembly.Load("UnityEditor.dll");
109 | var typeWindow = asm.GetType("UnityEditor.SceneHierarchyWindow");
110 | var window = EditorWindow.GetWindow(typeWindow);
111 |
112 | // GetRows実行
113 | var m_TreeView = typeWindow.GetField("m_TreeView", BindingFlags.Instance | BindingFlags.NonPublic)
114 | .GetValue(window);
115 | var data = m_TreeView.GetType().GetProperty("data", BindingFlags.Instance | BindingFlags.Public)
116 | .GetValue(m_TreeView, null);
117 | return (IList)data.GetType().GetMethod("GetRows", BindingFlags.Instance | BindingFlags.Public)
118 | .Invoke(data, null);
119 | }
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Hierarchy/Editor/Utility/SceneHierarchyAccessor.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c2d2d0638ea34ab40801a42881bbca40
3 | timeCreated: 1481851259
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a68c8c1fe2f6b154b93c42d8127c44df
3 | folderAsset: yes
4 | timeCreated: 1481936212
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: c57de66768e62eb46b8a29e1e2eee480
3 | folderAsset: yes
4 | timeCreated: 1479715494
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/GUI.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dc25fb703685f124eb729449c658fed7
3 | folderAsset: yes
4 | timeCreated: 1481936245
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/GUI/ProjectBookmarkWindow.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Project
6 | {
7 | using System.Linq;
8 | using UnityEngine;
9 | using UnityEditor;
10 | using UnityEditor.Callbacks;
11 | using UnityEditorInternal;
12 |
13 | ///
14 | /// ブックマークの管理を行うウィンドウ
15 | ///
16 | public class ProjectBookmarkWindow : BookmarkWindowBase
17 | {
18 | ///
19 | /// Label領域の大きさ
20 | ///
21 | private const float LabelWidth = 68f;
22 |
23 | ///
24 | /// ボタンの大きさ
25 | ///
26 | private const float ButtonWidth = 46f;
27 |
28 | ///
29 | /// ポップアップ表示用の文字列
30 | ///
31 | private string[] popupDisplayedOptions;
32 |
33 | ///
34 | /// Bookmark表示用のReorderableList
35 | ///
36 | private ReorderableList bookmarkList;
37 |
38 | ///
39 | /// 現在選択しているブックマーク
40 | ///
41 | [SerializeField] private int currentBookmarkIndex = 0;
42 |
43 | ///
44 | /// 現在選択しているブックマークデータ名
45 | ///
46 | [SerializeField] private string currentBookmarkName;
47 |
48 | ///
49 | /// ブックマーク情報
50 | ///
51 | private ProjectBookmarkData[] bookmarkDatas;
52 |
53 | private static EditorWindow window;
54 | private static bool needReloadData = false;
55 | private static Object[] willRegisterAssets = null;
56 |
57 | ///
58 | /// アセットのロード時に呼ばれる
59 | ///
60 | [DidReloadScripts]
61 | [InitializeOnLoadMethodAttribute]
62 | public static void OnLoadAssets()
63 | {
64 | needReloadData = true;
65 | }
66 |
67 | ///
68 | /// ウィンドウの描画処理
69 | ///
70 | private void OnGUI()
71 | {
72 | if (window == null)
73 | {
74 | window = this;
75 | }
76 |
77 | if (needReloadData)
78 | {
79 | needReloadData = false;
80 | this.ReloadDatas();
81 | }
82 |
83 | if (bookmarkDatas == null)
84 | {
85 | this.ReloadDatas();
86 | }
87 |
88 | if (this.bookmarkList == null)
89 | {
90 | this.RebuildBookmarkList();
91 | }
92 |
93 | if (willRegisterAssets != null)
94 | {
95 | var data = this.bookmarkDatas[this.currentBookmarkIndex];
96 | data.Assets.AddRange(willRegisterAssets);
97 | EditorUtility.SetDirty(data);
98 | willRegisterAssets = null;
99 | }
100 |
101 | EditorGUILayout.LabelField(MenuConfig.GUI_WINDOW_PROJECT_TEXT_OVERVIEW);
102 | EditorGUILayout.BeginHorizontal();
103 | EditorGUI.BeginChangeCheck();
104 | EditorGUILayout.LabelField("Bookmark", GUILayout.Width(LabelWidth));
105 | int index = EditorGUILayout.Popup(this.currentBookmarkIndex, this.popupDisplayedOptions);
106 | if (EditorGUI.EndChangeCheck())
107 | {
108 | if (index < bookmarkDatas.Length)
109 | {
110 | this.currentBookmarkIndex = index;
111 | this.currentBookmarkName = this.bookmarkDatas[this.currentBookmarkIndex].name;
112 | this.RebuildBookmarkList();
113 | }
114 | else // New... を選択した場合
115 | {
116 | // DataGenerator.CreateBookmarkData();
117 | // DataGenerator.CreateBookmarkDataImmediately();
118 |
119 | var instance = GenericDataGenerator.CreateDataInProject(ExportConfig.DefaultAssetName);
120 | if (instance != null)
121 | {
122 | this.ReloadDatas();
123 | this.RebuildBookmarkList();
124 | }
125 | }
126 | }
127 | if (GUILayout.Button("Select", EditorStyles.miniButton, GUILayout.Width(ButtonWidth)))
128 | {
129 | EditorGUIUtility.PingObject(bookmarkDatas[this.currentBookmarkIndex]);
130 | }
131 | EditorGUILayout.EndHorizontal();
132 |
133 | this.bookmarkList.DoLayoutList();
134 |
135 | CustomUI.VersionLabel();
136 | }
137 |
138 | ///
139 | /// ReorderableListを作成する
140 | ///
141 | private void RebuildBookmarkList()
142 | {
143 | this.bookmarkList = CreateBookmarkList(bookmarkDatas[this.currentBookmarkIndex]);
144 | }
145 |
146 | ///
147 | /// データのリロード
148 | ///
149 | private void ReloadDatas()
150 | {
151 | this.bookmarkDatas = DataLoader.LoadData();
152 | if (this.bookmarkDatas.Length == 0)
153 | {
154 | Debug.LogWarning("bookmark not found");
155 | DataGenerator.CreateBookmarkDataImmediately();
156 | this.bookmarkDatas = DataLoader.LoadData();
157 | this.RebuildBookmarkList();
158 | }
159 |
160 | this.popupDisplayedOptions = this.bookmarkDatas
161 | .Select(b => b.name)
162 | .Concat(new[] { "", "New..." }).ToArray();
163 |
164 | var selection = this.bookmarkDatas
165 | .Select((d,i) => new { Data = d, Index = i })
166 | .FirstOrDefault(item => item.Data.name == this.currentBookmarkName);
167 |
168 | if (selection != null)
169 | {
170 | this.currentBookmarkIndex = selection.Index;
171 | }
172 | else
173 | {
174 | // 直前に選択していたブックマークが見つからなかった場合は選択リセット
175 | this.currentBookmarkIndex = 0;
176 | }
177 |
178 | this.currentBookmarkName = this.bookmarkDatas[this.currentBookmarkIndex].name;
179 | }
180 |
181 | ///
182 | /// ReorderableListを作成する
183 | ///
184 | static private ReorderableList CreateBookmarkList(ProjectBookmarkData bookmarkData)
185 | {
186 | var list = new ReorderableList(bookmarkData.Assets, typeof(Object));
187 |
188 | // ヘッダー描画
189 | var headerRect = default(Rect);
190 | list.drawHeaderCallback = (rect) =>
191 | {
192 | headerRect = rect;
193 | EditorGUI.LabelField(rect, MenuConfig.GUI_WINDOW_PROJECT_TEXT_LIST_HEADER);
194 | };
195 |
196 | // フッター描画
197 | list.drawFooterCallback = (rect) =>
198 | {
199 | rect.y = headerRect.y + 3;
200 | ReorderableList.defaultBehaviours.DrawFooter(rect, list);
201 | };
202 |
203 | // 要素の描画
204 | list.drawElementCallback = (rect, index, isActive, isFocused) =>
205 | {
206 | rect.y += 1;
207 | rect.height -= 4;
208 |
209 | var labelRect = new Rect(rect);
210 | labelRect.width = 13f;
211 |
212 | var buttonRect = new Rect(rect);
213 | buttonRect.x += labelRect.width + 8f;
214 | buttonRect.width = 20f;
215 | buttonRect.y += 1f;
216 | buttonRect.height -= 2f;
217 |
218 | var objectRect = new Rect(rect);
219 | objectRect.width -= labelRect.width + buttonRect.width + 18f;
220 | objectRect.x += labelRect.width + buttonRect.width + 16f;
221 |
222 | EditorGUI.LabelField(labelRect, index.ToString());
223 | EditorGUI.BeginChangeCheck();
224 | var asset = (Object)list.list[index];
225 | asset = EditorGUI.ObjectField(objectRect, asset, typeof(Object), false);
226 | if (EditorGUI.EndChangeCheck())
227 | {
228 | list.list[index] = asset;
229 | EditorUtility.SetDirty(bookmarkData);
230 | }
231 |
232 | if (GUI.Button(buttonRect, "-"))
233 | {
234 | DoRemoveButton(list, index);
235 | EditorUtility.SetDirty(bookmarkData);
236 | }
237 | };
238 |
239 | list.onChangedCallback += (index) =>
240 | {
241 | EditorUtility.SetDirty(bookmarkData);
242 | };
243 |
244 | return list;
245 | }
246 |
247 | ///
248 | /// 要素の削除
249 | ///
250 | static private void DoRemoveButton(ReorderableList list, int index)
251 | {
252 | EditorApplication.delayCall += () =>
253 | {
254 | list.list.RemoveAt(index);
255 | window.Repaint();
256 | };
257 | }
258 |
259 | ///
260 | /// ウィンドウを開く
261 | ///
262 | [MenuItem(MenuConfig.TOOL_MENU_TEXT_OPEN_BOOKMARK_PROJECT)]
263 | static void Open()
264 | {
265 | var window = GetWindow();
266 | window.titleContent.text = MenuConfig.GUI_WINDOW_PROJECT_TEXT_TITLE;
267 | window.Repaint();
268 | }
269 |
270 | ///
271 | /// エディタ上で選択しているアセットをBookmarkへ登録
272 | ///
273 | [MenuItem(MenuConfig.GUI_MENU_TEXT_REGISTER_PROJECT, false, 10001)]
274 | static void RegisterSelection()
275 | {
276 | willRegisterAssets = Selection.objects;
277 | Open();
278 | }
279 |
280 | ///
281 | /// RegisterSelectionのValidateメソッド
282 | ///
283 | [MenuItem(MenuConfig.GUI_MENU_TEXT_REGISTER_PROJECT, true)]
284 | static bool ValidateRegisterSelection()
285 | {
286 | return Selection.activeObject != null;
287 | }
288 | }
289 | }
290 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/GUI/ProjectBookmarkWindow.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8615fcae2b39a8944bffba54d9b13e3d
3 | timeCreated: 1479715502
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/Model.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 32643277709d5da4ca7287f53cc1000e
3 | folderAsset: yes
4 | timeCreated: 1481936245
5 | licenseType: Free
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/Model/ExportConfig.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Project
6 | {
7 | ///
8 | /// Export設定
9 | ///
10 | public static class ExportConfig
11 | {
12 | // ///
13 | // /// AssetBookmarkerのルートフォルダ名
14 | // ///
15 | // private const string RootFolderName = "AssetBookmarker";
16 |
17 | // private const string DataRealtivePath = "Data/Project";
18 | private const string DataRealtivePath = "Data/Project";
19 |
20 | ///
21 | /// Bookmarkデータの保存先の相対パス(Assetsフォルダ以下)
22 | ///
23 | private const string ProjectSaveFolderPath = "Assets/AssetBookmarker/" + DataRealtivePath;
24 |
25 | ///
26 | /// Bookmarkデータの保存先の相対パス(Packageフォルダ以下)
27 | ///
28 | private static readonly string PackageSaveFolderPath = "Assets/AssetBookmarker/" + DataRealtivePath;
29 |
30 | ///
31 | /// 新規Bookmarkデータのデフォルトの名前
32 | ///
33 | public const string DefaultAssetName = "NewBookmarkData";
34 |
35 | public static string GetDataExportDirectory()
36 | {
37 | return PackageConfig.IsInstallPackage ? PackageSaveFolderPath : ProjectSaveFolderPath;
38 | }
39 |
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/Model/ExportConfig.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 5f51b3f028fd5fb47a114f294965280b
3 | timeCreated: 1482399527
4 | licenseType: Pro
5 | MonoImporter:
6 | serializedVersion: 2
7 | defaultReferences: []
8 | executionOrder: 0
9 | icon: {instanceID: 0}
10 | userData:
11 | assetBundleName:
12 | assetBundleVariant:
13 |
--------------------------------------------------------------------------------
/Assets/AssetBookmarker/Editor/Project/Editor/Model/ProjectBookmarkData.cs:
--------------------------------------------------------------------------------
1 | ///-----------------------------------------
2 | /// AssetBookmarker
3 | /// @ 2016 RNGTM(https://github.com/rngtm)
4 | ///-----------------------------------------
5 | namespace AssetBookmarker.Project
6 | {
7 | using System.Collections.Generic;
8 | using UnityEngine;
9 |
10 | ///
11 | /// Bookmarkのデータ
12 | ///
13 | public class ProjectBookmarkData : ScriptableObject
14 | {
15 | [SerializeField] private List