diff --git a/.DS_Store b/.DS_Store index ebeee33..8e31241 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Assets/Darkmatter/Code/Editor.meta b/Assets/Darkmatter/Code/Editor.meta new file mode 100644 index 0000000..c127179 --- /dev/null +++ b/Assets/Darkmatter/Code/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a01b1f301d474e39808b73160a98677 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs b/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs new file mode 100644 index 0000000..8d11e3a --- /dev/null +++ b/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs @@ -0,0 +1,78 @@ +using UnityEditor; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Darkmatter.EditorTools +{ + public static class AddSelectedPrefabToPaperRoot + { + [MenuItem("Tools/Colorbook/Add Selected Prefab To PaperRoot")] + private static void AddSelected() + { + var prefab = Selection.activeObject as GameObject; + if (prefab == null || PrefabUtility.GetPrefabAssetType(prefab) == PrefabAssetType.NotAPrefab) + { + EditorUtility.DisplayDialog( + "Select a prefab", + "Select a drawing, coloring, or animation prefab in the Project window first.", + "OK"); + return; + } + + var paperRoot = FindPaperRoot(); + if (paperRoot == null) + { + EditorUtility.DisplayDialog( + "PaperRoot not found", + "Open the Gameplay scene and make sure it contains an object named PaperRoot.", + "OK"); + return; + } + + var instance = PrefabUtility.InstantiatePrefab(prefab, paperRoot.scene) as GameObject; + if (instance == null) return; + + Undo.RegisterCreatedObjectUndo(instance, $"Add {prefab.name} to PaperRoot"); + Undo.SetTransformParent(instance.transform, paperRoot.transform, "Parent prefab to PaperRoot"); + + if (instance.transform is RectTransform rectTransform) + { + rectTransform.anchorMin = Vector2.zero; + rectTransform.anchorMax = Vector2.one; + rectTransform.anchoredPosition = Vector2.zero; + rectTransform.sizeDelta = Vector2.zero; + rectTransform.localScale = Vector3.one; + } + else + { + instance.transform.localPosition = Vector3.zero; + instance.transform.localRotation = Quaternion.identity; + instance.transform.localScale = Vector3.one; + } + + Selection.activeGameObject = instance; + EditorSceneManager.MarkSceneDirty(paperRoot.scene); + } + + [MenuItem("Tools/Colorbook/Add Selected Prefab To PaperRoot", true)] + private static bool ValidateAddSelected() + { + return !EditorApplication.isPlayingOrWillChangePlaymode; + } + + private static GameObject FindPaperRoot() + { + var activeScene = SceneManager.GetActiveScene(); + foreach (var root in activeScene.GetRootGameObjects()) + { + var transforms = root.GetComponentsInChildren(true); + foreach (var candidate in transforms) + if (candidate.name == "PaperRoot") + return candidate.gameObject; + } + + return null; + } + } +} diff --git a/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs.meta b/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs.meta new file mode 100644 index 0000000..790f5cc --- /dev/null +++ b/Assets/Darkmatter/Code/Editor/AddSelectedPrefabToPaperRoot.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 675d955c682824cd9904fb2e96517df1 \ No newline at end of file diff --git a/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs b/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs index d7a8aef..e1b6b83 100644 --- a/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs +++ b/Assets/Spine/Editor/spine-unity/Editor/Utility/SpineEditorUtilities.cs @@ -379,7 +379,6 @@ namespace Spine.Unity.Editor { var eventType = current.type; bool isDraggingEvent = eventType == EventType.DragUpdated; bool isDropEvent = eventType == EventType.DragPerform; - UnityEditor.DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (isDraggingEvent || isDropEvent) { var mouseOverWindow = EditorWindow.mouseOverWindow; @@ -390,6 +389,7 @@ namespace Spine.Unity.Editor { if (references.Length == 1) { var skeletonDataAsset = references[0] as SkeletonDataAsset; if (skeletonDataAsset != null && skeletonDataAsset.GetSkeletonData(true) != null) { + UnityEditor.DragAndDrop.visualMode = DragAndDropVisualMode.Copy; // Allow drag-and-dropping anywhere in the Hierarchy Window. // HACK: string-compare because we can't get its type via reflection.