[unity] Fix disabling preprocessor defines.

This commit is contained in:
pharan 2017-02-27 18:09:32 +08:00
parent 0afe70ee9d
commit 1c5866a3a7
4 changed files with 41 additions and 6 deletions

View File

@ -28,6 +28,8 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#define SPINE_OPTIONAL_MATERIALOVERRIDE
// Contributed by: Lost Polygon // Contributed by: Lost Polygon
using System; 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 (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 (skeletonRenderer != null) {
#if SPINE_OPTIONAL_MATERIALOVERRIDE
skeletonRenderer.CustomMaterialOverride.Clear(); skeletonRenderer.CustomMaterialOverride.Clear();
#endif
skeletonRenderer.CustomSlotMaterials.Clear(); skeletonRenderer.CustomSlotMaterials.Clear();
RemoveCustomMaterials(); RemoveCustomMaterials();
SetCustomMaterials(); SetCustomMaterials();

View File

@ -28,6 +28,8 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#define SPINE_OPTIONAL_MATERIALOVERRIDE
// Contributed by: Lost Polygon // Contributed by: Lost Polygon
using System; using System;
@ -40,8 +42,8 @@ namespace Spine.Unity.Modules {
#region Inspector #region Inspector
public SkeletonRenderer skeletonRenderer; public SkeletonRenderer skeletonRenderer;
[SerializeField] List<SlotMaterialOverride> customSlotMaterials = new List<SlotMaterialOverride>(); [SerializeField] protected List<SlotMaterialOverride> customSlotMaterials = new List<SlotMaterialOverride>();
[SerializeField] List<AtlasMaterialOverride> customMaterialOverrides = new List<AtlasMaterialOverride>(); [SerializeField] protected List<AtlasMaterialOverride> customMaterialOverrides = new List<AtlasMaterialOverride>();
#if UNITY_EDITOR #if UNITY_EDITOR
void Reset () { void Reset () {
@ -115,6 +117,7 @@ namespace Spine.Unity.Modules {
return; return;
} }
#if SPINE_OPTIONAL_MATERIALOVERRIDE
for (int i = 0; i < customMaterialOverrides.Count; i++) { for (int i = 0; i < customMaterialOverrides.Count; i++) {
AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i]; AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i];
if (atlasMaterialOverride.overrideDisabled) if (atlasMaterialOverride.overrideDisabled)
@ -122,6 +125,7 @@ namespace Spine.Unity.Modules {
skeletonRenderer.CustomMaterialOverride[atlasMaterialOverride.originalMaterial] = atlasMaterialOverride.replacementMaterial; skeletonRenderer.CustomMaterialOverride[atlasMaterialOverride.originalMaterial] = atlasMaterialOverride.replacementMaterial;
} }
#endif
} }
void RemoveCustomMaterialOverrides () { void RemoveCustomMaterialOverrides () {
@ -130,9 +134,11 @@ namespace Spine.Unity.Modules {
return; return;
} }
#if SPINE_OPTIONAL_MATERIALOVERRIDE
for (int i = 0; i < customMaterialOverrides.Count; i++) { for (int i = 0; i < customMaterialOverrides.Count; i++) {
AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i]; AtlasMaterialOverride atlasMaterialOverride = customMaterialOverrides[i];
Material currentMaterial; Material currentMaterial;
if (!skeletonRenderer.CustomMaterialOverride.TryGetValue(atlasMaterialOverride.originalMaterial, out currentMaterial)) if (!skeletonRenderer.CustomMaterialOverride.TryGetValue(atlasMaterialOverride.originalMaterial, out currentMaterial))
continue; continue;
@ -142,6 +148,7 @@ namespace Spine.Unity.Modules {
skeletonRenderer.CustomMaterialOverride.Remove(atlasMaterialOverride.originalMaterial); skeletonRenderer.CustomMaterialOverride.Remove(atlasMaterialOverride.originalMaterial);
} }
#endif
} }
// OnEnable applies the overrides at runtime, and when the editor loads. // OnEnable applies the overrides at runtime, and when the editor loads.

View File

