mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[unity] Fix Drag and Drop menu for SkeletonGraphic + hierarchy icons.
This commit is contained in:
parent
ddb7e52a41
commit
384889cf7a
@ -208,12 +208,10 @@ namespace Spine.Unity.Editor {
|
|||||||
skeletonUtilityBoneTable = new Dictionary<int, SkeletonUtilityBone>();
|
skeletonUtilityBoneTable = new Dictionary<int, SkeletonUtilityBone>();
|
||||||
boundingBoxFollowerTable = new Dictionary<int, BoundingBoxFollower>();
|
boundingBoxFollowerTable = new Dictionary<int, BoundingBoxFollower>();
|
||||||
|
|
||||||
#if SPINE_HIERARCHY_ICONS
|
|
||||||
EditorApplication.hierarchyWindowChanged -= HierarchyWindowChanged;
|
EditorApplication.hierarchyWindowChanged -= HierarchyWindowChanged;
|
||||||
EditorApplication.hierarchyWindowChanged += HierarchyWindowChanged;
|
EditorApplication.hierarchyWindowChanged += HierarchyWindowChanged;
|
||||||
EditorApplication.hierarchyWindowItemOnGUI -= HierarchyWindowItemOnGUI;
|
EditorApplication.hierarchyWindowItemOnGUI -= HierarchyWindowItemOnGUI;
|
||||||
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
|
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
|
||||||
#endif
|
|
||||||
|
|
||||||
HierarchyWindowChanged();
|
HierarchyWindowChanged();
|
||||||
initialized = true;
|
initialized = true;
|
||||||
@ -327,24 +325,31 @@ namespace Spine.Unity.Editor {
|
|||||||
Vector3 spawnPoint = MousePointToWorldPoint2D(mousePos, sceneview.camera, plane);
|
Vector3 spawnPoint = MousePointToWorldPoint2D(mousePos, sceneview.camera, plane);
|
||||||
|
|
||||||
var menu = new GenericMenu();
|
var menu = new GenericMenu();
|
||||||
|
// SkeletonAnimation
|
||||||
menu.AddItem(new GUIContent("SkeletonAnimation"), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
menu.AddItem(new GUIContent("SkeletonAnimation"), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
||||||
skeletonDataAsset = skeletonDataAsset,
|
skeletonDataAsset = skeletonDataAsset,
|
||||||
spawnPoint = spawnPoint,
|
spawnPoint = spawnPoint,
|
||||||
instantiateDelegate = (data) => InstantiateSkeletonAnimation(data)
|
instantiateDelegate = (data) => InstantiateSkeletonAnimation(data),
|
||||||
|
isUI = false
|
||||||
});
|
});
|
||||||
|
|
||||||
foreach (var spawnType in additionalSpawnTypes) {
|
// SkeletonGraphic
|
||||||
menu.AddItem(new GUIContent(spawnType.menuLabel), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
var skeletonGraphicInspectorType = System.Type.GetType("Spine.Unity.Editor.SkeletonGraphicInspector");
|
||||||
skeletonDataAsset = skeletonDataAsset,
|
if (skeletonGraphicInspectorType != null) {
|
||||||
spawnPoint = spawnPoint,
|
var graphicInstantiateDelegate = skeletonGraphicInspectorType.GetMethod("SpawnSkeletonGraphicFromDrop", BindingFlags.Static | BindingFlags.Public);
|
||||||
instantiateDelegate = spawnType.instantiateDelegate,
|
if (graphicInstantiateDelegate != null)
|
||||||
isUI = spawnType.isUI
|
menu.AddItem(new GUIContent("SkeletonGraphic (UI)"), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
||||||
});
|
skeletonDataAsset = skeletonDataAsset,
|
||||||
|
spawnPoint = spawnPoint,
|
||||||
|
instantiateDelegate = System.Delegate.CreateDelegate(typeof(InstantiateDelegate), graphicInstantiateDelegate) as InstantiateDelegate,
|
||||||
|
isUI = true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if SPINE_SKELETONANIMATOR
|
#if SPINE_SKELETONANIMATOR
|
||||||
menu.AddSeparator("");
|
menu.AddSeparator("");
|
||||||
|
// SkeletonAnimator
|
||||||
menu.AddItem(new GUIContent("SkeletonAnimator"), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
menu.AddItem(new GUIContent("SkeletonAnimator"), false, HandleSkeletonComponentDrop, new SpawnMenuData {
|
||||||
skeletonDataAsset = skeletonDataAsset,
|
skeletonDataAsset = skeletonDataAsset,
|
||||||
spawnPoint = spawnPoint,
|
spawnPoint = spawnPoint,
|
||||||
|
|||||||
@ -49,40 +49,6 @@ namespace Spine.Unity.Editor {
|
|||||||
|
|
||||||
SkeletonGraphic thisSkeletonGraphic;
|
SkeletonGraphic thisSkeletonGraphic;
|
||||||
|
|
||||||
static SpineEditorUtilities.InstantiateDelegate instantiateDelegate;
|
|
||||||
|
|
||||||
static SkeletonGraphicInspector () {
|
|
||||||
if (!SpineEditorUtilities.initialized)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (instantiateDelegate == null)
|
|
||||||
instantiateDelegate = new SpineEditorUtilities.InstantiateDelegate(SpawnSkeletonGraphicFromDrop);
|
|
||||||
|
|
||||||
// Drag and Drop Instantiate menu item
|
|
||||||
var spawnTypes = SpineEditorUtilities.additionalSpawnTypes;
|
|
||||||
UnityEngine.Assertions.Assert.IsFalse(spawnTypes == null);
|
|
||||||
bool menuItemExists = false;
|
|
||||||
foreach (var spawnType in spawnTypes) {
|
|
||||||
if (spawnType.instantiateDelegate == SkeletonGraphicInspector.instantiateDelegate) {
|
|
||||||
menuItemExists = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!menuItemExists) {
|
|
||||||
SpineEditorUtilities.additionalSpawnTypes.Add(new SpineEditorUtilities.SkeletonComponentSpawnType {
|
|
||||||
menuLabel = "SkeletonGraphic (UI)",
|
|
||||||
instantiateDelegate = SkeletonGraphicInspector.instantiateDelegate,
|
|
||||||
isUI = true
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static public Component SpawnSkeletonGraphicFromDrop (SkeletonDataAsset data) {
|
|
||||||
return InstantiateSkeletonGraphic(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnEnable () {
|
void OnEnable () {
|
||||||
var so = this.serializedObject;
|
var so = this.serializedObject;
|
||||||
thisSkeletonGraphic = target as SkeletonGraphic;
|
thisSkeletonGraphic = target as SkeletonGraphic;
|
||||||
@ -198,6 +164,11 @@ namespace Spine.Unity.Editor {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SpineEditorUtilities.InstantiateDelegate. Used by drag and drop.
|
||||||
|
public static Component SpawnSkeletonGraphicFromDrop (SkeletonDataAsset data) {
|
||||||
|
return InstantiateSkeletonGraphic(data);
|
||||||
|
}
|
||||||
|
|
||||||
public static SkeletonGraphic InstantiateSkeletonGraphic (SkeletonDataAsset skeletonDataAsset, string skinName) {
|
public static SkeletonGraphic InstantiateSkeletonGraphic (SkeletonDataAsset skeletonDataAsset, string skinName) {
|
||||||
return InstantiateSkeletonGraphic(skeletonDataAsset, skeletonDataAsset.GetSkeletonData(true).FindSkin(skinName));
|
return InstantiateSkeletonGraphic(skeletonDataAsset, skeletonDataAsset.GetSkeletonData(true).FindSkin(skinName));
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user