using UnityEditor; using UnityEngine; using Ubisoft.Hotel.Package.Editor; namespace Ubisoft.Hotel.PackageManager.Editor { public class PackageManagerMenu { private static readonly string SCRIPTABLE_OBJECT_TEST_ROOT_PATH = $"{PackageManager.ASSETS_HOTEL_EDITOR_HOTEL_ASSETS_PATH}"; private const string SCRIPTABLE_OBJECT_TEST_FILENAME_NO_EXT = "debug_so"; private static readonly string SCRIPTABLE_OBJECT_TEST_PATH = SCRIPTABLE_OBJECT_TEST_ROOT_PATH + "/" + SCRIPTABLE_OBJECT_TEST_FILENAME_NO_EXT + ".asset"; private const string ROOT_PATH = "Hotel/PackageManagement/PackageManager/"; private const string ROOT_DEBUG_PATH = ROOT_PATH + "Debug/"; private const string PACKAGE_MANAGER_INIT = ROOT_DEBUG_PATH + "Init"; private const string PACKAGE_MANAGER_CREATE_SO = ROOT_DEBUG_PATH + "Create ScriptableObject"; private const string PACKAGE_MANAGER_CREATE_SUBASSETS_IN_SO = ROOT_DEBUG_PATH + "Create Subassets in ScriptableObject"; private const string PACKAGE_MANAGER_DELETE_SUBASSETS_FROM_SO = ROOT_DEBUG_PATH + "Delete Subassets from ScriptableObject"; private const string OPEN_SETTINGS = "Hotel/Open settings"; [MenuItem(OPEN_SETTINGS, false, -1)] public static void OpenSettings() { PackageManager packageManager = PackageManagerMain.Instance.PackageManager; if (packageManager != null) { Selection.activeObject = packageManager; } } [MenuItem(PACKAGE_MANAGER_INIT)] public static void PackageManager_Init() { PackageManagerMain.Instance.Init(true); } [MenuItem(PACKAGE_MANAGER_CREATE_SO)] private static ScriptableObject PackageManager_CreateScriptableObject() { string path = SCRIPTABLE_OBJECT_TEST_ROOT_PATH; HtAssetDatabase.CreateFolder(path); string name = SCRIPTABLE_OBJECT_TEST_FILENAME_NO_EXT; PackageProperty returnValue = HtUnityEditorFactory.CreateScriptableObject(typeof(UnityBuildProperty), path, name) as UnityBuildProperty; returnValue.name = name; return returnValue; } [MenuItem(PACKAGE_MANAGER_CREATE_SUBASSETS_IN_SO)] private static void PackageManager_CreateSubassetsInScriptableObject() { ScriptableObject parent = PackageManager_LaodScriptableObject(); if (parent == null) { parent = PackageManager_CreateScriptableObject(); } UnityBuildProperty child = ScriptableObject.CreateInstance(); child.name = HtTypes.GetTypeShortName(child.GetType()); HtAssetDatabase.AddObjectToAsset(child, parent); } [MenuItem(PACKAGE_MANAGER_DELETE_SUBASSETS_FROM_SO)] private static void PackageManager_DeleteSubassetsFromScriptableObject() { ScriptableObject parent = PackageManager_LaodScriptableObject(); if (parent != null) { HtAssetDatabase.ClearAssetsInsideScriptableObject(parent); } } private static ScriptableObject PackageManager_LaodScriptableObject() { return AssetDatabase.LoadAssetAtPath(SCRIPTABLE_OBJECT_TEST_PATH, typeof(ScriptableObject)) as ScriptableObject; } } }