From 6df16d4fe1dfd97b1d2f65042a0ece3a1b80f45c Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 27 Mar 2020 16:56:33 +0100 Subject: [PATCH 1/5] [unity] Added ontline-only single pass shaders to LWRP and URP packages. This allows for separate outline child GameObjects that reference the existing Mesh of their parent, and re-draw the mesh using this outline shader. The component to ease replacing materials of the parent will be added in separate upcoming commit. --- .../Shaders/SpineShaderWithOutlineGUI.cs | 51 ++++++++++++++----- .../Shaders/Outline.meta | 8 +++ .../Spine-Skeleton-OutlineOnly-LWRP.shader | 37 ++++++++++++++ ...pine-Skeleton-OutlineOnly-LWRP.shader.meta | 9 ++++ .../Shaders/Outline.meta | 8 +++ .../Spine-Skeleton-OutlineOnly-URP.shader | 37 ++++++++++++++ ...Spine-Skeleton-OutlineOnly-URP.shader.meta | 9 ++++ 7 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader.meta diff --git a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Shaders/SpineShaderWithOutlineGUI.cs b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Shaders/SpineShaderWithOutlineGUI.cs index 30bb87be8..4b0d5824d 100644 --- a/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Shaders/SpineShaderWithOutlineGUI.cs +++ b/spine-unity/Assets/Spine/Editor/spine-unity/Editor/Shaders/SpineShaderWithOutlineGUI.cs @@ -65,6 +65,7 @@ public class SpineShaderWithOutlineGUI : ShaderGUI { protected const string ShaderOutlineNamePrefix = "Spine/Outline/"; protected const string ShaderNormalNamePrefix = "Spine/"; + protected const string ShaderWithoutStandardVariantSuffix = "OutlineOnly"; #region ShaderGUI @@ -123,20 +124,30 @@ public class SpineShaderWithOutlineGUI : ShaderGUI { EditorGUIUtility.labelWidth = 0f; bool mixedValue; - bool isOutlineEnabled = IsOutlineEnabled(_materialEditor, out mixedValue); - EditorGUI.showMixedValue = mixedValue; - EditorGUI.BeginChangeCheck(); + bool hasOutlineVariant = !IsShaderWithoutStandardVariantShader(_materialEditor, out mixedValue); + bool isOutlineEnabled = true; + if (hasOutlineVariant) { + isOutlineEnabled = IsOutlineEnabled(_materialEditor, out mixedValue); + EditorGUI.showMixedValue = mixedValue; + EditorGUI.BeginChangeCheck(); - var origFontStyle = EditorStyles.label.fontStyle; - EditorStyles.label.fontStyle = FontStyle.Bold; - isOutlineEnabled = EditorGUILayout.Toggle(_EnableOutlineText, isOutlineEnabled); - EditorStyles.label.fontStyle = origFontStyle; - EditorGUI.showMixedValue = false; - if (EditorGUI.EndChangeCheck()) { - foreach (Material material in _materialEditor.targets) { - SwitchShaderToOutlineSettings(material, isOutlineEnabled); + var origFontStyle = EditorStyles.label.fontStyle; + EditorStyles.label.fontStyle = FontStyle.Bold; + isOutlineEnabled = EditorGUILayout.Toggle(_EnableOutlineText, isOutlineEnabled); + EditorStyles.label.fontStyle = origFontStyle; + EditorGUI.showMixedValue = false; + if (EditorGUI.EndChangeCheck()) { + foreach (Material material in _materialEditor.targets) { + SwitchShaderToOutlineSettings(material, isOutlineEnabled); + } } } + else { + var origFontStyle = EditorStyles.label.fontStyle; + EditorStyles.label.fontStyle = FontStyle.Bold; + EditorGUILayout.LabelField(_EnableOutlineText); + EditorStyles.label.fontStyle = origFontStyle; + } if (isOutlineEnabled) { _materialEditor.ShaderProperty(_OutlineWidth, _OutlineWidthText); @@ -162,7 +173,7 @@ public class SpineShaderWithOutlineGUI : ShaderGUI { void SwitchShaderToOutlineSettings (Material material, bool enableOutline) { var shaderName = material.shader.name; - bool isSetToOutlineShader = shaderName.StartsWith(ShaderOutlineNamePrefix); + bool isSetToOutlineShader = shaderName.Contains(ShaderOutlineNamePrefix); if (isSetToOutlineShader && !enableOutline) { shaderName = shaderName.Replace(ShaderOutlineNamePrefix, ShaderNormalNamePrefix); _materialEditor.SetShader(Shader.Find(shaderName), false); @@ -179,7 +190,7 @@ public class SpineShaderWithOutlineGUI : ShaderGUI { mixedValue = false; bool isAnyEnabled = false; foreach (Material material in editor.targets) { - if (material.shader.name.StartsWith(ShaderOutlineNamePrefix)) { + if (material.shader.name.Contains(ShaderOutlineNamePrefix)) { isAnyEnabled = true; } else if (isAnyEnabled) { @@ -189,6 +200,20 @@ public class SpineShaderWithOutlineGUI : ShaderGUI { return isAnyEnabled; } + static bool IsShaderWithoutStandardVariantShader (MaterialEditor editor, out bool mixedValue) { + mixedValue = false; + bool isAnyShaderWithoutVariant = false; + foreach (Material material in editor.targets) { + if (material.shader.name.Contains(ShaderWithoutStandardVariantSuffix)) { + isAnyShaderWithoutVariant = true; + } + else if (isAnyShaderWithoutVariant) { + mixedValue = true; + } + } + return isAnyShaderWithoutVariant; + } + static bool BoldToggleField (GUIContent label, bool value) { FontStyle origFontStyle = EditorStyles.label.fontStyle; EditorStyles.label.fontStyle = FontStyle.Bold; diff --git a/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline.meta b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline.meta new file mode 100644 index 000000000..09b829c87 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d122262772fd0ec47887efc848e8d285 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader new file mode 100644 index 000000000..5590dc0f6 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader @@ -0,0 +1,37 @@ +Shader "Lightweight Render Pipeline/Spine/Outline/Skeleton-OutlineOnly" { + Properties { + [NoScaleOffset] _MainTex("Main Texture", 2D) = "black" {} + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + // Lightweight Pipeline tag is required. If Lightweight render pipeline is not set in the graphics settings + // this Subshader will fail. + Tags { "RenderPipeline" = "LightweightPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + Cull Off + ZWrite Off + Blend One OneMinusSrcAlpha + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + UsePass "Spine/Outline/Skeleton/OUTLINE" + } + + FallBack "Hidden/InternalErrorShader" + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader.meta new file mode 100644 index 000000000..aeb885bbf --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.lwrp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-LWRP.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e07d39bf1c784604e9420722eb804edf +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline.meta new file mode 100644 index 000000000..9629b6fd7 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 958b6dbd07d10374189a5c45cd641149 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader new file mode 100644 index 000000000..5f4edcfcb --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader @@ -0,0 +1,37 @@ +Shader "Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly" { + Properties { + [NoScaleOffset] _MainTex("Main Texture", 2D) = "black" {} + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + // Universal Pipeline tag is required. If Universal render pipeline is not set in the graphics settings + // this Subshader will fail. + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + Cull Off + ZWrite Off + Blend One OneMinusSrcAlpha + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + UsePass "Spine/Outline/Skeleton/OUTLINE" + } + + FallBack "Hidden/InternalErrorShader" + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader.meta new file mode 100644 index 000000000..32b985302 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Outline/Spine-Skeleton-OutlineOnly-URP.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0c26b8f3f8867ba41ac82baf19d8ff91 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: From 519b01ee515c3ade988f52dea5caca7c86aea85b Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 27 Mar 2020 17:53:58 +0100 Subject: [PATCH 2/5] [unity] Added OnMeshAndMaterialsUpdated callback event to SkeletonRenderer and SkeletonGraphic. Added example component `RenderExistingMesh.cs` to render a mesh again with different materials, as required by the new outline-only shaders added in the previous commit. --- .../Sample Components/RenderExistingMesh.cs | 144 ++++++++++++++++++ .../RenderExistingMesh.cs.meta | 12 ++ .../spine-unity/Components/SkeletonGraphic.cs | 6 + .../Components/SkeletonRenderer.cs | 7 + 4 files changed, 169 insertions(+) create mode 100644 spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs create mode 100644 spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs.meta diff --git a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs new file mode 100644 index 000000000..d268708ea --- /dev/null +++ b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs @@ -0,0 +1,144 @@ +/****************************************************************************** + * Spine Runtimes License Agreement + * Last updated January 1, 2020. Replaces all prior versions. + * + * Copyright (c) 2013-2020, Esoteric Software LLC + * + * Integration of the Spine Runtimes into software or otherwise creating + * derivative works of the Spine Runtimes is permitted under the terms and + * conditions of Section 2 of the Spine Editor License Agreement: + * http://esotericsoftware.com/spine-editor-license + * + * Otherwise, it is permitted to integrate the Spine Runtimes into software + * or otherwise create derivative works of the Spine Runtimes (collectively, + * "Products"), provided that each user of the Products must obtain their own + * Spine Editor license and redistribution of the Products in any form must + * include this license and copyright notice. + * + * THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, + * BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#if UNITY_2018_3 || UNITY_2019 || UNITY_2018_3_OR_NEWER +#define NEW_PREFAB_SYSTEM +#endif + +using UnityEngine; +using System.Collections.Generic; + +namespace Spine.Unity.Examples { + +#if NEW_PREFAB_SYSTEM + [ExecuteAlways] +#else + [ExecuteInEditMode] +#endif + [RequireComponent(typeof(MeshRenderer)), RequireComponent(typeof(MeshFilter))] + public class RenderExistingMesh : MonoBehaviour + { + public MeshRenderer referenceRenderer; + + bool updateViaSkeletonCallback = false; + MeshFilter referenceMeshFilter; + MeshRenderer ownRenderer; + MeshFilter ownMeshFilter; + + [System.Serializable] + public struct MaterialReplacement { + public Material originalMaterial; + public Material replacementMaterial; + } + public MaterialReplacement[] replacementMaterials = new MaterialReplacement[0]; + + private Dictionary replacementMaterialDict = new Dictionary(); + private Material[] sharedMaterials = new Material[0]; + +#if UNITY_EDITOR + private void Reset () { + if (referenceRenderer == null) { + referenceRenderer = this.transform.parent.GetComponentInParent(); + if (!referenceRenderer) + return; + } + + var parentMaterials = referenceRenderer.sharedMaterials; + if (replacementMaterials.Length != parentMaterials.Length) { + replacementMaterials = new MaterialReplacement[parentMaterials.Length]; + } + for (int i = 0; i < parentMaterials.Length; ++i) { + replacementMaterials[i].originalMaterial = parentMaterials[i]; + replacementMaterials[i].replacementMaterial = parentMaterials[i]; + } + Awake(); + LateUpdate(); + } +#endif + + void Awake () { + if (referenceRenderer == null) { + referenceRenderer = this.transform.parent.GetComponentInParent(); + } + + // subscribe to OnMeshAndMaterialsUpdated + var skeletonRenderer = referenceRenderer.GetComponent(); + if (skeletonRenderer) { + skeletonRenderer.OnMeshAndMaterialsUpdated -= UpdateOnCallback; + skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback; + updateViaSkeletonCallback = true; + } + var skeletonGraphic = referenceRenderer.GetComponent(); + if (skeletonGraphic) { + skeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback; + skeletonGraphic.OnMeshAndMaterialsUpdated += UpdateOnCallback; + updateViaSkeletonCallback = true; + } + + referenceMeshFilter = referenceRenderer.GetComponent(); + ownRenderer = this.GetComponent(); + ownMeshFilter = this.GetComponent(); + + for (int i = 0; i < replacementMaterials.Length; ++i) { + var entry = replacementMaterials[i]; + replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial; + } + } + + void LateUpdate () { + if (updateViaSkeletonCallback) + return; + UpdateMaterials(); + } + + void UpdateOnCallback (SkeletonRenderer r) { + UpdateMaterials(); + } + + void UpdateOnCallback (SkeletonGraphic r) { + UpdateMaterials(); + } + + void UpdateMaterials () { + ownMeshFilter.sharedMesh = referenceMeshFilter.sharedMesh; + + var parentMaterials = referenceRenderer.sharedMaterials; + if (sharedMaterials.Length != parentMaterials.Length) { + sharedMaterials = new Material[parentMaterials.Length]; + } + for (int i = 0; i < parentMaterials.Length; ++i) { + var parentMaterial = parentMaterials[i]; + if (replacementMaterialDict.ContainsKey(parentMaterial)) { + sharedMaterials[i] = replacementMaterialDict[parentMaterial]; + } + } + ownRenderer.sharedMaterials = sharedMaterials; + } + } +} diff --git a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs.meta b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs.meta new file mode 100644 index 000000000..b9f2635f0 --- /dev/null +++ b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bbb58643468d3dc479e20aff7c8c611e +timeCreated: 1585240369 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs index 9a8a0b05d..9de516ff0 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs @@ -236,6 +236,10 @@ namespace Spine.Unity { /// OnRebuild is raised after the Skeleton is successfully initialized. public event SkeletonRendererDelegate OnRebuild; + /// OnMeshAndMaterialsUpdated is at the end of LateUpdate after the Mesh and + /// all materials have been updated. + public event SkeletonRendererDelegate OnMeshAndMaterialsUpdated; + protected Spine.AnimationState state; public Spine.AnimationState AnimationState { get { return state; } } @@ -370,6 +374,8 @@ namespace Spine.Unity { } //this.UpdateMaterial(); // TODO: This allocates memory. + if (OnMeshAndMaterialsUpdated != null) + OnMeshAndMaterialsUpdated(this); } #endregion } 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 97e4bb7ed..ae890b2c4 100644 --- a/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs +++ b/spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonRenderer.cs @@ -226,6 +226,10 @@ namespace Spine.Unity { /// OnRebuild is raised after the Skeleton is successfully initialized. public event SkeletonRendererDelegate OnRebuild; + /// OnMeshAndMaterialsUpdated is at the end of LateUpdate after the Mesh and + /// all materials have been updated. + public event SkeletonRendererDelegate OnMeshAndMaterialsUpdated; + public SkeletonDataAsset SkeletonDataAsset { get { return skeletonDataAsset; } } // ISkeletonComponent #region Runtime Instantiation @@ -468,6 +472,9 @@ namespace Spine.Unity { SetMaterialSettingsToFixDrawOrder(); } #endif + + if (OnMeshAndMaterialsUpdated != null) + OnMeshAndMaterialsUpdated(this); } public void FindAndApplySeparatorSlots (string startsWith, bool clearExistingSeparators = true, bool updateStringArray = false) { From 20d0525c22e859d4c56da06ff3f130459fb2148d Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 27 Mar 2020 18:53:53 +0100 Subject: [PATCH 3/5] [unity] Added `Outline Shaders URP` example scene demonstrating the workflow using the new `RenderExistingMesh` component and the new outline URP shader. --- .../RaptorURP/raptor-pma_Material_Outline.mat | 42 + .../raptor-pma_Material_Outline.mat.meta | 8 + ...retchyman-diffuse-pma_Material_Outline.mat | 92 + ...yman-diffuse-pma_Material_Outline.mat.meta | 8 + .../Examples/Outline Shaders URP.unity | 2208 +++++++++++++++++ .../Examples/Outline Shaders URP.unity.meta | 7 + 6 files changed, 2365 insertions(+) create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat.meta create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity create mode 100644 spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity.meta diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat new file mode 100644 index 000000000..d547a38f8 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat @@ -0,0 +1,42 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: raptor-pma_Material_Outline + m_Shader: {fileID: 4800000, guid: 0c26b8f3f8867ba41ac82baf19d8ff91, type: 3} + m_ShaderKeywords: _USE8NEIGHBOURHOOD_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 6c8d8b7e5bcbeb64b84f7a4d23de94dc, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 2800000, guid: 4a7cf7f7c7f74664f8514d290b5f4dd1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - _Cutoff: 0.1 + - _OutlineMipLevel: 0 + - _OutlineReferenceTexWidth: 1024 + - _OutlineSmoothness: 1 + - _OutlineWidth: 1.77 + - _StencilComp: 8 + - _StencilRef: 1 + - _StraightAlphaInput: 0 + - _ThresholdEnd: 0.25 + - _Use8Neighbourhood: 1 + m_Colors: + - _OutlineColor: {r: 1, g: 1, b: 0, a: 1} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat.meta new file mode 100644 index 000000000..47fdc70a5 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/RaptorURP/raptor-pma_Material_Outline.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48fccf41ebe7c7e4e80e2698562616c8 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat new file mode 100644 index 000000000..02651bd25 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat @@ -0,0 +1,92 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: stretchyman-diffuse-pma_Material_Outline + m_Shader: {fileID: 4800000, guid: 0c26b8f3f8867ba41ac82baf19d8ff91, type: 3} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _NORMALMAP _RECEIVE_SHADOWS_OFF _USE8NEIGHBOURHOOD_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + AlphaDepth: true + IGNOREPROJECTOR: true + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AlphaTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BlendTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 2800000, guid: 0d1cf8a59ac52394084f22b49e53548e, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DiffuseRamp: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: c9255abfa116ced46ad8d46908663d9f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 2800000, guid: b61a8e1e7baba4d47b417e8b7cc852e0, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - PixelSnap: 0 + - _BlendAmount: 0 + - _Brightness: 1 + - _BumpScale: 1 + - _Cull: 0 + - _CustomRenderQueue: 0 + - _Cutoff: 0.1 + - _DstBlend: 10 + - _EmissionPower: 2 + - _EnableExternalAlpha: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _Hue: 0 + - _Metallic: 0 + - _OutlineMipLevel: 0 + - _OutlineReferenceTexWidth: 1024 + - _OutlineSmoothness: 1 + - _OutlineWidth: 3 + - _RenderQueue: 0 + - _RimPower: 2 + - _Saturation: 1 + - _ShadowAlphaCutoff: 0.1 + - _SrcBlend: 1 + - _StencilComp: 8 + - _StencilRef: 1 + - _StraightAlphaInput: 0 + - _ThresholdEnd: 0.25 + - _Use8Neighbourhood: 1 + - _ZWrite: 0 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 0} + - _FixedNormal: {r: 0, g: 0, b: 1, a: 1} + - _OutlineColor: {r: 1, g: 1, b: 0, a: 1} + - _OverlayColor: {r: 0, g: 0, b: 0, a: 0} + - _RimColor: {r: 1, g: 1, b: 1, a: 1} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat.meta new file mode 100644 index 000000000..f6b920284 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/2D/Spine Skeletons/StretchymanURP/stretchyman-diffuse-pma_Material_Outline.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c556bf10e5e5267429938469800c7c31 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity new file mode 100644 index 000000000..cea5d6f6b --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity @@ -0,0 +1,2208 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 512 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &117907670 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 117907672} + - component: {fileID: 117907671} + m_Layer: 0 + m_Name: directional Light 2D (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &117907671 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117907670} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 3 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.555 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2.15 + m_LightVolumeOpacity: 0.09 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 1 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0.513 + m_PointLightInnerAngle: 16.769999 + m_PointLightOuterAngle: 41.73 + m_PointLightInnerRadius: 1.7501951 + m_PointLightOuterRadius: 15.677112 + m_PointLightDistance: 9.25 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &117907672 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117907670} + m_LocalRotation: {x: 0, y: 0, z: 0.9999891, w: 0.004668183} + m_LocalPosition: {x: -3.75, y: 10.05, z: -1.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 176.845} +--- !u!1 &222757079 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 222757081} + - component: {fileID: 222757080} + m_Layer: 0 + m_Name: Rim Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &222757080 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222757079} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 3 + m_BlendStyleIndex: 1 + m_FalloffIntensity: 0.555 + m_Color: {r: 0, g: 0.19722795, b: 1, a: 1} + m_Intensity: 1 + m_LightVolumeOpacity: 0 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 0 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0 + m_PointLightInnerAngle: 360 + m_PointLightOuterAngle: 360 + m_PointLightInnerRadius: 27.138403 + m_PointLightOuterRadius: 35.315388 + m_PointLightDistance: 3 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &222757081 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 222757079} + m_LocalRotation: {x: 0, y: 0, z: -0.71310323, w: 0.7010591} + m_LocalPosition: {x: 4.7, y: 10.9, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &420643014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 420643016} + - component: {fileID: 420643015} + m_Layer: 0 + m_Name: Global Light 2D + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &420643015 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420643014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 4 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.5 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.09 + m_LightVolumeOpacity: 0 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 0 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0 + m_PointLightInnerAngle: 360 + m_PointLightOuterAngle: 360 + m_PointLightInnerRadius: 0 + m_PointLightOuterRadius: 1 + m_PointLightDistance: 3 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &420643016 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 420643014} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.3, y: 2.7, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &432616239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 432616240} + - component: {fileID: 432616242} + - component: {fileID: 432616241} + - component: {fileID: 432616244} + - component: {fileID: 432616243} + - component: {fileID: 432616245} + m_Layer: 5 + m_Name: SkeletonGraphic (Doi) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &432616240 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.31187046, y: 0.31187046, z: 0.31187046} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.6787501, y: 0.23321827} + m_AnchorMax: {x: 0.95375, y: 0.69778174} + m_AnchoredPosition: {x: 0.46850586, y: -4.064621} + m_SizeDelta: {x: 463.732, y: 480.53192} + m_Pivot: {x: 0.41940212, y: 0.14496017} +--- !u!114 &432616241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d85b887af7e6c3f45a2e2d2920d641bc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + skeletonDataAsset: {fileID: 11400000, guid: 3c48535ae5679204c950a22a7caaa5a4, type: 2} + initialSkinName: default + initialFlipX: 0 + initialFlipY: 0 + startingAnimation: main + startingLoop: 1 + timeScale: 1 + freeze: 0 + unscaledTime: 0 + meshGenerator: + settings: + useClipping: 1 + zSpacing: 0 + pmaVertexColors: 1 + tintBlack: 0 + calculateTangents: 0 + addNormals: 0 + immutableTriangles: 0 +--- !u!222 &432616242 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_CullTransparentMesh: 0 +--- !u!114 &432616243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 78ceaa27e3b3c27498dcdd7729ebad83, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonGraphic: {fileID: 432616241} + materialWithoutOutline: {fileID: 2100000, guid: b66cf7a186d13054989b33a5c90044e4, + type: 2} + materialWithOutline: {fileID: 2100000, guid: c4ee0f8f4be17434aa3df5774a03b366, type: 2} +--- !u!114 &432616244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 432616243} + m_MethodName: EnableOutlineRendering + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 432616245} + m_MethodName: PlayAnimationLooping + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: blink + m_BoolArgument: 0 + m_CallState: 2 + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 432616243} + m_MethodName: DisableOutlineRendering + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 432616245} + m_MethodName: ClearTrack + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: main + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &432616245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 432616239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 243a062ac84ddf2468989143c0500a95, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonGraphic: {fileID: 432616241} + trackIndex: 1 + playbackSpeed: 0.3 +--- !u!1 &438713513 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 438713516} + - component: {fileID: 438713515} + - component: {fileID: 438713514} + - component: {fileID: 438713517} + - component: {fileID: 438713518} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &438713514 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438713513} + m_Enabled: 1 +--- !u!20 &438713515 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438713513} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &438713516 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438713513} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &438713517 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438713513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 56666c5a40171f54783dd416a44f42bf, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EventMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_MaxRayIntersections: 0 +--- !u!114 &438713518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 438713513} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_CameraOutput: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 +--- !u!1 &523939414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 523939415} + - component: {fileID: 523939418} + - component: {fileID: 523939417} + - component: {fileID: 523939416} + m_Layer: 0 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &523939415 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523939414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.01} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1539523635} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &523939416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523939414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb58643468d3dc479e20aff7c8c611e, type: 3} + m_Name: + m_EditorClassIdentifier: + referenceRenderer: {fileID: 1539523633} + replacementMaterials: + - originalMaterial: {fileID: 2100000, guid: d0bb1df72b79cec4e966733b038217e0, type: 2} + replacementMaterial: {fileID: 2100000, guid: c556bf10e5e5267429938469800c7c31, + type: 2} +--- !u!33 &523939417 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523939414} + m_Mesh: {fileID: 0} +--- !u!23 &523939418 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523939414} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c556bf10e5e5267429938469800c7c31, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &570701010 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570701012} + - component: {fileID: 570701011} + m_Layer: 0 + m_Name: directional Light 2D (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &570701011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570701010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 3 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.555 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2.15 + m_LightVolumeOpacity: 0.09 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 1 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0.513 + m_PointLightInnerAngle: 16.769999 + m_PointLightOuterAngle: 41.73 + m_PointLightInnerRadius: 1.7501951 + m_PointLightOuterRadius: 15.677112 + m_PointLightDistance: 9.25 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &570701012 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570701010} + m_LocalRotation: {x: 0, y: 0, z: 0.9999891, w: 0.004668183} + m_LocalPosition: {x: 5.28, y: 9.97, z: -1.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 176.845} +--- !u!1 &645217387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 645217388} + - component: {fileID: 645217390} + - component: {fileID: 645217389} + m_Layer: 5 + m_Name: Description Text Graphic + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &645217388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645217387} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.0275, y: 0.031118065} + m_AnchorMax: {x: 0.38875, y: 0.16210914} + m_AnchoredPosition: {x: 457, y: -75} + m_SizeDelta: {x: -0.4, y: 144.3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &645217389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645217387} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 2 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'SkeletonGraphic shaders work normally in URP. + + It needs no separate + URP outline GameObject.' +--- !u!222 &645217390 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 645217387} + m_CullTransparentMesh: 0 +--- !u!1 &688931852 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 688931854} + - component: {fileID: 688931853} + m_Layer: 0 + m_Name: directional Light 2D (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &688931853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 688931852} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 3 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.555 + m_Color: {r: 0, g: 1, b: 0.19503093, a: 1} + m_Intensity: 1 + m_LightVolumeOpacity: 0.09 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 1 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0.513 + m_PointLightInnerAngle: 16.769999 + m_PointLightOuterAngle: 41.73 + m_PointLightInnerRadius: 1.7501951 + m_PointLightOuterRadius: 10.79 + m_PointLightDistance: 9.25 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &688931854 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 688931852} + m_LocalRotation: {x: -0, y: -0, z: -0.0057116244, w: 0.9999837} + m_LocalPosition: {x: -0.119999975, y: -3.6902747, z: -1.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -0.65500003} +--- !u!1 &832862684 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 832862685} + - component: {fileID: 832862687} + - component: {fileID: 832862686} + m_Layer: 5 + m_Name: Description Text Add + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &832862685 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832862684} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.0275, y: 0.031118065} + m_AnchorMax: {x: 0.38875, y: 0.16210914} + m_AnchoredPosition: {x: -0.5, y: 286} + m_SizeDelta: {x: -0.4, y: 144.3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &832862686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832862684} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'In URP the Outline has to be a separate GameObject. + + To add an outline + to your SkeletenRenderer: + + 1) Add a child GameObject and move it a bit back. + + 2) + Add a `RenderExistingMesh` component, found in latest `Spine Examples` + + 3) + Copy the original material, add _Outline to its name and set the shader to `Universal + Render Pipeline/Spine/Outline/Skeleton-OutlineOnly`. + + 4) Assign this _Outline + material at the `RenderExistingMesh` under Replacement Materials.' +--- !u!222 &832862687 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 832862684} + m_CullTransparentMesh: 0 +--- !u!1 &839721134 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 839721135} + - component: {fileID: 839721137} + - component: {fileID: 839721136} + m_Layer: 5 + m_Name: Outline Shaders Heading + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &839721135 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 839721134} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.3625, y: 0.48222718} + m_AnchorMax: {x: 0.75375, y: 0.8688909} + m_AnchoredPosition: {x: -1.8999939, y: 1} + m_SizeDelta: {x: -1.2999878, y: -1.7999878} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &839721136 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 839721134} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: c4ee0f8f4be17434aa3df5774a03b366, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: de1fb4dac677a6d45ae2ad12a49091c0, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &839721137 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 839721134} + m_CullTransparentMesh: 0 +--- !u!1 &953433490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 953433494} + - component: {fileID: 953433493} + - component: {fileID: 953433492} + - component: {fileID: 953433491} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &953433491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953433490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &953433492 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953433490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &953433493 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953433490} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &953433494 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 953433490} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 432616240} + - {fileID: 839721135} + - {fileID: 1847925714} + - {fileID: 1290113543} + - {fileID: 1028287914} + - {fileID: 1758924602} + - {fileID: 832862685} + - {fileID: 645217388} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1028287913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028287914} + - component: {fileID: 1028287916} + - component: {fileID: 1028287915} + m_Layer: 5 + m_Name: Description (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1028287914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028287913} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.63625, y: 0} + m_AnchorMax: {x: 0.975, y: 0.23321827} + m_AnchoredPosition: {x: -0.5, y: -1.7000122} + m_SizeDelta: {x: -2.5, y: -1.7000122} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1028287915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028287913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SkeletonGraphic (UI) +--- !u!222 &1028287916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028287913} + m_CullTransparentMesh: 0 +--- !u!1 &1224797673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1224797675} + - component: {fileID: 1224797674} + m_Layer: 0 + m_Name: directional Light 2D (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1224797674 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224797673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LightType: 3 + m_BlendStyleIndex: 0 + m_FalloffIntensity: 0.555 + m_Color: {r: 0, g: 1, b: 0.19503093, a: 1} + m_Intensity: 1 + m_LightVolumeOpacity: 0.09 + m_ApplyToSortingLayers: 00000000 + m_LightCookieSprite: {fileID: 0} + m_UseNormalMap: 1 + m_LightOrder: 0 + m_AlphaBlendOnOverlap: 0 + m_ShadowIntensity: 0 + m_ShadowVolumeIntensity: 0.513 + m_PointLightInnerAngle: 16.769999 + m_PointLightOuterAngle: 41.73 + m_PointLightInnerRadius: 1.7501951 + m_PointLightOuterRadius: 10.79 + m_PointLightDistance: 9.25 + m_PointLightQuality: 1 + m_ShapeLightParametricSides: 5 + m_ShapeLightParametricAngleOffset: 0 + m_ShapeLightParametricRadius: 1 + m_ShapeLightFalloffSize: 0.5 + m_ShapeLightFalloffOffset: {x: 0, y: 0} + m_ShapePath: + - {x: -0.5, y: -0.5, z: 0} + - {x: 0.5, y: -0.5, z: 0} + - {x: 0.5, y: 0.5, z: 0} + - {x: -0.5, y: 0.5, z: 0} +--- !u!4 &1224797675 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1224797673} + m_LocalRotation: {x: -0, y: -0, z: -0.0057116244, w: 0.9999837} + m_LocalPosition: {x: 1.01, y: -3.68, z: -1.95} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -0.65500003} +--- !u!1 &1290113542 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1290113543} + - component: {fileID: 1290113545} + - component: {fileID: 1290113544} + m_Layer: 5 + m_Name: Description (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1290113543 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290113542} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.3625, y: 0} + m_AnchorMax: {x: 0.6937501, y: 0.23321827} + m_AnchoredPosition: {x: 0.5, y: -1.7000122} + m_SizeDelta: {x: 3.5, y: -1.7000122} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1290113544 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290113542} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SkeletonAnimation +--- !u!222 &1290113545 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1290113542} + m_CullTransparentMesh: 0 +--- !u!1 &1489880313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1489880317} + - component: {fileID: 1489880316} + - component: {fileID: 1489880315} + - component: {fileID: 1489880314} + - component: {fileID: 1489880318} + - component: {fileID: 1489880319} + m_Layer: 0 + m_Name: Spine GameObject (raptor-pro) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1489880314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: d67c9e96f4d7b0a4a8f01fdce75b755d, type: 2} + initialSkinName: + initialFlipX: 0 + initialFlipY: 0 + separatorSlotNames: [] + zSpacing: 0 + useClipping: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + tintBlack: 0 + singleSubmesh: 0 + fixDrawOrder: 0 + addNormals: 0 + calculateTangents: 0 + maskInteraction: 0 + maskMaterials: + materialsMaskDisabled: [] + materialsInsideMask: [] + materialsOutsideMask: [] + disableRenderingOnOverride: 1 + _animationName: walk + loop: 1 + timeScale: 1 +--- !u!23 &1489880315 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 4e6ba50fbf623e34cb9aba576e61625d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1489880316 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_Mesh: {fileID: 0} +--- !u!4 &1489880317 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.02, y: -1.82, z: 0} + m_LocalScale: {x: 0.47223, y: 0.47223, z: 0.47223} + m_Children: + - {fileID: 1780468725} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &1489880318 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0.47098446, y: 4.47691} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 14.887501, y: 13.09167} + m_EdgeRadius: 0 +--- !u!114 &1489880319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1489880313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1780468724} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 1489880314} + m_MethodName: set_AnimationName + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: roar + m_BoolArgument: 1 + m_CallState: 2 + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1780468724} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1489880314} + m_MethodName: set_AnimationName + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: walk + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1539523631 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1539523635} + - component: {fileID: 1539523634} + - component: {fileID: 1539523633} + - component: {fileID: 1539523632} + - component: {fileID: 1539523636} + - component: {fileID: 1539523637} + m_Layer: 0 + m_Name: Spine GameObject (stretchyman) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1539523632 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 809479298965dd14abffeeb0844d7fc3, type: 2} + initialSkinName: + initialFlipX: 0 + initialFlipY: 0 + separatorSlotNames: [] + zSpacing: 0 + useClipping: 1 + immutableTriangles: 0 + pmaVertexColors: 0 + clearStateOnDisable: 0 + tintBlack: 0 + singleSubmesh: 0 + fixDrawOrder: 0 + addNormals: 0 + calculateTangents: 1 + maskInteraction: 0 + maskMaterials: + materialsMaskDisabled: [] + materialsInsideMask: [] + materialsOutsideMask: [] + disableRenderingOnOverride: 1 + _animationName: sneak + loop: 1 + timeScale: 0.5 +--- !u!23 &1539523633 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: d0bb1df72b79cec4e966733b038217e0, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!33 &1539523634 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_Mesh: {fileID: 0} +--- !u!4 &1539523635 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.23, y: -2.16, z: 0.52} + m_LocalScale: {x: 0.57548, y: 0.57548, z: 0.57548} + m_Children: + - {fileID: 523939415} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!61 &1539523636 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 6.522094, y: 2.6283302} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 19.635275, y: 6.6419945} + m_EdgeRadius: 0 +--- !u!114 &1539523637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1539523631} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0b148fe25e99eb48b9724523833bab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 523939414} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 1539523632} + m_MethodName: set_AnimationName + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: sneak + m_BoolArgument: 1 + m_CallState: 2 + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 523939414} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1539523632} + m_MethodName: set_AnimationName + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &1628022514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1628022517} + - component: {fileID: 1628022516} + - component: {fileID: 1628022515} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1628022515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1628022514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1628022516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1628022514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1628022517 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1628022514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1758924601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1758924602} + - component: {fileID: 1758924604} + - component: {fileID: 1758924603} + m_Layer: 5 + m_Name: Description Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1758924602 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758924601} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.0275, y: 0.031118065} + m_AnchorMax: {x: 0.38875, y: 0.16210914} + m_AnchoredPosition: {x: -0.5, y: -2.8000488} + m_SizeDelta: {x: -0.3999939, y: 2.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1758924603 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758924601} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Note that the Mesh of the Raptor's jaw is too close to the transparent + border, cutting away part of the outline. Add some extra space at your mesh and + enough padding at atlas baking when using outline shaders! +--- !u!222 &1758924604 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758924601} + m_CullTransparentMesh: 0 +--- !u!1 &1780468724 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1780468725} + - component: {fileID: 1780468728} + - component: {fileID: 1780468727} + - component: {fileID: 1780468726} + m_Layer: 0 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1780468725 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780468724} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.01} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1489880317} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1780468726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780468724} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbb58643468d3dc479e20aff7c8c611e, type: 3} + m_Name: + m_EditorClassIdentifier: + referenceRenderer: {fileID: 1489880315} + replacementMaterials: + - originalMaterial: {fileID: 2100000, guid: 4e6ba50fbf623e34cb9aba576e61625d, type: 2} + replacementMaterial: {fileID: 2100000, guid: 48fccf41ebe7c7e4e80e2698562616c8, + type: 2} +--- !u!33 &1780468727 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780468724} + m_Mesh: {fileID: 0} +--- !u!23 &1780468728 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1780468724} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 48fccf41ebe7c7e4e80e2698562616c8, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 +--- !u!1 &1847925713 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1847925714} + - component: {fileID: 1847925716} + - component: {fileID: 1847925715} + m_Layer: 5 + m_Name: Description (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1847925714 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847925713} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 953433494} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.048750002, y: 0} + m_AnchorMax: {x: 0.38875, y: 0.23321827} + m_AnchoredPosition: {x: 1, y: -1.7000122} + m_SizeDelta: {x: -3.5, y: -1.7000122} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1847925715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847925713} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9056604, g: 0.9056604, b: 0.9056604, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: SkeletonAnimation +--- !u!222 &1847925716 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1847925713} + m_CullTransparentMesh: 0 diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity.meta new file mode 100644 index 000000000..2def07113 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Examples/Outline Shaders URP.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 58780ae2288084f459cd0023810d0b88 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From a5c3200f89674a2614f12bee353c73cb37c9839d Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 27 Mar 2020 19:09:52 +0100 Subject: [PATCH 4/5] [unity] Added changelog entry for the last commits. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb528e949..72752d904 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -218,6 +218,14 @@ When exporting atlas textures from Spine with `Premultiply alpha` enabled (the default), you can leave it at `PMATexturePreset`. If you have disabled `Premultiply alpha`, set it to the included `StraightAlphaTexturePreset` asset. You can also create your own `TextureImporter` `Preset` asset and assign it here (include `PMA` or `Straight` in the name). In Unity versions before 2018.3 you can use `Texture2D` template assets instead of the newer `Preset` assets. Materials created for imported textures will also have the `Straight Alpha Texture` parameter configured accordingly. * All `Sprite` shaders (including URP and LWRP extension packages) now provide an additional `Fixed Normal Space` option `World-Space`. PReviously options were limited to `View-Space` and `Model-Space`. * `SkeletonGraphic` now fully supports [`SkeletonUtility`](http://esotericsoftware.com/spine-unity#SkeletonUtility) for generating a hierarchy of [`SkeletonUtilityBones`](http://esotericsoftware.com/spine-unity#SkeletonUtilityBone) in both modes `Follow` and `Override`. This also enables creating hinge chain physics rigs and using `SkeletonUtilityConstraints` such as `SkeletonUtilityGroundConstraint` and `SkeletonUtilityEyeConstraint` on `SkeletonGraphic`. + * Added `OnMeshAndMaterialsUpdated` callback event to `SkeletonRenderer` and `SkeletonGraphic`. It is issued at the end of `LateUpdate`, before rendering. + * Added `Skeleton-OutlineOnly` single pass shader to LWRP and URP extension modules. It can be assigned to materials as `Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly`. This allows for separate outline child *GameObjects* that reference the existing Mesh of their parent, and re-draw the mesh using this outline shader. + * Added example component `RenderExistingMesh` to render a mesh again with different materials, as required by the new `Skeleton-OutlineOnly` shaders. + In URP the outline has to be rendered via a separate GameObject as URP does not allow multiple render passes. To add an outline to your SkeletenRenderer: + 1) Add a child GameObject and move it a bit back (e.g. position Z = 0.01). + 2) Add a `RenderExistingMesh` component, provided in the `Spine Examples/Scripts/Sample Components` directory. + 3) Copy the original material, add *_Outline* to its name and set the shader to `Universal Render Pipeline/Spine/Outline/Skeleton-OutlineOnly`. + 4) Assign this *_Outline* material at the `RenderExistingMesh` component under *Replacement Materials*. * **Changes of default values** * `SkeletonMecanim`'s `Layer Mix Mode` now defaults to `MixMode.MixNext` instead of `MixMode.MixAlways`. From f75adfaca855678ef11c0bdd1bd8a207997bd346 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Fri, 27 Mar 2020 19:29:52 +0100 Subject: [PATCH 5/5] [unity] Improved Editor behaviour of RenderExistingMesh component. Removed unnecessary SkeletonGraphic codeparts from it. --- .../Sample Components/RenderExistingMesh.cs | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs index d268708ea..c4df6b00c 100644 --- a/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs +++ b/spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs @@ -94,24 +94,29 @@ namespace Spine.Unity.Examples { skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback; updateViaSkeletonCallback = true; } - var skeletonGraphic = referenceRenderer.GetComponent(); - if (skeletonGraphic) { - skeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback; - skeletonGraphic.OnMeshAndMaterialsUpdated += UpdateOnCallback; - updateViaSkeletonCallback = true; - } - referenceMeshFilter = referenceRenderer.GetComponent(); ownRenderer = this.GetComponent(); ownMeshFilter = this.GetComponent(); - for (int i = 0; i < replacementMaterials.Length; ++i) { - var entry = replacementMaterials[i]; - replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial; - } + InitializeDict(); } + #if UNITY_EDITOR + private void Update () { + if (!Application.isPlaying) { + InitializeDict(); + } + } + #endif + void LateUpdate () { + #if UNITY_EDITOR + if (!Application.isPlaying) { + UpdateMaterials(); + return; + } + #endif + if (updateViaSkeletonCallback) return; UpdateMaterials(); @@ -121,10 +126,6 @@ namespace Spine.Unity.Examples { UpdateMaterials(); } - void UpdateOnCallback (SkeletonGraphic r) { - UpdateMaterials(); - } - void UpdateMaterials () { ownMeshFilter.sharedMesh = referenceMeshFilter.sharedMesh; @@ -140,5 +141,12 @@ namespace Spine.Unity.Examples { } ownRenderer.sharedMaterials = sharedMaterials; } + + void InitializeDict () { + for (int i = 0; i < replacementMaterials.Length; ++i) { + var entry = replacementMaterials[i]; + replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial; + } + } } }