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",