mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-22 02:06:03 +08:00
This commit is contained in:
parent
74c2e9cab4
commit
59c90592c3
@ -43,6 +43,10 @@
|
|||||||
#define CONFIGURABLE_ENTER_PLAY_MODE
|
#define CONFIGURABLE_ENTER_PLAY_MODE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if UNITY_2020_1_OR_NEWER
|
||||||
|
#define REVERT_HAS_OVERLOADS
|
||||||
|
#endif
|
||||||
|
|
||||||
#define USE_THREADED_SKELETON_UPDATE
|
#define USE_THREADED_SKELETON_UPDATE
|
||||||
|
|
||||||
#if !SPINE_AUTO_UPGRADE_COMPONENTS_OFF
|
#if !SPINE_AUTO_UPGRADE_COMPONENTS_OFF
|
||||||
@ -731,6 +735,11 @@ namespace Spine.Unity {
|
|||||||
requiresEditorUpdate = true;
|
requiresEditorUpdate = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// revert each prefab override only once each editor-frame.
|
||||||
|
private static int lastPrefabRevertFrame = -1;
|
||||||
|
private static HashSet<MeshFilter> revertedPrefabMeshes = new HashSet<MeshFilter>();
|
||||||
|
private static bool preventReentrance = false;
|
||||||
|
|
||||||
public void EditorUpdateMeshFilterHideFlags () {
|
public void EditorUpdateMeshFilterHideFlags () {
|
||||||
if (!meshFilter) {
|
if (!meshFilter) {
|
||||||
meshFilter = GetComponent<MeshFilter>();
|
meshFilter = GetComponent<MeshFilter>();
|
||||||
@ -746,9 +755,29 @@ namespace Spine.Unity {
|
|||||||
|
|
||||||
if (dontSaveInEditor) {
|
if (dontSaveInEditor) {
|
||||||
#if NEW_PREFAB_SYSTEM
|
#if NEW_PREFAB_SYSTEM
|
||||||
if (UnityEditor.PrefabUtility.IsPartOfAnyPrefab(meshFilter)) {
|
int currentFrame = Time.frameCount;
|
||||||
|
if (lastPrefabRevertFrame != currentFrame) {
|
||||||
|
lastPrefabRevertFrame = currentFrame;
|
||||||
|
revertedPrefabMeshes.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!preventReentrance && UnityEditor.PrefabUtility.IsPartOfAnyPrefab(meshFilter)) {
|
||||||
|
if (!revertedPrefabMeshes.Contains(meshFilter)) {
|
||||||
GameObject instanceRoot = UnityEditor.PrefabUtility.GetOutermostPrefabInstanceRoot(meshFilter);
|
GameObject instanceRoot = UnityEditor.PrefabUtility.GetOutermostPrefabInstanceRoot(meshFilter);
|
||||||
if (instanceRoot != null) {
|
if (instanceRoot != null) {
|
||||||
|
UnityEditor.PropertyModification[] mods = UnityEditor.PrefabUtility.GetPropertyModifications(instanceRoot);
|
||||||
|
bool hasMeshOverride = false;
|
||||||
|
if (mods != null) {
|
||||||
|
foreach (var mod in mods) {
|
||||||
|
if (mod.target == meshFilter && mod.propertyPath == "m_Mesh") {
|
||||||
|
hasMeshOverride = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasMeshOverride) {
|
||||||
|
preventReentrance = true;
|
||||||
|
try {
|
||||||
List<ObjectOverride> objectOverrides = UnityEditor.PrefabUtility.GetObjectOverrides(instanceRoot);
|
List<ObjectOverride> objectOverrides = UnityEditor.PrefabUtility.GetObjectOverrides(instanceRoot);
|
||||||
foreach (ObjectOverride objectOverride in objectOverrides) {
|
foreach (ObjectOverride objectOverride in objectOverrides) {
|
||||||
if (objectOverride.instanceObject == meshFilter) {
|
if (objectOverride.instanceObject == meshFilter) {
|
||||||
@ -757,10 +786,17 @@ namespace Spine.Unity {
|
|||||||
#else
|
#else
|
||||||
objectOverride.Revert();
|
objectOverride.Revert();
|
||||||
#endif
|
#endif
|
||||||
|
revertedPrefabMeshes.Add(meshFilter);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
finally {
|
||||||
|
preventReentrance = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
meshFilter.hideFlags = HideFlags.DontSaveInEditor;
|
meshFilter.hideFlags = HideFlags.DontSaveInEditor;
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"name": "com.esotericsoftware.spine.spine-unity",
|
"name": "com.esotericsoftware.spine.spine-unity",
|
||||||
"displayName": "spine-unity Runtime",
|
"displayName": "spine-unity Runtime",
|
||||||
"description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.",
|
"description": "This plugin provides the spine-unity runtime core and examples. Spine Examples can be installed via the Samples tab.",
|
||||||
"version": "4.3.22",
|
"version": "4.3.23",
|
||||||
"unity": "2018.3",
|
"unity": "2018.3",
|
||||||
"author": {
|
"author": {
|
||||||
"name": "Esoteric Software",
|
"name": "Esoteric Software",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user