mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 17:26:01 +08:00
[unity] Fix disabling preprocessor defines.
This commit is contained in:
parent
0afe70ee9d
commit
1c5866a3a7
@ -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();
|
||||
|
||||
@ -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<SlotMaterialOverride> customSlotMaterials = new List<SlotMaterialOverride>();
|
||||
[SerializeField] List<AtlasMaterialOverride> customMaterialOverrides = new List<AtlasMaterialOverride>();
|
||||
[SerializeField] protected List<SlotMaterialOverride> customSlotMaterials = new List<SlotMaterialOverride>();
|
||||
[SerializeField] protected List<AtlasMaterialOverride> customMaterialOverrides = new List<AtlasMaterialOverride>();
|
||||
|
||||
#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.
|
||||
|
||||
@ -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<MeshRenderer>();
|
||||
|
||||
#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);
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user