diff --git a/spine-csharp/src/MathUtils.cs b/spine-csharp/src/MathUtils.cs index 1ccc947b2..a16ca1f95 100644 --- a/spine-csharp/src/MathUtils.cs +++ b/spine-csharp/src/MathUtils.cs @@ -78,6 +78,10 @@ namespace Spine { return sin[(int)((degrees + 90) * DegToIndex) & SIN_MASK]; } + static public float Atan2Deg (float y, float x) { + return Atan2(y, x) * RadDeg; + } + /// Returns atan2 in radians, faster but less accurate than Math.Atan2. Average error of 0.00231 radians (0.1323 /// degrees), largest error of 0.00488 radians (0.2796 degrees). static public float Atan2 (float y, float x) { diff --git a/spine-csharp/src/package.json b/spine-csharp/src/package.json index 67160d5a1..9c0178cc2 100644 --- a/spine-csharp/src/package.json +++ b/spine-csharp/src/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-csharp", "displayName": "spine-csharp Runtime", "description": "This plugin provides the spine-csharp core runtime.", - "version": "4.2.22", + "version": "4.2.23", "unity": "2018.3", "author": { "name": "Esoteric Software", diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs index 627647599..77e33cd2d 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderSeparator/SkeletonRenderSeparator.cs @@ -73,6 +73,7 @@ namespace Spine.Unity { [Tooltip("Copies MeshRenderer flags into each parts renderer")] public bool copyMeshRendererFlags = true; public List partsRenderers = new List(); + [System.NonSerialized] public bool isVisible = true; #if UNITY_EDITOR void Reset () { @@ -197,6 +198,10 @@ namespace Spine.Unity { skeletonRenderer.LateUpdateMesh(); } + public void Update () { + UpdateVisibility(); + } + public void OnDisable () { if (skeletonRenderer == null) return; #if SPINE_OPTIONAL_RENDEROVERRIDE @@ -206,6 +211,24 @@ namespace Spine.Unity { ClearPartsRendererMeshes(); } + public void UpdateVisibility () { + foreach (SkeletonPartsRenderer partsRenderer in partsRenderers) { + if (partsRenderer == null) continue; + + if (partsRenderer.MeshRenderer.isVisible) { + if (!isVisible) { + skeletonRenderer.OnBecameVisible(); + isVisible = true; + } + return; + } + } + if (isVisible) { + isVisible = false; + skeletonRenderer.OnBecameInvisible(); + } + } + MaterialPropertyBlock copiedBlock; void HandleRender (SkeletonRendererInstruction instruction) { diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs index 487d51883..e4a8a89c9 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -239,6 +239,7 @@ namespace Spine.Unity { Initialize(false); if (meshRenderer) meshRenderer.enabled = false; + updateMode = UpdateMode.FullUpdate; } } remove { @@ -405,7 +406,8 @@ namespace Spine.Unity { public virtual void Awake () { Initialize(false); - updateMode = updateWhenInvisible; + if (generateMeshOverride == null || !disableRenderingOnOverride) + updateMode = updateWhenInvisible; } #if UNITY_EDITOR && CONFIGURABLE_ENTER_PLAY_MODE diff --git a/spine-unity/Assets/Spine/package.json b/spine-unity/Assets/Spine/package.json index 2690ae430..87ad75740 100644 --- a/spine-unity/Assets/Spine/package.json +++ b/spine-unity/Assets/Spine/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.spine-unity", "displayName": "spine-unity Runtime", "description": "This plugin provides the spine-unity runtime core.", - "version": "4.2.62", + "version": "4.2.63", "unity": "2018.3", "author": { "name": "Esoteric Software",