Эх сурвалжийг харах

[unity] Reverts 23adb6b: Inside/Outside Mask Materials recreated unnecessarily upon material changes. See #2848.

Harald Csaszar 4 сар өмнө
parent
commit
0865206b15

+ 4 - 42
spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs

@@ -680,12 +680,10 @@ namespace Spine.Unity {
 			} else if (materialsChanged) {
 				meshRenderer.sharedMaterials = rendererBuffers.GetUpdatedSharedMaterialsArray();
 			}
-
-#if BUILT_IN_SPRITE_MASK_COMPONENT
-			if (materialsChanged && this.maskMaterials.AnyMaterialCreated && meshRenderer != null) {
-				UpdateSpriteMaskMaterials();
+			if (materialsChanged && (this.maskMaterials.AnyMaterialCreated)) {
+				this.maskMaterials = new SpriteMaskInteractionMaterials();
 			}
-#endif
+
 			meshGenerator.FillLateVertexData(currentMesh);
 
 			// STEP 4. The UnityEngine.Mesh is ready. Set it as the MeshFilter's mesh. Store the instructions used for that mesh. ===========
@@ -786,49 +784,13 @@ namespace Spine.Unity {
 		}
 
 #if BUILT_IN_SPRITE_MASK_COMPONENT
-		private void UpdateSpriteMaskMaterials () {
-			if (maskInteraction == SpriteMaskInteraction.None) return;
-			if (maskMaterials.materialsMaskDisabled == null || maskMaterials.materialsMaskDisabled.Length == 0) {
-				maskMaterials = new SpriteMaskInteractionMaterials();
-				return;
-			}
-
-			Material[] maskedMaterials;
-			int maskFunction;
-			if (maskInteraction == SpriteMaskInteraction.VisibleInsideMask) {
-				if (maskMaterials.materialsInsideMask == null || maskMaterials.materialsInsideMask.Length == 0)
-					maskMaterials.materialsInsideMask = new Material[maskMaterials.materialsMaskDisabled.Length];
-				maskedMaterials = maskMaterials.materialsInsideMask;
-
-				maskFunction = (int)STENCIL_COMP_MASKINTERACTION_VISIBLE_INSIDE;
-			} else {
-				if (maskMaterials.materialsOutsideMask == null || maskMaterials.materialsOutsideMask.Length == 0)
-					maskMaterials.materialsOutsideMask = new Material[maskMaterials.materialsMaskDisabled.Length];
-				maskedMaterials = maskMaterials.materialsOutsideMask;
-
-				maskFunction = (int)STENCIL_COMP_MASKINTERACTION_VISIBLE_OUTSIDE;
-			}
-
-			Material[] currentMaterials = meshRenderer.sharedMaterials;
-			for (int c = 0; c < currentMaterials.Length; ++c) {
-				Material currentMaterial = currentMaterials[c];
-				int disabledIndex = System.Array.IndexOf(maskMaterials.materialsMaskDisabled, currentMaterial);
-				if (disabledIndex != -1) {
-					meshRenderer.sharedMaterials[c] = maskedMaterials[disabledIndex];
-				} else {
-					Material newMaterial = new Material(currentMaterial);
-					newMaterial.SetFloat(STENCIL_COMP_PARAM_ID, maskFunction);
-					meshRenderer.sharedMaterials[c] = newMaterial;
-				}
-			}
-		}
-
 		private void AssignSpriteMaskMaterials () {
 #if UNITY_EDITOR
 			if (!Application.isPlaying && !UnityEditor.EditorApplication.isUpdating) {
 				EditorFixStencilCompParameters();
 			}
 #endif
+
 			if (Application.isPlaying) {
 				if (maskInteraction != SpriteMaskInteraction.None && maskMaterials.materialsMaskDisabled.Length == 0)
 					maskMaterials.materialsMaskDisabled = meshRenderer.sharedMaterials;

+ 1 - 1
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.104",
+	"version": "4.2.103",
 	"unity": "2018.3",
 	"author": {
 		"name": "Esoteric Software",