diff --git a/spine-unity/Assets/spine-unity/Modules/CustomMaterials/Editor/SkeletonRendererCustomMaterialsInspector.cs b/spine-unity/Assets/spine-unity/Modules/CustomMaterials/Editor/SkeletonRendererCustomMaterialsInspector.cs index 7b12fa88c..e30e0b9c1 100644 --- a/spine-unity/Assets/spine-unity/Modules/CustomMaterials/Editor/SkeletonRendererCustomMaterialsInspector.cs +++ b/spine-unity/Assets/spine-unity/Modules/CustomMaterials/Editor/SkeletonRendererCustomMaterialsInspector.cs @@ -28,6 +28,8 @@ * POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +#define SPINE_OPTIONAL_MATERIALOVERRIDE + // Contributed by: Lost Polygon using System; @@ -136,7 +138,9 @@ namespace Spine.Unity.Editor { if (SpineInspectorUtility.LargeCenteredButton(new GUIContent("Clear and Reapply Changes", "Removes all non-serialized overrides in the SkeletonRenderer and reapplies the overrides on this component."))) { if (skeletonRenderer != null) { + #if SPINE_OPTIONAL_MATERIALOVERRIDE skeletonRenderer.CustomMaterialOverride.Clear(); + #endif skeletonRenderer.CustomSlotMaterials.Clear(); RemoveCustomMaterials(); SetCustomMaterials(); diff --git a/spine-unity/Assets/spine-unity/Modules/CustomMaterials/SkeletonRendererCustomMaterials.cs b/spine-unity/Assets/spine-unity/Modules/CustomMaterials/SkeletonRendererCustomMaterials.cs index c31c8820e..6a0120f72 100644 --- a/spine-unity/Assets/spine-unity/Modules/CustomMaterials/SkeletonRendererCustomMaterials.cs +++ b/spine-unity/Assets/spine-unity/Modules/CustomMaterials/SkeletonRendererCustomMaterials.cs @@ -28,6 +28,8 @@ * POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +#define SPINE_OPTIONAL_MATERIALOVERRIDE + // Contributed by: Lost Polygon using System; @@ -40,8 +42,8 @@ namespace Spine.Unity.Modules { #region Inspector public SkeletonRenderer skeletonRenderer; - [SerializeField] List customSlotMaterials = new List(); - [SerializeField] List customMaterialOverrides = new List(); + [SerializeField] protected List customSlotMaterials = new List(); + [SerializeField] protected List customMaterialOverrides = new List(); #if UNITY_EDITOR void Reset () { @@ -115,6 +117,7 @@ namespace Spine.Unity.Modules { return; } + #if SPINE_OPTIONAL_MATERIALOVERRIDE for (int i = 0; i < customMaterialOverrides.Count; i++) { AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i]; if (atlasMaterialOverride.overrideDisabled) @@ -122,6 +125,7 @@ namespace Spine.Unity.Modules { skeletonRenderer.CustomMaterialOverride[atlasMaterialOverride.originalMaterial] = atlasMaterialOverride.replacementMaterial; } + #endif } void RemoveCustomMaterialOverrides () { @@ -130,18 +134,21 @@ namespace Spine.Unity.Modules { return; } + #if SPINE_OPTIONAL_MATERIALOVERRIDE for (int i = 0; i < customMaterialOverrides.Count; i++) { AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i]; Material currentMaterial; + if (!skeletonRenderer.CustomMaterialOverride.TryGetValue(atlasMaterialOverride.originalMaterial, out currentMaterial)) continue; - + // Do not revert the material if it was changed by something else if (currentMaterial != atlasMaterialOverride.replacementMaterial) continue; skeletonRenderer.CustomMaterialOverride.Remove(atlasMaterialOverride.originalMaterial); } + #endif } // OnEnable applies the overrides at runtime, and when the editor loads. diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs b/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs index 7beab536c..ebf270676 100644 --- a/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs +++ b/spine-unity/Assets/spine-unity/Modules/SkeletonRenderSeparator/SkeletonRenderSeparator.cs @@ -28,6 +28,8 @@ * POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +#define SPINE_OPTIONAL_RENDEROVERRIDE + using UnityEngine; using System.Collections.Generic; using Spine.Unity; @@ -45,8 +47,10 @@ namespace Spine.Unity.Modules { public SkeletonRenderer SkeletonRenderer { get { return skeletonRenderer; } set { + #if SPINE_OPTIONAL_RENDEROVERRIDE if (skeletonRenderer != null) skeletonRenderer.GenerateMeshOverride -= HandleRender; + #endif skeletonRenderer = value; this.enabled = false; // Disable if nulled. @@ -72,8 +76,11 @@ namespace Spine.Unity.Modules { if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock(); mainMeshRenderer = skeletonRenderer.GetComponent(); + #if SPINE_OPTIONAL_RENDEROVERRIDE skeletonRenderer.GenerateMeshOverride -= HandleRender; skeletonRenderer.GenerateMeshOverride += HandleRender; + #endif + #if UNITY_5_4_OR_NEWER if (copyMeshRendererFlags) { @@ -109,7 +116,9 @@ namespace Spine.Unity.Modules { void OnDisable () { if (skeletonRenderer == null) return; + #if SPINE_OPTIONAL_RENDEROVERRIDE skeletonRenderer.GenerateMeshOverride -= HandleRender; + #endif #if UNITY_EDITOR skeletonRenderer.LateUpdate(); @@ -134,9 +143,14 @@ namespace Spine.Unity.Modules { var submeshInstructionsItems = submeshInstructions.Items; int lastSubmeshInstruction = submeshInstructions.Count - 1; - + #if SPINE_OPTIONAL_NORMALS bool addNormals = skeletonRenderer.calculateNormals; + #endif + + #if SPINE_OPTIONAL_SOLVETANGENTS bool addTangents = skeletonRenderer.calculateTangents; + #endif + bool pmaVertexColors = skeletonRenderer.pmaVertexColors; int rendererIndex = 0; @@ -145,8 +159,12 @@ namespace Spine.Unity.Modules { if (submeshInstructionsItems[si].forceSeparate || si == lastSubmeshInstruction) { // Apply properties var meshGenerator = currentRenderer.MeshGenerator; + #if SPINE_OPTIONAL_NORMALS meshGenerator.AddNormals = addNormals; + #endif + #if SPINE_OPTIONAL_SOLVETANGENTS meshGenerator.AddTangents = addTangents; + #endif meshGenerator.PremultiplyVertexColors = pmaVertexColors; if (copyPropertyBlock) currentRenderer.SetPropertyBlock(copiedBlock); diff --git a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs index 88e96e635..872e707b6 100644 --- a/spine-unity/Assets/spine-unity/SkeletonRenderer.cs +++ b/spine-unity/Assets/spine-unity/SkeletonRenderer.cs @@ -316,7 +316,11 @@ namespace Spine.Unity { // Slot with a separator/new material will become the starting slot of the next new instruction. bool forceSeparate = (hasSeparators && separatorSlots.Contains(slot)); if (noRender) { - if (forceSeparate && vertexCount > 0 && this.generateMeshOverride != null) { + if (forceSeparate && vertexCount > 0 + #if SPINE_OPTIONAL_RENDEROVERRIDE + && this.generateMeshOverride != null + #endif + ) { workingSubmeshInstructions.Add( new Spine.Unity.MeshGeneration.SubmeshInstruction { skeleton = this.skeleton, @@ -422,14 +426,16 @@ namespace Spine.Unity { // STEP 2. Update vertex buffer based on verts from the attachments. ============================================================ // Uses values that were also stored in workingInstruction. - bool vertexCountIncreased = ArraysMeshGenerator.EnsureSize(vertexCount, ref this.vertices, ref this.uvs, ref this.colors); #if SPINE_OPTIONAL_NORMALS + bool vertexCountIncreased = ArraysMeshGenerator.EnsureSize(vertexCount, ref this.vertices, ref this.uvs, ref this.colors); if (vertexCountIncreased && calculateNormals) { Vector3[] localNormals = this.normals = new Vector3[vertexCount]; Vector3 normal = new Vector3(0, 0, -1); for (int i = 0; i < vertexCount; i++) localNormals[i] = normal; } + #else + ArraysMeshGenerator.EnsureSize(vertexCount, ref this.vertices, ref this.uvs, ref this.colors); #endif Vector3 meshBoundsMin;