@ -28,6 +28,8 @@
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/ *****************************************************************************/
#define SPINE_OPTIONAL_RENDEROVERRIDE
using UnityEngine; using UnityEngine;
using System.Collections.Generic; using System.Collections.Generic;
using Spine.Unity; using Spine.Unity;
@ -45,8 +47,10 @@ namespace Spine.Unity.Modules {
public SkeletonRenderer SkeletonRenderer { public SkeletonRenderer SkeletonRenderer {
get { return skeletonRenderer; } get { return skeletonRenderer; }
set { set {
#if SPINE_OPTIONAL_RENDEROVERRIDE
if (skeletonRenderer != null) if (skeletonRenderer != null)
skeletonRenderer.GenerateMeshOverride -= HandleRender; skeletonRenderer.GenerateMeshOverride -= HandleRender;
#endif
skeletonRenderer = value; skeletonRenderer = value;
this.enabled = false; // Disable if nulled. this.enabled = false; // Disable if nulled.
@ -72,8 +76,11 @@ namespace Spine.Unity.Modules {
if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock(); if (copiedBlock == null) copiedBlock = new MaterialPropertyBlock();
mainMeshRenderer = skeletonRenderer.GetComponent<MeshRenderer>(); mainMeshRenderer = skeletonRenderer.GetComponent<MeshRenderer>();
#if SPINE_OPTIONAL_RENDEROVERRIDE
skeletonRenderer.GenerateMeshOverride -= HandleRender; skeletonRenderer.GenerateMeshOverride -= HandleRender;
skeletonRenderer.GenerateMeshOverride += HandleRender; skeletonRenderer.GenerateMeshOverride += HandleRender;
#endif
#if UNITY_5_4_OR_NEWER #if UNITY_5_4_OR_NEWER
if (copyMeshRendererFlags) { if (copyMeshRendererFlags) {
@ -109,7 +116,9 @@ namespace Spine.Unity.Modules {
void OnDisable () { void OnDisable () {
if (skeletonRenderer == null) return; if (skeletonRenderer == null) return;
#if SPINE_OPTIONAL_RENDEROVERRIDE
skeletonRenderer.GenerateMeshOverride -= HandleRender; skeletonRenderer.GenerateMeshOverride -= HandleRender;
#endif
#if UNITY_EDITOR #if UNITY_EDITOR
skeletonRenderer.LateUpdate(); skeletonRenderer.LateUpdate();
@ -134,9 +143,14 @@ namespace Spine.Unity.Modules {
var submeshInstructionsItems = submeshInstructions.Items; var submeshInstructionsItems = submeshInstructions.Items;
int lastSubmeshInstruction = submeshInstructions.Count - 1; int lastSubmeshInstruction = submeshInstructions.Count - 1;
#if SPINE_OPTIONAL_NORMALS
bool addNormals = skeletonRenderer.calculateNormals; bool addNormals = skeletonRenderer.calculateNormals;
#endif
#if SPINE_OPTIONAL_SOLVETANGENTS
bool addTangents = skeletonRenderer.calculateTangents; bool addTangents = skeletonRenderer.calculateTangents;
#endif
bool pmaVertexColors = skeletonRenderer.pmaVertexColors; bool pmaVertexColors = skeletonRenderer.pmaVertexColors;
int rendererIndex = 0; int rendererIndex = 0;
@ -145,8 +159,12 @@ namespace Spine.Unity.Modules {
if (submeshInstructionsItems[si].forceSeparate || si == lastSubmeshInstruction) { if (submeshInstructionsItems[si].forceSeparate || si == lastSubmeshInstruction) {
// Apply properties // Apply properties
var meshGenerator = currentRenderer.MeshGenerator; var meshGenerator = currentRenderer.MeshGenerator;
#if SPINE_OPTIONAL_NORMALS
meshGenerator.AddNormals = addNormals; meshGenerator.AddNormals = addNormals;
#endif
#if SPINE_OPTIONAL_SOLVETANGENTS
meshGenerator.AddTangents = addTangents; meshGenerator.AddTangents = addTangents;
#endif
meshGenerator.PremultiplyVertexColors = pmaVertexColors; meshGenerator.PremultiplyVertexColors = pmaVertexColors;
if (copyPropertyBlock) if (copyPropertyBlock)
currentRenderer.SetPropertyBlock(copiedBlock); currentRenderer.SetPropertyBlock(copiedBlock);

View File

@ -316,7 +316,11 @@ namespace Spine.Unity {
// Slot with a separator/new material will become the starting slot of the next new instruction. // Slot with a separator/new material will become the starting slot of the next new instruction.
bool forceSeparate = (hasSeparators && separatorSlots.Contains(slot)); bool forceSeparate = (hasSeparators && separatorSlots.Contains(slot));
if (noRender) { if (noRender) {
if (forceSeparate && vertexCount > 0 && this.generateMeshOverride != null) { if (forceSeparate && vertexCount > 0
#if SPINE_OPTIONAL_RENDEROVERRIDE
&& this.generateMeshOverride != null
#endif
) {
workingSubmeshInstructions.Add( workingSubmeshInstructions.Add(
new Spine.Unity.MeshGeneration.SubmeshInstruction { new Spine.Unity.MeshGeneration.SubmeshInstruction {
skeleton = this.skeleton, skeleton = this.skeleton,
@ -422,14 +426,16 @@ namespace Spine.Unity {
// STEP 2. Update vertex buffer based on verts from the attachments. ============================================================ // STEP 2. Update vertex buffer based on verts from the attachments. ============================================================
// Uses values that were also stored in workingInstruction. // 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 #if SPINE_OPTIONAL_NORMALS
bool vertexCountIncreased = ArraysMeshGenerator.EnsureSize(vertexCount, ref this.vertices, ref this.uvs, ref this.colors);
if (vertexCountIncreased && calculateNormals) { if (vertexCountIncreased && calculateNormals) {
Vector3[] localNormals = this.normals = new Vector3[vertexCount]; Vector3[] localNormals = this.normals = new Vector3[vertexCount];
Vector3 normal = new Vector3(0, 0, -1); Vector3 normal = new Vector3(0, 0, -1);
for (int i = 0; i < vertexCount; i++) for (int i = 0; i < vertexCount; i++)
localNormals[i] = normal; localNormals[i] = normal;
} }
#else
ArraysMeshGenerator.EnsureSize(vertexCount, ref this.vertices, ref this.uvs, ref this.colors);
#endif #endif
Vector3 meshBoundsMin; Vector3 meshBoundsMin;