From 9c21942482701ccf28778a210fef03f3cae151e6 Mon Sep 17 00:00:00 2001 From: pharan Date: Sat, 26 Nov 2016 03:05:23 +0800 Subject: [PATCH] [unity] Updated examples, modules and editors. --- .../Getting Started/6 SkeletonGraphic.unity | 4 +- .../Scripts/BasicPlatformerController.cs | 312 ++- .../Scripts/ConstrainedCamera.cs | 31 +- .../Getting Started/Scripts/Raptor.cs | 72 +- .../Scripts/SpineBeginnerTwo.cs | 87 +- .../Scripts/SpineBlinkPlayer.cs | 26 +- .../Scripts/SpineboyBeginnerInput.cs | 49 +- .../Scripts/SpineboyBeginnerModel.cs | 136 +- .../Scripts/SpineboyBeginnerView.cs | 190 +- .../Other Examples/AtlasRegionAttacher.unity | 26 +- .../Examples/Other Examples/Dragon.unity | 94 +- .../Other Examples/Mix and Match.unity | 1090 ++++++++-- .../Other Examples/Mix and Match.unity.meta | 6 +- .../SkeletonRenderSeparator.unity | 427 +++- .../Other Examples/SkeletonUtility Eyes.unity | 1860 ++++++++++++++++- .../SkeletonUtility GroundConstraint.unity | 68 +- .../SkeletonUtility Ragdoll.unity | 735 +++++-- .../Examples/Other Examples/SpineGauge.unity | 400 +++- .../Other Examples/Sprite Shaders.unity | 852 ++++++++ .../Other Examples/Sprite Shaders.unity.meta | 8 + .../Scripts/{Chimera.cs => AttackSpineboy.cs} | 38 +- ...Chimera.cs.meta => AttackSpineboy.cs.meta} | 4 +- .../Examples/Scripts/FootSoldierExample.cs | 102 +- .../Assets/Examples/Scripts/Goblins.cs | 56 +- .../Assets/Examples/Scripts/MixAndMatch.cs | 112 + .../Examples/Scripts/MixAndMatch.cs.meta | 12 + .../Examples/Scripts/RaggedySpineboy.cs | 141 +- .../Assets/Examples/Scripts/Rotator.cs | 12 + .../Assets/Examples/Scripts/Rotator.cs.meta | 12 + .../Assets/Examples/Scripts/SpineGauge.cs | 67 +- .../Assets/Examples/Scripts/Spineboy.cs | 35 +- .../Assets/Examples/Scripts/SpineboyPole.cs | 72 +- .../Examples/Spine/Dragon/dragon.png.meta | 302 ++- .../Examples/Spine/Dragon/dragon2.png.meta | 274 ++- .../Examples/Spine/Dragon/dragon_dragon.mat | 22 +- .../Examples/Spine/Dragon/dragon_dragon2.mat | 22 +- .../Assets/Examples/Spine/Eyes/eyes.png.meta | 4 +- .../Examples/Spine/Eyes/eyes_Material.mat | 22 +- .../FootSoldier/Equipment/Equipment.png.meta | 68 +- .../Equipment/Equipment_Material.mat | 22 +- .../Spine/FootSoldier/FS_White.png.meta | 4 +- .../Spine/FootSoldier/FS_White_Material.mat | 22 +- .../Examples/Spine/Gauge/Gauge.png.meta | 4 +- .../Examples/Spine/Gauge/Gauge_Material.mat | 22 +- .../Assets/Examples/Spine/Goblins/dagger.png | Bin 0 -> 6941 bytes .../Examples/Spine/Goblins/dagger.png.meta | 59 + .../Examples/Spine/Goblins/goblins.png.meta | 6 +- .../Spine/Goblins/goblins_Material.mat | 22 +- spine-unity/Assets/Examples/Spine/Hero.prefab | 102 - .../Assets/Examples/Spine/Hero.prefab.meta | 4 - .../Examples/Spine/Hero/hero-mesh.png.meta | 296 ++- .../Spine/Hero/hero-mesh_Material.mat | 22 +- .../Examples/Spine/Raggedy Spineboy.prefab | 165 -- .../Spine/Raggedy Spineboy.prefab.meta | 4 - .../Raggedy Spineboy.png.meta | 6 +- .../Raggedy Spineboy_Material.mat | 22 +- .../Raggedy Spineboy_SkeletonData.asset | 2 +- .../Examples/Spine/Raptor/raptor.png.meta | 4 +- .../Examples/Spine/Raptor/raptor_Material.mat | 22 +- .../Examples/Spine/Spineboy/spineboy.json | 30 +- .../Examples/Spine/Spineboy/spineboy.png.meta | 388 +++- .../Spine/Spineboy/spineboy_Atlas.asset | 2 +- .../Spine/Spineboy/spineboy_Material.mat | 22 +- .../Spine/Spineboy/spineboy_Material.mat.meta | 6 +- .../Spineboy/spineboy_SkeletonData.asset | 2 +- .../Spine/Spineunitygirl/Doi.png.meta | 6 +- .../Spine/Spineunitygirl/Doi_Material.mat | 22 +- .../Spineunitygirl/Doi_SkeletonData.asset | 2 +- .../Assets/Examples/Spine/Strechyman.meta | 9 + .../stretchyman-diffuse-pma.atlas.txt | 41 + .../stretchyman-diffuse-pma.atlas.txt.meta | 8 + .../Strechyman/stretchyman-diffuse-pma.png | Bin 0 -> 101946 bytes .../stretchyman-diffuse-pma.png.meta | 59 + .../stretchyman-diffuse-pma_Atlas.asset | 16 + .../stretchyman-diffuse-pma_Atlas.asset.meta | 8 + .../stretchyman-diffuse-pma_Material.mat | 107 + .../stretchyman-diffuse-pma_Material.mat.meta | 8 + .../Spine/Strechyman/stretchyman-emission.png | Bin 0 -> 4412 bytes .../Strechyman/stretchyman-emission.png.meta | 59 + .../Spine/Strechyman/stretchyman-normals.png | Bin 0 -> 130400 bytes .../Strechyman/stretchyman-normals.png.meta | 59 + .../Spine/Strechyman/stretchyman.json | 773 +++++++ .../Spine/Strechyman/stretchyman.json.meta | 8 + .../Strechyman/stretchyman_SkeletonData.asset | 22 + .../stretchyman_SkeletonData.asset.meta | 8 + .../Assets/Examples/Spine/dragon.prefab | 113 - .../Assets/Examples/Spine/dragon.prefab.meta | 4 - spine-unity/Assets/Examples/Spine/eyes.prefab | 102 - .../Assets/Examples/Spine/eyes.prefab.meta | 4 - .../Assets/Examples/Spine/raptor.prefab | 102 - .../Assets/Examples/Spine/raptor.prefab.meta | 4 - .../Assets/Examples/Spine/spineboy.prefab | 102 - .../Examples/Spine/spineboy.prefab.meta | 4 - .../Editor/SkeletonDataAssetInspector.cs | 38 +- .../Editor/SpineAttributeDrawers.cs | 10 +- .../Editor/SpineEditorUtilities.cs | 75 +- .../Editor/SpineInspectorUtility.cs | 15 + .../AtlasRegionAttacher.cs | 152 +- .../AtlasRegionAttacher.cs.meta | 0 .../AttachmentTools/AttachmentTools.cs | 76 +- .../Modules/AttachmentTools/SpriteAttacher.cs | 112 + .../SpriteAttacher.cs.meta | 0 .../spine-unity/Modules/CustomSkin.meta | 9 + .../Modules/{ => CustomSkin}/CustomSkin.cs | 166 +- .../{ => CustomSkin}/CustomSkin.cs.meta | 0 .../Sprite/Editor/SpineSpriteShaderGUI.cs | 11 +- .../Shaders/SkeletonGraphicDefault.mat | Bin 5060 -> 3004 bytes .../spine-unity/Modules/SpriteAttacher.cs | 261 --- .../Assets/spine-unity/Shaders/HiddenPass.mat | Bin 4288 -> 863 bytes .../Editor/SkeletonUtilityBoneInspector.cs | 4 +- .../SkeletonUtility/SkeletonUtility.cs | 1 - .../Assets/spine-unity/SpineAttributes.cs | 6 +- 112 files changed, 9002 insertions(+), 2694 deletions(-) create mode 100644 spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity create mode 100644 spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity.meta rename spine-unity/Assets/Examples/Scripts/{Chimera.cs => AttackSpineboy.cs} (67%) rename spine-unity/Assets/Examples/Scripts/{Chimera.cs.meta => AttackSpineboy.cs.meta} (69%) create mode 100644 spine-unity/Assets/Examples/Scripts/MixAndMatch.cs create mode 100644 spine-unity/Assets/Examples/Scripts/MixAndMatch.cs.meta create mode 100644 spine-unity/Assets/Examples/Scripts/Rotator.cs create mode 100644 spine-unity/Assets/Examples/Scripts/Rotator.cs.meta create mode 100644 spine-unity/Assets/Examples/Spine/Goblins/dagger.png create mode 100644 spine-unity/Assets/Examples/Spine/Goblins/dagger.png.meta delete mode 100644 spine-unity/Assets/Examples/Spine/Hero.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/Hero.prefab.meta delete mode 100644 spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.png create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.png.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma_Atlas.asset create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma_Atlas.asset.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma_Material.mat create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma_Material.mat.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-emission.png create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-emission.png.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json.meta create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset create mode 100644 spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset.meta delete mode 100644 spine-unity/Assets/Examples/Spine/dragon.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/dragon.prefab.meta delete mode 100644 spine-unity/Assets/Examples/Spine/eyes.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/eyes.prefab.meta delete mode 100644 spine-unity/Assets/Examples/Spine/raptor.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/raptor.prefab.meta delete mode 100644 spine-unity/Assets/Examples/Spine/spineboy.prefab delete mode 100644 spine-unity/Assets/Examples/Spine/spineboy.prefab.meta rename spine-unity/Assets/spine-unity/Modules/{ => AttachmentTools}/AtlasRegionAttacher.cs (80%) rename spine-unity/Assets/spine-unity/Modules/{ => AttachmentTools}/AtlasRegionAttacher.cs.meta (100%) create mode 100644 spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs rename spine-unity/Assets/spine-unity/Modules/{ => AttachmentTools}/SpriteAttacher.cs.meta (100%) create mode 100644 spine-unity/Assets/spine-unity/Modules/CustomSkin.meta rename spine-unity/Assets/spine-unity/Modules/{ => CustomSkin}/CustomSkin.cs (97%) rename spine-unity/Assets/spine-unity/Modules/{ => CustomSkin}/CustomSkin.cs.meta (100%) delete mode 100644 spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs diff --git a/spine-unity/Assets/Examples/Getting Started/6 SkeletonGraphic.unity b/spine-unity/Assets/Examples/Getting Started/6 SkeletonGraphic.unity index 43719bd00..9deef7c07 100644 --- a/spine-unity/Assets/Examples/Getting Started/6 SkeletonGraphic.unity +++ b/spine-unity/Assets/Examples/Getting Started/6 SkeletonGraphic.unity @@ -358,7 +358,7 @@ RectTransform: m_RootOrder: 0 m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0.000004069, y: 1363} + m_AnchoredPosition: {x: 0.000004069, y: 0} m_SizeDelta: {x: 0, y: 1872} m_Pivot: {x: 0, y: 1} --- !u!1 &611702901 @@ -996,7 +996,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 2091633436} m_HandleRect: {fileID: 2091633435} m_Direction: 2 - m_Value: 0 + m_Value: 1 m_Size: 0.2719017 m_NumberOfSteps: 0 m_OnValueChanged: diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/BasicPlatformerController.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/BasicPlatformerController.cs index 48b234728..9209dbc73 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/BasicPlatformerController.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/BasicPlatformerController.cs @@ -31,188 +31,174 @@ // Contributed by: Mitch Thompson using UnityEngine; -using System.Collections; using Spine.Unity; -[RequireComponent(typeof(CharacterController))] -public class BasicPlatformerController : MonoBehaviour { +namespace Spine.Unity.Examples { + [RequireComponent(typeof(CharacterController))] + public class BasicPlatformerController : MonoBehaviour { -#if UNITY_4_5 - [Header("Controls")] -#endif - public string XAxis = "Horizontal"; - public string YAxis = "Vertical"; - public string JumpButton = "Jump"; + [Header("Controls")] + public string XAxis = "Horizontal"; + public string YAxis = "Vertical"; + public string JumpButton = "Jump"; -#if UNITY_4_5 - [Header("Moving")] -#endif - public float walkSpeed = 4; - public float runSpeed = 10; - public float gravity = 65; + [Header("Moving")] + public float walkSpeed = 4; + public float runSpeed = 10; + public float gravity = 65; -#if UNITY_4_5 - [Header("Jumping")] -#endif - public float jumpSpeed = 25; - public float jumpDuration = 0.5f; - public float jumpInterruptFactor = 100; - public float forceCrouchVelocity = 25; - public float forceCrouchDuration = 0.5f; + [Header("Jumping")] + public float jumpSpeed = 25; + public float jumpDuration = 0.5f; + public float jumpInterruptFactor = 100; + public float forceCrouchVelocity = 25; + public float forceCrouchDuration = 0.5f; -#if UNITY_4_5 - [Header("Graphics")] -#endif - public Transform graphicsRoot; - public SkeletonAnimation skeletonAnimation; + [Header("Graphics")] + public Transform graphicsRoot; + public SkeletonAnimation skeletonAnimation; -#if UNITY_4_5 - [Header("Animation")] -#endif - [SpineAnimation(dataField: "skeletonAnimation")] - public string walkName = "Walk"; - [SpineAnimation(dataField: "skeletonAnimation")] - public string runName = "Run"; - [SpineAnimation(dataField: "skeletonAnimation")] - public string idleName = "Idle"; - [SpineAnimation(dataField: "skeletonAnimation")] - public string jumpName = "Jump"; - [SpineAnimation(dataField: "skeletonAnimation")] - public string fallName = "Fall"; - [SpineAnimation(dataField: "skeletonAnimation")] - public string crouchName = "Crouch"; + [Header("Animation")] + [SpineAnimation(dataField: "skeletonAnimation")] + public string walkName = "Walk"; + [SpineAnimation(dataField: "skeletonAnimation")] + public string runName = "Run"; + [SpineAnimation(dataField: "skeletonAnimation")] + public string idleName = "Idle"; + [SpineAnimation(dataField: "skeletonAnimation")] + public string jumpName = "Jump"; + [SpineAnimation(dataField: "skeletonAnimation")] + public string fallName = "Fall"; + [SpineAnimation(dataField: "skeletonAnimation")] + public string crouchName = "Crouch"; -#if UNITY_4_5 - [Header("Audio")] -#endif - public AudioSource jumpAudioSource; - public AudioSource hardfallAudioSource; - public AudioSource footstepAudioSource; - [SpineEvent] - public string footstepEventName = "Footstep"; - CharacterController controller; - Vector2 velocity = Vector2.zero; - Vector2 lastVelocity = Vector2.zero; - bool lastGrounded = false; - float jumpEndTime = 0; - bool jumpInterrupt = false; - float forceCrouchEndTime; - Quaternion flippedRotation = Quaternion.Euler(0, 180, 0); + [Header("Audio")] + public AudioSource jumpAudioSource; + public AudioSource hardfallAudioSource; + public AudioSource footstepAudioSource; + [SpineEvent] + public string footstepEventName = "Footstep"; + CharacterController controller; + Vector2 velocity = Vector2.zero; + Vector2 lastVelocity = Vector2.zero; + bool lastGrounded = false; + float jumpEndTime = 0; + bool jumpInterrupt = false; + float forceCrouchEndTime; + Quaternion flippedRotation = Quaternion.Euler(0, 180, 0); - void Awake () { - controller = GetComponent(); - } - - void Start () { - // Register a callback for Spine Events (in this case, Footstep) - skeletonAnimation.state.Event += HandleEvent; - } - - void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { - // Play some sound if footstep event fired - if (e.Data.Name == footstepEventName) { - footstepAudioSource.Stop(); - footstepAudioSource.pitch = GetRandomPitch(0.2f); - footstepAudioSource.Play(); - } - } - - void Update () { - //control inputs - float x = Input.GetAxis(XAxis); - float y = Input.GetAxis(YAxis); - //check for force crouch - bool crouching = (controller.isGrounded && y < -0.5f) || (forceCrouchEndTime > Time.time); - velocity.x = 0; - - //Calculate control velocity - if (!crouching) { - if (Input.GetButtonDown(JumpButton) && controller.isGrounded) { - //jump - jumpAudioSource.Stop(); - jumpAudioSource.Play(); - velocity.y = jumpSpeed; - jumpEndTime = Time.time + jumpDuration; - } else if (Time.time < jumpEndTime && Input.GetButtonUp(JumpButton)) { - jumpInterrupt = true; - } - - - if (x != 0) { - //walk or run - velocity.x = Mathf.Abs(x) > 0.6f ? runSpeed : walkSpeed; - velocity.x *= Mathf.Sign(x); - } - - if (jumpInterrupt) { - //interrupt jump and smoothly cut Y velocity - if (velocity.y > 0) { - velocity.y = Mathf.MoveTowards(velocity.y, 0, Time.deltaTime * 100); - } else { - jumpInterrupt = false; - } - } + void Awake () { + controller = GetComponent(); } - //apply gravity F = mA (Learn it, love it, live it) - velocity.y -= gravity * Time.deltaTime; - - //move - controller.Move(new Vector3(velocity.x, velocity.y, 0) * Time.deltaTime); - - if (controller.isGrounded) { - //cancel out Y velocity if on ground - velocity.y = -gravity * Time.deltaTime; - jumpInterrupt = false; + void Start () { + // Register a callback for Spine Events (in this case, Footstep) + skeletonAnimation.state.Event += HandleEvent; } - - Vector2 deltaVelocity = lastVelocity - velocity; - - if (!lastGrounded && controller.isGrounded) { - //detect hard fall - if ((gravity * Time.deltaTime) - deltaVelocity.y > forceCrouchVelocity) { - forceCrouchEndTime = Time.time + forceCrouchDuration; - hardfallAudioSource.Play(); - } else { - //play footstep audio if light fall because why not + void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { + // Play some sound if footstep event fired + if (e.Data.Name == footstepEventName) { + footstepAudioSource.Stop(); + footstepAudioSource.pitch = GetRandomPitch(0.2f); footstepAudioSource.Play(); } - } - //graphics updates - if (controller.isGrounded) { - if (crouching) { //crouch - skeletonAnimation.AnimationName = crouchName; - } else { - if (x == 0) //idle - skeletonAnimation.AnimationName = idleName; - else //move - skeletonAnimation.AnimationName = Mathf.Abs(x) > 0.6f ? runName : walkName; + void Update () { + //control inputs + float x = Input.GetAxis(XAxis); + float y = Input.GetAxis(YAxis); + //check for force crouch + bool crouching = (controller.isGrounded && y < -0.5f) || (forceCrouchEndTime > Time.time); + velocity.x = 0; + + //Calculate control velocity + if (!crouching) { + if (Input.GetButtonDown(JumpButton) && controller.isGrounded) { + //jump + jumpAudioSource.Stop(); + jumpAudioSource.Play(); + velocity.y = jumpSpeed; + jumpEndTime = Time.time + jumpDuration; + } else if (Time.time < jumpEndTime && Input.GetButtonUp(JumpButton)) { + jumpInterrupt = true; + } + + + if (x != 0) { + //walk or run + velocity.x = Mathf.Abs(x) > 0.6f ? runSpeed : walkSpeed; + velocity.x *= Mathf.Sign(x); + } + + if (jumpInterrupt) { + //interrupt jump and smoothly cut Y velocity + if (velocity.y > 0) { + velocity.y = Mathf.MoveTowards(velocity.y, 0, Time.deltaTime * 100); + } else { + jumpInterrupt = false; + } + } } - } else { - if (velocity.y > 0) //jump - skeletonAnimation.AnimationName = jumpName; - else //fall - skeletonAnimation.AnimationName = fallName; - } - //flip left or right - if (x > 0) - graphicsRoot.localRotation = Quaternion.identity; - else if (x < 0) + //apply gravity F = mA (Learn it, love it, live it) + velocity.y -= gravity * Time.deltaTime; + + //move + controller.Move(new Vector3(velocity.x, velocity.y, 0) * Time.deltaTime); + + if (controller.isGrounded) { + //cancel out Y velocity if on ground + velocity.y = -gravity * Time.deltaTime; + jumpInterrupt = false; + } + + + Vector2 deltaVelocity = lastVelocity - velocity; + + if (!lastGrounded && controller.isGrounded) { + //detect hard fall + if ((gravity * Time.deltaTime) - deltaVelocity.y > forceCrouchVelocity) { + forceCrouchEndTime = Time.time + forceCrouchDuration; + hardfallAudioSource.Play(); + } else { + //play footstep audio if light fall because why not + footstepAudioSource.Play(); + } + + } + + //graphics updates + if (controller.isGrounded) { + if (crouching) { //crouch + skeletonAnimation.AnimationName = crouchName; + } else { + if (x == 0) //idle + skeletonAnimation.AnimationName = idleName; + else //move + skeletonAnimation.AnimationName = Mathf.Abs(x) > 0.6f ? runName : walkName; + } + } else { + if (velocity.y > 0) //jump + skeletonAnimation.AnimationName = jumpName; + else //fall + skeletonAnimation.AnimationName = fallName; + } + + //flip left or right + if (x > 0) + graphicsRoot.localRotation = Quaternion.identity; + else if (x < 0) graphicsRoot.localRotation = flippedRotation; - - //store previous state - lastVelocity = velocity; - lastGrounded = controller.isGrounded; + //store previous state + lastVelocity = velocity; + lastGrounded = controller.isGrounded; + } + + static float GetRandomPitch (float maxOffset) { + return 1f + Random.Range(-maxOffset, maxOffset); + } } - - #region Utility - static float GetRandomPitch (float maxOffset) { - return 1f + Random.Range(-maxOffset, maxOffset); - } - #endregion -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/ConstrainedCamera.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/ConstrainedCamera.cs index ded5fe8d4..39cecbd63 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/ConstrainedCamera.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/ConstrainedCamera.cs @@ -31,22 +31,23 @@ // Contributed by: Mitch Thompson using UnityEngine; -using System.Collections; -public class ConstrainedCamera : MonoBehaviour { - public Transform target; - public Vector3 offset; - public Vector3 min; - public Vector3 max; - public float smoothing = 5f; +namespace Spine.Unity.Examples { + public class ConstrainedCamera : MonoBehaviour { + public Transform target; + public Vector3 offset; + public Vector3 min; + public Vector3 max; + public float smoothing = 5f; - // Update is called once per frame - void LateUpdate () { - Vector3 goalPoint = target.position + offset; - goalPoint.x = Mathf.Clamp(goalPoint.x, min.x, max.x); - goalPoint.y = Mathf.Clamp(goalPoint.y, min.y, max.y); - goalPoint.z = Mathf.Clamp(goalPoint.z, min.z, max.z); + // Update is called once per frame + void LateUpdate () { + Vector3 goalPoint = target.position + offset; + goalPoint.x = Mathf.Clamp(goalPoint.x, min.x, max.x); + goalPoint.y = Mathf.Clamp(goalPoint.y, min.y, max.y); + goalPoint.z = Mathf.Clamp(goalPoint.z, min.z, max.z); - transform.position = Vector3.Lerp(transform.position, goalPoint, smoothing * Time.deltaTime); + transform.position = Vector3.Lerp(transform.position, goalPoint, smoothing * Time.deltaTime); + } } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/Raptor.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/Raptor.cs index 7dd573862..32d6b8ce7 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/Raptor.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/Raptor.cs @@ -32,54 +32,54 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class Raptor : MonoBehaviour { +namespace Spine.Unity.Examples { + public class Raptor : MonoBehaviour { - #region Inspector - [SpineAnimation] - public string walk = "walk"; + #region Inspector + [SpineAnimation] + public string walk = "walk"; - [SpineAnimation] - public string gungrab = "gungrab"; + [SpineAnimation] + public string gungrab = "gungrab"; - [SpineAnimation] - public string gunkeep = "gunkeep"; + [SpineAnimation] + public string gunkeep = "gunkeep"; - [SpineEvent] - public string footstepEvent = "footstep"; + [SpineEvent] + public string footstepEvent = "footstep"; - public AudioSource footstepAudioSource; - #endregion + public AudioSource footstepAudioSource; + #endregion - SkeletonAnimation skeletonAnimation; + SkeletonAnimation skeletonAnimation; - void Start () { - skeletonAnimation = GetComponent(); - skeletonAnimation.state.Event += HandleEvent; - StartCoroutine(GunGrabRoutine()); - } - - void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { - if (e.Data.Name == footstepEvent) { - footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f); - footstepAudioSource.Play(); + void Start () { + skeletonAnimation = GetComponent(); + skeletonAnimation.state.Event += HandleEvent; + StartCoroutine(GunGrabRoutine()); } - } - IEnumerator GunGrabRoutine () { - // Play the walk animation on track 0. - skeletonAnimation.state.SetAnimation(0, walk, true); + void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { + if (e.Data.Name == footstepEvent) { + footstepAudioSource.pitch = 0.5f + Random.Range(-0.2f, 0.2f); + footstepAudioSource.Play(); + } + } - // Repeatedly play the gungrab and gunkeep animation on track 1. - while (true) { - - yield return new WaitForSeconds(Random.Range(0.5f, 3f)); - skeletonAnimation.state.SetAnimation(1, gungrab, false); + IEnumerator GunGrabRoutine () { + // Play the walk animation on track 0. + skeletonAnimation.state.SetAnimation(0, walk, true); - yield return new WaitForSeconds(Random.Range(0.5f, 3f)); - skeletonAnimation.state.SetAnimation(1, gunkeep, false); + // Repeatedly play the gungrab and gunkeep animation on track 1. + while (true) { + yield return new WaitForSeconds(Random.Range(0.5f, 3f)); + skeletonAnimation.state.SetAnimation(1, gungrab, false); + + yield return new WaitForSeconds(Random.Range(0.5f, 3f)); + skeletonAnimation.state.SetAnimation(1, gunkeep, false); + } } } - -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBeginnerTwo.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBeginnerTwo.cs index c4608d076..b53e1613f 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBeginnerTwo.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBeginnerTwo.cs @@ -32,61 +32,64 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class SpineBeginnerTwo : MonoBehaviour { +namespace Spine.Unity.Examples { + public class SpineBeginnerTwo : MonoBehaviour { - #region Inspector - // [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation. - [SpineAnimation] - public string runAnimationName; + #region Inspector + // [SpineAnimation] attribute allows an Inspector dropdown of Spine animation names coming form SkeletonAnimation. + [SpineAnimation] + public string runAnimationName; - [SpineAnimation] - public string idleAnimationName; + [SpineAnimation] + public string idleAnimationName; - [SpineAnimation] - public string walkAnimationName; + [SpineAnimation] + public string walkAnimationName; - [SpineAnimation] - public string shootAnimationName; - #endregion + [SpineAnimation] + public string shootAnimationName; + #endregion - SkeletonAnimation skeletonAnimation; + SkeletonAnimation skeletonAnimation; - // Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector. - public Spine.AnimationState spineAnimationState; - public Spine.Skeleton skeleton; + // Spine.AnimationState and Spine.Skeleton are not Unity-serialized objects. You will not see them as fields in the inspector. + public Spine.AnimationState spineAnimationState; + public Spine.Skeleton skeleton; - void Start () { - // Make sure you get these AnimationState and Skeleton references in Start or Later. Getting and using them in Awake is not guaranteed by default execution order. - skeletonAnimation = GetComponent(); - spineAnimationState = skeletonAnimation.state; - skeleton = skeletonAnimation.skeleton; + void Start () { + // Make sure you get these AnimationState and Skeleton references in Start or Later. Getting and using them in Awake is not guaranteed by default execution order. + skeletonAnimation = GetComponent(); + spineAnimationState = skeletonAnimation.state; + skeleton = skeletonAnimation.skeleton; - StartCoroutine(DoDemoRoutine()); - } - - /// This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more. - IEnumerator DoDemoRoutine () { - - while (true) { - // SetAnimation is the basic way to set an animation. - // SetAnimation sets the animation and starts playing it from the beginning. - // Common Mistake: If you keep calling it in Update, it will keep showing the first pose of the animation, do don't do that. + StartCoroutine(DoDemoRoutine()); + } - spineAnimationState.SetAnimation(0, walkAnimationName, true); - yield return new WaitForSeconds(1.5f); + /// This is an infinitely repeating Unity Coroutine. Read the Unity documentation on Coroutines to learn more. + IEnumerator DoDemoRoutine () { - // skeletonAnimation.AnimationName = runAnimationName; // this line also works for quick testing/simple uses. - spineAnimationState.SetAnimation(0, runAnimationName, true); - yield return new WaitForSeconds(1.5f); + while (true) { + // SetAnimation is the basic way to set an animation. + // SetAnimation sets the animation and starts playing it from the beginning. + // Common Mistake: If you keep calling it in Update, it will keep showing the first pose of the animation, do don't do that. - spineAnimationState.SetAnimation(0, idleAnimationName, true); - yield return new WaitForSeconds(1f); + spineAnimationState.SetAnimation(0, walkAnimationName, true); + yield return new WaitForSeconds(1.5f); - skeleton.FlipX = true; // skeleton allows you to flip the skeleton. - yield return new WaitForSeconds(0.5f); - skeleton.FlipX = false; - yield return new WaitForSeconds(0.5f); + // skeletonAnimation.AnimationName = runAnimationName; // this line also works for quick testing/simple uses. + spineAnimationState.SetAnimation(0, runAnimationName, true); + yield return new WaitForSeconds(1.5f); + spineAnimationState.SetAnimation(0, idleAnimationName, true); + yield return new WaitForSeconds(1f); + + skeleton.FlipX = true; // skeleton allows you to flip the skeleton. + yield return new WaitForSeconds(0.5f); + skeleton.FlipX = false; + yield return new WaitForSeconds(0.5f); + + } } } + } diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBlinkPlayer.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBlinkPlayer.cs index 081e69123..cf9393511 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBlinkPlayer.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineBlinkPlayer.cs @@ -32,20 +32,22 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class SpineBlinkPlayer : MonoBehaviour { - const int BlinkTrack = 1; +namespace Spine.Unity.Examples { + public class SpineBlinkPlayer : MonoBehaviour { + const int BlinkTrack = 1; - [SpineAnimation] - public string blinkAnimation; - public float minimumDelay = 0.15f; - public float maximumDelay = 3f; + [SpineAnimation] + public string blinkAnimation; + public float minimumDelay = 0.15f; + public float maximumDelay = 3f; - IEnumerator Start () { - var skeletonAnimation = GetComponent(); if (skeletonAnimation == null) yield break; - while (true) { - skeletonAnimation.state.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false); - yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay)); + IEnumerator Start () { + var skeletonAnimation = GetComponent(); if (skeletonAnimation == null) yield break; + while (true) { + skeletonAnimation.state.SetAnimation(SpineBlinkPlayer.BlinkTrack, blinkAnimation, false); + yield return new WaitForSeconds(Random.Range(minimumDelay, maximumDelay)); + } } - } + } } diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerInput.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerInput.cs index 27629e05b..6beca6df6 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerInput.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerInput.cs @@ -31,34 +31,33 @@ using UnityEngine; using System.Collections; -public class SpineboyBeginnerInput : MonoBehaviour { +namespace Spine.Unity.Examples { + public class SpineboyBeginnerInput : MonoBehaviour { + #region Inspector + public string horizontalAxis = "Horizontal"; + public string attackButton = "Fire1"; + public string jumpButton = "Jump"; - #region Inspector - public string horizontalAxis = "Horizontal"; - public string attackButton = "Fire1"; - public string jumpButton = "Jump"; + public SpineboyBeginnerModel model; - public SpineboyBeginnerModel model; + void OnValidate () { + if (model == null) + model = GetComponent(); + } + #endregion - void OnValidate () { - if (model == null) - model = GetComponent(); + void Update () { + if (model == null) return; + + float currentHorizontal = Input.GetAxisRaw(horizontalAxis); + model.TryMove(currentHorizontal); + + if (Input.GetButton(attackButton)) + model.TryShoot(); + + if (Input.GetButtonDown(jumpButton)) + model.TryJump(); + } } - #endregion - - void Update () { - if (model == null) return; - - float currentHorizontal = Input.GetAxisRaw(horizontalAxis); - model.TryMove(currentHorizontal); - - if (Input.GetButton(attackButton)) - model.TryShoot(); - - if (Input.GetButtonDown(jumpButton)) - model.TryJump(); - - } - } diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerModel.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerModel.cs index f41e698aa..3de67726f 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerModel.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerModel.cs @@ -31,83 +31,85 @@ using UnityEngine; using System.Collections; -[SelectionBase] -public class SpineboyBeginnerModel : MonoBehaviour { +namespace Spine.Unity.Examples { + [SelectionBase] + public class SpineboyBeginnerModel : MonoBehaviour { - #region Inspector - [Header("Current State")] - public SpineBeginnerBodyState state; - public bool facingLeft; - [Range(-1f, 1f)] - public float currentSpeed; + #region Inspector + [Header("Current State")] + public SpineBeginnerBodyState state; + public bool facingLeft; + [Range(-1f, 1f)] + public float currentSpeed; - [Header("Balance")] - public float shootInterval = 0.12f; - #endregion + [Header("Balance")] + public float shootInterval = 0.12f; + #endregion - float lastShootTime; - public event System.Action ShootEvent; // Lets other scripts know when Spineboy is shooting. Check C# Documentation to learn more about events and delegates. + float lastShootTime; + public event System.Action ShootEvent; // Lets other scripts know when Spineboy is shooting. Check C# Documentation to learn more about events and delegates. - #region API - public void TryJump () { - StartCoroutine(JumpRoutine()); - } - - public void TryShoot () { - float currentTime = Time.time; - - if (currentTime - lastShootTime > shootInterval) { - lastShootTime = currentTime; - if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event. - } - } - - public void TryMove (float speed) { - currentSpeed = speed; // show the "speed" in the Inspector. - - if (speed != 0) { - bool speedIsNegative = (speed < 0f); - facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0. - } - - if (state != SpineBeginnerBodyState.Jumping) { - state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running; + #region API + public void TryJump () { + StartCoroutine(JumpRoutine()); } - } - #endregion + public void TryShoot () { + float currentTime = Time.time; - IEnumerator JumpRoutine () { - if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping. - - state = SpineBeginnerBodyState.Jumping; - - // Terribly-coded Fake jumping. - { - var pos = transform.localPosition; - const float jumpTime = 1.2f; - const float half = jumpTime * 0.5f; - const float jumpPower = 20f; - for (float t = 0; t < half; t += Time.deltaTime) { - float d = jumpPower * (half - t); - transform.Translate((d * Time.deltaTime) * Vector3.up); - yield return null; + if (currentTime - lastShootTime > shootInterval) { + lastShootTime = currentTime; + if (ShootEvent != null) ShootEvent(); // Fire the "ShootEvent" event. } - for (float t = 0; t < half; t += Time.deltaTime) { - float d = jumpPower * t; - transform.Translate((d * Time.deltaTime) * Vector3.down); - yield return null; - } - transform.localPosition = pos; } - state = SpineBeginnerBodyState.Idle; + public void TryMove (float speed) { + currentSpeed = speed; // show the "speed" in the Inspector. + + if (speed != 0) { + bool speedIsNegative = (speed < 0f); + facingLeft = speedIsNegative; // Change facing direction whenever speed is not 0. + } + + if (state != SpineBeginnerBodyState.Jumping) { + state = (speed == 0) ? SpineBeginnerBodyState.Idle : SpineBeginnerBodyState.Running; + } + + } + #endregion + + IEnumerator JumpRoutine () { + if (state == SpineBeginnerBodyState.Jumping) yield break; // Don't jump when already jumping. + + state = SpineBeginnerBodyState.Jumping; + + // Fake jumping. + { + var pos = transform.localPosition; + const float jumpTime = 1.2f; + const float half = jumpTime * 0.5f; + const float jumpPower = 20f; + for (float t = 0; t < half; t += Time.deltaTime) { + float d = jumpPower * (half - t); + transform.Translate((d * Time.deltaTime) * Vector3.up); + yield return null; + } + for (float t = 0; t < half; t += Time.deltaTime) { + float d = jumpPower * t; + transform.Translate((d * Time.deltaTime) * Vector3.down); + yield return null; + } + transform.localPosition = pos; + } + + state = SpineBeginnerBodyState.Idle; + } + } -} - -public enum SpineBeginnerBodyState { - Idle, - Running, - Jumping + public enum SpineBeginnerBodyState { + Idle, + Running, + Jumping + } } diff --git a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerView.cs b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerView.cs index 71acbfc85..8c382c534 100644 --- a/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerView.cs +++ b/spine-unity/Assets/Examples/Getting Started/Scripts/SpineboyBeginnerView.cs @@ -32,113 +32,115 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class SpineboyBeginnerView : MonoBehaviour { - - #region Inspector - [Header("Components")] - public SpineboyBeginnerModel model; - public SkeletonAnimation skeletonAnimation; - //public ParticleSystem gunParticles; +namespace Spine.Unity.Examples { + public class SpineboyBeginnerView : MonoBehaviour { - [SpineAnimation] public string run, idle, shoot, jump; - [SpineEvent] public string footstepEventName; + #region Inspector + [Header("Components")] + public SpineboyBeginnerModel model; + public SkeletonAnimation skeletonAnimation; - [Header("Audio")] - public float footstepPitchOffset = 0.2f; - public float gunsoundPitchOffset = 0.13f; - public AudioSource footstepSource, gunSource, jumpSource; + [SpineAnimation] public string run, idle, shoot, jump; + [SpineEvent] public string footstepEventName; - [Header("Effects")] - public ParticleSystem gunParticles; - #endregion + [Header("Audio")] + public float footstepPitchOffset = 0.2f; + public float gunsoundPitchOffset = 0.13f; + public AudioSource footstepSource, gunSource, jumpSource; - SpineBeginnerBodyState previousViewState; + [Header("Effects")] + public ParticleSystem gunParticles; + #endregion - void Start () { - if (skeletonAnimation == null) return; - model.ShootEvent += PlayShoot; - skeletonAnimation.state.Event += HandleEvent; - } + SpineBeginnerBodyState previousViewState; - void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { - if (e.Data.Name == footstepEventName) - PlayFootstepSound(); - } - - void Update () { - if (skeletonAnimation == null) return; - if (model == null) return; - - if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft - Turn(model.facingLeft); + void Start () { + if (skeletonAnimation == null) return; + model.ShootEvent += PlayShoot; + skeletonAnimation.state.Event += HandleEvent; } - // Detect changes in model.state - var currentModelState = model.state; - - if (previousViewState != currentModelState) { - PlayNewStableAnimation(); - } - - previousViewState = currentModelState; - } - - void PlayNewStableAnimation () { - var newModelState = model.state; - string nextAnimation; - - // Add conditionals to not interrupt transient animations. - - if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) { - PlayFootstepSound(); + void HandleEvent (Spine.TrackEntry trackEntry, Spine.Event e) { + if (e.Data.Name == footstepEventName) + PlayFootstepSound(); } - if (newModelState == SpineBeginnerBodyState.Jumping) { - jumpSource.Play(); - nextAnimation = jump; - } else { - if (newModelState == SpineBeginnerBodyState.Running) { - nextAnimation = run; - } else { - nextAnimation = idle; + void Update () { + if (skeletonAnimation == null) return; + if (model == null) return; + + if (skeletonAnimation.skeleton.FlipX != model.facingLeft) { // Detect changes in model.facingLeft + Turn(model.facingLeft); } + + // Detect changes in model.state + var currentModelState = model.state; + + if (previousViewState != currentModelState) { + PlayNewStableAnimation(); + } + + previousViewState = currentModelState; } - skeletonAnimation.state.SetAnimation(0, nextAnimation, true); + void PlayNewStableAnimation () { + var newModelState = model.state; + string nextAnimation; + + // Add conditionals to not interrupt transient animations. + + if (previousViewState == SpineBeginnerBodyState.Jumping && newModelState != SpineBeginnerBodyState.Jumping) { + PlayFootstepSound(); + } + + if (newModelState == SpineBeginnerBodyState.Jumping) { + jumpSource.Play(); + nextAnimation = jump; + } else { + if (newModelState == SpineBeginnerBodyState.Running) { + nextAnimation = run; + } else { + nextAnimation = idle; + } + } + + skeletonAnimation.state.SetAnimation(0, nextAnimation, true); + } + + void PlayFootstepSound () { + footstepSource.Play(); + footstepSource.pitch = GetRandomPitch(footstepPitchOffset); + } + + [ContextMenu("Check Tracks")] + void CheckTracks () { + var state = skeletonAnimation.state; + Debug.Log(state.GetCurrent(0)); + Debug.Log(state.GetCurrent(1)); + } + + #region Transient Actions + public void PlayShoot () { + // Play the shoot animation on track 1. + skeletonAnimation.state.SetAnimation(1, shoot, false); + //skeletonAnimation.state.AddEmptyAnimation(1, 0.1f, 0f); + gunSource.pitch = GetRandomPitch(gunsoundPitchOffset); + gunSource.Play(); + gunParticles.randomSeed = (uint)Random.Range(0, 100); + gunParticles.Play(); + } + + public void Turn (bool facingLeft) { + skeletonAnimation.skeleton.FlipX = facingLeft; + // Maybe play a transient turning animation too, then call ChangeStableAnimation. + } + #endregion + + #region Utility + public float GetRandomPitch (float maxPitchOffset) { + return 1f + Random.Range(-maxPitchOffset, maxPitchOffset); + } + #endregion } - void PlayFootstepSound () { - footstepSource.Play(); - footstepSource.pitch = GetRandomPitch(footstepPitchOffset); - } - - [ContextMenu("Check Tracks")] - void CheckTracks () { - var state = skeletonAnimation.state; - Debug.Log(state.GetCurrent(0)); - Debug.Log(state.GetCurrent(1)); - } - - #region Transient Actions - public void PlayShoot () { - // Play the shoot animation on track 1. - skeletonAnimation.state.SetAnimation(1, shoot, false); - //skeletonAnimation.state.AddEmptyAnimation(1, 0.1f, 0f); - gunSource.pitch = GetRandomPitch(gunsoundPitchOffset); - gunSource.Play(); - gunParticles.randomSeed = (uint)Random.Range(0, 100); - gunParticles.Play(); - } - - public void Turn (bool facingLeft) { - skeletonAnimation.skeleton.FlipX = facingLeft; - // Maybe play a transient turning animation too, then call ChangeStableAnimation. - } - #endregion - - #region Utility - public float GetRandomPitch (float maxPitchOffset) { - return 1f + Random.Range(-maxPitchOffset, maxPitchOffset); - } - #endregion } diff --git a/spine-unity/Assets/Examples/Other Examples/AtlasRegionAttacher.unity b/spine-unity/Assets/Examples/Other Examples/AtlasRegionAttacher.unity index 80223fcad..d2ab7ed3e 100644 --- a/spine-unity/Assets/Examples/Other Examples/AtlasRegionAttacher.unity +++ b/spine-unity/Assets/Examples/Other Examples/AtlasRegionAttacher.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -168,6 +173,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -248,9 +254,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 _animationName: @@ -265,17 +271,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: 5a3598dafa118754db95756064347da7, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -298,6 +307,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 diff --git a/spine-unity/Assets/Examples/Other Examples/Dragon.unity b/spine-unity/Assets/Examples/Other Examples/Dragon.unity index 068358d61..1ee90cec7 100644 --- a/spine-unity/Assets/Examples/Other Examples/Dragon.unity +++ b/spine-unity/Assets/Examples/Other Examples/Dragon.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -108,7 +113,7 @@ Light: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 133751936} m_Enabled: 1 - serializedVersion: 6 + serializedVersion: 7 m_Type: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 1.1 @@ -116,8 +121,9 @@ Light: m_SpotAngle: 30 m_CookieSize: 10 m_Shadows: - m_Type: 1 + m_Type: 2 m_Resolution: -1 + m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 @@ -130,10 +136,10 @@ Light: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 - m_AreaSize: {x: 1, y: 1} --- !u!4 &133751938 Transform: m_ObjectHideFlags: 0 @@ -147,53 +153,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 ---- !u!1001 &244083694 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 3300000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - propertyPath: m_Mesh - value: - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_RootGameObject: {fileID: 2143290130} - m_IsPrefabParent: 0 --- !u!1 &560289061 GameObject: m_ObjectHideFlags: 0 @@ -220,17 +179,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -348,7 +310,7 @@ Transform: GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 100000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_PrefabInternal: {fileID: 244083694} + m_PrefabInternal: {fileID: 0} serializedVersion: 4 m_Component: - 4: {fileID: 2143290134} @@ -367,7 +329,7 @@ MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 11400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_PrefabInternal: {fileID: 244083694} + m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2143290130} m_Enabled: 1 m_EditorHideFlags: 0 @@ -381,6 +343,7 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 1 calculateTangents: 0 logErrors: 0 @@ -393,11 +356,14 @@ MeshRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 2300000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_PrefabInternal: {fileID: 244083694} + m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2143290130} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} @@ -413,13 +379,13 @@ MeshRenderer: - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -431,14 +397,14 @@ MeshFilter: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 3300000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_PrefabInternal: {fileID: 244083694} + m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2143290130} m_Mesh: {fileID: 0} --- !u!4 &2143290134 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 400000, guid: d51ed5943e10bcb4394b5eec480293f8, type: 2} - m_PrefabInternal: {fileID: 244083694} + m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2143290130} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} diff --git a/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity b/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity index 34505ceb3..bb8145282 100644 --- a/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity +++ b/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity @@ -13,16 +13,16 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 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.2, g: 0.2, b: 0.2, a: 1} - m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} - m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + 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: 3 m_SkyboxMaterial: {fileID: 0} @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} ---- !u!157 &4 + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -50,25 +50,30 @@ LightmapSettings: m_AlbedoBoost: 1 m_TemporalCoherenceThreshold: 1 m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 + m_EnableBakedLightmaps: 0 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 - m_Resolution: 1 - m_BakeResolution: 50 + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 m_Padding: 2 - m_CompAOExponent: 0 m_LightmapParameters: {fileID: 0} - m_TextureCompression: 0 + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 - m_FinalGatherRayCount: 1024 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} m_RuntimeCPUUsage: 25 ---- !u!196 &5 +--- !u!196 &4 NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 @@ -82,296 +87,285 @@ NavMeshSettings: maxJumpAcrossDistance: 0 accuratePlacement: 0 minRegionArea: 2 - cellSize: 0.16666666 + cellSize: 0.16666667 manualCellSize: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &298071074 +--- !u!1 &164478200 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 4 m_Component: - - 4: {fileID: 298071076} - - 108: {fileID: 298071075} + - 4: {fileID: 164478205} + - 114: {fileID: 164478201} + - 33: {fileID: 164478204} + - 23: {fileID: 164478203} + - 114: {fileID: 164478202} m_Layer: 0 - m_Name: Point light + m_Name: Equipped Hero [see my inspector!] m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &298071075 -Light: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 298071074} - m_Enabled: 1 - serializedVersion: 6 - m_Type: 2 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 1.72 - m_Range: 30 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_BounceIntensity: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 - m_AreaSize: {x: 1, y: 1} ---- !u!4 &298071076 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 298071074} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.18, y: 2.84, z: -2.32} - m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 ---- !u!1 &376395955 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 4: {fileID: 376395960} - - 33: {fileID: 376395959} - - 23: {fileID: 376395958} - - 114: {fileID: 376395957} - - 114: {fileID: 376395956} - m_Layer: 0 - m_Name: goblins-mesh (Custom Skin) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &376395956 +--- !u!114 &164478201 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 376395955} + m_GameObject: {fileID: 164478200} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6e55c8477eccddc4cb5c3551a3945ca7, type: 3} + m_Script: {fileID: 11500000, guid: fdd7c8b428f700c438a6a14addca0346, type: 3} m_Name: m_EditorClassIdentifier: - skinSource: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} - skinItems: - - sourceAttachmentPath: default/head/head - targetSlot: head - targetAttachment: head - - sourceAttachmentPath: default/gun/gun - targetSlot: right hand item 2 - targetAttachment: shield ---- !u!114 &376395957 + handSource: {fileID: 11400000, guid: b4b8457d6cb8fec49a40be5b71d79e51, type: 2} + handRegion: front_fist_closed + handAttachmentName: hand1 + handSlot: hand1 + newHandOffset: {x: 0.34, y: -0.07} + newHandRotation: 62.23 + handTexture: {fileID: 0} + dagger: {fileID: 21300000, guid: 2412d1d8498463f49ae6ebe3a66ffae9, type: 3} + daggerName: dagger + weaponSlot: weapon + applyHeadRegion: 0 + headSource: {fileID: 11400000, guid: a9d85e8796d75384199c06f6fdbb0d73, type: 2} + headRegion: head + headSlot: head + headAttachmentName: head + repack: 1 + repackedShader: {fileID: 4800000, guid: 1e8a610c9e01c3648bac42585e5fc676, type: 3} + runtimeAtlas: {fileID: 0} + runtimeMaterial: {fileID: 0} +--- !u!114 &164478202 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 376395955} + m_GameObject: {fileID: 164478200} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} m_Name: m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 2e4e11d4dd87d844a876d18c4d76a612, type: 2} - initialSkinName: goblin + skeletonDataAsset: {fileID: 11400000, guid: a5967d74cd1f3c741ba7758da7511bcf, type: 2} + initialSkinName: default separatorSlotNames: [] zSpacing: 0 renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 - calculateNormals: 1 + clearStateOnDisable: 0 + calculateNormals: 0 calculateTangents: 0 logErrors: 0 disableRenderingOnOverride: 1 - _animationName: walk + _animationName: Run loop: 1 timeScale: 1 ---- !u!23 &376395958 +--- !u!23 &164478203 MeshRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 376395955} + m_GameObject: {fileID: 164478200} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 54091ef934c41eb4192f72bfd8e3bcc9, type: 2} + - {fileID: 2100000, guid: b04b8c6e4c57e78449f243c27617a2cd, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingOrder: 0 ---- !u!33 &376395959 +--- !u!33 &164478204 MeshFilter: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 376395955} + m_GameObject: {fileID: 164478200} m_Mesh: {fileID: 0} ---- !u!4 &376395960 +--- !u!4 &164478205 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 376395955} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -2, y: 0, z: 0} + m_GameObject: {fileID: 164478200} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 1.36, y: -0.15, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 2 ---- !u!1 &686004282 +--- !u!1 &325050139 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 4 m_Component: - - 4: {fileID: 686004287} - - 33: {fileID: 686004286} - - 23: {fileID: 686004285} - - 114: {fileID: 686004284} - - 114: {fileID: 686004283} + - 4: {fileID: 325050143} + - 33: {fileID: 325050142} + - 23: {fileID: 325050140} m_Layer: 0 - m_Name: goblins-mesh (Direct Attachment) + m_Name: Raggedy Atlas m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &686004283 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 686004282} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5053fe97a7657b5418b0c307b7338b0c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataSource: {fileID: 11400000, guid: 76506fa7fbeed084ab2dfb084648c628, type: 2} - attachmentPath: default/head/head - targetSlot: head ---- !u!114 &686004284 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 686004282} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 2e4e11d4dd87d844a876d18c4d76a612, type: 2} - initialSkinName: goblin - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 1 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: walk - loop: 1 - timeScale: 1 ---- !u!23 &686004285 +--- !u!23 &325050140 MeshRenderer: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 686004282} + m_GameObject: {fileID: 325050139} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 54091ef934c41eb4192f72bfd8e3bcc9, type: 2} + - {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 - m_PreserveUVs: 0 + m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingOrder: 0 ---- !u!33 &686004286 +--- !u!33 &325050142 MeshFilter: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 686004282} - m_Mesh: {fileID: 0} ---- !u!4 &686004287 + m_GameObject: {fileID: 325050139} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &325050143 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 686004282} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 2, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 325050139} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -4.22, y: 3.36, z: 0} + m_LocalScale: {x: 2.7800474, y: 2.7800474, z: 2.7800474} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 ---- !u!1 &803254441 + m_Father: {fileID: 635124235} + m_RootOrder: 0 +--- !u!1 &379340246 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 4 m_Component: - - 4: {fileID: 803254446} - - 20: {fileID: 803254445} - - 92: {fileID: 803254444} - - 124: {fileID: 803254443} - - 81: {fileID: 803254442} + - 224: {fileID: 379340247} + - 222: {fileID: 379340249} + - 114: {fileID: 379340248} + m_Layer: 5 + m_Name: Text (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &379340247 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 379340246} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 2 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -181, y: 451} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &379340248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 379340246} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 55 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Sourced from Unity Sprite. +--- !u!222 &379340249 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 379340246} +--- !u!1 &520624624 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 520624629} + - 20: {fileID: 520624628} + - 92: {fileID: 520624627} + - 124: {fileID: 520624626} + - 81: {fileID: 520624625} m_Layer: 0 m_Name: Main Camera m_TagString: MainCamera @@ -379,37 +373,37 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &803254442 +--- !u!81 &520624625 AudioListener: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 803254441} + m_GameObject: {fileID: 520624624} m_Enabled: 1 ---- !u!124 &803254443 +--- !u!124 &520624626 Behaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 803254441} + m_GameObject: {fileID: 520624624} m_Enabled: 1 ---- !u!92 &803254444 +--- !u!92 &520624627 Behaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 803254441} + m_GameObject: {fileID: 520624624} m_Enabled: 1 ---- !u!20 &803254445 +--- !u!20 &520624628 Camera: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 803254441} + m_GameObject: {fileID: 520624624} m_Enabled: 1 serializedVersion: 2 m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_BackGroundColor: {r: 0.32828724, g: 0.2661116, b: 0.33823532, a: 0} m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -419,7 +413,7 @@ Camera: near clip plane: 0.3 far clip plane: 1000 field of view: 60 - orthographic: 0 + orthographic: 1 orthographic size: 5 m_Depth: -1 m_CullingMask: @@ -434,16 +428,724 @@ Camera: m_StereoConvergence: 10 m_StereoSeparation: 0.022 m_StereoMirrorMode: 0 ---- !u!4 &803254446 +--- !u!4 &520624629 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 803254441} + m_GameObject: {fileID: 520624624} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.23, z: -10} + m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 +--- !u!1 &554311660 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 554311661} + - 222: {fileID: 554311663} + - 114: {fileID: 554311662} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &554311661 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 554311660} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 713, y: 478} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &554311662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 554311660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 55 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 55 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Mix and Match +--- !u!222 &554311663 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 554311660} +--- !u!1 &635124234 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 635124235} + m_Layer: 0 + m_Name: Sources + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &635124235 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 635124234} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 325050143} + - {fileID: 1344877042} + - {fileID: 1082233923} + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!1 &952321879 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 952321880} + - 222: {fileID: 952321882} + - 114: {fileID: 952321881} + m_Layer: 5 + m_Name: Text (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &952321880 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952321879} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 4 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 476, y: -45} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &952321881 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952321879} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 55 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Original +--- !u!222 &952321882 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 952321879} +--- !u!1 &1082233921 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1082233923} + - 212: {fileID: 1082233922} + m_Layer: 0 + m_Name: dagger sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1082233922 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082233921} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 2412d1d8498463f49ae6ebe3a66ffae9, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 +--- !u!4 &1082233923 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082233921} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -1.37, y: 4.51, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 635124235} + m_RootOrder: 2 +--- !u!1 &1262477660 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1262477661} + - 222: {fileID: 1262477663} + - 114: {fileID: 1262477662} + m_Layer: 5 + m_Name: Text (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1262477661 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1262477660} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 5 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 330.5, y: -247} + m_SizeDelta: {x: 661, y: 181} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1262477662 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1262477660} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 55 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'The sample script on Equipped Hero shows how to create a new custom Spine.Skin, + create new attachments from various sources, and repack that skin into a runtime + atlas to optimize draw calls/batching. + + + Enter PLAY MODE in Unity to see the changes.' +--- !u!222 &1262477663 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1262477660} +--- !u!1 &1279309432 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1279309433} + - 222: {fileID: 1279309435} + - 114: {fileID: 1279309434} + m_Layer: 5 + m_Name: Text (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1279309433 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1279309432} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 1 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -342, y: 129} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1279309434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1279309432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 55 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Sourced from atlases. +--- !u!222 &1279309435 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1279309432} +--- !u!1 &1344877038 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1344877042} + - 33: {fileID: 1344877041} + - 23: {fileID: 1344877039} + m_Layer: 0 + m_Name: Spineboy Atlas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1344877039 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1344877038} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1344877041 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1344877038} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1344877042 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1344877038} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -3.72, y: 0.03, z: 0} + m_LocalScale: {x: 9.797575, y: 9.797575, z: 9.797575} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 635124235} + m_RootOrder: 1 +--- !u!1 &1442798440 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1442798444} + - 223: {fileID: 1442798443} + - 114: {fileID: 1442798442} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1442798442 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1442798440} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1442798443 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1442798440} + m_Enabled: 1 + serializedVersion: 2 + 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_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1442798444 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1442798440} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 554311661} + - {fileID: 1279309433} + - {fileID: 379340247} + - {fileID: 1620489274} + - {fileID: 952321880} + - {fileID: 1262477661} + m_Father: {fileID: 0} + m_RootOrder: 3 + 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 &1620489273 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1620489274} + - 222: {fileID: 1620489276} + - 114: {fileID: 1620489275} + m_Layer: 5 + m_Name: Text (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1620489274 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1620489273} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1442798444} + m_RootOrder: 3 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 127, y: -45} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1620489275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1620489273} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 55 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Custom Equipped +--- !u!222 &1620489276 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1620489273} +--- !u!1 &1673248251 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1673248255} + - 33: {fileID: 1673248254} + - 23: {fileID: 1673248253} + - 114: {fileID: 1673248252} + m_Layer: 0 + m_Name: Original Hero + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1673248252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673248251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: a5967d74cd1f3c741ba7758da7511bcf, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 0 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: Run + loop: 1 + timeScale: 1 +--- !u!23 &1673248253 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673248251} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: b04b8c6e4c57e78449f243c27617a2cd, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1673248254 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673248251} + m_Mesh: {fileID: 0} +--- !u!4 &1673248255 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1673248251} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.49, y: -0.18, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 diff --git a/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity.meta b/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity.meta index a220c5fd4..b31ad48d2 100644 --- a/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity.meta +++ b/spine-unity/Assets/Examples/Other Examples/Mix and Match.unity.meta @@ -1,4 +1,8 @@ fileFormatVersion: 2 -guid: c5673b83016f67a4c99772dfb7b3c437 +guid: 9b55bcfc2181c68418e59ee61ef5afc9 +timeCreated: 1480087951 +licenseType: Free DefaultImporter: userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Other Examples/SkeletonRenderSeparator.unity b/spine-unity/Assets/Examples/Other Examples/SkeletonRenderSeparator.unity index 7d21b862e..6bb6c1810 100644 --- a/spine-unity/Assets/Examples/Other Examples/SkeletonRenderSeparator.unity +++ b/spine-unity/Assets/Examples/Other Examples/SkeletonRenderSeparator.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 0 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 2 m_BakeResolution: 40 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -168,6 +173,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.02, y: 0.02, z: 0.1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 2142418131} m_Father: {fileID: 0} @@ -232,9 +238,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 _animationName: run @@ -249,18 +255,21 @@ MeshRenderer: m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 0} - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -283,6 +292,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 6.75, y: -0.08, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1769987563} - {fileID: 1619823304} @@ -327,17 +337,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -360,6 +373,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1918225119} m_RootOrder: 0 @@ -390,6 +404,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.3629907, y: 3.7230203, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 93048079} m_RootOrder: 2 @@ -402,17 +417,20 @@ ParticleSystemRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 m_Materials: - - {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0} + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 0 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -449,14 +467,15 @@ MonoBehaviour: boneName: front_fist followZPosition: 0 followBoneRotation: 0 - resetOnAwake: 1 + followSkeletonFlip: 0 + initializeOnAwake: 1 --- !u!198 &565117365 ParticleSystem: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 565117361} - serializedVersion: 2 + serializedVersion: 4 lengthInSec: 5 startDelay: scalar: 0 @@ -494,12 +513,13 @@ ParticleSystem: m_RotationOrder: 4 minMaxState: 0 speed: 1 - randomSeed: 0 looping: 1 prewarm: 0 playOnAwake: 1 moveWithTransform: 0 + autoRandomSeed: 1 scalingMode: 1 + randomSeed: 0 InitialModule: serializedVersion: 2 enabled: 1 @@ -574,6 +594,7 @@ ParticleSystem: m_RotationOrder: 4 minMaxState: 0 startColor: + serializedVersion: 2 maxGradient: key0: serializedVersion: 2 @@ -660,12 +681,8 @@ ParticleSystem: atime7: 0 m_NumColorKeys: 2 m_NumAlphaKeys: 2 - minColor: - serializedVersion: 2 - rgba: 4294967295 - maxColor: - serializedVersion: 2 - rgba: 4278224127 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 0.5176471, b: 0, a: 1} minMaxState: 0 startSize: scalar: 0.5 @@ -702,6 +719,76 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 minMaxState: 0 + startSizeY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 startRotationX: scalar: 0 maxCurve: @@ -810,6 +897,7 @@ ParticleSystem: randomizeRotationDirection: 0 gravityModifier: 0 maxNumParticles: 100 + size3D: 0 rotation3D: 0 ShapeModule: serializedVersion: 2 @@ -925,6 +1013,77 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + separateAxes: 0 RotationModule: enabled: 0 x: @@ -1036,6 +1195,7 @@ ParticleSystem: ColorModule: enabled: 0 gradient: + serializedVersion: 2 maxGradient: key0: serializedVersion: 2 @@ -1122,17 +1282,13 @@ ParticleSystem: atime7: 0 m_NumColorKeys: 2 m_NumAlphaKeys: 2 - minColor: - serializedVersion: 2 - rgba: 4294967295 - maxColor: - serializedVersion: 2 - rgba: 4294967295 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} minMaxState: 1 UVModule: enabled: 0 frameOverTime: - scalar: 1 + scalar: 0.9999 maxCurve: serializedVersion: 2 m_Curve: @@ -1166,11 +1322,47 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 minMaxState: 1 + startFrame: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 tilesX: 1 tilesY: 1 animationType: 0 rowIndex: 0 cycles: 1 + uvChannelMask: -1 randomRow: 1 VelocityModule: enabled: 0 @@ -1612,7 +1804,78 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 range: {x: 0, y: 1} + separateAxes: 0 RotationBySpeedModule: enabled: 0 x: @@ -1725,6 +1988,7 @@ ParticleSystem: ColorBySpeedModule: enabled: 0 gradient: + serializedVersion: 2 maxGradient: key0: serializedVersion: 2 @@ -1811,17 +2075,13 @@ ParticleSystem: atime7: 0 m_NumColorKeys: 2 m_NumAlphaKeys: 2 - minColor: - serializedVersion: 2 - rgba: 4294967295 - maxColor: - serializedVersion: 2 - rgba: 4294967295 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} minMaxState: 1 range: {x: 0, y: 1} CollisionModule: enabled: 0 - serializedVersion: 2 + serializedVersion: 3 type: 0 collisionMode: 0 plane0: {fileID: 0} @@ -1936,6 +2196,7 @@ ParticleSystem: m_RotationOrder: 4 minMaxState: 0 minKillSpeed: 0 + maxKillSpeed: 10000 radiusScale: 1 collidesWith: serializedVersion: 2 @@ -1946,6 +2207,19 @@ ParticleSystem: collisionMessages: 0 collidesWithDynamic: 1 interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 SubModule: enabled: 0 subEmitterBirth: {fileID: 0} @@ -2037,6 +2311,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.02, y: 0.02, z: 0.1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1618699050} m_Father: {fileID: 0} @@ -2071,17 +2346,20 @@ SpriteRenderer: m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 m_Materials: - - {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0} + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 0 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2101,6 +2379,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 5.5483284, y: 48.482475, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1675659861} m_RootOrder: 0 @@ -2129,6 +2408,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.06, y: 0, z: 0} m_LocalScale: {x: 4.661441, y: 48.482475, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1675659861} m_RootOrder: 1 @@ -2141,17 +2421,20 @@ SpriteRenderer: m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 m_Materials: - - {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0} + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 0 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2187,6 +2470,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0.44, y: 0, z: 0} m_LocalScale: {x: 0.44441086, y: 48.482475, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1675659861} m_RootOrder: 2 @@ -2199,17 +2483,20 @@ SpriteRenderer: m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 m_Materials: - - {fileID: 10754, guid: 0000000000000000e000000000000000, type: 0} + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 0 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2303,6 +2590,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -2332,6 +2620,7 @@ RectTransform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 624843597} m_RootOrder: 0 @@ -2422,17 +2711,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2455,6 +2747,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 93048079} m_RootOrder: 1 @@ -2482,6 +2775,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 3.5889997, y: 0.001999855, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 774732877} - {fileID: 1149289854} @@ -2526,17 +2820,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2559,6 +2856,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1918225119} m_RootOrder: 1 @@ -2600,17 +2898,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2633,6 +2934,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 93048079} m_RootOrder: 0 @@ -2692,9 +2994,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 _animationName: @@ -2709,18 +3011,21 @@ MeshRenderer: m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 0} - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -2743,6 +3048,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -6.18, y: -3.53, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 122287543} - {fileID: 1698487795} @@ -2791,6 +3097,7 @@ RectTransform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 51877973} m_RootOrder: 0 diff --git a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Eyes.unity b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Eyes.unity index b800ce2d1..ae1e88006 100644 --- a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Eyes.unity +++ b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Eyes.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -111,17 +116,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 0 m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 m_Materials: - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 0 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 1 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -144,8 +152,10 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 5.82, y: 3.59, z: -0.53} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1003754206} + - {fileID: 148233142} m_Father: {fileID: 0} m_RootOrder: 2 --- !u!1 &122140872 @@ -174,6 +184,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -3.1, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 693495377} m_RootOrder: 0 @@ -209,17 +220,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -251,6 +265,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 2.3732, y: 0.064, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1960622790} m_RootOrder: 1 @@ -265,16 +280,1792 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: R_Eye + parentReference: {fileID: 0} mode: 1 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: R_Eye - parentReference: {fileID: 0} +--- !u!1 &148233141 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 148233142} + - 198: {fileID: 148233144} + - 199: {fileID: 148233143} + m_Layer: 0 + m_Name: Particle System + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &148233142 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148233141} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 32415402} + m_RootOrder: 1 +--- !u!199 &148233143 +ParticleSystemRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148233141} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 14 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} +--- !u!198 &148233144 +ParticleSystem: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148233141} + serializedVersion: 4 + lengthInSec: 5 + startDelay: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + speed: 1 + looping: 1 + prewarm: 1 + playOnAwake: 1 + moveWithTransform: 0 + autoRandomSeed: 1 + scalingMode: 1 + randomSeed: -1951367272 + InitialModule: + serializedVersion: 2 + enabled: 1 + startLifetime: + scalar: 0.5 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSpeed: + scalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startColor: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 0 + startSize: + scalar: 0.1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0.5 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + startSizeY: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSizeZ: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationX: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationY: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotation: + scalar: 0.87266463 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + randomizeRotationDirection: 0 + gravityModifier: 0 + maxNumParticles: 1000 + size3D: 0 + rotation3D: 0 + ShapeModule: + serializedVersion: 2 + enabled: 1 + type: 11 + radius: 0.444762 + angle: 25 + length: 5 + boxX: 1 + boxY: 1 + boxZ: 1 + arc: 360 + placementMode: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + randomDirection: 0 + EmissionModule: + enabled: 1 + serializedVersion: 2 + m_Type: 0 + rate: + scalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + cnt0: 30 + cnt1: 30 + cnt2: 30 + cnt3: 30 + cntmax0: 30 + cntmax1: 30 + cntmax2: 30 + cntmax3: 30 + time0: 0 + time1: 0 + time2: 0 + time3: 0 + m_BurstCount: 0 + SizeModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + separateAxes: 0 + RotationModule: + enabled: 1 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + curve: + scalar: 5.2359877 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 16777215 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + UVModule: + enabled: 0 + frameOverTime: + scalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + startFrame: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + randomRow: 1 + VelocityModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ForceModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 1 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + magnitude: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxis: 0 + inWorldSpace: 0 + dampen: 1 + SizeBySpeedModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853981 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + minMaxState: 1 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_Bounce: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_EnergyLossOnCollision: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + enabled: 0 + subEmitterBirth: {fileID: 0} + subEmitterBirth1: {fileID: 0} + subEmitterCollision: {fileID: 0} + subEmitterCollision1: {fileID: 0} + subEmitterDeath: {fileID: 0} + subEmitterDeath1: {fileID: 0} --- !u!1 &376564975 GameObject: m_ObjectHideFlags: 0 @@ -299,6 +2090,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1960622790} m_Father: {fileID: 554350588} @@ -331,6 +2123,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 376564976} m_Father: {fileID: 0} @@ -366,9 +2159,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 _animationName: @@ -383,17 +2176,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: 4f9d106a1e4d45b468b980311947a225, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -431,6 +2227,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 122140873} m_Father: {fileID: 0} @@ -461,6 +2258,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 32415402} m_RootOrder: 0 @@ -496,17 +2294,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10100, guid: 0000000000000000e000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 1 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -538,6 +2339,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -2.2317998, y: 0.0299, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 1960622790} m_RootOrder: 0 @@ -552,16 +2354,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: L_Eye + parentReference: {fileID: 0} mode: 1 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: L_Eye - parentReference: {fileID: 0} --- !u!1 &1842554116 GameObject: m_ObjectHideFlags: 0 @@ -645,6 +2445,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -671,9 +2472,10 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1960622789} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1145190454} - {fileID: 136651048} @@ -708,13 +2510,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: root + parentReference: {fileID: 0} mode: 0 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: root - parentReference: {fileID: 0} diff --git a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility GroundConstraint.unity b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility GroundConstraint.unity index 2dcb70d43..948654623 100644 --- a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility GroundConstraint.unity +++ b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility GroundConstraint.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -108,9 +113,10 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 36219066} - m_LocalRotation: {x: 0, y: 0, z: -0.52048814, w: 0.8538689} + m_LocalRotation: {x: -0, y: -0, z: -0.5187491, w: 0.8549265} m_LocalPosition: {x: -2.3325999, y: 1.2458895, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 973814792} m_RootOrder: 1 @@ -146,16 +152,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: rear_foot_goal + parentReference: {fileID: 0} mode: 0 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: rear_foot_goal - parentReference: {fileID: 0} --- !u!1 &44654812 GameObject: m_ObjectHideFlags: 0 @@ -180,6 +184,7 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 973814792} m_Father: {fileID: 120294521} @@ -212,6 +217,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -0.15, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 44654813} m_Father: {fileID: 0} @@ -247,9 +253,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 _animationName: walk @@ -264,17 +270,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: 4e2feebfcaa26a54ab19f1ff3e0eae35, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -310,9 +319,10 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 973814791} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: - {fileID: 1984548219} - {fileID: 36219067} @@ -329,16 +339,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: root + parentReference: {fileID: 0} mode: 0 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: root - parentReference: {fileID: 0} --- !u!1 &976394122 GameObject: m_ObjectHideFlags: 0 @@ -422,6 +430,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -12} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -452,17 +461,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -497,6 +509,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: -0.08522272, w: 0.996362} m_LocalPosition: {x: 0.29366082, y: 0.13593975, z: 2} m_LocalScale: {x: 13, y: 1, z: 2.6603487} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 2 @@ -549,25 +562,24 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b238dfcde8209044b97d23f62bcaadf6, type: 3} m_Name: m_EditorClassIdentifier: + boneName: front_foot_goal + parentReference: {fileID: 0} mode: 0 - zPosition: 1 position: 1 rotation: 1 scale: 1 - flip: 0 - flipX: 0 + zPosition: 1 overrideAlpha: 1 - boneName: front_foot_goal - parentReference: {fileID: 0} --- !u!4 &1984548219 Transform: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1984548216} - m_LocalRotation: {x: 0, y: 0, z: -0.008202955, w: 0.9999664} + m_LocalRotation: {x: -0, y: -0, z: -0.00795751, w: 0.99996835} m_LocalPosition: {x: 2.9748998, y: 0.3312556, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 973814792} m_RootOrder: 0 diff --git a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Ragdoll.unity b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Ragdoll.unity index 17b539782..aa998d98a 100644 --- a/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Ragdoll.unity +++ b/spine-unity/Assets/Examples/Other Examples/SkeletonUtility Ragdoll.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -172,12 +177,174 @@ RectTransform: m_Children: - {fileID: 2122594306} m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 5 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 &138285500 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 138285507} + - 33: {fileID: 138285506} + - 23: {fileID: 138285505} + - 114: {fileID: 138285504} + - 114: {fileID: 138285503} + - 114: {fileID: 138285502} + - 60: {fileID: 138285501} + m_Layer: 0 + m_Name: Raggedy Spineboy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &138285501 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_Offset: {x: 0, y: 0} + m_Points: + m_Paths: + - - {x: -0.25825587, y: 3.1820273} + - {x: 0.31586242, y: 3.1818907} + - {x: 0.55882263, y: 2.040349} + - {x: 0.434707, y: 0.0013669459} + - {x: -0.45539615, y: 0.0013672132} + - {x: -0.61691463, y: 2.0021477} +--- !u!114 &138285502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3} + m_Name: + m_EditorClassIdentifier: + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + restoreDuration: 0.5 + launchVelocity: {x: 40, y: 85} +--- !u!114 &138285503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3} + m_Name: + m_EditorClassIdentifier: + startingBoneName: hip + stopBoneNames: [] + applyOnStart: 0 + disableIK: 1 + disableOtherConstraints: 0 + pinStartBone: 0 + gravityScale: 3 + thickness: 0.125 + rotationLimit: 20 + rootMass: 40 + massFalloffFactor: 0.504 + colliderLayer: 0 + mix: 1 +--- !u!114 &138285504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 0 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: animation + loop: 1 + timeScale: 1 +--- !u!23 &138285505 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &138285506 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_Mesh: {fileID: 0} +--- !u!4 &138285507 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 138285500} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.55, y: -3.07, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 --- !u!1 &279948894 GameObject: m_ObjectHideFlags: 0 @@ -219,17 +386,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -310,17 +480,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -334,60 +507,6 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 281786970} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &410436501 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.x - value: 4.67 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.y - value: -3.07 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_RootOrder - value: 7 - objectReference: {fileID: 0} - - target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_Mesh - value: - objectReference: {fileID: 0} - - target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: colliderLayer - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: groundMask.m_Bits - value: 4294967295 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - m_IsPrefabParent: 0 --- !u!1 &469940167 GameObject: m_ObjectHideFlags: 0 @@ -442,17 +561,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -466,60 +588,168 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 469940167} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &678089918 -Prefab: +--- !u!1 &689192947 +GameObject: m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.x - value: -2.55 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.y - value: -3.07 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_Mesh - value: - objectReference: {fileID: 0} - - target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: colliderLayer - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: groundMask.m_Bits - value: 4294967295 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - m_IsPrefabParent: 0 + m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 689192954} + - 33: {fileID: 689192953} + - 23: {fileID: 689192952} + - 114: {fileID: 689192951} + - 114: {fileID: 689192950} + - 114: {fileID: 689192949} + - 60: {fileID: 689192948} + m_Layer: 0 + m_Name: Raggedy Spineboy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &689192948 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_Offset: {x: 0, y: 0} + m_Points: + m_Paths: + - - {x: -0.25825587, y: 3.1820273} + - {x: 0.31586242, y: 3.1818907} + - {x: 0.55882263, y: 2.040349} + - {x: 0.434707, y: 0.0013669459} + - {x: -0.45539615, y: 0.0013672132} + - {x: -0.61691463, y: 2.0021477} +--- !u!114 &689192949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3} + m_Name: + m_EditorClassIdentifier: + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + restoreDuration: 0.5 + launchVelocity: {x: 40, y: 85} +--- !u!114 &689192950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3} + m_Name: + m_EditorClassIdentifier: + startingBoneName: hip + stopBoneNames: [] + applyOnStart: 0 + disableIK: 1 + disableOtherConstraints: 0 + pinStartBone: 0 + gravityScale: 3 + thickness: 0.125 + rotationLimit: 20 + rootMass: 40 + massFalloffFactor: 0.504 + colliderLayer: 0 + mix: 1 +--- !u!114 &689192951 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 0 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: animation + loop: 1 + timeScale: 1 +--- !u!23 &689192952 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &689192953 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_Mesh: {fileID: 0} +--- !u!4 &689192954 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 689192947} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.67, y: -3.07, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 --- !u!1 &890899334 GameObject: m_ObjectHideFlags: 0 @@ -561,17 +791,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -639,17 +872,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -712,7 +948,7 @@ Transform: - {fileID: 1446269955} - {fileID: 469940168} m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 --- !u!1 &1332258640 GameObject: m_ObjectHideFlags: 0 @@ -841,17 +1077,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -878,6 +1117,168 @@ Transform: m_Children: [] m_Father: {fileID: 1241879115} m_RootOrder: 1 +--- !u!1 &1417061241 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 183998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1417061248} + - 33: {fileID: 1417061247} + - 23: {fileID: 1417061246} + - 114: {fileID: 1417061245} + - 114: {fileID: 1417061244} + - 114: {fileID: 1417061243} + - 60: {fileID: 1417061242} + m_Layer: 0 + m_Name: Raggedy Spineboy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!60 &1417061242 +PolygonCollider2D: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 6083998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_Offset: {x: 0, y: 0} + m_Points: + m_Paths: + - - {x: -0.25825587, y: 3.1820273} + - {x: 0.31586242, y: 3.1818907} + - {x: 0.55882263, y: 2.040349} + - {x: 0.434707, y: 0.0013669459} + - {x: -0.45539615, y: 0.0013672132} + - {x: -0.61691463, y: 2.0021477} +--- !u!114 &1417061243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3} + m_Name: + m_EditorClassIdentifier: + groundMask: + serializedVersion: 2 + m_Bits: 4294967295 + restoreDuration: 0.5 + launchVelocity: {x: 40, y: 85} +--- !u!114 &1417061244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3} + m_Name: + m_EditorClassIdentifier: + startingBoneName: hip + stopBoneNames: [] + applyOnStart: 0 + disableIK: 1 + disableOtherConstraints: 0 + pinStartBone: 0 + gravityScale: 3 + thickness: 0.125 + rotationLimit: 20 + rootMass: 40 + massFalloffFactor: 0.504 + colliderLayer: 0 + mix: 1 +--- !u!114 &1417061245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 11483994, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 0 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: animation + loop: 1 + timeScale: 1 +--- !u!23 &1417061246 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1417061247 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_Mesh: {fileID: 0} +--- !u!4 &1417061248 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1417061241} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.5, y: -3.06, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 --- !u!1 &1442886939 GameObject: m_ObjectHideFlags: 0 @@ -919,17 +1320,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -1010,17 +1414,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -1034,60 +1441,6 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1446269954} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &1702096498 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.x - value: 2.5 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.y - value: -3.06 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_RootOrder - value: 4 - objectReference: {fileID: 0} - - target: {fileID: 3383998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: m_Mesh - value: - objectReference: {fileID: 0} - - target: {fileID: 11483996, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: colliderLayer - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 11483998, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - propertyPath: groundMask.m_Bits - value: 4294967295 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 5c60df38c5334a249b38ac8cddc6433b, type: 2} - m_IsPrefabParent: 0 --- !u!1 &1938155299 GameObject: m_ObjectHideFlags: 0 @@ -1217,17 +1570,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -1338,7 +1694,7 @@ Light: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 2147465172} m_Enabled: 1 - serializedVersion: 6 + serializedVersion: 7 m_Type: 2 m_Color: {r: 1, g: 1, b: 1, a: 1} m_Intensity: 2 @@ -1348,6 +1704,7 @@ Light: m_Shadows: m_Type: 0 m_Resolution: -1 + m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 m_NormalBias: 0.4 @@ -1360,10 +1717,10 @@ Light: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} m_BounceIntensity: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 - m_AreaSize: {x: 1, y: 1} --- !u!4 &2147465174 Transform: m_ObjectHideFlags: 0 @@ -1376,4 +1733,4 @@ Transform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 diff --git a/spine-unity/Assets/Examples/Other Examples/SpineGauge.unity b/spine-unity/Assets/Examples/Other Examples/SpineGauge.unity index 5efb61299..603ac7ff9 100644 --- a/spine-unity/Assets/Examples/Other Examples/SpineGauge.unity +++ b/spine-unity/Assets/Examples/Other Examples/SpineGauge.unity @@ -13,7 +13,7 @@ SceneSettings: --- !u!104 &2 RenderSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_Fog: 0 m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogMode: 3 @@ -37,12 +37,12 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} --- !u!157 &4 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 6 + serializedVersion: 7 m_GIWorkflowMode: 1 - m_LightmapsMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -53,17 +53,22 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: - serializedVersion: 3 + serializedVersion: 4 m_Resolution: 1 m_BakeResolution: 50 m_TextureWidth: 1024 m_TextureHeight: 1024 + m_AO: 0 m_AOMaxDistance: 1 - m_Padding: 2 m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 m_TextureCompression: 0 + m_DirectLightInLightProbes: 1 m_FinalGather: 0 + m_FinalGatherFiltering: 1 m_FinalGatherRayCount: 1024 m_ReflectionCompression: 2 m_LightingDataAsset: {fileID: 0} @@ -85,6 +90,99 @@ NavMeshSettings: cellSize: 0.16666666 manualCellSize: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &351144566 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 351144570} + - 33: {fileID: 351144569} + - 23: {fileID: 351144568} + - 114: {fileID: 351144567} + m_Layer: 0 + m_Name: Spine GameObject (spineboy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &351144567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351144566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 0 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: idle + loop: 1 + timeScale: 1 +--- !u!23 &351144568 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351144566} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &351144569 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351144566} + m_Mesh: {fileID: 0} +--- !u!4 &351144570 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 351144566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.3, y: -3.48, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 --- !u!1 &795271513 GameObject: m_ObjectHideFlags: 0 @@ -98,7 +196,7 @@ GameObject: - 114: {fileID: 795271515} - 114: {fileID: 795271514} m_Layer: 0 - m_Name: Gauge + m_Name: Spine GameObject (gauge) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -115,7 +213,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c888ce38da699d143a68153f26379a37, type: 3} m_Name: m_EditorClassIdentifier: - fillPercent: 0.388 + fillPercent: 1 fillAnimationName: Fill --- !u!114 &795271515 MonoBehaviour: @@ -135,9 +233,9 @@ MonoBehaviour: renderMeshes: 1 immutableTriangles: 0 pmaVertexColors: 1 + clearStateOnDisable: 0 calculateNormals: 0 calculateTangents: 0 - frontFacing: 0 logErrors: 0 disableRenderingOnOverride: 1 --- !u!23 &795271516 @@ -149,17 +247,20 @@ MeshRenderer: m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 m_Materials: - {fileID: 2100000, guid: 9ab9bdbda020b3e46b5a3b0558ef591d, type: 2} m_SubsetIndices: m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 m_MinimumChartSize: 4 m_AutoUVMaxDistance: 0.5 m_AutoUVMaxAngle: 89 @@ -173,9 +274,11 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 795271513} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: 4.09, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1025516230} m_Father: {fileID: 0} m_RootOrder: 1 --- !u!33 &795271518 @@ -185,6 +288,127 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 795271513} m_Mesh: {fileID: 0} +--- !u!1 &1025516229 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1025516230} + - 114: {fileID: 1025516231} + m_Layer: 0 + m_Name: Attack Spineboy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1025516230 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025516229} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -2.672, y: -1.3108752, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1695530253} + m_Father: {fileID: 795271517} + m_RootOrder: 0 +--- !u!114 &1025516231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1025516229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7eab8e63d650dc74c80d142cd4b9fe4b, type: 3} + m_Name: + m_EditorClassIdentifier: + spineboy: {fileID: 351144567} + gauge: {fileID: 795271514} + healthText: {fileID: 1847717249} +--- !u!1 &1053578423 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1053578424} + - 222: {fileID: 1053578426} + - 114: {fileID: 1053578425} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053578424 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053578423} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1695530253} + m_RootOrder: 0 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 436.7, y: 225.4} + m_SizeDelta: {x: 339.8, y: 53.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1053578425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053578423} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 36 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 48 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Press Spacebar to Attack Spineboy! + + + The health bar is a Spine skeleton.' +--- !u!222 &1053578426 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053578423} --- !u!1 &1611520402 GameObject: m_ObjectHideFlags: 0 @@ -268,6 +492,158 @@ Transform: 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 +--- !u!1 &1695530249 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1695530253} + - 223: {fileID: 1695530252} + - 114: {fileID: 1695530251} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1695530251 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1695530249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + 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 &1695530252 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1695530249} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1695530253 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1695530249} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1053578424} + - {fileID: 1847717248} + m_Father: {fileID: 1025516230} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 2.672, y: -2.779125} + m_SizeDelta: {x: 1920, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1847717247 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1847717248} + - 222: {fileID: 1847717250} + - 114: {fileID: 1847717249} + m_Layer: 5 + m_Name: Health Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1847717248 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1847717247} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1695530253} + m_RootOrder: 1 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -13, y: 343} + m_SizeDelta: {x: 339.8, y: 53.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1847717249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1847717247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 36 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 3 + m_MaxSize: 48 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 100/100 +--- !u!222 &1847717250 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1847717247} diff --git a/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity b/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity new file mode 100644 index 000000000..92d9eb64c --- /dev/null +++ b/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity @@ -0,0 +1,852 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + 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.007352948, g: 0.007352948, b: 0.007352948, 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: 3 + m_SkyboxMaterial: {fileID: 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} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 0 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &188173730 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 188173732} + - 108: {fileID: 188173731} + m_Layer: 0 + m_Name: '[LIGHT] Spotlight' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &188173731 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188173730} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 0 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 2.57 + m_Range: 12.94 + m_SpotAngle: 56 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.1 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &188173732 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 188173730} + m_LocalRotation: {x: 0.28993335, y: -0.20459291, z: -0.5390386, w: 0.7638834} + m_LocalPosition: {x: -1.85, y: 2.64, z: -6.397} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 12.793, y: -40.131, z: -75.40501} + m_Children: [] + m_Father: {fileID: 195821303} + m_RootOrder: 1 +--- !u!1 &195821302 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 195821303} + m_Layer: 0 + m_Name: LIGHTS + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &195821303 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 195821302} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 935283315} + - {fileID: 188173732} + - {fileID: 1387304066} + - {fileID: 770573971} + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!1 &770573969 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 770573971} + - 108: {fileID: 770573970} + m_Layer: 0 + m_Name: '[LIGHT] Green Spotlight' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &770573970 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 770573969} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 0 + m_Color: {r: 0.07586217, g: 1, b: 0, a: 1} + m_Intensity: 2.68 + m_Range: 15 + m_SpotAngle: 37 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &770573971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 770573969} + m_LocalRotation: {x: 0.0023665242, y: -0.5134523, z: -0.8581137, w: 0.0014160047} + m_LocalPosition: {x: 4.56, y: -8.77, z: -3.03} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 241.77, y: 179.351, z: 0.57199097} + m_Children: [] + m_Father: {fileID: 195821303} + m_RootOrder: 3 +--- !u!1 &845252278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 845252281} + - 33: {fileID: 845252280} + - 23: {fileID: 845252279} + m_Layer: 0 + m_Name: Wall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &845252279 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 845252278} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &845252280 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 845252278} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &845252281 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 845252278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.28, y: 0.77, z: 2} + m_LocalScale: {x: 19.353024, y: 6.9264994, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1 &933136133 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 933136137} + - 33: {fileID: 933136136} + - 23: {fileID: 933136135} + - 114: {fileID: 933136134} + m_Layer: 0 + m_Name: stretchyman static + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &933136134 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933136133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e075b9a3e08e2f74fbd651c858ab16ed, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 162719d41016c854abf0355feb0e14e8, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 1 + logErrors: 0 + disableRenderingOnOverride: 1 +--- !u!23 &933136135 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933136133} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 824cfb62bcbe3db49a3ce6db7e3757d1, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &933136136 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933136133} + m_Mesh: {fileID: 0} +--- !u!4 &933136137 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 933136133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -5.61, y: -3.69, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &935283313 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 935283315} + - 108: {fileID: 935283314} + m_Layer: 0 + m_Name: '[LIGHT] Point light' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &935283314 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 935283313} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 1 + m_Range: 5 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &935283315 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 935283313} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -5.81, y: 0.56, z: -0.9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 195821303} + m_RootOrder: 0 +--- !u!1 &1313996752 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1313996753} + - 212: {fileID: 1313996754} + m_Layer: 0 + m_Name: New Sprite + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1313996753 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1313996752} + m_LocalRotation: {x: 0.27059805, y: 0.65328157, z: 0.27059805, w: 0.6532815} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: 45} + m_Children: [] + m_Father: {fileID: 1387304066} + m_RootOrder: 0 +--- !u!212 &1313996754 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1313996752} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 718074e4e56a5404e824bf8e6571ea7d, type: 3} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 +--- !u!1 &1387304064 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1387304066} + - 108: {fileID: 1387304065} + - 114: {fileID: 1387304067} + m_Layer: 0 + m_Name: '[LIGHT] Rotating light' + m_TagString: Untagged + m_Icon: {fileID: 5132851093641282708, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1387304065 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1387304064} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.14482759, b: 0, a: 1} + m_Intensity: 1.96 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1387304066 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1387304064} + m_LocalRotation: {x: -0.7059173, y: -0.04099956, z: 0.705917, w: -0.04099958} + m_LocalPosition: {x: 0.077, y: 3.594, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: -186.648, y: 89.99999, z: 0} + m_Children: + - {fileID: 1313996753} + - {fileID: 1443231423} + m_Father: {fileID: 195821303} + m_RootOrder: 2 +--- !u!114 &1387304067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1387304064} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 12e291cb54756d04c9dd53ad6e00a126, type: 3} + m_Name: + m_EditorClassIdentifier: + direction: {x: 1, y: 0, z: 0} + speed: 1.5 +--- !u!1 &1443231422 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1443231423} + - 212: {fileID: 1443231424} + m_Layer: 0 + m_Name: New Sprite (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1443231423 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1443231422} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.70710677} + m_LocalPosition: {x: 0, y: 0.015, z: -0.234} + m_LocalScale: {x: 1.5390148, y: 1.5390143, z: 1.5390143} + m_LocalEulerAnglesHint: {x: 0, y: 90.00001, z: 0} + m_Children: [] + m_Father: {fileID: 1387304066} + m_RootOrder: 1 +--- !u!212 &1443231424 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1443231422} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 1 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 7 + m_Sprite: {fileID: 21300000, guid: 718074e4e56a5404e824bf8e6571ea7d, type: 3} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 +--- !u!1 &1628453470 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1628453474} + - 33: {fileID: 1628453473} + - 23: {fileID: 1628453472} + - 114: {fileID: 1628453471} + m_Layer: 0 + m_Name: stretchyman animated + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1628453471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1628453470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} + m_Name: + m_EditorClassIdentifier: + skeletonDataAsset: {fileID: 11400000, guid: 162719d41016c854abf0355feb0e14e8, type: 2} + initialSkinName: default + separatorSlotNames: [] + zSpacing: 0 + renderMeshes: 1 + immutableTriangles: 0 + pmaVertexColors: 1 + clearStateOnDisable: 0 + calculateNormals: 0 + calculateTangents: 1 + logErrors: 0 + disableRenderingOnOverride: 1 + _animationName: sneak + loop: 1 + timeScale: 0.25 +--- !u!23 &1628453472 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1628453470} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 824cfb62bcbe3db49a3ce6db7e3757d1, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedWireframeHidden: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1628453473 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1628453470} + m_Mesh: {fileID: 0} +--- !u!4 &1628453474 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1628453470} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.47, y: -3.59, z: 1.03} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1667748200 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1667748205} + - 20: {fileID: 1667748204} + - 92: {fileID: 1667748203} + - 124: {fileID: 1667748202} + - 81: {fileID: 1667748201} + 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 &1667748201 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1667748200} + m_Enabled: 1 +--- !u!124 &1667748202 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1667748200} + m_Enabled: 1 +--- !u!92 &1667748203 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1667748200} + m_Enabled: 1 +--- !u!20 &1667748204 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1667748200} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.029411793, g: 0.028979266, b: 0.028979266, a: 0} + 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: 1 + 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: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &1667748205 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1667748200} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 diff --git a/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity.meta b/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity.meta new file mode 100644 index 000000000..13a2c4506 --- /dev/null +++ b/spine-unity/Assets/Examples/Other Examples/Sprite Shaders.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0862248ab668ce749845b0d7de5c6355 +timeCreated: 1479531945 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Scripts/Chimera.cs b/spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs similarity index 67% rename from spine-unity/Assets/Examples/Scripts/Chimera.cs rename to spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs index 469086b8e..5579ed32d 100644 --- a/spine-unity/Assets/Examples/Scripts/Chimera.cs +++ b/spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs @@ -1,4 +1,4 @@ -/****************************************************************************** +/****************************************************************************** * Spine Runtimes Software License v2.5 * * Copyright (c) 2013-2016, Esoteric Software @@ -28,22 +28,36 @@ * POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ -// Contributed by: Mitch Thompson - using UnityEngine; -using Spine.Unity; +using UnityEngine.UI; -public class Chimera : MonoBehaviour { +namespace Spine.Unity.Examples { + public class AttackSpineboy : MonoBehaviour { - public SkeletonDataAsset skeletonDataSource; + public SkeletonAnimation spineboy; + public SpineGauge gauge; + public Text healthText; - [SpineAttachment(currentSkinOnly: false, returnAttachmentPath: true, dataField: "skeletonDataSource")] - public string attachmentPath; + int currentHealth = 100; + const int maxHealth = 100; - [SpineSlot] - public string targetSlot; + void Update () { + if (Input.GetKeyDown(KeyCode.Space)) { + currentHealth -= 10; + healthText.text = currentHealth + "/" + maxHealth; - void Start() { - GetComponent().skeleton.FindSlot(targetSlot).Attachment = SpineAttachment.GetAttachment(attachmentPath, skeletonDataSource); + if (currentHealth > 0) { + spineboy.state.SetAnimation(0, "hit", false); + spineboy.state.AddAnimation(0, "idle", true, 0); + gauge.fillPercent = (float)currentHealth/(float)maxHealth; + } else { + if (currentHealth >= 0) { + gauge.fillPercent = 0; + spineboy.state.SetAnimation(0, "death", false).TrackEnd = float.PositiveInfinity; + } + } + } + } } + } diff --git a/spine-unity/Assets/Examples/Scripts/Chimera.cs.meta b/spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs.meta similarity index 69% rename from spine-unity/Assets/Examples/Scripts/Chimera.cs.meta rename to spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs.meta index d38c663e5..ec4a1f94b 100644 --- a/spine-unity/Assets/Examples/Scripts/Chimera.cs.meta +++ b/spine-unity/Assets/Examples/Scripts/AttackSpineboy.cs.meta @@ -1,5 +1,7 @@ fileFormatVersion: 2 -guid: 5053fe97a7657b5418b0c307b7338b0c +guid: 7eab8e63d650dc74c80d142cd4b9fe4b +timeCreated: 1480095094 +licenseType: Free MonoImporter: serializedVersion: 2 defaultReferences: [] diff --git a/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs b/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs index da294c19b..4ae760744 100644 --- a/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs +++ b/spine-unity/Assets/Examples/Scripts/FootSoldierExample.cs @@ -34,69 +34,71 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class FootSoldierExample : MonoBehaviour { - [SpineAnimation("Idle")] - public string idleAnimation; +namespace Spine.Unity.Examples { + public class FootSoldierExample : MonoBehaviour { + [SpineAnimation("Idle")] + public string idleAnimation; - [SpineAnimation] - public string attackAnimation; + [SpineAnimation] + public string attackAnimation; - [SpineAnimation] - public string moveAnimation; + [SpineAnimation] + public string moveAnimation; - [SpineSlot] - public string eyesSlot; + [SpineSlot] + public string eyesSlot; - [SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")] - public string eyesOpenAttachment; + [SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")] + public string eyesOpenAttachment; - [SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")] - public string blinkAttachment; + [SpineAttachment(currentSkinOnly: true, slotField: "eyesSlot")] + public string blinkAttachment; - [Range(0, 0.2f)] - public float blinkDuration = 0.05f; + [Range(0, 0.2f)] + public float blinkDuration = 0.05f; - public KeyCode attackKey = KeyCode.Mouse0; - public KeyCode rightKey = KeyCode.D; - public KeyCode leftKey = KeyCode.A; + public KeyCode attackKey = KeyCode.Mouse0; + public KeyCode rightKey = KeyCode.D; + public KeyCode leftKey = KeyCode.A; - public float moveSpeed = 3; + public float moveSpeed = 3; - private SkeletonAnimation skeletonAnimation; + SkeletonAnimation skeletonAnimation; - void Awake() { - skeletonAnimation = GetComponent(); - skeletonAnimation.OnRebuild += Apply; - } + void Awake () { + skeletonAnimation = GetComponent(); + skeletonAnimation.OnRebuild += Apply; + } - void Apply(SkeletonRenderer skeletonRenderer) { - StartCoroutine("Blink"); - } + void Apply (SkeletonRenderer skeletonRenderer) { + StartCoroutine("Blink"); + } - void Update() { - if (Input.GetKey(attackKey)) { - skeletonAnimation.AnimationName = attackAnimation; - } else { - if (Input.GetKey(rightKey)) { - skeletonAnimation.AnimationName = moveAnimation; - skeletonAnimation.skeleton.FlipX = false; - transform.Translate(moveSpeed * Time.deltaTime, 0, 0); - } else if(Input.GetKey(leftKey)) { - skeletonAnimation.AnimationName = moveAnimation; - skeletonAnimation.skeleton.FlipX = true; - transform.Translate(-moveSpeed * Time.deltaTime, 0, 0); + void Update () { + if (Input.GetKey(attackKey)) { + skeletonAnimation.AnimationName = attackAnimation; } else { - skeletonAnimation.AnimationName = idleAnimation; + if (Input.GetKey(rightKey)) { + skeletonAnimation.AnimationName = moveAnimation; + skeletonAnimation.skeleton.FlipX = false; + transform.Translate(moveSpeed * Time.deltaTime, 0, 0); + } else if(Input.GetKey(leftKey)) { + skeletonAnimation.AnimationName = moveAnimation; + skeletonAnimation.skeleton.FlipX = true; + transform.Translate(-moveSpeed * Time.deltaTime, 0, 0); + } else { + skeletonAnimation.AnimationName = idleAnimation; + } + } + } + + IEnumerator Blink() { + while (true) { + yield return new WaitForSeconds(Random.Range(0.25f, 3f)); + skeletonAnimation.skeleton.SetAttachment(eyesSlot, blinkAttachment); + yield return new WaitForSeconds(blinkDuration); + skeletonAnimation.skeleton.SetAttachment(eyesSlot, eyesOpenAttachment); } } } - - IEnumerator Blink() { - while (true) { - yield return new WaitForSeconds(Random.Range(0.25f, 3f)); - skeletonAnimation.skeleton.SetAttachment(eyesSlot, blinkAttachment); - yield return new WaitForSeconds(blinkDuration); - skeletonAnimation.skeleton.SetAttachment(eyesSlot, eyesOpenAttachment); - } - } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/Goblins.cs b/spine-unity/Assets/Examples/Scripts/Goblins.cs index e4c813b3b..2dc3232c3 100644 --- a/spine-unity/Assets/Examples/Scripts/Goblins.cs +++ b/spine-unity/Assets/Examples/Scripts/Goblins.cs @@ -29,36 +29,40 @@ *****************************************************************************/ using UnityEngine; -using System.Collections; using Spine; using Spine.Unity; -public class Goblins : MonoBehaviour { - private bool girlSkin; - private SkeletonAnimation skeletonAnimation; - private Bone headBone; - - public void Start () { - skeletonAnimation = GetComponent(); - headBone = skeletonAnimation.skeleton.FindBone("head"); - skeletonAnimation.UpdateLocal += UpdateLocal; - } +namespace Spine.Unity.Examples { + public class Goblins : MonoBehaviour { + SkeletonAnimation skeletonAnimation; + Bone headBone; + bool girlSkin; - // This is called after the animation is applied to the skeleton and can be used to adjust the bones dynamically. - public void UpdateLocal (ISkeletonAnimation skeletonRenderer) { - headBone.Rotation += 15; - } - - public void OnMouseDown () { - skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl"); - skeletonAnimation.skeleton.SetSlotsToSetupPose(); + [Range(-360, 360)] + public float extraRotation; - girlSkin = !girlSkin; + public void Start () { + skeletonAnimation = GetComponent(); + headBone = skeletonAnimation.skeleton.FindBone("head"); + skeletonAnimation.UpdateLocal += UpdateLocal; + } + + // This is called after the animation is applied to the skeleton and can be used to adjust the bones dynamically. + public void UpdateLocal (ISkeletonAnimation skeletonRenderer) { + headBone.Rotation += extraRotation; + } - if (girlSkin) { - skeletonAnimation.skeleton.SetAttachment("right hand item", null); - skeletonAnimation.skeleton.SetAttachment("left hand item", "spear"); - } else - skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger"); + public void OnMouseDown () { + skeletonAnimation.skeleton.SetSkin(girlSkin ? "goblin" : "goblingirl"); + skeletonAnimation.skeleton.SetSlotsToSetupPose(); + + girlSkin = !girlSkin; + + if (girlSkin) { + skeletonAnimation.skeleton.SetAttachment("right hand item", null); + skeletonAnimation.skeleton.SetAttachment("left hand item", "spear"); + } else + skeletonAnimation.skeleton.SetAttachment("left hand item", "dagger"); + } } -} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs b/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs new file mode 100644 index 000000000..c404dbdc2 --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs @@ -0,0 +1,112 @@ +/****************************************************************************** + * Spine Runtimes Software License v2.5 + * + * Copyright (c) 2013-2016, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable, and + * non-transferable license to use, install, execute, and perform the Spine + * Runtimes software and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using UnityEngine; +using Spine.Unity.Modules.AttachmentTools; + +namespace Spine.Unity.Examples { + public class MixAndMatch : MonoBehaviour { + + #region Inspector + [Header("From AtlasAsset")] + public AtlasAsset handSource; + [SpineAtlasRegion("handSource")] public string handRegion = "hand"; + [SpineAttachment] public string handAttachmentName; + [SpineSlot] public string handSlot; + public Vector2 newHandOffset; + public float newHandRotation; + public Texture2D handTexture; + + [Header("From Sprite")] + public Sprite dagger; + public string daggerName = "dagger"; + [SpineSlot] public string weaponSlot; + + [Header("MeshAttachment.SetRegion")] + public bool applyHeadRegion = false; + public AtlasAsset headSource; + [SpineAtlasRegion("headSource")] public string headRegion; + [SpineSlot] public string headSlot; + [SpineAttachment] public string headAttachmentName; + + [Header("Runtime Repack")] + public bool repack = true; + public Shader repackedShader; + + [Header("Do not assign")] + public Texture2D runtimeAtlas; + public Material runtimeMaterial; + + #endregion + + void Start () { + var skeletonAnimation = GetComponent(); + var skeleton = skeletonAnimation.Skeleton; + + // All attachment changes will be applied to the skin. We use a clone so other instances will not be affected. + var newSkin = skeleton.UnshareSkin(true, false, skeletonAnimation.AnimationState); + + // Case 1: Create an attachment from an atlas. + RegionAttachment newHand = handSource.GetAtlas().FindRegion(handRegion).ToRegionAttachment("new hand"); + newHand.SetPositionOffset(newHandOffset); + newHand.rotation = newHandRotation; + newHand.UpdateOffset(); + int handSlotIndex = skeleton.FindSlotIndex(handSlot); + handTexture = newHand.GetRegion().ToTexture(); + newSkin.AddAttachment(handSlotIndex, handAttachmentName, newHand); + + // Case 2: Create an attachment from a Unity Sprite (Sprite texture needs to be Read/Write Enabled in the inspector. + RegionAttachment newWeapon = dagger.ToRegionAttachmentPMAClone(Shader.Find("Spine/Skeleton")); + newWeapon.SetScale(1.5f, 1.5f); + newWeapon.UpdateOffset(); + int weaponSlotIndex = skeleton.FindSlotIndex(weaponSlot); + newSkin.AddAttachment(weaponSlotIndex, daggerName, newWeapon); + + // Case 3: Change an existing attachment's backing region. + if (applyHeadRegion) { + AtlasRegion spineBoyHead = headSource.GetAtlas().FindRegion(headRegion); + int headSlotIndex = skeleton.FindSlotIndex(headSlot); + var newHead = newSkin.GetAttachment(headSlotIndex, headAttachmentName).GetClone(true); + newHead.SetRegion(spineBoyHead); + newSkin.AddAttachment(headSlotIndex, headAttachmentName, newHead); + } + + // Case 4: Repacking a mixed-and-matched skin to minimize draw calls. + // Repacking requires that you set all source textures/sprites/atlases to be Read/Write enabled in the inspector. + if (repack) + newSkin = newSkin.GetRepackedSkin("repacked", repackedShader, out runtimeMaterial, out runtimeAtlas); + + skeleton.SetSkin(newSkin); + skeleton.SetToSetupPose(); + skeleton.SetAttachment(weaponSlot, daggerName); + } + + } +} diff --git a/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs.meta b/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs.meta new file mode 100644 index 000000000..5e7d9f7ff --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/MixAndMatch.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fdd7c8b428f700c438a6a14addca0346 +timeCreated: 1480089275 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs index ae4cc4165..ceded486c 100644 --- a/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs +++ b/spine-unity/Assets/Examples/Scripts/RaggedySpineboy.cs @@ -32,85 +32,76 @@ using UnityEngine; using System.Collections; using Spine.Unity; -public class RaggedySpineboy : MonoBehaviour { +namespace Spine.Unity.Examples { + public class RaggedySpineboy : MonoBehaviour { - public LayerMask groundMask; - public float restoreDuration = 0.5f; - public Vector2 launchVelocity = new Vector2(50,100); + public LayerMask groundMask; + public float restoreDuration = 0.5f; + public Vector2 launchVelocity = new Vector2(50,100); - Spine.Unity.Modules.SkeletonRagdoll2D ragdoll; - Collider2D naturalCollider; + Spine.Unity.Modules.SkeletonRagdoll2D ragdoll; + Collider2D naturalCollider; - void Start () { - - ragdoll = GetComponent(); - naturalCollider = GetComponent(); - } - - void AddRigidbody () { - var rb = gameObject.AddComponent(); - #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5 - rb.freezeRotation = true; - #else - rb.fixedAngle = true; - #endif - naturalCollider.enabled = true; - } - - void RemoveRigidbody () { - Destroy(GetComponent()); - naturalCollider.enabled = false; - } - - void Update () { - - } - - void OnMouseUp () { - if (naturalCollider.enabled) { - Launch(); - } - } - - void Launch () { - RemoveRigidbody(); - ragdoll.Apply(); - ragdoll.RootRigidbody.velocity = new Vector2(Random.Range(-launchVelocity.x, launchVelocity.x), launchVelocity.y); - StartCoroutine(WaitUntilStopped()); - } - - IEnumerator Restore () { - Vector3 estimatedPos = ragdoll.EstimatedSkeletonPosition; - Vector3 rbPosition = ragdoll.RootRigidbody.position; - - Vector3 skeletonPoint = estimatedPos; - RaycastHit2D hit = Physics2D.Raycast((Vector2)rbPosition, (Vector2)(estimatedPos - rbPosition), Vector3.Distance(estimatedPos, rbPosition), groundMask); - if (hit.collider != null) - skeletonPoint = hit.point; - - - ragdoll.RootRigidbody.isKinematic = true; - ragdoll.SetSkeletonPosition(skeletonPoint); - - yield return ragdoll.SmoothMix(0, restoreDuration); - ragdoll.Remove(); - - AddRigidbody(); - } - - IEnumerator WaitUntilStopped () { - yield return new WaitForSeconds(0.5f); - - float t = 0; - while (t < 0.5f) { - if (ragdoll.RootRigidbody.velocity.magnitude > 0.09f) - t = 0; - else - t += Time.deltaTime; - - yield return null; + void Start () { + ragdoll = GetComponent(); + naturalCollider = GetComponent(); } - StartCoroutine(Restore()); + void AddRigidbody () { + var rb = gameObject.AddComponent(); + #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5 + rb.freezeRotation = true; + #else + rb.fixedAngle = true; + #endif + naturalCollider.enabled = true; + } + + void RemoveRigidbody () { + Destroy(GetComponent()); + naturalCollider.enabled = false; + } + + void OnMouseUp () { + if (naturalCollider.enabled) + Launch(); + } + + void Launch () { + RemoveRigidbody(); + ragdoll.Apply(); + ragdoll.RootRigidbody.velocity = new Vector2(Random.Range(-launchVelocity.x, launchVelocity.x), launchVelocity.y); + StartCoroutine(WaitUntilStopped()); + } + + IEnumerator Restore () { + Vector3 estimatedPos = ragdoll.EstimatedSkeletonPosition; + Vector3 rbPosition = ragdoll.RootRigidbody.position; + + Vector3 skeletonPoint = estimatedPos; + RaycastHit2D hit = Physics2D.Raycast((Vector2)rbPosition, (Vector2)(estimatedPos - rbPosition), Vector3.Distance(estimatedPos, rbPosition), groundMask); + if (hit.collider != null) + skeletonPoint = hit.point; + + ragdoll.RootRigidbody.isKinematic = true; + ragdoll.SetSkeletonPosition(skeletonPoint); + + yield return ragdoll.SmoothMix(0, restoreDuration); + ragdoll.Remove(); + + AddRigidbody(); + } + + IEnumerator WaitUntilStopped () { + yield return new WaitForSeconds(0.5f); + + float t = 0; + while (t < 0.5f) { + t = (ragdoll.RootRigidbody.velocity.magnitude > 0.09f) ? 0 : t + Time.deltaTime; + yield return null; + } + + StartCoroutine(Restore()); + } } } diff --git a/spine-unity/Assets/Examples/Scripts/Rotator.cs b/spine-unity/Assets/Examples/Scripts/Rotator.cs new file mode 100644 index 000000000..147aa9c3a --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/Rotator.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace Spine.Unity.Examples { + public class Rotator : MonoBehaviour { + public Vector3 direction = new Vector3(0, 0, 1f); + public float speed = 1f; + + void Update () { + transform.Rotate(direction * (speed * Time.deltaTime * 100f)); + } + } +} diff --git a/spine-unity/Assets/Examples/Scripts/Rotator.cs.meta b/spine-unity/Assets/Examples/Scripts/Rotator.cs.meta new file mode 100644 index 000000000..98efc6a13 --- /dev/null +++ b/spine-unity/Assets/Examples/Scripts/Rotator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 12e291cb54756d04c9dd53ad6e00a126 +timeCreated: 1479532891 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Scripts/SpineGauge.cs b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs index 10ddc4c97..ffe0a8505 100644 --- a/spine-unity/Assets/Examples/Scripts/SpineGauge.cs +++ b/spine-unity/Assets/Examples/Scripts/SpineGauge.cs @@ -29,46 +29,47 @@ *****************************************************************************/ using UnityEngine; -using System.Collections; using Spine.Unity; -[ExecuteInEditMode] -[RequireComponent(typeof(SkeletonRenderer))] -public class SpineGauge : MonoBehaviour { +namespace Spine.Unity.Examples { + [ExecuteInEditMode] + [RequireComponent(typeof(SkeletonRenderer))] + public class SpineGauge : MonoBehaviour { - #region Inspector - [Range(0,1)] - public float fillPercent = 0; + #region Inspector + [Range(0,1)] + public float fillPercent = 0; - [SpineAnimation] - public string fillAnimationName; - #endregion + [SpineAnimation] + public string fillAnimationName; + #endregion - SkeletonRenderer skeletonRenderer; - Spine.Animation fillAnimation; + SkeletonRenderer skeletonRenderer; + Spine.Animation fillAnimation; - void Awake () { - skeletonRenderer = GetComponent(); - - } - - void Update () { - SetGaugePercent(fillPercent); - } - - public void SetGaugePercent (float x) { - if (skeletonRenderer == null) return; - var skeleton = skeletonRenderer.skeleton; if (skeleton == null) return; - - // Make super-sure that fillAnimation isn't null. Early exit if it is. - if (fillAnimation == null) { - fillAnimation = skeleton.Data.FindAnimation(fillAnimationName); - if (fillAnimation == null) return; + void Awake () { + skeletonRenderer = GetComponent(); } - - fillAnimation.Apply(skeleton, 0, x, false, null, 1f, true, false); - skeleton.Update(Time.deltaTime); - skeleton.UpdateWorldTransform(); + void Update () { + SetGaugePercent(fillPercent); + } + + public void SetGaugePercent (float percent) { + if (skeletonRenderer == null) return; + var skeleton = skeletonRenderer.skeleton; if (skeleton == null) return; + + // Make super-sure that fillAnimation isn't null. + if (fillAnimation == null) { + fillAnimation = skeleton.Data.FindAnimation(fillAnimationName); + if (fillAnimation == null) return; + } + + fillAnimation.Apply(skeleton, 0, percent, false, null, 1f, true, false); + + skeleton.Update(Time.deltaTime); + skeleton.UpdateWorldTransform(); + } } + } diff --git a/spine-unity/Assets/Examples/Scripts/Spineboy.cs b/spine-unity/Assets/Examples/Scripts/Spineboy.cs index ccb227e61..3705ad99e 100644 --- a/spine-unity/Assets/Examples/Scripts/Spineboy.cs +++ b/spine-unity/Assets/Examples/Scripts/Spineboy.cs @@ -33,25 +33,28 @@ using UnityEngine; using Spine; using Spine.Unity; -public class Spineboy : MonoBehaviour { - SkeletonAnimation skeletonAnimation; +namespace Spine.Unity.Examples { + public class Spineboy : MonoBehaviour { + SkeletonAnimation skeletonAnimation; - public void Start () { - skeletonAnimation = GetComponent(); // Get the SkeletonAnimation component for the GameObject this script is attached to. + public void Start () { + skeletonAnimation = GetComponent(); // Get the SkeletonAnimation component for the GameObject this script is attached to. - skeletonAnimation.state.Event += HandleEvent;; // Call our method any time an animation fires an event. - skeletonAnimation.state.End += (entry) => Debug.Log("start: " + entry.trackIndex); // A lambda can be used for the callback instead of a method. + skeletonAnimation.state.Event += HandleEvent;; // Call our method any time an animation fires an event. + skeletonAnimation.state.End += (entry) => Debug.Log("start: " + entry.trackIndex); // A lambda can be used for the callback instead of a method. - skeletonAnimation.state.AddAnimation(0, "jump", false, 2); // Queue jump to be played on track 0 two seconds after the starting animation. - skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation. + skeletonAnimation.state.AddAnimation(0, "jump", false, 2); // Queue jump to be played on track 0 two seconds after the starting animation. + skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation. + } + + void HandleEvent (TrackEntry trackEntry, Spine.Event e) { + Debug.Log(trackEntry.trackIndex + " " + trackEntry.animation.name + ": event " + e + ", " + e.Int); + } + + public void OnMouseDown () { + skeletonAnimation.state.SetAnimation(0, "jump", false); // Set jump to be played on track 0 immediately. + skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation. + } } - void HandleEvent (TrackEntry trackEntry, Spine.Event e) { - Debug.Log(trackEntry.trackIndex + " " + trackEntry.animation.name + ": event " + e + ", " + e.Int); - } - - public void OnMouseDown () { - skeletonAnimation.state.SetAnimation(0, "jump", false); // Set jump to be played on track 0 immediately. - skeletonAnimation.state.AddAnimation(0, "run", true, 0); // Queue walk to be looped on track 0 after the jump animation. - } } diff --git a/spine-unity/Assets/Examples/Scripts/SpineboyPole.cs b/spine-unity/Assets/Examples/Scripts/SpineboyPole.cs index 6db87e3da..f4dc31470 100644 --- a/spine-unity/Assets/Examples/Scripts/SpineboyPole.cs +++ b/spine-unity/Assets/Examples/Scripts/SpineboyPole.cs @@ -34,48 +34,52 @@ using Spine.Unity; using Spine.Unity.Modules; -public class SpineboyPole : MonoBehaviour { - public SkeletonAnimation skeletonAnimation; - public SkeletonRenderSeparator separator; +namespace Spine.Unity.Examples { + public class SpineboyPole : MonoBehaviour { + public SkeletonAnimation skeletonAnimation; + public SkeletonRenderSeparator separator; - [Space(18)] - [SpineAnimation] - public string run; - [SpineAnimation] - public string pole; - public float startX; - public float endX; + [Space(18)] + [SpineAnimation] + public string run; + [SpineAnimation] + public string pole; + public float startX; + public float endX; - const float Speed = 18f; - const float RunTimeScale = 1.5f; + const float Speed = 18f; + const float RunTimeScale = 1.5f; - IEnumerator Start () { - var state = skeletonAnimation.state; + IEnumerator Start () { + var state = skeletonAnimation.state; - while (true) { - // Run phase - SetXPosition(startX); - separator.enabled = false; // Disable Separator during run. - state.SetAnimation(0, run, true); - state.TimeScale = RunTimeScale; + while (true) { + // Run phase + SetXPosition(startX); + separator.enabled = false; // Disable Separator during run. + state.SetAnimation(0, run, true); + state.TimeScale = RunTimeScale; - while (transform.localPosition.x < endX) { - transform.Translate(Vector3.right * Speed * Time.deltaTime); - yield return null; + while (transform.localPosition.x < endX) { + transform.Translate(Vector3.right * Speed * Time.deltaTime); + yield return null; + } + + // Hit phase + SetXPosition(endX); + separator.enabled = true; // Enable Separator when hit + var poleTrack = state.SetAnimation(0, pole, false); + float duration = poleTrack.TrackEnd; + poleTrack.TrackEnd = float.PositiveInfinity; + yield return new WaitForSeconds(duration + 1f); } + } - // Hit phase - SetXPosition(endX); - separator.enabled = true; // Enable Separator when hit - var poleTrack = state.SetAnimation(0, pole, false); - yield return new WaitForSpineAnimationComplete(poleTrack); - yield return new WaitForSeconds(1f); + void SetXPosition (float x) { + var tp = transform.localPosition; + tp.x = x; + transform.localPosition = tp; } } - void SetXPosition (float x) { - var tp = transform.localPosition; - tp.x = x; - transform.localPosition = tp; - } } diff --git a/spine-unity/Assets/Examples/Spine/Dragon/dragon.png.meta b/spine-unity/Assets/Examples/Spine/Dragon/dragon.png.meta index ba8fc7367..0f794e226 100644 --- a/spine-unity/Assets/Examples/Spine/Dragon/dragon.png.meta +++ b/spine-unity/Assets/Examples/Spine/Dragon/dragon.png.meta @@ -1,9 +1,30 @@ fileFormatVersion: 2 guid: 6bc52290ef03f2846ba38d67e2823598 -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: - fileIDToRecycleName: {} + fileIDToRecycleName: + 21300000: L_rear_thigh + 21300002: L_wing01 + 21300004: L_wing02 + 21300006: L_wing03 + 21300008: L_wing05 + 21300010: L_wing06 + 21300012: R_wing01 + 21300014: R_wing02 + 21300016: R_wing03 + 21300018: R_wing05 + 21300020: R_wing06 + 21300022: R_wing07 + 21300024: R_wing08 + 21300026: R_wing09 + 21300028: back + 21300030: chest + 21300032: front_toeA + 21300034: head + 21300036: logo + 21300038: tail01 + 21300040: tail03 serializedVersion: 2 mipmaps: mipMapMode: 0 @@ -46,10 +67,285 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: - sprites: [] + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: L_rear_thigh + rect: + serializedVersion: 2 + x: 895 + y: 856 + width: 91 + height: 148 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing01 + rect: + serializedVersion: 2 + x: 814 + y: 96 + width: 191 + height: 256 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing02 + rect: + serializedVersion: 2 + x: 714 + y: 566 + width: 179 + height: 269 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing03 + rect: + serializedVersion: 2 + x: 785 + y: 354 + width: 186 + height: 207 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing05 + rect: + serializedVersion: 2 + x: 2 + y: 797 + width: 213 + height: 218 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing06 + rect: + serializedVersion: 2 + x: 2 + y: 464 + width: 192 + height: 331 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing01 + rect: + serializedVersion: 2 + x: 502 + y: 96 + width: 310 + height: 219 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing02 + rect: + serializedVersion: 2 + x: 204 + y: 358 + width: 305 + height: 203 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing03 + rect: + serializedVersion: 2 + x: 511 + y: 317 + width: 272 + height: 247 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing05 + rect: + serializedVersion: 2 + x: 196 + y: 563 + width: 251 + height: 229 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing06 + rect: + serializedVersion: 2 + x: 2 + y: 96 + width: 200 + height: 366 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing07 + rect: + serializedVersion: 2 + x: 449 + y: 566 + width: 263 + height: 200 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing08 + rect: + serializedVersion: 2 + x: 467 + y: 768 + width: 234 + height: 254 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing09 + rect: + serializedVersion: 2 + x: 217 + y: 794 + width: 248 + height: 204 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: back + rect: + serializedVersion: 2 + x: 703 + y: 837 + width: 190 + height: 185 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: chest + rect: + serializedVersion: 2 + x: 895 + y: 718 + width: 122 + height: 136 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_toeA + rect: + serializedVersion: 2 + x: 976 + y: 2 + width: 29 + height: 50 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: head + rect: + serializedVersion: 2 + x: 204 + y: 96 + width: 296 + height: 260 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: logo + rect: + serializedVersion: 2 + x: 2 + y: 2 + width: 897 + height: 92 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail01 + rect: + serializedVersion: 2 + x: 895 + y: 563 + width: 120 + height: 153 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail03 + rect: + serializedVersion: 2 + x: 901 + y: 2 + width: 73 + height: 92 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 outline: [] spritePackingTag: userData: diff --git a/spine-unity/Assets/Examples/Spine/Dragon/dragon2.png.meta b/spine-unity/Assets/Examples/Spine/Dragon/dragon2.png.meta index 77bf674b3..f74b3bdf0 100644 --- a/spine-unity/Assets/Examples/Spine/Dragon/dragon2.png.meta +++ b/spine-unity/Assets/Examples/Spine/Dragon/dragon2.png.meta @@ -1,9 +1,28 @@ fileFormatVersion: 2 guid: 12c126994123f12468cf4c5a2684078a -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: - fileIDToRecycleName: {} + fileIDToRecycleName: + 21300000: L_front_leg + 21300002: L_front_thigh + 21300004: L_rear_leg + 21300006: L_wing04 + 21300008: L_wing07 + 21300010: L_wing08 + 21300012: L_wing09 + 21300014: R_front_leg + 21300016: R_front_thigh + 21300018: R_rear_leg + 21300020: R_rear_thigh + 21300022: R_wing04 + 21300024: chin + 21300026: front_toeB + 21300028: rear-toe + 21300030: tail02 + 21300032: tail04 + 21300034: tail05 + 21300036: tail06 serializedVersion: 2 mipmaps: mipMapMode: 0 @@ -46,10 +65,259 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: - sprites: [] + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: L_front_leg + rect: + serializedVersion: 2 + x: 391 + y: 287 + width: 57 + height: 84 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_front_thigh + rect: + serializedVersion: 2 + x: 446 + y: 171 + width: 84 + height: 72 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_rear_leg + rect: + serializedVersion: 2 + x: 888 + y: 2 + width: 132 + height: 168 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing04 + rect: + serializedVersion: 2 + x: 256 + y: 150 + width: 188 + height: 135 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing07 + rect: + serializedVersion: 2 + x: 2 + y: 148 + width: 159 + height: 255 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing08 + rect: + serializedVersion: 2 + x: 705 + y: 2 + width: 181 + height: 164 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: L_wing09 + rect: + serializedVersion: 2 + x: 499 + y: 2 + width: 204 + height: 167 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_front_leg + rect: + serializedVersion: 2 + x: 273 + y: 389 + width: 101 + height: 89 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_front_thigh + rect: + serializedVersion: 2 + x: 163 + y: 298 + width: 108 + height: 108 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_rear_leg + rect: + serializedVersion: 2 + x: 273 + y: 287 + width: 116 + height: 100 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_rear_thigh + rect: + serializedVersion: 2 + x: 163 + y: 148 + width: 91 + height: 148 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: R_wing04 + rect: + serializedVersion: 2 + x: 2 + y: 2 + width: 279 + height: 144 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: chin + rect: + serializedVersion: 2 + x: 283 + y: 2 + width: 214 + height: 146 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_toeB + rect: + serializedVersion: 2 + x: 590 + y: 171 + width: 56 + height: 57 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear-toe + rect: + serializedVersion: 2 + x: 2 + y: 405 + width: 77 + height: 105 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail02 + rect: + serializedVersion: 2 + x: 151 + y: 408 + width: 120 + height: 95 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail04 + rect: + serializedVersion: 2 + x: 532 + y: 171 + width: 56 + height: 71 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail05 + rect: + serializedVersion: 2 + x: 648 + y: 171 + width: 52 + height: 59 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: tail06 + rect: + serializedVersion: 2 + x: 81 + y: 405 + width: 68 + height: 95 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 outline: [] spritePackingTag: userData: diff --git a/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon.mat b/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon.mat index eff332981..a3810999f 100644 --- a/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon.mat +++ b/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 6bc52290ef03f2846ba38d67e2823598, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 6bc52290ef03f2846ba38d67e2823598, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon2.mat b/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon2.mat index a4a54511a..b8eccbbef 100644 --- a/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon2.mat +++ b/spine-unity/Assets/Examples/Spine/Dragon/dragon_dragon2.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 12c126994123f12468cf4c5a2684078a, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 12c126994123f12468cf4c5a2684078a, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Eyes/eyes.png.meta b/spine-unity/Assets/Examples/Spine/Eyes/eyes.png.meta index 83f497ebb..eac2ad628 100644 --- a/spine-unity/Assets/Examples/Spine/Eyes/eyes.png.meta +++ b/spine-unity/Assets/Examples/Spine/Eyes/eyes.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 49441e5a1682e564694545bd9b509785 -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Eyes/eyes_Material.mat b/spine-unity/Assets/Examples/Spine/Eyes/eyes_Material.mat index fe0d105d8..e2e1dd869 100644 --- a/spine-unity/Assets/Examples/Spine/Eyes/eyes_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Eyes/eyes_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 49441e5a1682e564694545bd9b509785, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 49441e5a1682e564694545bd9b509785, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment.png.meta b/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment.png.meta index 281448493..b40c70732 100644 --- a/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment.png.meta +++ b/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment.png.meta @@ -1,13 +1,17 @@ fileFormatVersion: 2 guid: ddb89f63d0296cf4f8572b0448bb6b30 -timeCreated: 1467205225 +timeCreated: 1480096533 licenseType: Free TextureImporter: - fileIDToRecycleName: {} + fileIDToRecycleName: + 21300000: Equipment/shield1 + 21300002: Equipment/shield2 + 21300004: Equipment/sword1 + 21300006: Equipment/sword4 serializedVersion: 2 mipmaps: mipMapMode: 0 - enableMipMap: 0 + enableMipMap: 1 linearTexture: 0 correctGamma: 0 fadeOut: 0 @@ -46,10 +50,64 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 - textureType: 5 + spriteTessellationDetail: -1 + textureType: 0 buildTargetSettings: [] spriteSheet: - sprites: [] + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: Equipment/shield1 + rect: + serializedVersion: 2 + x: 220 + y: 24 + width: 118 + height: 71 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: Equipment/shield2 + rect: + serializedVersion: 2 + x: 340 + y: 24 + width: 111 + height: 82 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: Equipment/sword1 + rect: + serializedVersion: 2 + x: 2 + y: 95 + width: 161 + height: 31 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: Equipment/sword4 + rect: + serializedVersion: 2 + x: 2 + y: 24 + width: 216 + height: 69 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 outline: [] spritePackingTag: userData: diff --git a/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat b/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat index 6616e58c3..1fd116fa9 100644 --- a/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat +++ b/spine-unity/Assets/Examples/Spine/FootSoldier/Equipment/Equipment_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: ddb89f63d0296cf4f8572b0448bb6b30, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: ddb89f63d0296cf4f8572b0448bb6b30, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White.png.meta b/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White.png.meta index 4da1dd337..b0fe71d65 100644 --- a/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White.png.meta +++ b/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 57b57f94df266f94ea0981915a4472e1 -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White_Material.mat b/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White_Material.mat index 9dd8a7a3f..2ed953b3f 100644 --- a/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White_Material.mat +++ b/spine-unity/Assets/Examples/Spine/FootSoldier/FS_White_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 57b57f94df266f94ea0981915a4472e1, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 57b57f94df266f94ea0981915a4472e1, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta index ed1534eb1..17047db6f 100644 --- a/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: a11301aad15ed6b4995485a02a81b132 -timeCreated: 1467205225 +timeCreated: 1479419654 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat index 90e6e82a8..c37b84515 100644 --- a/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Gauge/Gauge_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: a11301aad15ed6b4995485a02a81b132, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: a11301aad15ed6b4995485a02a81b132, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Goblins/dagger.png b/spine-unity/Assets/Examples/Spine/Goblins/dagger.png new file mode 100644 index 0000000000000000000000000000000000000000..21ec56db575e2dc39272da1a32e225eac13e5239 GIT binary patch literal 6941 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
;Ati7`e(jKrYSO`xh9 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 literal 0 HcmV?d00001 diff --git a/spine-unity/Assets/Examples/Spine/Goblins/dagger.png.meta b/spine-unity/Assets/Examples/Spine/Goblins/dagger.png.meta new file mode 100644 index 000000000..167c66a27 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Goblins/dagger.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 2412d1d8498463f49ae6ebe3a66ffae9 +timeCreated: 1480090364 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 1 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 9 + spritePivot: {x: 0.2531028, y: 0.4775193} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 5 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Goblins/goblins.png.meta b/spine-unity/Assets/Examples/Spine/Goblins/goblins.png.meta index fddf32d99..cb5d83a5f 100644 --- a/spine-unity/Assets/Examples/Spine/Goblins/goblins.png.meta +++ b/spine-unity/Assets/Examples/Spine/Goblins/goblins.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 5fb7efec30c79cb46a705e0d04debb04 -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -38,7 +38,7 @@ TextureImporter: rGBM: 0 compressionQuality: 50 allowsAlphaSplitting: 0 - spriteMode: 1 + spriteMode: 0 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Goblins/goblins_Material.mat b/spine-unity/Assets/Examples/Spine/Goblins/goblins_Material.mat index 21f52650d..9161303ca 100644 --- a/spine-unity/Assets/Examples/Spine/Goblins/goblins_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Goblins/goblins_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 5fb7efec30c79cb46a705e0d04debb04, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 5fb7efec30c79cb46a705e0d04debb04, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Hero.prefab b/spine-unity/Assets/Examples/Spine/Hero.prefab deleted file mode 100644 index a0f9c534f..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero.prefab +++ /dev/null @@ -1,102 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &100000 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 400000} - - 33: {fileID: 3300000} - - 23: {fileID: 2300000} - - 114: {fileID: 11400000} - m_Layer: 0 - m_Name: Hero - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400000 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2300000 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: b04b8c6e4c57e78449f243c27617a2cd, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3300000 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Mesh: {fileID: 0} ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: a5967d74cd1f3c741ba7758da7511bcf, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 0 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: - loop: 0 - timeScale: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 100000} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/Hero.prefab.meta b/spine-unity/Assets/Examples/Spine/Hero.prefab.meta deleted file mode 100644 index 1946a559d..000000000 --- a/spine-unity/Assets/Examples/Spine/Hero.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 095df186000aff741a2407fe13d65e42 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta index cf416725c..33fd591bf 100644 --- a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh.png.meta @@ -1,9 +1,29 @@ fileFormatVersion: 2 guid: 8d970daea81f33648ae2d84ab59c88d4 -timeCreated: 1467205225 +timeCreated: 1480046537 licenseType: Free TextureImporter: - fileIDToRecycleName: {} + fileIDToRecycleName: + 21300000: body + 21300002: cape + 21300004: eyes + 21300006: fingers + 21300008: foot1 + 21300010: foot2 + 21300012: forearm1 + 21300014: forearm2 + 21300016: hand1 + 21300018: hand2 + 21300020: head + 21300022: mantles + 21300024: mouth + 21300026: shin1 + 21300028: shin2 + 21300030: sword + 21300032: thigh1 + 21300034: thigh2 + 21300036: upperarm1 + 21300038: upperarm2 serializedVersion: 2 mipmaps: mipMapMode: 0 @@ -19,7 +39,7 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 - isReadable: 0 + isReadable: 1 grayScaleToAlpha: 0 generateCubemap: 0 cubemapConvolution: 0 @@ -29,8 +49,8 @@ TextureImporter: textureFormat: -3 maxTextureSize: 2048 textureSettings: - filterMode: -1 - aniso: -1 + filterMode: 2 + aniso: 7 mipBias: -1 wrapMode: -1 nPOTScale: 1 @@ -38,7 +58,7 @@ TextureImporter: rGBM: 0 compressionQuality: 50 allowsAlphaSplitting: 0 - spriteMode: 0 + spriteMode: 2 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -46,10 +66,272 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: - sprites: [] + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: body + rect: + serializedVersion: 2 + x: 324 + y: 80 + width: 97 + height: 95 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: cape + rect: + serializedVersion: 2 + x: 176 + y: 9 + width: 146 + height: 159 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: eyes + rect: + serializedVersion: 2 + x: 604 + y: 9 + width: 82 + height: 31 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: fingers + rect: + serializedVersion: 2 + x: 877 + y: 9 + width: 31 + height: 33 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: foot1 + rect: + serializedVersion: 2 + x: 743 + y: 9 + width: 50 + height: 42 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: foot2 + rect: + serializedVersion: 2 + x: 688 + y: 9 + width: 53 + height: 38 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: forearm1 + rect: + serializedVersion: 2 + x: 795 + y: 9 + width: 41 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: forearm2 + rect: + serializedVersion: 2 + x: 910 + y: 9 + width: 31 + height: 32 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: hand1 + rect: + serializedVersion: 2 + x: 838 + y: 9 + width: 37 + height: 48 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: hand2 + rect: + serializedVersion: 2 + x: 286 + y: 170 + width: 31 + height: 37 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: head + rect: + serializedVersion: 2 + x: 2 + y: 9 + width: 172 + height: 173 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: mantles + rect: + serializedVersion: 2 + x: 2 + y: 184 + width: 136 + height: 55 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: mouth + rect: + serializedVersion: 2 + x: 2 + y: 241 + width: 61 + height: 13 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: shin1 + rect: + serializedVersion: 2 + x: 482 + y: 80 + width: 53 + height: 57 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: shin2 + rect: + serializedVersion: 2 + x: 192 + y: 170 + width: 51 + height: 54 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: sword + rect: + serializedVersion: 2 + x: 324 + y: 9 + width: 216 + height: 69 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: thigh1 + rect: + serializedVersion: 2 + x: 542 + y: 9 + width: 60 + height: 63 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: thigh2 + rect: + serializedVersion: 2 + x: 423 + y: 80 + width: 57 + height: 64 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: upperarm1 + rect: + serializedVersion: 2 + x: 140 + y: 184 + width: 50 + height: 56 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: upperarm2 + rect: + serializedVersion: 2 + x: 245 + y: 170 + width: 39 + height: 59 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 outline: [] spritePackingTag: userData: diff --git a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat index 28302dc4c..ea2db29db 100644 --- a/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Hero/hero-mesh_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 8d970daea81f33648ae2d84ab59c88d4, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 8d970daea81f33648ae2d84ab59c88d4, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab deleted file mode 100644 index cc2ea39d4..000000000 --- a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab +++ /dev/null @@ -1,165 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &183998 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 483998} - - 33: {fileID: 3383998} - - 23: {fileID: 2383998} - - 114: {fileID: 11483994} - - 114: {fileID: 11483996} - - 114: {fileID: 11483998} - - 60: {fileID: 6083998} - m_Layer: 0 - m_Name: Raggedy Spineboy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &483998 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -2.55, y: -3.07, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2383998 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: 4ad4f7167d4983147ad870f93ebc9416, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3383998 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Mesh: {fileID: 0} ---- !u!60 &6083998 -PolygonCollider2D: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_Offset: {x: 0, y: 0} - m_Points: - m_Paths: - - - {x: -0.25825587, y: 3.1820273} - - {x: 0.31586242, y: 3.1818907} - - {x: 0.55882263, y: 2.040349} - - {x: 0.434707, y: 0.0013669459} - - {x: -0.45539615, y: 0.0013672132} - - {x: -0.61691463, y: 2.0021477} ---- !u!114 &11483994 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 57484171e9b9c7243aa3117bc663e7b9, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 0 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: animation - loop: 1 - timeScale: 1 ---- !u!114 &11483996 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e74a49a26242a214d9084fde00bfe3ab, type: 3} - m_Name: - m_EditorClassIdentifier: - startingBoneName: hip - stopBoneNames: [] - applyOnStart: 0 - disableIK: 1 - disableOtherConstraints: 0 - pinStartBone: 0 - gravityScale: 3 - thickness: 0.125 - rotationLimit: 20 - rootMass: 40 - massFalloffFactor: 0.504 - colliderLayer: 0 - mix: 1 ---- !u!114 &11483998 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 183998} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 849a7739a7df0754882fcb34c09df4c1, type: 3} - m_Name: - m_EditorClassIdentifier: - groundMask: - serializedVersion: 2 - m_Bits: 257 - restoreDuration: 0.5 - launchVelocity: {x: 40, y: 85} ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 183998} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta deleted file mode 100644 index cba1ddd6d..000000000 --- a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 5c60df38c5334a249b38ac8cddc6433b -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta index 55778136c..8e0ece6d8 100644 --- a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: b29bbacbc2368c94a9c942d176ac6f59 -timeCreated: 1467205225 +timeCreated: 1479419654 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -19,7 +19,7 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 - isReadable: 0 + isReadable: 1 grayScaleToAlpha: 0 generateCubemap: 0 cubemapConvolution: 0 @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat index de4d9e87e..a0317e95a 100644 --- a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: b29bbacbc2368c94a9c942d176ac6f59, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: b29bbacbc2368c94a9c942d176ac6f59, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset index ec588e4af..96c0e5431 100644 --- a/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset +++ b/spine-unity/Assets/Examples/Spine/Raggedy Spineboy/Raggedy Spineboy_SkeletonData.asset @@ -13,8 +13,8 @@ MonoBehaviour: m_EditorClassIdentifier: atlasAssets: - {fileID: 11400000, guid: a9d85e8796d75384199c06f6fdbb0d73, type: 2} - skeletonJSON: {fileID: 4900000, guid: e6f1c85da28190c49a9aaa887894ab0d, type: 3} scale: 0.01 + skeletonJSON: {fileID: 4900000, guid: e6f1c85da28190c49a9aaa887894ab0d, type: 3} fromAnimation: [] toAnimation: [] duration: [] diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor.png.meta b/spine-unity/Assets/Examples/Spine/Raptor/raptor.png.meta index cbac5fa23..f067ff9ed 100644 --- a/spine-unity/Assets/Examples/Spine/Raptor/raptor.png.meta +++ b/spine-unity/Assets/Examples/Spine/Raptor/raptor.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 4261719a8f729a644b2dab6113d1b0ea -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Raptor/raptor_Material.mat b/spine-unity/Assets/Examples/Spine/Raptor/raptor_Material.mat index 9a1cfd46a..964e48a41 100644 --- a/spine-unity/Assets/Examples/Spine/Raptor/raptor_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Raptor/raptor_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 4261719a8f729a644b2dab6113d1b0ea, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 4261719a8f729a644b2dab6113d1b0ea, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.json b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.json index 6c4715b48..abc0d41ac 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.json +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.json @@ -1,6 +1,6 @@ { "skeleton": { - "hash": "ndYeXIOZqYovffwEsZjYOgxtFY4", + "hash": "sAurbGCBbk1JIYDQi3XnwA9wCnA", "spine": "3.5.03-beta", "width": 470.7, "height": 731.57, @@ -1162,7 +1162,11 @@ }, "front_foot": { "rotate": [ - { "time": 0, "angle": 5.13, "curve": "stepped" }, + { + "time": 0, + "angle": 8.87, + "curve": [ 0.315, 0.02, 0.648, 0.39 ] + }, { "time": 0.8999, "angle": 5.13, @@ -3148,6 +3152,28 @@ } } }, + "lastframehidehead": { + "slots": { + "eye": { + "attachment": [ + { "time": 0, "name": "eye_indifferent" }, + { "time": 2, "name": null } + ] + }, + "goggles": { + "attachment": [ + { "time": 0, "name": "goggles" }, + { "time": 2, "name": null } + ] + }, + "head": { + "attachment": [ + { "time": 0, "name": "head" }, + { "time": 2, "name": null } + ] + } + } + }, "pole": { "slots": { "eye": { diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.png.meta b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.png.meta index f022f2d10..81cd90625 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.png.meta +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy.png.meta @@ -1,9 +1,36 @@ fileFormatVersion: 2 guid: 49bb65eefe08e424bbf7a38bc98ec638 -timeCreated: 1467205225 +timeCreated: 1479531454 licenseType: Free TextureImporter: - fileIDToRecycleName: {} + fileIDToRecycleName: + 21300000: eye_indifferent + 21300002: eye_surprised + 21300004: front_bracer + 21300006: front_fist_closed + 21300008: front_fist_open + 21300010: front_foot + 21300012: front_foot_bend1 + 21300014: front_foot_bend2 + 21300016: front_shin + 21300018: front_thigh + 21300020: front_upper_arm + 21300022: goggles + 21300024: gun + 21300026: head + 21300028: mouth_grind + 21300030: mouth_oooo + 21300032: mouth_smile + 21300034: muzzle + 21300036: neck + 21300038: rear_bracer + 21300040: rear_foot + 21300042: rear_foot_bend1 + 21300044: rear_foot_bend2 + 21300046: rear_shin + 21300048: rear_thigh + 21300050: rear_upper_arm + 21300052: torso serializedVersion: 2 mipmaps: mipMapMode: 0 @@ -19,7 +46,7 @@ TextureImporter: externalNormalMap: 0 heightScale: 0.25 normalMapFilter: 0 - isReadable: 0 + isReadable: 1 grayScaleToAlpha: 0 generateCubemap: 0 cubemapConvolution: 0 @@ -46,10 +73,363 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: - sprites: [] + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: eye_indifferent + rect: + serializedVersion: 2 + x: 549 + y: 241 + width: 93 + height: 89 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: eye_surprised + rect: + serializedVersion: 2 + x: 834 + y: 78 + width: 93 + height: 89 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_bracer + rect: + serializedVersion: 2 + x: 375 + y: 534 + width: 80 + height: 58 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_fist_closed + rect: + serializedVersion: 2 + x: 466 + y: 356 + width: 82 + height: 75 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_fist_open + rect: + serializedVersion: 2 + x: 447 + y: 433 + width: 86 + height: 87 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_foot + rect: + serializedVersion: 2 + x: 549 + y: 170 + width: 126 + height: 69 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_foot_bend1 + rect: + serializedVersion: 2 + x: 375 + y: 404 + width: 70 + height: 128 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_foot_bend2 + rect: + serializedVersion: 2 + x: 275 + y: 586 + width: 93 + height: 108 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_shin + rect: + serializedVersion: 2 + x: 466 + y: 170 + width: 81 + height: 184 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_thigh + rect: + serializedVersion: 2 + x: 214 + y: 704 + width: 48 + height: 112 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: front_upper_arm + rect: + serializedVersion: 2 + x: 214 + y: 818 + width: 54 + height: 97 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: goggles + rect: + serializedVersion: 2 + x: 466 + y: 2 + width: 261 + height: 166 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: gun + rect: + serializedVersion: 2 + x: 2 + y: 704 + width: 210 + height: 203 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: head + rect: + serializedVersion: 2 + x: 2 + y: 404 + width: 271 + height: 298 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: mouth_grind + rect: + serializedVersion: 2 + x: 929 + y: 69 + width: 93 + height: 59 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: mouth_oooo + rect: + serializedVersion: 2 + x: 929 + y: 130 + width: 93 + height: 59 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: mouth_smile + rect: + serializedVersion: 2 + x: 550 + y: 332 + width: 59 + height: 93 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: muzzle + rect: + serializedVersion: 2 + x: 2 + y: 2 + width: 462 + height: 400 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: neck + rect: + serializedVersion: 2 + x: 64 + y: 977 + width: 35 + height: 41 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_bracer + rect: + serializedVersion: 2 + x: 677 + y: 170 + width: 55 + height: 72 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_foot + rect: + serializedVersion: 2 + x: 2 + y: 909 + width: 60 + height: 113 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_foot_bend1 + rect: + serializedVersion: 2 + x: 64 + y: 909 + width: 117 + height: 66 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_foot_bend2 + rect: + serializedVersion: 2 + x: 729 + y: 78 + width: 103 + height: 83 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_shin + rect: + serializedVersion: 2 + x: 729 + y: 2 + width: 178 + height: 74 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_thigh + rect: + serializedVersion: 2 + x: 909 + y: 2 + width: 103 + height: 65 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: rear_upper_arm + rect: + serializedVersion: 2 + x: 370 + y: 594 + width: 47 + height: 87 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 + - serializedVersion: 2 + name: torso + rect: + serializedVersion: 2 + x: 275 + y: 404 + width: 98 + height: 180 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + tessellationDetail: -1 outline: [] spritePackingTag: userData: diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Atlas.asset b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Atlas.asset index ae8491bec..6938779a2 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Atlas.asset +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Atlas.asset @@ -13,4 +13,4 @@ MonoBehaviour: m_EditorClassIdentifier: atlasFile: {fileID: 4900000, guid: 5c0a5c36970a46e4d8378760ab4a4cfc, type: 3} materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} + - {fileID: 2100000, guid: 1455e88fdb81ccc45bdeaedd657bad4d, type: 2} diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat index 7333f766e..18becc99a 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 49bb65eefe08e424bbf7a38bc98ec638, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat.meta b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat.meta index 65aeab76e..c8ab1f43c 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat.meta +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_Material.mat.meta @@ -1,4 +1,8 @@ fileFormatVersion: 2 -guid: 4083cd422558e2540a62bbafb94f57b5 +guid: 1455e88fdb81ccc45bdeaedd657bad4d +timeCreated: 1479531454 +licenseType: Free NativeFormatImporter: userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_SkeletonData.asset index 4ba0e80ab..b2fe8a4a6 100644 --- a/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_SkeletonData.asset +++ b/spine-unity/Assets/Examples/Spine/Spineboy/spineboy_SkeletonData.asset @@ -13,8 +13,8 @@ MonoBehaviour: m_EditorClassIdentifier: atlasAssets: - {fileID: 11400000, guid: b4b8457d6cb8fec49a40be5b71d79e51, type: 2} - skeletonJSON: {fileID: 4900000, guid: d43e38db0e34033438474d0c01fd4404, type: 3} scale: 0.01 + skeletonJSON: {fileID: 4900000, guid: d43e38db0e34033438474d0c01fd4404, type: 3} fromAnimation: [] toAnimation: [] duration: [] diff --git a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi.png.meta b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi.png.meta index 442d8e367..1a7aa8424 100644 --- a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi.png.meta +++ b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi.png.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 33e128e17951b4a42b17608ff79ba5c5 -timeCreated: 1467205225 +timeCreated: 1479419653 licenseType: Free TextureImporter: fileIDToRecycleName: {} @@ -38,7 +38,7 @@ TextureImporter: rGBM: 0 compressionQuality: 50 allowsAlphaSplitting: 0 - spriteMode: 1 + spriteMode: 0 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -46,9 +46,11 @@ TextureImporter: spriteBorder: {x: 0, y: 0, z: 0, w: 0} spritePixelsToUnits: 100 alphaIsTransparency: 0 + spriteTessellationDetail: -1 textureType: 5 buildTargetSettings: [] spriteSheet: + serializedVersion: 2 sprites: [] outline: [] spritePackingTag: diff --git a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_Material.mat b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_Material.mat index a5e03cbe5..a31e43936 100644 --- a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_Material.mat +++ b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_Material.mat @@ -15,16 +15,14 @@ Material: m_SavedProperties: serializedVersion: 2 m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 2800000, guid: 33e128e17951b4a42b17608ff79ba5c5, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 33e128e17951b4a42b17608ff79ba5c5, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} m_Floats: - data: - first: - name: _Cutoff - second: 0.1 - m_Colors: {} + - first: + name: _Cutoff + second: 0.1 + m_Colors: [] diff --git a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_SkeletonData.asset index 085fa6f3a..c3613c962 100644 --- a/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_SkeletonData.asset +++ b/spine-unity/Assets/Examples/Spine/Spineunitygirl/Doi_SkeletonData.asset @@ -13,8 +13,8 @@ MonoBehaviour: m_EditorClassIdentifier: atlasAssets: - {fileID: 11400000, guid: 80099c7f091da3d41b98d11b9c5622d8, type: 2} - skeletonJSON: {fileID: 4900000, guid: ee66d4e095e47d44792cf450371372e3, type: 3} scale: 0.013 + skeletonJSON: {fileID: 4900000, guid: ee66d4e095e47d44792cf450371372e3, type: 3} fromAnimation: [] toAnimation: [] duration: [] diff --git a/spine-unity/Assets/Examples/Spine/Strechyman.meta b/spine-unity/Assets/Examples/Spine/Strechyman.meta new file mode 100644 index 000000000..f31049ad5 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f49a222b0c830ed4684e8c08ed03a215 +folderAsset: yes +timeCreated: 1479531756 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt new file mode 100644 index 000000000..2522c1ea3 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt @@ -0,0 +1,41 @@ + +stretchyman-diffuse-pma.png +size: 390,454 +format: RGBA8888 +filter: Linear,Linear +repeat: none +back arm + rotate: false + xy: 244, 29 + size: 72, 202 + orig: 72, 202 + offset: 0, 0 + index: -1 +back leg + rotate: false + xy: 143, 135 + size: 100, 318 + orig: 100, 318 + offset: 0, 0 + index: -1 +body + rotate: false + xy: 1, 1 + size: 141, 452 + orig: 141, 452 + offset: 0, 0 + index: -1 +front arm + rotate: false + xy: 244, 232 + size: 145, 221 + orig: 145, 221 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 143, 32 + size: 87, 102 + orig: 87, 102 + offset: 0, 0 + index: -1 diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt.meta b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt.meta new file mode 100644 index 000000000..d78cb1b25 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.atlas.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 492ecfd45cd2de542bc20043b10ee4aa +timeCreated: 1479532145 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.png b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-diffuse-pma.png new file mode 100644 index 0000000000000000000000000000000000000000..ef72a5d379bdd83282bf2a362db0651604f0f376 GIT binary patch literal 101946 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 QXYELm;6fUfQk&-$oRXg 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 JTCHLm@gEDHjJ^N> literal 0 HcmV?d00001 diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-emission.png.meta b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-emission.png.meta new file mode 100644 index 000000000..3d2a69ef0 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-emission.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 4cad8f072f658544a80ba2b271aec125 +timeCreated: 1479532743 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee89ef07fb174b3a6a50be09351743c7df86b70 GIT binary patch literal 130400 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 literal 0 HcmV?d00001 diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png.meta b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png.meta new file mode 100644 index 000000000..b26eebc03 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman-normals.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: d00f264cbe0cc4a49a54a221ee812855 +timeCreated: 1479531896 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 1 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json new file mode 100644 index 000000000..1f852d0f2 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json @@ -0,0 +1,773 @@ +{ +"skeleton": { + "hash": "+XkMq22e5sbHEXz5aRmd8uvTvH0", + "spine": "3.5.03-beta", + "width": 264.48, + "height": 570.1, + "fps": 30, + "images": "./images/" +}, +"bones": [ + { "name": "root" }, + { "name": "hip", "parent": "root", "x": 28.61, "y": 289.9 }, + { "name": "spine 1", "parent": "hip", "length": 34.66, "rotation": 86.68, "x": -4.48, "y": 12.66 }, + { "name": "spine 2", "parent": "spine 1", "length": 41.41, "rotation": 16.47, "x": 34.66 }, + { "name": "spine 3", "parent": "spine 2", "length": 34.44, "rotation": 16.17, "x": 41.41 }, + { "name": "spine 4", "parent": "spine 3", "length": 37.53, "rotation": -13.63, "x": 34.44 }, + { "name": "back arm 1", "parent": "spine 4", "length": 32.43, "rotation": -154.35, "x": 15.99, "y": -4.58, "transform": "noScale" }, + { "name": "back arm 2", "parent": "back arm 1", "length": 34.16, "rotation": 3.1, "x": 31.88, "y": 0.02 }, + { "name": "back arm 3", "parent": "back arm 2", "length": 31.26, "rotation": 9.59, "x": 34.16 }, + { "name": "back arm 4", "parent": "back arm 3", "length": 33.3, "rotation": 14.6, "x": 32.03, "y": 0.81 }, + { "name": "back arm 5", "parent": "back arm 4", "length": 37.41, "rotation": 11.3, "x": 33.81, "y": 0.02 }, + { + "name": "back foot 1", + "parent": "hip", + "length": 33.23, + "rotation": -6.55, + "x": -34, + "y": -279.68, + "transform": "onlyTranslation" + }, + { "name": "back foot 2", "parent": "back foot 1", "length": 32.28, "rotation": 4.34, "x": 33.23, "transform": "noScale" }, + { "name": "back foot 3", "parent": "back foot 2", "length": 15.87, "rotation": 10.06, "x": 32.28, "transform": "noScale" }, + { "name": "back leg 1", "parent": "hip", "length": 41, "rotation": -83.65, "x": 10.4, "y": 1.04, "color": "abe323ff" }, + { "name": "back leg 2", "parent": "back leg 1", "length": 41, "rotation": -4.07, "x": 34.56, "color": "abe323ff" }, + { "name": "back leg 3", "parent": "back leg 1", "length": 41, "rotation": -5.24, "x": 81.78, "y": -2.29, "color": "abe323ff" }, + { "name": "back leg 4", "parent": "back leg 1", "length": 41, "rotation": -16.6, "x": 121.2, "y": -11.27, "color": "abe323ff" }, + { "name": "back leg 5", "parent": "back leg 1", "length": 41, "rotation": -32.35, "x": 160.15, "y": -24.85, "color": "abe323ff" }, + { "name": "back leg 6", "parent": "back leg 1", "length": 41, "rotation": -30.76, "x": 197.04, "y": -39.98, "color": "abe323ff" }, + { "name": "back leg 7", "parent": "back leg 1", "length": 41, "rotation": -30.63, "x": 233.18, "y": -57.32, "color": "abe323ff" }, + { "name": "back leg 8", "parent": "back leg 1", "length": 41, "rotation": -33.78, "x": 267.28, "y": -77.39, "color": "abe323ff" }, + { "name": "back leg IK target", "parent": "root", "x": 46.15, "y": 8.68, "color": "ff3f00ff" }, + { "name": "back leg IK 1", "parent": "hip", "length": 140.17, "rotation": -88.1, "x": 9.62, "y": -0.38 }, + { "name": "back leg IK 2", "parent": "back leg IK 1", "length": 148.96, "rotation": -21.32, "x": 140.17 }, + { "name": "belly", "parent": "spine 1", "x": 35.94, "y": -37.69 }, + { "name": "butt", "parent": "hip", "x": -32.67, "y": -1.87 }, + { "name": "front arm 1", "parent": "spine 4", "length": 38.33, "rotation": 118.58, "x": 27.12, "y": 4.89, "transform": "noScale" }, + { "name": "front arm 2", "parent": "front arm 1", "length": 35.66, "rotation": -0.43, "x": 38.33 }, + { "name": "front arm 3", "parent": "front arm 2", "length": 32.65, "rotation": 14.45, "x": 35.66, "y": -0.01 }, + { "name": "front arm 4", "parent": "front arm 3", "length": 29.18, "rotation": 13.89, "x": 32.65 }, + { "name": "front arm 5", "parent": "front arm 4", "length": 46.32, "rotation": 16.09, "x": 29.18, "transform": "noScale" }, + { + "name": "front foot 1", + "parent": "hip", + "length": 26.29, + "rotation": -10.97, + "x": -77.04, + "y": -285.03, + "transform": "onlyTranslation" + }, + { "name": "front foot 2", "parent": "front foot 1", "length": 29.11, "rotation": 9.6, "x": 26.29 }, + { "name": "front foot 3", "parent": "front foot 2", "length": 23.48, "rotation": 8.91, "x": 29.11 }, + { "name": "front leg 1", "parent": "hip", "length": 37.2, "rotation": -88.96, "x": -23.56, "y": -1.99, "color": "abe323ff" }, + { "name": "front leg 2", "parent": "front leg 1", "length": 37.2, "rotation": 3.45, "x": 33.74, "color": "abe323ff" }, + { "name": "front leg 3", "parent": "front leg 1", "length": 37.2, "rotation": -6.11, "x": 74.4, "y": -1.07, "color": "abe323ff" }, + { + "name": "front leg 4", + "parent": "front leg 1", + "length": 37.2, + "rotation": -10.01, + "x": 111.39, + "y": -5.27, + "color": "abe323ff" + }, + { + "name": "front leg 5", + "parent": "front leg 1", + "length": 37.2, + "rotation": -28.39, + "x": 147.76, + "y": -14.98, + "color": "abe323ff" + }, + { + "name": "front leg 6", + "parent": "front leg 1", + "length": 37.2, + "rotation": -24.33, + "x": 182.41, + "y": -27.57, + "color": "abe323ff" + }, + { + "name": "front leg 7", + "parent": "front leg 1", + "length": 37.2, + "rotation": -22.99, + "x": 216.43, + "y": -42.55, + "color": "abe323ff" + }, + { "name": "front leg 8", "parent": "front leg 1", "length": 37.2, "rotation": -31.8, "x": 248.6, "y": -61.02, "color": "abe323ff" }, + { "name": "front leg IK target", "parent": "root", "x": -37.73, "y": 5.03, "color": "ff3f00ff" }, + { "name": "front leg IK 1", "parent": "hip", "length": 140.66, "rotation": -89.23, "x": -23.98, "y": 1.88 }, + { "name": "front leg IK 2", "parent": "front leg IK 1", "length": 155.95, "rotation": -21.49, "x": 140.66, "y": 0.02 }, + { "name": "neck 1", "parent": "spine 4", "length": 13.45, "rotation": -30.66, "x": 38.96, "y": -0.83 }, + { "name": "neck 2", "parent": "neck 1", "length": 14.13, "rotation": -11.41, "x": 13.45 }, + { "name": "head", "parent": "neck 2", "length": 89.05, "rotation": 6.98, "x": 15.81, "y": 0.22, "transform": "noScale" } +], +"slots": [ + { "name": "back arm", "bone": "root", "attachment": "back arm" }, + { "name": "back leg", "bone": "root", "attachment": "back leg" }, + { "name": "body", "bone": "root", "attachment": "body" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "front arm", "bone": "root", "attachment": "front arm" }, + { "name": "back leg path", "bone": "hip", "attachment": "back leg path" }, + { "name": "front leg path", "bone": "hip", "attachment": "front leg path" } +], +"ik": [ + { + "name": "back leg IK", + "order": 0, + "bones": [ "back leg IK 1", "back leg IK 2" ], + "target": "back leg IK target", + "bendPositive": false + }, + { + "name": "front leg IK", + "order": 1, + "bones": [ "front leg IK 1", "front leg IK 2" ], + "target": "front leg IK target", + "bendPositive": false + } +], +"transform": [ + { + "name": "back foot position", + "order": 4, + "bones": [ "back foot 1" ], + "target": "back leg 8", + "rotation": 108.8, + "x": 41.2, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -3.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + }, + { + "name": "front foot position", + "order": 5, + "bones": [ "front foot 1" ], + "target": "front leg 8", + "rotation": 101.55, + "x": 38.92, + "y": -0.02, + "scaleX": 4.0E-4, + "scaleY": -2.0E-4, + "shearY": 0.1, + "rotateMix": 0, + "scaleMix": 0 + } +], +"path": [ + { + "name": "back leg path", + "order": 2, + "bones": [ "back leg 1", "back leg 2", "back leg 3", "back leg 4", "back leg 5", "back leg 6", "back leg 7", "back leg 8" ], + "target": "back leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + }, + { + "name": "front leg path", + "order": 3, + "bones": [ "front leg 1", "front leg 2", "front leg 3", "front leg 4", "front leg 5", "front leg 6", "front leg 7", "front leg 8" ], + "target": "front leg path", + "spacingMode": "percent", + "rotateMode": "chainScale", + "spacing": 0.125 + } +], +"skins": { + "default": { + "back arm": { + "back arm": { + "type": "mesh", + "uvs": [ 0.74522, 0.00989, 0.64111, 0.05762, 0.56303, 0.1559, 0.42508, 0.25885, 0.28974, 0.359, 0.22988, 0.49565, 0.21166, 0.60796, 0.21166, 0.69782, 0.16481, 0.78673, 0.14138, 0.84757, 0.02426, 0.88501, 0.05289, 0.9187, 0.37823, 0.98796, 0.60467, 0.98235, 0.6307, 0.9056, 0.73481, 0.87752, 0.6359, 0.81762, 0.55262, 0.74181, 0.38084, 0.69875, 0.37823, 0.60796, 0.39905, 0.50875, 0.51358, 0.38521, 0.66193, 0.2888, 0.85453, 0.18397, 0.97686, 0.0754, 0.9144, 0.00989 ], + "triangles": [ 11, 9, 12, 9, 8, 12, 12, 8, 18, 13, 12, 14, 12, 18, 17, 18, 8, 7, 14, 12, 17, 11, 10, 9, 14, 16, 15, 14, 17, 16, 7, 19, 18, 7, 6, 19, 6, 5, 19, 19, 5, 20, 5, 4, 20, 20, 4, 21, 4, 3, 21, 21, 3, 22, 3, 2, 22, 22, 2, 23, 2, 1, 23, 23, 1, 24, 1, 0, 24, 0, 25, 24 ], + "vertices": [ 1, 6, -7.67999, -11.47999, 1, 1, 6, 4.07999, -13.61999, 1, 1, 6, 23.47999, -9.35, 1, 1, 7, 13.43999, -9.22999, 1, 2, 7, 35.2, -9.61999, 0.50648, 8, -0.56999, -9.64999, 0.49349, 1, 8, 26.03, -6.38, 1, 1, 9, 14.14999, -6.11, 1, 2, 9, 31.53, -5.55999, 0.66491, 10, -3.32999, -5.03, 0.33507, 1, 10, 13.07999, -11.25, 1, 1, 10, 24.40999, -14.88, 1, 1, 10, 30.14999, -24.51, 1, 1, 10, 36.93, -23.53, 1, 1, 10, 54.06999, -2.32999, 1, 1, 10, 55.72999, 14.14, 1, 1, 10, 41.38999, 18.46999, 1, 1, 10, 37.27999, 26.87, 1, 1, 10, 24.64999, 21.67, 1, 1, 10, 9.17, 18.1, 1, 2, 9, 31.32999, 6.76999, 0.47879, 10, -1.11, 7.11, 0.52118, 1, 9, 13.77, 6.03999, 1, 2, 8, 24.97999, 6.17, 0.89217, 9, -5.46999, 6.96, 0.10781, 2, 7, 32.59999, 7.28, 0.59842, 8, -0.31999, 7.44, 0.40156, 1, 7, 11.06999, 8.84, 1, 1, 6, 17.88999, 11.86999, 1, 1, 6, -4.82, 9.44999, 1, 1, 6, -13.68, -0.68999, 1 ], + "hull": 26, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 44, 46, 46, 48, 48, 50, 0, 50, 2, 48, 4, 46, 6, 44, 8, 42, 10, 40, 12, 38, 14, 36 ], + "width": 72, + "height": 202 + } + }, + "back leg": { + "back leg": { + "type": "mesh", + "uvs": [ 0.502, 0.01179, 0.36075, 0.06379, 0.40569, 0.15045, 0.44743, 0.23916, 0.47953, 0.3299, 0.51163, 0.42268, 0.52126, 0.50629, 0.48274, 0.58888, 0.41211, 0.66025, 0.3126, 0.74182, 0.21629, 0.81625, 0.1232, 0.89272, 0.00763, 0.97428, 0.29655, 0.98958, 0.47407, 0.99221, 0.64004, 0.99467, 0.80988, 0.9896, 0.91291, 0.98652, 1, 0.95797, 0.83329, 0.94681, 0.71066, 0.9386, 0.57122, 0.9203, 0.41532, 0.89985, 0.3447, 0.89272, 0.36885, 0.87177, 0.42816, 0.82032, 0.502, 0.74793, 0.58225, 0.66942, 0.6593, 0.59092, 0.72992, 0.50527, 0.76524, 0.42166, 0.78129, 0.3248, 0.78771, 0.23406, 0.78771, 0.13924, 0.7235, 0.03728, 0.60152, 0.00567, 0.82116, 0.96897, 0.67872, 0.96396, 0.52111, 0.95739, 0.35935, 0.94213, 0.19388, 0.92921, 0.25375, 0.88158, 0.32792, 0.81839 ], + "triangles": [ 36, 20, 19, 17, 19, 18, 16, 37, 36, 17, 16, 36, 17, 36, 19, 38, 22, 21, 37, 21, 20, 38, 21, 37, 37, 20, 36, 15, 38, 37, 14, 38, 15, 15, 37, 16, 39, 23, 22, 40, 23, 39, 39, 22, 38, 13, 40, 39, 12, 40, 13, 14, 39, 38, 13, 39, 14, 9, 8, 26, 25, 42, 9, 10, 9, 42, 26, 25, 9, 24, 42, 25, 41, 10, 42, 41, 42, 24, 11, 10, 41, 23, 41, 24, 40, 11, 41, 40, 41, 23, 12, 11, 40, 26, 8, 27, 6, 5, 29, 28, 6, 29, 7, 6, 28, 27, 7, 28, 8, 7, 27, 29, 5, 30, 31, 5, 4, 30, 5, 31, 32, 4, 3, 31, 4, 32, 34, 1, 0, 34, 0, 35, 2, 1, 34, 2, 34, 33, 3, 2, 33, 32, 3, 33 ], + "vertices": [ 1, 14, -19.79, -5.65999, 1, 2, 14, -5.61, -22.28, 0.83363, 15, -41.06, -23.29999, 0.16636, 2, 14, 22.30999, -21.97999, 0.65187, 15, -13.17, -21.87999, 0.34812, 3, 14, 50.83, -22.1, 0.3172, 15, 15.32999, -20.86, 0.43086, 16, -19.67, -21.07999, 0.25192, 4, 14, 79.83999, -23.28, 0.1079, 15, 44.36999, -20.87999, 0.35416, 16, 9.3, -19.19, 0.31918, 17, -25.20999, -20.05999, 0.21871, 4, 15, 74.05, -20.97999, 0.16484, 16, 38.93, -17.34, 0.32776, 17, 4.09, -15.38, 0.29829, 18, -30.1, -17.14999, 0.20906, 3, 16, 65.52999, -17.61, 0.17521, 17, 30.6, -13.1, 0.39171, 18, -4.11, -11.42, 0.43303, 3, 17, 57.02999, -15.71, 0.19717, 18, 22.42, -10.52999, 0.52969, 19, -12.96, -9.8, 0.27311, 3, 18, 46.04, -13.46, 0.4099, 19, 10.82999, -10.17, 0.34746, 20, -24.93, -10.51, 0.2426, 3, 18, 73.37999, -18.69, 0.19431, 19, 38.58, -12.40999, 0.37176, 20, 2.89, -10.97999, 0.43389, 3, 19, 64.05999, -14.97999, 0.16663, 20, 28.47999, -11.93999, 0.56755, 21, -7.51999, -11.47999, 0.26578, 3, 20, 54.56999, -12.35999, 0.52113, 21, 18.54999, -10.93, 0.36166, 11, -3.07999, 24.95, 0.11716, 4, 20, 82.97, -14.35, 0.35144, 21, 47, -11.85999, 0.29521, 11, -13.06, -1.66999, 0.25117, 12, -46.29, 1.83, 0.10215, 1, 11, 16.36, -4.67, 1, 2, 11, 34.31, -4.36, 0.53486, 12, 0.74, -4.42999, 0.46513, 3, 11, 51.09, -4.07999, 0.14609, 12, 17.48999, -5.42, 0.54313, 13, -15.5, -2.75, 0.31075, 2, 12, 34.66999, -4.01, 0.40713, 13, 1.63999, -4.36, 0.59285, 2, 12, 45.08, -3.15, 0.25725, 13, 12.05, -5.34, 0.74273, 2, 12, 53.97999, 5.80999, 0.2531, 13, 22.37999, 1.92999, 0.74687, 2, 12, 37.18999, 9.56, 0.4029, 13, 6.5, 8.56, 0.59709, 3, 11, 57.06999, 14.15999, 0.1335, 12, 24.82999, 12.31999, 0.54644, 13, -5.17999, 13.43999, 0.32003, 4, 20, 47.09, 33.09999, 0.13131, 11, 42.63999, 19.06999, 0.26348, 12, 10.81, 18.30999, 0.49744, 13, -17.93, 21.78, 0.10773, 4, 20, 46.45, 16.09, 0.21157, 21, 9.35999, 17.2, 0.10678, 11, 26.5, 24.55999, 0.44949, 12, -4.84999, 25, 0.23209, 3, 20, 46.79999, 8.61999, 0.4011, 21, 9.98999, 9.75, 0.24542, 11, 19.23999, 26.37, 0.35346, 3, 20, 39.7, 8.6, 0.58249, 21, 2.9, 9.47, 0.3079, 11, 21.25, 33.16999, 0.10958, 3, 19, 59.15999, 5.88, 0.21953, 20, 22.27, 8.57999, 0.57946, 21, -14.51, 8.78999, 0.20099, 3, 18, 71.83, 0.46999, 0.21582, 19, 34.95999, 6.46999, 0.32262, 20, -1.91999, 7.61999, 0.46154, 3, 18, 45.79999, 3.95, 0.40553, 19, 8.69999, 7.11999, 0.386, 20, -28.15999, 6.61, 0.20844, 3, 17, 56.77999, 2.13, 0.25409, 18, 19.82999, 7.11999, 0.53004, 19, -17.45, 7.46, 0.21583, 3, 16, 66.18, 3.45, 0.22413, 17, 29.21999, 7.92, 0.34134, 18, -8.25, 9.23999, 0.4345, 4, 15, 76.59999, 4.5, 0.19362, 16, 39.77999, 8.26, 0.28885, 17, 2.48, 10.18, 0.33579, 18, -35.04999, 7.96999, 0.1817, 4, 14, 82.87999, 7.07999, 0.11658, 15, 46.16999, 9.56999, 0.35727, 16, 9.07999, 11.31999, 0.35745, 17, -28.35, 10.28999, 0.16868, 3, 14, 54.45, 12.1, 0.35356, 15, 17.56999, 13.46, 0.44494, 16, -19.70999, 13.31, 0.20148, 2, 14, 24.64999, 16.69, 0.65438, 15, -12.39, 16.85, 0.3456, 2, 14, -8.38, 15.21, 0.85329, 15, -45.34, 14.03999, 0.14668, 1, 14, -20.18, 4.55999, 1, 2, 12, 35.88, 2.52999, 0.40509, 13, 3.98, 1.86, 0.5949, 3, 11, 54.36999, 5.90999, 0.1392, 12, 21.51, 4.28999, 0.54493, 13, -9.85, 6.11, 0.31584, 2, 11, 37.77999, 7.63, 0.44938, 12, 5.09999, 7.26, 0.55061, 3, 20, 65.37999, 20.69, 0.11856, 11, 20.59, 11.34, 0.75133, 12, -11.76, 12.27, 0.13007, 3, 20, 65.41, 1.80999, 0.39678, 21, 24.29999, 0.23, 0.28257, 11, 2.05999, 14.97, 0.32062, 3, 20, 48, 0.07, 0.55395, 21, 6.92999, -0.31999, 0.33292, 11, 3.36999, 30.46999, 0.1131, 3, 19, 65.94999, -2.96, 0.19447, 20, 24.95, -1.57, 0.57381, 21, -15.98999, -0.41999, 0.2317 ], + "hull": 36, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 20, 22, 22, 24, 24, 26, 34, 36, 44, 46, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 62, 64, 64, 66, 66, 68, 68, 70, 0, 70, 4, 66, 2, 68, 40, 42, 42, 44, 26, 28, 28, 30, 46, 48, 48, 50, 36, 38, 38, 40, 30, 32, 32, 34, 18, 52, 16, 54, 14, 56, 12, 58, 10, 60, 8, 62, 6, 64, 32, 72, 72, 38, 30, 74, 74, 40, 72, 74, 28, 76, 76, 42, 74, 76, 26, 78, 78, 44, 76, 78, 24, 80, 80, 46, 78, 80, 22, 82, 82, 48, 80, 82, 20, 84, 84, 50, 82, 84 ], + "width": 100, + "height": 318 + } + }, + "back leg path": { + "back leg path": { + "type": "path", + "lengths": [ 137.82, 291.73, 641.11 ], + "vertexCount": 9, + "vertices": [ 1, 23, -43.13999, 0.61, 1, 1, 23, -1.30999, 0.43, 1, 1, 23, 63.06999, -0.18, 1, 2, 23, 72.06999, 13.64999, 0.5, 24, -69.11, -16.06999, 0.5, 2, 23, 135.74, 0.27, 0.5, 24, -3.96, -2.01999, 0.5, 2, 23, 202.91998, -15.13, 0.5, 24, 65, 14.09, 0.5, 1, 24, 71.08999, -2.02999, 1, 1, 24, 149.06, -1.74, 1, 1, 23, 368.47, -1.80999, 1 ] + } + }, + "body": { + "body": { + "type": "mesh", + "uvs": [ 0.35966, 0.01351, 0.26863, 0.04108, 0.26204, 0.0954, 0.34119, 0.14478, 0.39791, 0.19457, 0.40451, 0.24271, 0.38076, 0.27893, 0.35969, 0.3004, 0.34119, 0.31925, 0.34988, 0.34325, 0.35834, 0.36658, 0.36551, 0.40163, 0.37233, 0.43498, 0.38396, 0.4944, 0.3956, 0.5597, 0.39883, 0.59858, 0.40141, 0.62955, 0.40215, 0.65661, 0.34609, 0.71563, 0.27077, 0.78175, 0.22009, 0.82127, 0.17617, 0.85552, 0.13115, 0.88832, 0.08238, 0.92385, 0.00341, 0.97959, 0.18836, 0.99126, 0.32172, 0.99284, 0.46265, 0.9945, 0.61643, 0.98608, 0.71617, 0.97182, 0.6185, 0.9582, 0.48967, 0.95042, 0.39458, 0.94083, 0.27771, 0.92903, 0.23407, 0.9232, 0.26691, 0.89774, 0.3068, 0.8668, 0.34202, 0.83414, 0.38369, 0.7955, 0.45642, 0.72873, 0.52707, 0.66845, 0.56032, 0.63344, 0.57541, 0.60108, 0.59357, 0.56214, 0.61643, 0.49731, 0.63513, 0.43962, 0.64344, 0.40462, 0.7708, 0.39011, 0.84584, 0.37024, 0.90982, 0.35331, 0.9674, 0.31914, 0.97301, 0.28585, 0.96448, 0.23351, 0.8952, 0.16809, 0.79345, 0.12642, 0.75178, 0.10878, 0.71799, 0.09448, 0.66816, 0.07236, 0.61342, 0.04807, 0.47867, 0.0141, 0.49845, 0.38826, 0.66315, 0.34728, 0.67333, 0.30664, 0.8188, 0.29655, 0.8097, 0.24505, 0.72828, 0.17901, 0.68147, 0.13901, 0.59191, 0.0971, 0.3904, 0.09012, 0.53695, 0.14981, 0.57562, 0.19616, 0.64483, 0.25076, 0.79855, 0.33476, 0.6175, 0.97166, 0.4773, 0.97061, 0.23795, 0.95673, 0.15271, 0.92355, 0.14158, 0.94886, 0.23861, 0.86092, 0.51732, 0.30353, 0.50695, 0.34527, 0.50634, 0.43735, 0.50334, 0.49589, 0.51085, 0.32558, 0.50355, 0.41057, 0.19542, 0.8924, 0.36492, 0.96409 ], + "triangles": [ 2, 1, 68, 68, 1, 58, 58, 1, 59, 1, 0, 59, 69, 67, 66, 3, 68, 69, 69, 68, 67, 3, 2, 68, 66, 56, 55, 66, 67, 56, 67, 57, 56, 67, 58, 57, 67, 68, 58, 5, 70, 71, 71, 70, 65, 5, 4, 70, 70, 66, 65, 4, 69, 70, 70, 69, 66, 4, 3, 69, 65, 54, 53, 65, 66, 54, 66, 55, 54, 46, 61, 47, 46, 80, 61, 80, 83, 61, 61, 62, 72, 61, 83, 62, 80, 9, 83, 9, 8, 83, 83, 79, 62, 8, 7, 83, 83, 7, 79, 71, 6, 5, 7, 6, 79, 79, 6, 62, 6, 71, 62, 47, 72, 48, 47, 61, 72, 48, 72, 49, 49, 72, 50, 72, 63, 50, 72, 62, 63, 50, 63, 51, 62, 64, 63, 63, 52, 51, 63, 64, 52, 71, 65, 64, 64, 53, 52, 64, 65, 53, 62, 71, 64, 26, 86, 27, 27, 74, 28, 27, 86, 74, 28, 73, 29, 28, 74, 73, 73, 30, 29, 74, 31, 73, 73, 31, 30, 86, 32, 74, 74, 32, 31, 25, 75, 26, 26, 75, 86, 24, 77, 25, 25, 77, 75, 24, 23, 77, 75, 33, 86, 86, 33, 32, 75, 77, 33, 77, 34, 33, 77, 76, 34, 77, 23, 76, 23, 22, 76, 76, 85, 34, 76, 22, 85, 34, 85, 35, 85, 78, 35, 22, 21, 85, 35, 78, 36, 85, 21, 78, 37, 36, 20, 21, 20, 78, 36, 78, 20, 20, 19, 37, 37, 19, 38, 19, 18, 38, 38, 18, 39, 18, 17, 39, 39, 17, 40, 41, 40, 16, 40, 17, 16, 42, 41, 15, 41, 16, 15, 43, 42, 14, 42, 15, 14, 14, 82, 43, 43, 82, 44, 14, 13, 82, 82, 81, 44, 44, 81, 45, 82, 13, 81, 13, 12, 81, 46, 45, 84, 12, 84, 81, 45, 81, 84, 12, 11, 84, 11, 60, 84, 84, 60, 46, 60, 80, 46, 11, 10, 60, 60, 10, 80, 10, 9, 80 ], + "vertices": [ 1, 5, 30.85, 2.44, 1, 2, 4, 60.41999, 12.40999, 0.24857, 5, 22.31999, 18.17, 0.75141, 2, 4, 39.47, 25.23999, 0.4433, 5, -1.05999, 25.70999, 0.55668, 3, 3, 48.02, 29.45999, 0.3743, 4, 14.53999, 26.45, 0.47619, 5, -25.56999, 21.01, 0.14949, 3, 2, 50.36, 32.58, 0.11242, 3, 24.29, 26.79, 0.6461, 4, -8.98999, 30.48999, 0.24145, 3, 35, -45.20999, -8.8, 0.1061, 2, 28.68, 30.38999, 0.49531, 3, 2.88, 30.84, 0.39855, 3, 35, -28.90999, -12.43999, 0.258, 2, 12.14999, 32.79, 0.60892, 3, -12.27999, 37.83, 0.13303, 3, 35, -18.5, -14.05, 0.28712, 2, 2.33999, 35.97, 0.51934, 26, -7.59, 18.95, 0.19349, 4, 35, -10.77999, -18.35, 0.28477, 25, -42.02999, 75.55999, 0.10294, 2, -6.36, 37.31, 0.37492, 26, -10.19999, 10.25, 0.23733, 3, 35, 0.92, -16.95, 0.34086, 2, -17.28, 35.45, 0.32139, 26, -8.19999, -0.66, 0.33772, 4, 35, 10.64, -16.30999, 0.3269, 36, -24.04999, -14.89, 0.16082, 2, -27.56999, 33.65999, 0.14431, 26, -6.36, -11.03999, 0.36794, 4, 35, 28.48999, -15.61999, 0.24235, 36, -9.53999, -15.10999, 0.27028, 37, -45.5, -19.11, 0.12131, 26, -3.64, -27.87, 0.36603, 4, 35, 41.59, -14.89, 0.2176, 36, 6.92, -15.34, 0.33285, 37, -26.85, -17.47999, 0.20376, 26, -1.29999, -43.27, 0.24577, 3, 36, 33.81999, -15.8, 0.47178, 37, 0, -15.85, 0.42625, 38, -31.79, -17.81999, 0.10193, 3, 36, 63.38, -16.47999, 0.21259, 37, 29.52, -14.21, 0.42737, 38, -2.42, -14.38, 0.36002, 3, 37, 49.77999, -15.51, 0.30177, 38, 14.85, -13.07999, 0.47126, 39, -21.13999, -15.63, 0.22694, 3, 37, 61.09, -13.39999, 0.15443, 38, 29.03, -11.64, 0.50848, 39, -3.25999, -12.44999, 0.33708, 2, 38, 41.22999, -10.78999, 0.28077, 39, 8.39999, -8.78999, 0.71921, 2, 39, 36.22999, -8.59, 0.56511, 40, -3.01999, -8.82999, 0.43487, 3, 39, 67.93, -10.06, 0.16322, 40, 28.68, -7.80999, 0.53711, 41, -8.10999, -7.69, 0.29965, 3, 40, 47.75999, -8.47, 0.402, 41, 10.97, -7.88999, 0.45129, 42, -26.34, -6.21, 0.14667, 3, 40, 64.61, -8.06, 0.25016, 41, 27.79999, -8.39999, 0.46039, 42, -12.76, -8.81, 0.28942, 4, 40, 79.12, -10.23999, 0.11857, 41, 42.33, -8.02999, 0.2698, 42, 4.53, -8.36999, 0.48104, 32, -1.54999, 35.59999, 0.13055, 2, 42, 20.84, -9.18999, 0.72798, 32, -5.36999, 19.54999, 0.272, 1, 32, -11.5, -7.28999, 1, 4, 42, 43.22999, 16.27, 0.27459, 32, 15.1, -7.51, 0.48157, 33, -12.28999, -5.53999, 0.12941, 34, -41.75999, 0.93999, 0.11439, 4, 42, 36.99, 33.93999, 0.18804, 32, 33.7, -4.57, 0.34251, 33, 6.53, -5.75, 0.18296, 34, -23.19, -2.18, 0.28646, 3, 32, 53.34999, -1.58, 0.21646, 33, 26.39999, -6.07999, 0.26515, 34, -3.60999, -5.59, 0.51836, 2, 33, 47.99, -1.75999, 0.15751, 34, 18.37, -4.65999, 0.84246, 1, 34, 33.15999, -0.10999, 1, 2, 33, 47.97, 10.84, 0.17386, 34, 20.30999, 7.78999, 0.82612, 4, 42, 9.82999, 48.43, 0.1757, 32, 53.27999, 18.69, 0.17037, 33, 29.72999, 13.92, 0.136, 34, 2.75999, 13.65999, 0.51789, 4, 42, 11.44999, 34.56999, 0.26313, 32, 39.25999, 20.54999, 0.23037, 33, 16.20999, 18.09, 0.15679, 34, -9.93999, 19.87999, 0.3497, 4, 42, 12.39999, 17.12999, 0.37055, 32, 22.1, 22.5, 0.30408, 33, -0.37, 22.87, 0.18234, 34, -25.59, 27.17, 0.14297, 3, 42, 12.34, 10.43, 0.44639, 32, 15.56, 23.90999, 0.2976, 33, -6.59, 25.36, 0.256, 5, 40, 75.94999, 9.06, 0.10561, 41, 38.15, 11.07999, 0.25494, 42, 1.64999, 10.97, 0.33577, 32, 17.97999, 34.75, 0.16322, 33, -2.38, 35.63999, 0.14041, 3, 40, 62.61, 10.93999, 0.26063, 41, 26.04, 10.61999, 0.4979, 42, -15.14, 10.14, 0.24143, 3, 40, 47.27, 9.67, 0.40347, 41, 9.52999, 10.18999, 0.4787, 42, -26.59, 11.93, 0.11781, 3, 39, 69.23, 6.96999, 0.16042, 40, 28.62999, 9.26, 0.53934, 41, -7.94, 9.38, 0.30019, 2, 39, 37.36, 8, 0.57647, 40, -3.21, 7.8, 0.4235, 2, 38, 45.47999, 7.09999, 0.29348, 39, 8.38, 9.60999, 0.70649, 3, 37, 62.84, 9, 0.15444, 38, 29.39999, 10.81999, 0.49323, 39, -8.11999, 9.48999, 0.35229, 3, 37, 52.13999, 9.27, 0.30575, 38, 12.84, 11.72999, 0.46742, 39, -26.12, 8.77, 0.22682, 3, 36, 66.66, 11.26, 0.21797, 37, 30.61, 13.68999, 0.42844, 38, -3.04999, 13.52999, 0.35357, 3, 36, 37.7, 16.76, 0.48245, 37, 1.30999, 16.92, 0.41751, 38, -32.49, 14.97, 0.10001, 4, 35, 44.34, 22.11, 0.23458, 36, 11.90999, 21.43, 0.43852, 37, -24.76, 19.55999, 0.20679, 2, -58.27999, -7.19, 0.12007, 4, 35, 28.54, 23.56999, 0.31079, 36, -3.75999, 23.82999, 0.19156, 25, -76.76, 29.21999, 0.21529, 2, -42.41999, -7.44999, 0.28229, 3, 35, 22.30999, 41.63999, 0.18196, 25, -69.83, 12.46, 0.43955, 2, -34.84, -25, 0.37847, 3, 35, 19.77, 51.41999, 0.1392, 25, -59.84, 2.51999, 0.47894, 2, -23.88999, -35.15999, 0.38183, 3, 35, 6.03, 61.52999, 0.10542, 25, -52.7, -5.88, 0.51007, 2, -17.1, -43.61, 0.38449, 2, 25, -37.15999, -13.13, 0.67426, 2, -1.22, -50.81999, 0.32572, 1, 25, -22.09, -13.05, 1, 2, 25, 1.45, -10.48999, 0.89017, 2, 37.38999, -48.18, 0.10981, 3, 25, 30.39999, 0.95999, 0.43018, 2, 66.34999, -36.72, 0.16236, 3, 19.96999, -44.2, 0.40742, 2, 3, 41.58, -34.52, 0.68164, 4, -9.43999, -33.20999, 0.31834, 2, 3, 50.68, -30.61, 0.51065, 4, 0.37999, -31.98999, 0.48932, 3, 3, 58.06, -27.44, 0.26484, 4, 8.35, -31, 0.61474, 5, -18.04, -36.27999, 0.12041, 3, 3, 69.4, -22.87999, 0.17395, 4, 20.5, -29.77, 0.5644, 5, -6.51999, -32.22, 0.26164, 2, 4, 33.86, -28.42, 0.29085, 5, 6.13, -27.76, 0.70914, 2, 4, 56.54999, -19.37, 0.1738, 5, 26.04999, -13.63, 0.82618, 5, 35, 20.79, 3.25999, 0.38866, 36, -12.72999, 4.03, 0.17697, 25, -69.83999, 50.18, 0.10104, 2, -36.22, 13.38, 0.1958, 26, 13.97, -19.23999, 0.13748, 4, 35, 2.68, 26.80999, 0.26409, 25, -50.86, 29.20999, 0.2337, 2, -16.38999, -8.72999, 0.34628, 26, 35.77999, -0.47999, 0.15591, 3, 35, -15.64999, 28.56999, 0.15678, 25, -33.52999, 28.78, 0.29159, 2, 2.01999, -9.1, 0.5516, 1, 25, -28.17, 8.36999, 1, 1, 25, -5.01, 10.98999, 1, 3, 25, 24.12, 24.17, 0.1205, 2, 60.06, -13.51, 0.21383, 3, 20.53, -20.15999, 0.66562, 2, 3, 39.63, -17.84, 0.59512, 4, -6.67, -16.64999, 0.40487, 3, 3, 60.95, -9.85999, 0.26251, 4, 16.02, -14.92, 0.55541, 5, -14.38, -18.84, 0.18206, 2, 4, 32.68, 8.3, 0.58728, 5, -3.66, 7.65, 0.41269, 2, 3, 39.52, 3.09999, 0.47135, 4, -0.94999, 3.49, 0.52863, 1, 3, 17.87999, 2.55999, 1, 2, 2, 27.01, -3.63, 0.67245, 3, -8.35999, -1.30999, 0.32754, 3, 35, -2.63, 46, 0.10031, 25, -45.40999, 10.26, 0.5261, 2, -9.64, -27.45999, 0.37354, 2, 33, 47.97999, 4.75, 0.16596, 34, 19.37, 1.76999, 0.83402, 4, 42, 19.54999, 50.47999, 0.12624, 32, 53.29999, 9.5, 0.16908, 33, 28.20999, 4.84999, 0.24845, 34, -0.12999, 4.94, 0.4562, 4, 42, 26.30999, 16.81999, 0.32785, 32, 18.95999, 9.25, 0.38306, 33, -5.67999, 10.34, 0.15879, 34, -32.77, 15.60999, 0.13026, 2, 42, 16.95999, -0.02999, 0.66864, 32, 4.23, 21.70999, 0.33134, 3, 42, 28.1, 2.84999, 0.4826, 32, 4.90999, 10.14, 0.31301, 33, -19.37999, 13.56999, 0.20437, 3, 40, 63.20999, -0.57999, 0.21067, 41, 25.95999, 0.77999, 0.49386, 42, -11.01, 1.48, 0.29543, 3, 35, -14.82999, 8.07999, 0.24447, 25, -33.34, 51.22999, 0.16324, 2, 2.58999, 13.52999, 0.59226, 4, 35, 3.36999, 4.96, 0.28615, 25, -51.81, 51.13, 0.16475, 2, -15.85999, 13.43999, 0.31891, 26, 13.85, -0.51999, 0.23014, 4, 35, 46.08, 3.57999, 0.24088, 36, 9.06, 3.08999, 0.4115, 37, -28.45999, 0.63999, 0.21862, 26, 17.5, -43.06999, 0.12895, 3, 36, 37.22, 1.25, 0.47743, 37, -0.07999, 1.25, 0.42162, 38, -36.25, -5.25, 0.10091, 4, 35, -5.23, 6.28999, 0.25593, 25, -43.09999, 51.31999, 0.15578, 2, -7.15999, 13.61999, 0.42092, 26, 14.15999, 8.17, 0.16733, 4, 35, 33.02999, 3.36999, 0.36684, 36, -3.96, 3.59999, 0.31093, 2, -45.31999, 9.81999, 0.17305, 26, 15.75, -30.13999, 0.14914, 4, 40, 77.5, -1.15999, 0.11479, 41, 40.22999, 0.94999, 0.26888, 42, 3.04999, 0.72, 0.44971, 32, 7.65999, 35.31999, 0.16659, 4, 42, 22.71999, 34.66999, 0.22089, 32, 37.18, 9.38, 0.26954, 33, 12.28999, 7.42999, 0.20635, 34, -15.46, 9.94999, 0.30316 ], + "hull": 60, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 24, 26, 26, 28, 32, 34, 34, 36, 36, 38, 46, 48, 48, 50, 54, 56, 56, 58, 58, 60, 60, 62, 66, 68, 76, 78, 78, 80, 80, 82, 86, 88, 88, 90, 90, 92, 92, 94, 98, 100, 100, 102, 102, 104, 104, 106, 106, 108, 116, 118, 0, 118, 92, 120, 120, 20, 28, 86, 82, 32, 34, 80, 78, 36, 76, 38, 12, 124, 102, 126, 126, 124, 126, 128, 128, 130, 130, 132, 132, 134, 112, 134, 134, 136, 136, 4, 2, 116, 6, 138, 138, 132, 8, 140, 140, 130, 10, 142, 142, 128, 128, 104, 130, 106, 132, 108, 122, 92, 100, 144, 144, 122, 126, 144, 144, 94, 112, 114, 114, 116, 108, 110, 110, 112, 16, 18, 18, 20, 20, 22, 22, 24, 12, 14, 14, 16, 122, 124, 94, 96, 96, 98, 56, 146, 146, 60, 54, 148, 148, 62, 146, 148, 50, 150, 150, 66, 46, 152, 152, 68, 154, 152, 154, 48, 42, 156, 156, 72, 14, 158, 158, 124, 18, 160, 160, 122, 160, 120, 24, 162, 162, 90, 26, 164, 164, 88, 162, 164, 16, 166, 160, 166, 166, 158, 166, 124, 162, 168, 168, 120, 168, 22, 168, 92, 38, 40, 40, 42, 72, 74, 74, 76, 40, 74, 42, 44, 44, 46, 152, 170, 170, 156, 44, 170, 68, 70, 70, 72, 170, 70, 62, 64, 64, 66, 148, 172, 172, 150, 64, 172, 50, 52, 52, 54, 172, 52, 154, 66, 150, 154, 28, 30, 30, 32, 82, 84, 84, 86, 30, 84 ], + "width": 141, + "height": 452 + } + }, + "front arm": { + "front arm": { + "type": "mesh", + "uvs": [ 0.714, 0.00566, 0.67107, 0.08129, 0.60221, 0.15433, 0.53632, 0.21682, 0.44558, 0.28704, 0.34898, 0.35134, 0.29096, 0.3894, 0.25238, 0.41472, 0.22423, 0.4427, 0.19483, 0.47193, 0.15998, 0.50657, 0.09138, 0.59567, 0.05498, 0.70865, 0.02988, 0.81366, 0.01048, 0.94262, 0.10494, 0.98984, 0.25391, 0.9742, 0.31482, 0.88906, 0.28834, 0.82868, 0.13606, 0.74572, 0.14334, 0.71487, 0.18317, 0.62253, 0.25217, 0.5422, 0.29537, 0.50981, 0.33787, 0.47794, 0.38451, 0.45012, 0.43581, 0.41953, 0.5471, 0.36549, 0.68845, 0.29831, 0.74855, 0.35527, 0.85873, 0.38229, 0.99674, 0.37644, 0.95353, 0.33244, 0.91355, 0.29171, 0.87464, 0.25208, 0.83758, 0.21434, 0.78082, 0.12598, 0.78194, 0.06829, 0.63219, 0.23719, 0.66924, 0.15783, 0.75532, 0.20966, 0.7161, 0.11136 ], + "triangles": [ 30, 29, 33, 30, 32, 31, 40, 41, 36, 39, 41, 40, 40, 36, 35, 38, 39, 40, 28, 38, 40, 34, 28, 40, 34, 40, 35, 28, 34, 33, 29, 28, 33, 30, 33, 32, 41, 1, 0, 37, 41, 0, 36, 41, 37, 39, 1, 41, 39, 2, 1, 19, 12, 20, 13, 12, 19, 18, 15, 19, 16, 18, 17, 15, 13, 19, 15, 14, 13, 15, 18, 16, 21, 10, 22, 11, 10, 21, 20, 11, 21, 12, 11, 20, 9, 8, 23, 22, 9, 23, 10, 9, 22, 26, 5, 4, 25, 5, 26, 6, 5, 25, 24, 6, 25, 7, 6, 24, 23, 7, 24, 8, 7, 23, 38, 2, 39, 3, 2, 38, 27, 3, 38, 27, 38, 28, 4, 3, 27, 26, 4, 27 ], + "vertices": [ 1, 47, 21.65999, 6.07, 1, 2, 46, 18.12999, 3.36999, 0.16552, 47, 3.91, 4.23, 0.83446, 3, 27, -6.11999, -15.22999, 0.20964, 46, -0.03999, 8.85, 0.53628, 5, 43.43999, 6.80999, 0.25404, 1, 27, 10.35999, -12.02, 1, 2, 27, 30.62, -10.09, 0.8882, 28, -7.63, -10.14999, 0.11178, 2, 27, 50.56999, -9.68999, 0.30994, 28, 12.31, -9.60999, 0.69003, 2, 28, 24.20999, -9.36999, 0.86562, 29, -13.42, -6.19999, 0.13436, 2, 28, 32.11999, -9.21, 0.73142, 29, -5.71999, -8.02, 0.26855, 2, 28, 39.34999, -7.57999, 0.54006, 29, 1.67999, -8.23999, 0.45991, 2, 28, 46.9, -5.88, 0.29036, 29, 9.40999, -8.47999, 0.70963, 2, 29, 18.57999, -8.76, 0.66539, 30, -15.75, -5.11999, 0.3346, 1, 30, 6.03, -8.57999, 1, 2, 30, 31.42, -5.96999, 0.39256, 31, 0.49, -6.36, 0.60742, 1, 31, 23.79, -9.31, 1, 1, 31, 52.36999, -11.27999, 1, 1, 31, 62.38999, 2.71, 1, 1, 31, 58.29, 24.2, 1, 1, 31, 39.22, 32.47999, 1, 1, 31, 25.98999, 28.23999, 1, 1, 31, 8.32999, 5.63, 1, 2, 30, 28.80999, 6.63999, 0.48313, 31, 1.48, 6.48, 0.51686, 1, 30, 7.61, 5.9, 1, 3, 28, 51.65999, 11.06999, 0.10767, 29, 18.26, 6.73999, 0.55899, 30, -12.34, 10, 0.33333, 2, 28, 42.18, 10.25, 0.31463, 29, 8.86999, 8.31, 0.68536, 2, 28, 32.86, 9.43999, 0.59183, 29, -0.34999, 9.85999, 0.40816, 2, 28, 23.71999, 9.68999, 0.83034, 29, -9.13, 12.38, 0.16964, 2, 27, 52.08, 9.88, 0.29919, 28, 13.67, 9.97, 0.70078, 2, 27, 32.18, 12.59, 0.84685, 28, -6.23, 12.53999, 0.15312, 1, 5, 9.42, 3.38, 1, 2, 5, -5.05, -1.59, 0.47198, 4, 29.15999, -0.34999, 0.52799, 1, 4, 16.12999, -11.35, 1, 1, 4, 7.44999, -29.43, 1, 2, 5, -8.22999, -31.55999, 0.51928, 4, 19, -28.72999, 0.48069, 1, 5, 1.99, -28.42, 1, 1, 5, 11.96, -25.36, 1, 1, 5, 21.44, -22.45, 1, 3, 46, 12.68999, -14.53999, 0.25481, 47, 2.13, -14.39999, 0.32231, 5, 42.47, -19.80999, 0.42285, 1, 47, 13.63, -8.89, 1, 1, 27, 3.54999, 0.89999, 1, 2, 46, 1.71, -0.73, 0.5001, 5, 40.06, -2.32999, 0.49988, 1, 5, 25.65999, -11.23999, 1, 3, 46, 13.39, -4.63999, 0.33234, 47, 0.86, -4.55999, 0.48164, 5, 48.11, -11.64999, 0.186 ], + "hull": 38, + "edges": [ 0, 2, 8, 10, 20, 22, 22, 24, 24, 26, 26, 28, 28, 30, 30, 32, 32, 34, 34, 36, 36, 38, 38, 40, 40, 42, 42, 44, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 70, 72, 72, 74, 0, 74, 56, 76, 6, 8, 76, 6, 4, 6, 4, 78, 78, 80, 80, 70, 2, 82, 82, 72, 82, 78, 78, 76, 2, 4, 56, 80, 56, 66, 62, 64, 64, 66, 66, 68, 68, 70, 44, 46, 46, 48, 18, 20, 46, 18, 10, 12, 12, 14, 48, 50, 50, 52, 12, 50, 14, 16, 16, 18 ], + "width": 145, + "height": 221 + } + }, + "front leg path": { + "front leg path": { + "type": "path", + "lengths": [ 140.43, 297.34, 652.04 ], + "vertexCount": 9, + "vertices": [ 1, 44, -40.7, -0.40999, 1, 1, 44, 1.48, -0.27, 1, 1, 44, 75.41999, 0.33, 1, 2, 44, 82.91999, 8.48999, 0.5, 45, -58.75, -8.52999, 0.5, 2, 44, 141.34, 0.51999, 0.5, 45, 0.44999, 0.70999, 0.5, 2, 44, 208.26, -14.82999, 0.5, 45, 68.83, 18.53, 0.5, 1, 45, 73.80999, 1.40999, 1, 1, 45, 156.57, 0.98, 1, 1, 44, 380.59, 0.75999, 1 ] + } + }, + "head": { + "head": { + "type": "mesh", + "uvs": [ 0.49583, 0.01984, 0.3073, 0.05802, 0.14319, 0.17024, 0.0279, 0.36227, 0.04553, 0.57745, 0.16625, 0.73247, 0.18795, 0.84353, 0.30324, 0.96963, 0.42124, 0.91063, 0.58535, 0.94649, 0.76303, 0.93261, 0.8694, 0.78599, 0.96783, 0.65033, 0.93351, 0.55575, 0.91494, 0.50457, 0.93281, 0.4436, 0.96241, 0.34261, 0.84983, 0.16792, 0.70199, 0.06496, 0.71827, 0.40045, 0.55822, 0.46524, 0.67191, 0.56924, 0.61248, 0.74982, 0.29238, 0.552, 0.68707, 0.30096, 0.49719, 0.316, 0.38868, 0.29286, 0.30595, 0.24312, 0.32494, 0.40508, 0.4036, 0.55663, 0.63282, 0.6862, 0.75489, 0.67579, 0.72156, 0.43445, 0.60178, 0.47123, 0.67975, 0.53995, 0.86841, 0.4929 ], + "triangles": [ 7, 6, 8, 10, 9, 22, 9, 8, 22, 10, 22, 11, 22, 8, 23, 23, 8, 5, 8, 6, 5, 11, 22, 31, 22, 30, 31, 11, 31, 12, 23, 29, 22, 22, 29, 30, 5, 4, 23, 29, 20, 30, 30, 21, 31, 30, 20, 21, 31, 13, 12, 31, 14, 13, 31, 21, 14, 4, 3, 23, 21, 35, 14, 21, 34, 35, 20, 33, 21, 21, 33, 34, 23, 28, 29, 20, 29, 28, 20, 28, 25, 25, 28, 26, 23, 3, 28, 27, 3, 2, 3, 27, 28, 34, 32, 35, 34, 33, 32, 14, 35, 15, 15, 35, 19, 32, 33, 19, 33, 20, 19, 20, 24, 19, 20, 25, 24, 16, 15, 19, 19, 35, 32, 28, 27, 26, 19, 24, 16, 24, 17, 16, 18, 24, 25, 25, 26, 0, 24, 18, 17, 18, 25, 0, 27, 1, 26, 26, 1, 0, 27, 2, 1 ], + "vertices": [ 1, 48, 90.83, 8.14, 1, 1, 48, 81.69999, 22.32999, 1, 1, 48, 66.16, 32, 1, 1, 48, 44.34, 34.97, 1, 1, 48, 24.13999, 26.23999, 1, 1, 48, 12.71, 11.09, 1, 1, 47, 17.77, 6.05999, 1, 1, 47, 10.69999, -8.61999, 1, 1, 48, 2.94, -15.85, 1, 1, 48, 4.23, -30.53, 1, 1, 48, 10.69999, -44.63999, 1, 1, 48, 27.88999, -48.40999, 1, 1, 48, 43.79, -51.9, 1, 1, 48, 51.90999, -45.88999, 1, 1, 48, 56.29, -42.63, 1, 1, 48, 62.68, -42.04, 1, 1, 48, 73.26, -41.04999, 1, 1, 48, 86.80999, -25.90999, 1, 1, 48, 92.44999, -10.28999, 1, 1, 48, 60.63, -22.96999, 1, 1, 48, 49.77, -12.02999, 1, 1, 48, 43.04, -24.87, 1, 1, 48, 23.94, -26.1, 1, 1, 48, 33.72999, 6.84, 1, 1, 48, 69.3, -17.04999, 1, 1, 48, 62.36, -1.97, 1, 1, 48, 61.45, 7.69999, 1, 1, 48, 63.84999, 16.18, 1, 1, 48, 48.81, 9.14, 1, 1, 48, 36.5, -2.43, 1, 1, 48, 30.65999, -25.62, 1, 1, 48, 35.18999, -35.29, 1, 1, 48, 57.45, -24.38999, 1, 1, 48, 50.45, -15.81, 1, 1, 48, 46.09, -24.53, 1, 1, 48, 56.06999, -38.41999, 1 ], + "hull": 19, + "edges": [ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14, 16, 16, 18, 18, 20, 32, 34, 34, 36, 0, 36, 28, 30, 30, 32, 30, 38, 38, 40, 40, 42, 42, 28, 20, 22, 22, 24, 22, 44, 44, 46, 32, 48, 48, 50, 50, 52, 52, 54, 54, 56, 56, 58, 58, 60, 60, 62, 24, 26, 26, 28, 62, 26, 64, 66, 66, 40, 66, 68, 68, 70, 70, 64 ], + "width": 87, + "height": 102 + } + } + } +}, +"animations": { + "sneak": { + "bones": { + "hip": { + "rotate": [ + { "time": 0, "angle": 30.27, "curve": "stepped" }, + { "time": 0.1666, "angle": 30.27 }, + { "time": 0.3333, "angle": -31.29 }, + { "time": 0.5333, "angle": -44.75 }, + { "time": 0.7333, "angle": -25.49 }, + { "time": 0.8999, "angle": -9.45 }, + { "time": 1.0666, "angle": 30.27 }, + { "time": 1.2333, "angle": -10.1 }, + { "time": 1.6333, "angle": -41.47 }, + { "time": 1.7999, "angle": 30.27 } + ], + "translate": [ + { "time": 0, "x": -57.43, "y": -40.92 }, + { + "time": 0.1666, + "x": -16.15, + "y": -96.56, + "curve": [ 0.245, 0, 0.637, 0.55 ] + }, + { + "time": 0.2666, + "x": 85.99, + "y": -143.07, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 0.3333, "x": 145.44, "y": -159.27 }, + { "time": 0.4333, "x": 344.29, "y": -134.94 }, + { "time": 0.5333, "x": 543.13, "y": -81.1 }, + { "time": 0.7333, "x": 569.68, "y": -62.13 }, + { "time": 0.8999, "x": 591.8, "y": -46.32 }, + { + "time": 1.0666, + "x": 653.14, + "y": -96.6, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { "time": 1.1333, "x": 710.16, "y": -143.1 }, + { "time": 1.2333, "x": 795.7, "y": -159.3 }, + { "time": 1.3333, "x": 986.94, "y": -153.35 }, + { "time": 1.4333, "x": 1178.19, "y": -111.88 }, + { "time": 1.6333, "x": 1195.1, "y": -62.1 }, + { "time": 1.7999, "x": 1246.53, "y": -40.92 } + ] + }, + "front leg IK target": { + "translate": [ + { "time": 0, "x": -50.42, "y": 44.61 }, + { "time": 0.1666, "x": -50.42, "y": 46.55 }, + { "time": 0.3333, "x": -50.42, "y": 47 }, + { + "time": 0.5333, + "x": -26.42, + "y": 50.21, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.7333, "x": 566.43, "y": 107.27 }, + { "time": 0.8999, "x": 1215.89, "y": 68.21 }, + { "time": 1.0666, "x": 1235.47, "y": 15.8 }, + { "time": 1.2333, "x": 1235.47, "y": 0.97 }, + { "time": 1.5666, "x": 1230.15, "y": 3.76 }, + { "time": 1.7, "x": 1244, "y": 26.76 }, + { "time": 1.7999, "x": 1253.53, "y": 44.61 } + ] + }, + "front foot 1": { + "rotate": [ + { "time": 0, "angle": -48.38, "curve": "stepped" }, + { "time": 0.3333, "angle": -48.38 }, + { "time": 0.6999, "angle": -121.34 }, + { "time": 0.8, "angle": -80.19 }, + { "time": 0.8999, "angle": 45.59 }, + { "time": 1.0666, "angle": 2.1 }, + { "time": 1.2333, "angle": 4.65 }, + { "time": 1.5666, "angle": 5.66 }, + { "time": 1.7999, "angle": -48.38 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.6, "x": 1, "y": 1 }, + { "time": 0.6333, "x": 0.954, "y": 1 }, + { "time": 0.7666, "x": 0.82, "y": 1 }, + { "time": 0.8999, "x": 1, "y": 1 }, + { "time": 1.0666, "x": 0.851, "y": 1 }, + { "time": 1.3666, "x": 1, "y": 1 } + ] + }, + "front foot 3": { + "rotate": [ + { "time": 0, "angle": 36.32 }, + { "time": 0.3333, "angle": 28.46 }, + { "time": 0.5, "angle": 34.84 }, + { "time": 0.5333, "angle": 30.32 }, + { "time": 0.5666, "angle": 61.67 }, + { "time": 0.6999, "angle": -19.47 }, + { "time": 0.8999, "angle": -0.12 }, + { "time": 1.0666, "angle": -7.21 }, + { "time": 1.2333, "angle": -11.34 }, + { "time": 1.5666, "angle": -11.23 }, + { "time": 1.7999, "angle": 36.32 } + ] + }, + "back leg IK target": { + "translate": [ + { "time": 0, "x": 516.79, "y": 86.68 }, + { "time": 0.1666, "x": 523.71, "y": 16.63 }, + { "time": 0.3333, "x": 523.03, "y": -5, "curve": "stepped" }, + { "time": 0.6999, "x": 523.03, "y": -5 }, + { "time": 0.8999, "x": 551.31, "y": 41.86 }, + { "time": 1.0666, "x": 554.24, "y": 44.45 }, + { "time": 1.1333, "x": 555.44, "y": 44.74 }, + { "time": 1.2, "x": 556.6, "y": 46.19, "curve": "stepped" }, + { "time": 1.4333, "x": 556.6, "y": 46.19 }, + { "time": 1.5, "x": 746.96, "y": 74.82 }, + { "time": 1.6333, "x": 1127.68, "y": 103.61 }, + { "time": 1.7999, "x": 1820.75, "y": 86.68 } + ] + }, + "back foot 1": { + "rotate": [ + { "time": 0, "angle": 74.17 }, + { "time": 0.1666, "angle": -17.01 }, + { "time": 0.3333, "angle": 5.05 }, + { "time": 0.6999, "angle": 3.74 }, + { "time": 0.8999, "angle": -65.56 }, + { "time": 1.6333, "angle": -92.52 }, + { "time": 1.7999, "angle": 74.17 } + ], + "scale": [ + { "time": 0, "x": 0.824, "y": 1 }, + { "time": 0.1666, "x": 0.754, "y": 1 }, + { "time": 0.3333, "x": 0.589, "y": 1 }, + { "time": 0.5666, "x": 0.909, "y": 1 }, + { "time": 0.8999, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.3999, "x": 1, "y": 1 }, + { "time": 1.5, "x": 0.844, "y": 1 }, + { "time": 1.7999, "x": 0.824, "y": 1 } + ] + }, + "back foot 2": { + "rotate": [ + { "time": 0, "angle": 8.13 }, + { "time": 0.1666, "angle": -3.21 }, + { "time": 0.6999, "angle": -1.14 }, + { "time": 0.8999, "angle": 34.12 }, + { "time": 1.4333, "angle": 46.68 }, + { "time": 1.5333, "angle": -15.6 }, + { "time": 1.6333, "angle": -11.91 }, + { "time": 1.7999, "angle": 8.13 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "front arm 1": { + "rotate": [ + { "time": 0, "angle": -39.71 }, + { "time": 0.1666, "angle": -37.29 }, + { "time": 0.3333, "angle": 30.66 }, + { + "time": 0.8999, + "angle": -53.28, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 36 }, + { "time": 1.7999, "angle": -39.71 } + ] + }, + "neck 1": { + "rotate": [ + { "time": 0, "angle": 21.95, "curve": "stepped" }, + { "time": 0.1666, "angle": 21.95 }, + { "time": 0.2666, "angle": 30.6 }, + { "time": 0.3333, "angle": 36.37 }, + { "time": 0.7333, "angle": 33.6 }, + { "time": 1.1666, "angle": 23.95 }, + { "time": 1.2333, "angle": 36.37 }, + { "time": 1.6333, "angle": 41.16 }, + { "time": 1.7999, "angle": 21.95 } + ] + }, + "neck 2": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -23.95 }, + { "time": 0.2666, "angle": 8.84 }, + { "time": 0.3333, "angle": 30.71 }, + { "time": 0.7333, "angle": -3.36 }, + { "time": 0.8999, "angle": -17.57 }, + { "time": 1.1666, "angle": 2.19 }, + { "time": 1.2333, "angle": 15.25 }, + { "time": 1.6333, "angle": 4.41 }, + { "time": 1.7999, "angle": -22.93 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": -22.93 }, + { "time": 0.1666, "angle": -13.03 }, + { "time": 0.2666, "angle": 2.64 }, + { "time": 0.3333, "angle": 13.1 }, + { "time": 0.5, "angle": 13.1 }, + { "time": 0.7333, "angle": -18.9 }, + { "time": 0.8999, "angle": -41.77 }, + { "time": 1.1666, "angle": -4 }, + { "time": 1.2333, "angle": -2.35 }, + { "time": 1.6333, "angle": -22.89 }, + { "time": 1.7999, "angle": -22.93 } + ] + }, + "back arm 1": { + "rotate": [ + { "time": 0, "angle": -17.23 }, + { "time": 0.1666, "angle": -18.65 }, + { "time": 0.3333, "angle": 324.98 }, + { "time": 0.5666, "angle": -6.41 }, + { "time": 0.8999, "angle": -14.83 }, + { "time": 1.0666, "angle": -16.9 }, + { "time": 1.2333, "angle": 1.49 }, + { "time": 1.3999, "angle": 2.56 }, + { "time": 1.7999, "angle": -17.23 } + ], + "translate": [ + { "time": 0, "x": -14.25, "y": -6.6 } + ] + }, + "back leg IK 1": { + "scale": [ + { "time": 0, "x": 2.186, "y": 1 }, + { "time": 0.1666, "x": 2.228, "y": 1 }, + { "time": 0.3333, "x": 1.532, "y": 1 }, + { "time": 0.4333, "x": 0.946, "y": 1 }, + { "time": 0.5333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.0666, "x": 1, "y": 1 }, + { "time": 1.1333, "x": 0.892, "y": 1 }, + { "time": 1.2333, "x": 0.956, "y": 1 }, + { "time": 1.4333, "x": 2.315, "y": 1 }, + { "time": 1.6333, "x": 0.774, "y": 1 }, + { "time": 1.7999, "x": 2.186, "y": 1 } + ] + }, + "front leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.117 } + ] + }, + "back leg 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1.038 } + ] + }, + "front leg IK 1": { + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.2666, "x": 0.858, "y": 1 }, + { "time": 0.3333, "x": 0.972, "y": 1 }, + { + "time": 0.5333, + "x": 2.356, + "y": 1, + "curve": [ 0.532, 0, 0.75, 1 ] + }, + { "time": 0.6999, "x": 1, "y": 1 }, + { "time": 0.8999, "x": 2.248, "y": 1 }, + { "time": 1.0666, "x": 2.002, "y": 1 }, + { "time": 1.2333, "x": 1.495, "y": 1 }, + { + "time": 1.2999, + "x": 1.047, + "y": 1, + "curve": [ 0.339, 0.58, 0.764, 1 ] + }, + { "time": 1.4333, "x": 0.779, "y": 0.762 }, + { "time": 1.7999, "x": 1, "y": 1 } + ] + }, + "front leg IK 2": { + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front arm 3": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1666, "angle": 17.37 }, + { "time": 0.3333, "angle": 31.94 }, + { + "time": 0.8999, + "angle": 4.76, + "curve": [ 0.708, 0.01, 0.75, 1 ] + }, + { "time": 1.2333, "angle": 39.96 }, + { "time": 1.7999, "angle": 0 } + ] + }, + "spine 2": { + "rotate": [ + { "time": 0, "angle": -3.49 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -5.78 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -6.69 }, + { "time": 1.6333, "angle": -2.5 }, + { "time": 1.7999, "angle": -3.49 } + ] + }, + "spine 3": { + "rotate": [ + { "time": 0, "angle": -20.41 }, + { "time": 0.2666, "angle": -11.57 }, + { "time": 0.3333, "angle": -9.02 }, + { "time": 0.5, "angle": -2.65 }, + { "time": 0.7333, "angle": -10.53 }, + { "time": 0.8999, "angle": -16.16 }, + { "time": 1.1666, "angle": -11.57 }, + { "time": 1.2333, "angle": -9.02 }, + { "time": 1.6333, "angle": -7.26 }, + { "time": 1.7999, "angle": -20.41 } + ] + }, + "back arm 3": { + "rotate": [ + { "time": 0, "angle": 26.23 }, + { "time": 0.1666, "angle": 53.14 }, + { "time": 0.3333, "angle": 116.25 }, + { "time": 0.5666, "angle": 35.72 }, + { "time": 0.8999, "angle": 39.32 }, + { "time": 1.0666, "angle": 41.19 }, + { "time": 1.2333, "angle": 78.09 }, + { "time": 1.3999, "angle": 36.16 }, + { "time": 1.7999, "angle": 26.23 } + ] + }, + "back foot 3": { + "rotate": [ + { "time": 0, "angle": 11.35 }, + { "time": 0.6999, "angle": -4.24 }, + { "time": 0.8999, "angle": 25.48, "curve": "stepped" }, + { "time": 1.4333, "angle": 25.48 }, + { "time": 1.5333, "angle": -30.51 }, + { "time": 1.6333, "angle": -20.54 }, + { "time": 1.7999, "angle": 11.35 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1666, "x": 0.835, "y": 1 }, + { "time": 0.3333, "x": 1, "y": 1 } + ] + }, + "spine 1": { + "rotate": [ + { "time": 0, "angle": 10.81 }, + { "time": 0.2666, "angle": -28.69 }, + { "time": 0.3333, "angle": -24.32 }, + { "time": 0.5, "angle": -13.37 }, + { "time": 0.7333, "angle": 21.61 }, + { "time": 0.8999, "angle": 46.61 }, + { "time": 1.1666, "angle": -28.69 }, + { "time": 1.2333, "angle": -43.33 }, + { "time": 1.6333, "angle": 24.89 }, + { "time": 1.7999, "angle": 10.81 } + ] + }, + "spine 4": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -2.8 }, + { "time": 0.3333, "angle": -0.82 }, + { "time": 0.5, "angle": 4.13 }, + { "time": 0.7333, "angle": -3.74 }, + { "time": 0.8999, "angle": -9.37 }, + { "time": 1.1666, "angle": -9.02 }, + { "time": 1.2333, "angle": -0.82 }, + { "time": 1.6333, "angle": 3.81 }, + { "time": 1.7999, "angle": 0 } + ] + }, + "front foot 2": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.2666, "angle": -1.24 }, + { "time": 0.3333, "angle": -0.2 }, + { "time": 0.5, "angle": 22.72 }, + { "time": 0.5333, "angle": 26.87 }, + { "time": 0.6999, "angle": -39.25 }, + { "time": 0.8999, "angle": 11.26 }, + { "time": 1.0666, "angle": -18.17 }, + { "time": 1.2333, "angle": -2.64 }, + { "time": 1.5666, "angle": -5.84 }, + { "time": 1.7999, "angle": 0 } + ] + }, + "belly": { + "translate": [ + { "time": 0, "x": 3.65, "y": -3.77 }, + { "time": 0.2666, "x": 13.82, "y": -3.82 }, + { "time": 0.6333, "x": -4.11, "y": -3.89 }, + { "time": 0.7666, "x": 10.21, "y": -2.91 }, + { "time": 0.8666, "x": 10.3, "y": -7.38 }, + { "time": 1.1, "x": -0.44, "y": -1.45 }, + { "time": 1.2333, "x": 12.37, "y": 2.32 }, + { "time": 1.3666, "x": 11.51, "y": 5.52 }, + { "time": 1.7999, "x": 0, "y": 0 } + ] + }, + "butt": { + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.7666, "x": 9.88, "y": -25.41 }, + { "time": 0.8333, "x": 15.89, "y": -41.88 }, + { "time": 1.2333, "x": -12.49, "y": -32.99 }, + { "time": 1.7999, "x": 0, "y": 0 } + ] + } + }, + "deform": { + "default": { + "back leg": { + "back leg": [ + { "time": 0.3 }, + { + "time": 0.3333, + "offset": 68, + "vertices": [ -1.72897, 2.75445, -1.52529, 2.94189, 0.0625, 3.6552, 0.01776, 3.65397, 0, 0, 0, 0, 0, 0, 0.0625, 3.6552, 0.01776, 3.65397, 0.90136, 3.54112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.98724, -1.57397, -0.03338, -2.08873, -0.0108, -2.08799, -0.51434, -2.02362, 0.98724, -1.57397, 0.87167, -1.68002, -0.03338, -2.08873, -0.0108, -2.08799 ] + }, + { "time": 0.4666, "curve": "stepped" }, + { "time": 1.3333 }, + { + "time": 1.4333, + "offset": 110, + "vertices": [ 2.52801, 0.00428, -0.03569, -4.90118, -3.71691, -3.19396, -4.88018, -0.43807, 5.17279, -0.0625, 5.1499, -0.47689, -0.07238, -10.06842, -7.6351, -6.56072, 6.64205, -0.09958, 6.61151, -0.62642, -0.09275, -12.93914, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.01242, -1.65533, -1.25543, -1.0787, 0.86096, 0.02682, -0.01242, -1.65533, -1.25543, -1.0787 ] + }, + { "time": 1.5 } + ] + }, + "back leg path": { + "back leg path": [ + { "time": 1.4333 }, + { + "time": 1.5, + "vertices": [ 4.67718, -35.44354, 0, 0, -11.37145, 49.53738, -20.9989, -109.72335, 65.45837, -90.53627, -9.56652, -24.74755, 11.45202, -23.93551, -19.07189, 47.32281, -47.53955, 18.58409, 34.69244, -51.5341, 0, 0, 13.30163, -100.17205 ] + }, + { + "time": 1.5666, + "vertices": [ -0.9635, -22.43963, 0, 0, -13.80389, 27.61459, -41.00646, -55.15969, 7.62652, -96.25755, -24.12603, -24.11285, 7.19531, -37.8742, -31.47302, 7.7796, -12.34545, -3.32328, 26.55981, -38.73887, 0, 0, -13.62084, -280.84912 ] + }, + { "time": 1.6666 } + ] + }, + "body": { + "body": [ + { "time": 0 }, + { + "time": 0.3333, + "offset": 164, + "vertices": [ -0.01179, 0.02892, 0.00916, 0.0298, 0, 0, 1.17781, 0.89835, 1.48062, -0.04942, -6.68858, -1.30628, 4.38937, 4.03925, 4.59583, 3.27733, 5.6365, -0.11034, -4.92264, -0.8036, 4.54262, 1.06504, 3.29334, 0.58413, 2.94213, -1.40271, -4.28854, -0.56444, 5.07102, -0.21189, 2.9589, -0.75665, 1.83513, -2.22983, -4.31061, 0.62609, 6.11537, -0.87568, 3.79229, -1.67126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.17403, 0.22007, 0.27403, 0.06015 ] + }, + { + "time": 0.5333, + "offset": 164, + "vertices": [ -0.01886, 0.04627, 0.01467, 0.04768, 0, 0, 1.88449, 1.43737, 2.369, -0.07907, 1.46056, -1.33222, -0.75053, -3.73339, -2.82319, -2.55492, -3.80252, -0.19385, 2.81923, -1.5031, -0.33162, -6.7565, -4.28408, -5.23484, -6.6292, -1.34549, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, -8.40039, -2.66888, 3.83378, -1.12044, 0.51381, -8.79961, -4.81917, -7.38011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.27845, 0.35211, 0.43846, 0.09625 ] + }, + { + "time": 0.6333, + "offset": 170, + "vertices": [ -2.09907, 0.0496, -1.943, 1.46153, 1.74966, 0.25744, 0.37649, -3.44555, -2.34342, -2.73068, -3.66285, -0.53692, 0, 0, 0, 0, 0, 0, 0, 0, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, -4.2002, -1.33444, 1.91689, -0.56022, 0.2569, -4.3998, -2.40958, -3.69005, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.66468, 1.2535, 0.05176, 1.41789 ] + }, + { "time": 0.7333 }, + { + "time": 0.7666, + "offset": 264, + "vertices": [ -2.27499, -1.60417, -2.23925, -1.6137, -2.2196, -1.74293, -1.80918, 2.86346, -1.11117, 2.36199, -1.14221, 2.359, 2.63101, 1.41101, 2.63215, 1.41741, -0.81469, 8.46568, 9.4562, 1.07873, 9.45622, 1.08001, -1.00012, 6.23983, 6.96737, 1.29986, 6.9674, 1.30218, -0.68823, 4.24005, 4.7344, 0.89532, 4.73448, 0.89593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.05484, 2.78092, 0.01666, 2.78222, 3.10775, -0.05572, 3.10798, -0.05426, -1.17971, 2.87597, -0.99005, 3.55937, 3.97198, 1.27319, 3.97207, 1.27423, -2.74237, 3.14401 ] + }, + { "time": 0.8333, "curve": "stepped" }, + { "time": 1.0666 }, + { + "time": 1.3333, + "offset": 142, + "vertices": [ 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.0227, -1.7984, 0.00683, -4.47886, -0.46118, -4.45536, -0.27441, -4.47041 ] + }, + { "time": 1.4333 } + ] + }, + "front leg path": { + "front leg path": [ + { "time": 0.5666 }, + { + "time": 0.6333, + "vertices": [ 0.16365, -9.90768, 0, 0, -1.90419, 16.99049, 16.55858, -93.67209, 21.4361, -76.03694, -0.72391, -31.37989, 8.21379, -30.29725, -24.90732, 16.177, -28.83566, 5.62575, 82.90021, -63.82897, 0, 0, -39.50021, -13.99932 ] + }, + { + "time": 0.6999, + "vertices": [ 0.20397, -12.34891, 0, 0, -2.37338, 21.17691, 20.63858, -116.75268, 26.71791, -94.77227, -0.90228, -39.11182, 10.23765, -37.76242, -31.04443, 20.16297, -35.9407, 7.01193, 22.68159, 24.72714, 0, 0, -292.39255, -342.79443 ] + }, + { "time": 0.8 } + ] + } + } + } + } +} +} \ No newline at end of file diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json.meta b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json.meta new file mode 100644 index 000000000..3e0b868cc --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f1532150c1933c944b8fee0311da4401 +timeCreated: 1479532177 +licenseType: Free +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset new file mode 100644 index 000000000..98cbf37b8 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f1b3b4b945939a54ea0b23d3396115fb, type: 3} + m_Name: stretchyman_SkeletonData + m_EditorClassIdentifier: + atlasAssets: + - {fileID: 11400000, guid: 19fcd9c1051e4304eb095fe0dd2ae4bf, type: 2} + scale: 0.01 + skeletonJSON: {fileID: 4900000, guid: f1532150c1933c944b8fee0311da4401, type: 3} + fromAnimation: [] + toAnimation: [] + duration: [] + defaultMix: 0 + controller: {fileID: 0} diff --git a/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset.meta b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset.meta new file mode 100644 index 000000000..4de4f8491 --- /dev/null +++ b/spine-unity/Assets/Examples/Spine/Strechyman/stretchyman_SkeletonData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 162719d41016c854abf0355feb0e14e8 +timeCreated: 1479531822 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/Examples/Spine/dragon.prefab b/spine-unity/Assets/Examples/Spine/dragon.prefab deleted file mode 100644 index 7c25866ff..000000000 --- a/spine-unity/Assets/Examples/Spine/dragon.prefab +++ /dev/null @@ -1,113 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &100000 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 400000} - - 33: {fileID: 3300000} - - 23: {fileID: 2300000} - - 114: {fileID: 11400000} - m_Layer: 0 - m_Name: dragon - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400000 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2300000 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - - {fileID: 2100000, guid: d58543c96f991934ca874395eb40222c, type: 2} - - {fileID: 2100000, guid: 3277fd5561d95724e83c6ca4a1dd28a4, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3300000 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Mesh: {fileID: 0} ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 76506fa7fbeed084ab2dfb084648c628, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 1 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: flying - loop: 1 - timeScale: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 100000} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/dragon.prefab.meta b/spine-unity/Assets/Examples/Spine/dragon.prefab.meta deleted file mode 100644 index ac5528add..000000000 --- a/spine-unity/Assets/Examples/Spine/dragon.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: d51ed5943e10bcb4394b5eec480293f8 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/eyes.prefab b/spine-unity/Assets/Examples/Spine/eyes.prefab deleted file mode 100644 index 42ef7d0d9..000000000 --- a/spine-unity/Assets/Examples/Spine/eyes.prefab +++ /dev/null @@ -1,102 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &100000 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 400000} - - 33: {fileID: 3300000} - - 23: {fileID: 2300000} - - 114: {fileID: 11400000} - m_Layer: 0 - m_Name: eyes - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400000 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2300000 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: 4f9d106a1e4d45b468b980311947a225, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3300000 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Mesh: {fileID: 0} ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: ef2f009a37ff7ff42bc2a2f407ca9483, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 0 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: - loop: 0 - timeScale: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 100000} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/eyes.prefab.meta b/spine-unity/Assets/Examples/Spine/eyes.prefab.meta deleted file mode 100644 index 9bbd5716e..000000000 --- a/spine-unity/Assets/Examples/Spine/eyes.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 370927d98ff6b024c96ea2935adb4efb -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/raptor.prefab b/spine-unity/Assets/Examples/Spine/raptor.prefab deleted file mode 100644 index bbab077da..000000000 --- a/spine-unity/Assets/Examples/Spine/raptor.prefab +++ /dev/null @@ -1,102 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &100000 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 400000} - - 33: {fileID: 3300000} - - 23: {fileID: 2300000} - - 114: {fileID: 11400000} - m_Layer: 0 - m_Name: raptor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400000 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2300000 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: 4e2feebfcaa26a54ab19f1ff3e0eae35, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3300000 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Mesh: {fileID: 0} ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 22c4b5e5a0fd9484d83b1aa705b9a54c, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 0 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: - loop: 0 - timeScale: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 100000} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/raptor.prefab.meta b/spine-unity/Assets/Examples/Spine/raptor.prefab.meta deleted file mode 100644 index 80943ffd6..000000000 --- a/spine-unity/Assets/Examples/Spine/raptor.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: 8179ddd20a15b8d4f85e42a9c6b3b319 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/Examples/Spine/spineboy.prefab b/spine-unity/Assets/Examples/Spine/spineboy.prefab deleted file mode 100644 index da53e35e7..000000000 --- a/spine-unity/Assets/Examples/Spine/spineboy.prefab +++ /dev/null @@ -1,102 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &100000 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 4 - m_Component: - - 4: {fileID: 400000} - - 33: {fileID: 3300000} - - 23: {fileID: 2300000} - - 114: {fileID: 11400000} - m_Layer: 0 - m_Name: spineboy - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &400000 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 ---- !u!23 &2300000 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: 4083cd422558e2540a62bbafb94f57b5, type: 2} - m_SubsetIndices: - m_StaticBatchRoot: {fileID: 0} - m_UseLightProbes: 0 - m_ReflectionProbeUsage: 1 - m_ProbeAnchor: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &3300000 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Mesh: {fileID: 0} ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 100000} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3} - m_Name: - m_EditorClassIdentifier: - skeletonDataAsset: {fileID: 11400000, guid: 44691b56ed7d1f04da0cbc2a52a91b8d, type: 2} - initialSkinName: default - separatorSlotNames: [] - zSpacing: 0 - renderMeshes: 1 - immutableTriangles: 0 - pmaVertexColors: 1 - calculateNormals: 0 - calculateTangents: 0 - logErrors: 0 - disableRenderingOnOverride: 1 - _animationName: - loop: 0 - timeScale: 1 ---- !u!1001 &100100000 -Prefab: - m_ObjectHideFlags: 1 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: [] - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 100000} - m_IsPrefabParent: 1 diff --git a/spine-unity/Assets/Examples/Spine/spineboy.prefab.meta b/spine-unity/Assets/Examples/Spine/spineboy.prefab.meta deleted file mode 100644 index e52d629c5..000000000 --- a/spine-unity/Assets/Examples/Spine/spineboy.prefab.meta +++ /dev/null @@ -1,4 +0,0 @@ -fileFormatVersion: 2 -guid: ed853f063cea77148a02e1760747f8d5 -NativeFormatImporter: - userData: diff --git a/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs b/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs index cdbe5f440..a8e370250 100644 --- a/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs +++ b/spine-unity/Assets/spine-unity/Asset Types/Editor/SkeletonDataAssetInspector.cs @@ -78,6 +78,7 @@ namespace Spine.Unity.Editor { GUIStyle activePlayButtonStyle, idlePlayButtonStyle; readonly GUIContent DefaultMixLabel = new GUIContent("Default Mix Duration", "Sets 'SkeletonDataAsset.defaultMix' in the asset and 'AnimationState.data.defaultMix' at runtime load time."); + void OnEnable () { SpineEditorUtilities.ConfirmInitialization(); @@ -122,9 +123,9 @@ namespace Spine.Unity.Editor { } override public void OnInspectorGUI () { - // Lazy initialization { - // Accessing EditorStyles values in OnEnable during a recompile causes UnityEditor to throw null exceptions. (Unity 5.3.5) + + // Lazy initialization because accessing EditorStyles values in OnEnable during a recompile causes UnityEditor to throw null exceptions. (Unity 5.3.5) idlePlayButtonStyle = idlePlayButtonStyle ?? new GUIStyle(EditorStyles.miniButton); if (activePlayButtonStyle == null) { activePlayButtonStyle = new GUIStyle(idlePlayButtonStyle); @@ -135,27 +136,33 @@ namespace Spine.Unity.Editor { serializedObject.Update(); EditorGUILayout.LabelField(new GUIContent(target.name + " (SkeletonDataAsset)", SpineEditorUtilities.Icons.spine), EditorStyles.whiteLargeLabel); + if (m_skeletonData != null) { + EditorGUILayout.LabelField("(Drag and Drop to instantiate.)", EditorStyles.miniLabel); + } EditorGUI.BeginChangeCheck(); // SkeletonData using (new SpineInspectorUtility.BoxScope()) { - EditorGUILayout.LabelField("SkeletonData", EditorStyles.boldLabel); + using (new EditorGUILayout.HorizontalScope()) { + EditorGUILayout.LabelField("SkeletonData", EditorStyles.boldLabel); +// if (m_skeletonData != null) { +// var sd = m_skeletonData; +// string m = string.Format("{8} - {0} {1}\nBones: {2}\tConstraints: {5} IK + {6} Path + {7} Transform\nSlots: {3}\t\tSkins: {4}\n", +// sd.Version, string.IsNullOrEmpty(sd.Version) ? "" : "export", sd.Bones.Count, sd.Slots.Count, sd.Skins.Count, sd.IkConstraints.Count, sd.PathConstraints.Count, sd.TransformConstraints.Count, skeletonJSON.objectReferenceValue.name); +// EditorGUILayout.LabelField(new GUIContent("SkeletonData"), new GUIContent("+", m), EditorStyles.boldLabel); +// } + } + EditorGUILayout.PropertyField(skeletonJSON, new GUIContent(skeletonJSON.displayName, SpineEditorUtilities.Icons.spine)); EditorGUILayout.PropertyField(scale); - -// if (m_skeletonData != null) { -// var sd = m_skeletonData; -// using (new GUILayout.HorizontalScope()) { -// GUILayout.Space(15f); -// GUILayout.Label( -// string.Format("{8} - {0} {1}\nBones: {2}\tConstraints: {5} IK + {6} Path + {7} Transform\nSlots: {3}\t\tSkins: {4}\n", -// sd.Version, string.IsNullOrEmpty(sd.Version) ? "" : "export", sd.Bones.Count, sd.Slots.Count, sd.Skins.Count, sd.IkConstraints.Count, sd.PathConstraints.Count, sd.TransformConstraints.Count, skeletonJSON.objectReferenceValue.name), -// SpineInspectorUtility.GrayMiniLabel); -// } -// } } +// if (m_skeletonData != null) { +// if (SpineInspectorUtility.CenteredButton(new GUIContent("Instantiate", SpineEditorUtilities.Icons.spine, "Creates a new Spine GameObject in the active scene using this Skeleton Data.\nYou can also instantiate by dragging the SkeletonData asset from Project view into Scene View."))) +// SpineEditorUtilities.ShowInstantiateContextMenu(this.m_skeletonDataAsset, Vector3.zero); +// } + // Atlas using (new SpineInspectorUtility.BoxScope()) { EditorGUILayout.LabelField("Atlas", EditorStyles.boldLabel); @@ -186,7 +193,8 @@ namespace Spine.Unity.Editor { // If m_skeletonAnimation is lazy-instantiated elsewhere, this can cause contents to change between Layout and Repaint events, causing GUILayout control count errors. InitPreview(); if (m_skeletonData != null) { - + GUILayout.Space(20f); + using (new SpineInspectorUtility.BoxScope()) { EditorGUILayout.LabelField("Mix Settings", EditorStyles.boldLabel); DrawAnimationStateInfo(); diff --git a/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs b/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs index e363cd87e..a962b7863 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs @@ -322,17 +322,21 @@ namespace Spine.Unity.Editor { [CustomPropertyDrawer(typeof(SpineAtlasRegion))] public class SpineAtlasRegionDrawer : PropertyDrawer { - Component component; SerializedProperty atlasProp; + protected SpineAtlasRegion TargetAttribute { get { return (SpineAtlasRegion)attribute; } } + public override void OnGUI (Rect position, SerializedProperty property, GUIContent label) { if (property.propertyType != SerializedPropertyType.String) { EditorGUI.LabelField(position, "ERROR:", "May only apply to type string"); return; } + + string atlasAssetFieldName = TargetAttribute.atlasAssetField; + if (string.IsNullOrEmpty(atlasAssetFieldName)) + atlasAssetFieldName = "atlasAsset"; - component = (Component)property.serializedObject.targetObject; - atlasProp = component != null ? property.serializedObject.FindProperty("atlasAsset") : null; + atlasProp = property.serializedObject.FindProperty(atlasAssetFieldName); if (atlasProp == null) { EditorGUI.LabelField(position, "ERROR:", "Must have AtlasAsset variable!"); diff --git a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs index f4301d9ba..261227738 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineEditorUtilities.cs @@ -321,48 +321,51 @@ namespace Spine.Unity.Editor { Plane plane = (rectTransform == null) ? new Plane(Vector3.back, Vector3.zero) : new Plane(-rectTransform.forward, rectTransform.position); Vector3 spawnPoint = MousePointToWorldPoint2D(mousePos, sceneview.camera, plane); - var menu = new GenericMenu(); - // SkeletonAnimation - menu.AddItem(new GUIContent("SkeletonAnimation"), false, HandleSkeletonComponentDrop, new SpawnMenuData { - skeletonDataAsset = skeletonDataAsset, - spawnPoint = spawnPoint, - instantiateDelegate = (data) => InstantiateSkeletonAnimation(data), - isUI = false - }); - - // SkeletonGraphic - var skeletonGraphicInspectorType = System.Type.GetType("Spine.Unity.Editor.SkeletonGraphicInspector"); - if (skeletonGraphicInspectorType != null) { - var graphicInstantiateDelegate = skeletonGraphicInspectorType.GetMethod("SpawnSkeletonGraphicFromDrop", BindingFlags.Static | BindingFlags.Public); - if (graphicInstantiateDelegate != null) - menu.AddItem(new GUIContent("SkeletonGraphic (UI)"), false, HandleSkeletonComponentDrop, new SpawnMenuData { - skeletonDataAsset = skeletonDataAsset, - spawnPoint = spawnPoint, - instantiateDelegate = System.Delegate.CreateDelegate(typeof(InstantiateDelegate), graphicInstantiateDelegate) as InstantiateDelegate, - isUI = true - }); - } - - - #if SPINE_SKELETONANIMATOR - menu.AddSeparator(""); - // SkeletonAnimator - menu.AddItem(new GUIContent("SkeletonAnimator"), false, HandleSkeletonComponentDrop, new SpawnMenuData { - skeletonDataAsset = skeletonDataAsset, - spawnPoint = spawnPoint, - instantiateDelegate = (data) => InstantiateSkeletonAnimator(data) - }); - #endif - - menu.ShowAsContext(); + ShowInstantiateContextMenu(skeletonDataAsset, spawnPoint); } } - } } } + public static void ShowInstantiateContextMenu (SkeletonDataAsset skeletonDataAsset, Vector3 spawnPoint) { + var menu = new GenericMenu(); + + // SkeletonAnimation + menu.AddItem(new GUIContent("SkeletonAnimation"), false, HandleSkeletonComponentDrop, new SpawnMenuData { + skeletonDataAsset = skeletonDataAsset, + spawnPoint = spawnPoint, + instantiateDelegate = (data) => InstantiateSkeletonAnimation(data), + isUI = false + }); + + // SkeletonGraphic + var skeletonGraphicInspectorType = System.Type.GetType("Spine.Unity.Editor.SkeletonGraphicInspector"); + if (skeletonGraphicInspectorType != null) { + var graphicInstantiateDelegate = skeletonGraphicInspectorType.GetMethod("SpawnSkeletonGraphicFromDrop", BindingFlags.Static | BindingFlags.Public); + if (graphicInstantiateDelegate != null) + menu.AddItem(new GUIContent("SkeletonGraphic (UI)"), false, HandleSkeletonComponentDrop, new SpawnMenuData { + skeletonDataAsset = skeletonDataAsset, + spawnPoint = spawnPoint, + instantiateDelegate = System.Delegate.CreateDelegate(typeof(InstantiateDelegate), graphicInstantiateDelegate) as InstantiateDelegate, + isUI = true + }); + } + + #if SPINE_SKELETONANIMATOR + menu.AddSeparator(""); + // SkeletonAnimator + menu.AddItem(new GUIContent("SkeletonAnimator"), false, HandleSkeletonComponentDrop, new SpawnMenuData { + skeletonDataAsset = skeletonDataAsset, + spawnPoint = spawnPoint, + instantiateDelegate = (data) => InstantiateSkeletonAnimator(data) + }); + #endif + + menu.ShowAsContext(); + } + public static void HandleSkeletonComponentDrop (object menuData) { var data = (SpawnMenuData)menuData; @@ -379,7 +382,7 @@ namespace Spine.Unity.Editor { var transform = newGameObject.transform; var activeGameObject = Selection.activeGameObject; - if (activeGameObject != null) + if (isUI && activeGameObject != null) transform.SetParent(activeGameObject.transform, false); newGameObject.transform.position = isUI ? data.spawnPoint : RoundVector(data.spawnPoint, 2); diff --git a/spine-unity/Assets/spine-unity/Editor/SpineInspectorUtility.cs b/spine-unity/Assets/spine-unity/Editor/SpineInspectorUtility.cs index 57bdd4a0c..427cff43f 100644 --- a/spine-unity/Assets/spine-unity/Editor/SpineInspectorUtility.cs +++ b/spine-unity/Assets/spine-unity/Editor/SpineInspectorUtility.cs @@ -169,6 +169,21 @@ namespace Spine.Unity.Editor { return GUILayout.Button(content, GUILayout.MaxWidth(CenterButtonMaxWidth), GUILayout.Height(CenterButtonHeight)); } } + + public static bool CenteredButton (GUIContent content, float height = 20f, bool sideSpace = true) { + if (sideSpace) { + bool clicked; + using (new EditorGUILayout.HorizontalScope()) { + EditorGUILayout.Space(); + clicked = GUILayout.Button(content, GUILayout.MaxWidth(CenterButtonMaxWidth), GUILayout.Height(height)); + EditorGUILayout.Space(); + } + EditorGUILayout.Space(); + return clicked; + } else { + return GUILayout.Button(content, GUILayout.MaxWidth(CenterButtonMaxWidth), GUILayout.Height(height)); + } + } #endregion #region Multi-Editing Helpers diff --git a/spine-unity/Assets/spine-unity/Modules/AtlasRegionAttacher.cs b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AtlasRegionAttacher.cs similarity index 80% rename from spine-unity/Assets/spine-unity/Modules/AtlasRegionAttacher.cs rename to spine-unity/Assets/spine-unity/Modules/AttachmentTools/AtlasRegionAttacher.cs index 95db51cf0..f301014f1 100644 --- a/spine-unity/Assets/spine-unity/Modules/AtlasRegionAttacher.cs +++ b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AtlasRegionAttacher.cs @@ -1,80 +1,72 @@ -/****************************************************************************** - * Spine Runtimes Software License v2.5 - * - * Copyright (c) 2013-2016, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable, and - * non-transferable license to use, install, execute, and perform the Spine - * Runtimes software and derivative works solely for personal or internal - * use. Without the written permission of Esoteric Software (see Section 2 of - * the Spine Software License Agreement), you may not (a) modify, translate, - * adapt, or develop new applications using the Spine Runtimes or otherwise - * create derivative works or improvements of the Spine Runtimes or (b) remove, - * delete, alter, or obscure any trademarks or any copyright, trademark, patent, - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using UnityEngine; -using System.Collections; -using Spine; - -namespace Spine.Unity.Modules { - public class AtlasRegionAttacher : MonoBehaviour { - - [System.Serializable] - public class SlotRegionPair { - [SpineSlot] - public string slot; - - [SpineAtlasRegion] - public string region; - } - - public AtlasAsset atlasAsset; - public SlotRegionPair[] attachments; - - Atlas atlas; - - void Awake () { - GetComponent().OnRebuild += Apply; - } - - - void Apply (SkeletonRenderer skeletonRenderer) { - atlas = atlasAsset.GetAtlas(); - - AtlasAttachmentLoader loader = new AtlasAttachmentLoader(atlas); - - float scaleMultiplier = skeletonRenderer.skeletonDataAsset.scale; - - var enumerator = attachments.GetEnumerator(); - while (enumerator.MoveNext()) { - var entry = (SlotRegionPair)enumerator.Current; - var regionAttachment = loader.NewRegionAttachment(null, entry.region, entry.region); - regionAttachment.Width = regionAttachment.RegionOriginalWidth * scaleMultiplier; - regionAttachment.Height = regionAttachment.RegionOriginalHeight * scaleMultiplier; - - regionAttachment.SetColor(new Color(1, 1, 1, 1)); - regionAttachment.UpdateOffset(); - - var slot = skeletonRenderer.skeleton.FindSlot(entry.slot); - slot.Attachment = regionAttachment; - } - } - - } -} +/****************************************************************************** + * Spine Runtimes Software License v2.5 + * + * Copyright (c) 2013-2016, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable, and + * non-transferable license to use, install, execute, and perform the Spine + * Runtimes software and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using UnityEngine; +using System.Collections; +using Spine; +using Spine.Unity.Modules.AttachmentTools; + +namespace Spine.Unity.Modules { + public class AtlasRegionAttacher : MonoBehaviour { + + [System.Serializable] + public class SlotRegionPair { + [SpineSlot] + public string slot; + + [SpineAtlasRegion] + public string region; + } + + public AtlasAsset atlasAsset; + public SlotRegionPair[] attachments; + + Atlas atlas; + + void Awake () { + GetComponent().OnRebuild += Apply; + } + + void Apply (SkeletonRenderer skeletonRenderer) { + atlas = atlasAsset.GetAtlas(); + float scale = skeletonRenderer.skeletonDataAsset.scale; + + var enumerator = attachments.GetEnumerator(); + while (enumerator.MoveNext()) { + var entry = (SlotRegionPair)enumerator.Current; + + var slot = skeletonRenderer.skeleton.FindSlot(entry.slot); + var region = atlas.FindRegion(entry.region); + slot.Attachment = region.ToRegionAttachment(entry.region, scale); + } + } + + } +} diff --git a/spine-unity/Assets/spine-unity/Modules/AtlasRegionAttacher.cs.meta b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AtlasRegionAttacher.cs.meta similarity index 100% rename from spine-unity/Assets/spine-unity/Modules/AtlasRegionAttacher.cs.meta rename to spine-unity/Assets/spine-unity/Modules/AttachmentTools/AtlasRegionAttacher.cs.meta diff --git a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs index 681546923..09d7e3c08 100644 --- a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs +++ b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/AttachmentTools.cs @@ -146,12 +146,6 @@ namespace Spine.Unity.Modules.AttachmentTools { // (AtlasAttachmentLoader.cs) var attachment = new RegionAttachment(attachmentName); - attachment.scaleX = 1; - attachment.scaleY = 1; - attachment.SetColor(Color.white); - attachment.width = region.width * scale; - attachment.height = region.height * scale; - attachment.RendererObject = region; attachment.SetUVs(region.u, region.v, region.u2, region.v2, region.rotate); attachment.regionOffsetX = region.offsetX; @@ -161,9 +155,48 @@ namespace Spine.Unity.Modules.AttachmentTools { attachment.regionOriginalWidth = region.originalWidth; attachment.regionOriginalHeight = region.originalHeight; + attachment.Path = region.name; + attachment.scaleX = 1; + attachment.scaleY = 1; + attachment.rotation = 0; + + // pass OriginalWidth and OriginalHeight because UpdateOffset uses it in its calculation. + attachment.width = attachment.regionOriginalWidth * scale; + attachment.height = attachment.regionOriginalHeight * scale; + + attachment.SetColor(Color.white); attachment.UpdateOffset(); return attachment; } + + ///

Sets the scale. Call regionAttachment.UpdateOffset to apply the change. + public static void SetScale (this RegionAttachment regionAttachment, Vector2 scale) { + regionAttachment.scaleX = scale.x; + regionAttachment.scaleY = scale.y; + } + + /// Sets the scale. Call regionAttachment.UpdateOffset to apply the change. + public static void SetScale (this RegionAttachment regionAttachment, float x, float y) { + regionAttachment.scaleX = x; + regionAttachment.scaleY = y; + } + + /// Sets the position offset. Call regionAttachment.UpdateOffset to apply the change. + public static void SetPositionOffset (this RegionAttachment regionAttachment, Vector2 offset) { + regionAttachment.x = offset.x; + regionAttachment.y = offset.y; + } + + /// Sets the position offset. Call regionAttachment.UpdateOffset to apply the change. + public static void SetPositionOffset (this RegionAttachment regionAttachment, float x, float y) { + regionAttachment.x = x; + regionAttachment.y = y; + } + + /// Sets the rotation. Call regionAttachment.UpdateOffset to apply the change. + public static void SetRotation (this RegionAttachment regionAttachment, float rotation) { + regionAttachment.rotation = rotation; + } #endregion } @@ -265,9 +298,9 @@ namespace Spine.Unity.Modules.AttachmentTools { /// /// Creates and populates a duplicate skin with cloned attachments that are backed by a new packed texture atlas comprised of all the regions from the original skin. /// No Spine.Atlas object is created so there is no way to find AtlasRegions except through the Attachments using them. - public static Skin GetRepackedSkin (this Skin o, string skinName, Shader shader, out Material m, out Texture2D t, int maxAtlasSize = 1024, int padding = 2) { + public static Skin GetRepackedSkin (this Skin o, string newName, Shader shader, out Material m, out Texture2D t, int maxAtlasSize = 1024, int padding = 2) { var skinAttachments = o.Attachments; - var newSkin = new Skin(skinName); + var newSkin = new Skin(newName); var repackedAttachments = new List(); var texturesToPack = new List(); @@ -282,14 +315,14 @@ namespace Spine.Unity.Modules.AttachmentTools { } var newTexture = new Texture2D(maxAtlasSize, maxAtlasSize); - newTexture.name = skinName; + newTexture.name = newName; var rects = newTexture.PackTextures(texturesToPack.ToArray(), padding, maxAtlasSize); var newMaterial = new Material(shader); - newMaterial.name = skinName; + newMaterial.name = newName; newMaterial.mainTexture = newTexture; var page = newMaterial.ToSpineAtlasPage(); - page.name = skinName; + page.name = newName; for (int i = 0, n = repackedAttachments.Count; i < n; i++) { var a = repackedAttachments[i]; @@ -308,13 +341,11 @@ namespace Spine.Unity.Modules.AttachmentTools { return Sprite.Create(ar.GetMainTexture(), ar.GetUnityRect(), new Vector2(0.5f, 0.5f), pixelsPerUnit); } - static Texture2D ToTexture (this AtlasRegion ar, bool applyImmediately = true) { + internal static Texture2D ToTexture (this AtlasRegion ar, bool applyImmediately = true) { Texture2D sourceTexture = ar.GetMainTexture(); - - Texture2D output = new Texture2D(ar.width, ar.height); - output.name = ar.name; - Rect r = ar.GetUnityRect(sourceTexture.height); + Texture2D output = new Texture2D((int)r.width, (int)r.height); + output.name = ar.name; Color[] pixelBuffer = sourceTexture.GetPixels((int)r.x, (int)r.y, (int)r.width, (int)r.height); output.SetPixels(pixelBuffer); @@ -327,7 +358,7 @@ namespace Spine.Unity.Modules.AttachmentTools { static Texture2D ToTexture (this Sprite s, bool applyImmediately = true) { var spriteTexture = s.texture; var r = s.textureRect; - var spritePixels = spriteTexture.GetPixels((int)r.x, (int)r.y, (int)r.width, (int)r.height); // TODO: Test + var spritePixels = spriteTexture.GetPixels((int)r.x, (int)r.y, (int)r.width, (int)r.height); var newTexture = new Texture2D((int)r.width, (int)r.height); newTexture.SetPixels(spritePixels); @@ -363,8 +394,11 @@ namespace Spine.Unity.Modules.AttachmentTools { /// /// Returns a Rect of the AtlasRegion according to Spine texture coordinates. (x-right, y-down) - static Rect GetSpineAtlasRect (this AtlasRegion region) { - return new Rect(region.x, region.y, region.width, region.height); + static Rect GetSpineAtlasRect (this AtlasRegion region, bool includeRotate = true) { + if (includeRotate && region.rotate) + return new Rect(region.x, region.y, region.height, region.width); + else + return new Rect(region.x, region.y, region.width, region.height); } /// @@ -484,7 +518,9 @@ namespace Spine.Unity.Modules.AttachmentTools { if (includeDefaultSkin) defaultSkin.CopyTo(newSkin, true, cloneAttachments, cloneMeshesAsLinked); - activeSkin.CopyTo(newSkin, true, cloneAttachments, cloneMeshesAsLinked); + + if (activeSkin != null) + activeSkin.CopyTo(newSkin, true, cloneAttachments, cloneMeshesAsLinked); return newSkin; } diff --git a/spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs new file mode 100644 index 000000000..bfcec6cda --- /dev/null +++ b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs @@ -0,0 +1,112 @@ +/****************************************************************************** + * Spine Runtimes Software License v2.5 + * + * Copyright (c) 2013-2016, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable, and + * non-transferable license to use, install, execute, and perform the Spine + * Runtimes software and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +// Contributed by: Mitch Thompson + +using UnityEngine; +using System.Collections.Generic; +using Spine.Unity.Modules.AttachmentTools; + +namespace Spine.Unity.Modules { + public class SpriteAttacher : MonoBehaviour { + public const string DefaultPMAShader = "Spine/Skeleton"; + public const string DefaultStraightAlphaShader = "Sprites/Default"; + + #region Inspector + public bool attachOnStart = true; + public Sprite sprite; + [SpineSlot] public string slot; + #endregion + + RegionAttachment attachment; + bool applyPMA; + + Dictionary atlasPageCache = new Dictionary(); + AtlasPage GetPageFor (Texture texture, Shader shader) { + AtlasPage atlasPage; + atlasPageCache.TryGetValue(texture, out atlasPage); + if (atlasPage == null) { + var newMaterial = new Material(shader); + atlasPage = newMaterial.ToSpineAtlasPage(); + atlasPageCache[texture] = atlasPage; + } + return atlasPage; + } + + void Start () { + if (attachOnStart) Attach(); + } + + public void Attach () { + var skeletonComponent = GetComponent(); + var skeletonRenderer = skeletonComponent as SkeletonRenderer; + if (skeletonRenderer != null) + this.applyPMA = skeletonRenderer.pmaVertexColors; + else { + var skeletonGraphic = skeletonComponent as SkeletonGraphic; + if (skeletonGraphic != null) + this.applyPMA = skeletonGraphic.SpineMeshGenerator.PremultiplyVertexColors; + } + + Shader attachmentShader = applyPMA ? Shader.Find(DefaultPMAShader) : Shader.Find(DefaultStraightAlphaShader); + attachment = applyPMA ? sprite.ToRegionAttachmentPMAClone(attachmentShader) : sprite.ToRegionAttachment(GetPageFor(sprite.texture, attachmentShader)); + skeletonComponent.Skeleton.FindSlot(slot).Attachment = attachment; + } + } + + public static class SpriteAttachmentExtensions { + public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) { + return skeleton.AttachUnitySprite(slotName, sprite, Shader.Find(shaderName), applyPMA); + } + + public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName = "", string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) { + return skeletonData.AddUnitySprite(slotName, sprite, skinName, Shader.Find(shaderName), applyPMA); + } + + public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, Shader shader, bool applyPMA) { + RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader) : sprite.ToRegionAttachment(new Material(shader)); + skeleton.FindSlot(slotName).Attachment = att; + return att; + } + + public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName, Shader shader, bool applyPMA) { + RegionAttachment att = applyPMA ? sprite.ToRegionAttachmentPMAClone(shader) : sprite.ToRegionAttachment(new Material(shader)); + + var slotIndex = skeletonData.FindSlotIndex(slotName); + Skin skin = skeletonData.defaultSkin; + if (skinName != "") + skin = skeletonData.FindSkin(skinName); + + skin.AddAttachment(slotIndex, att.Name, att); + + return att; + } + } +} diff --git a/spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs.meta b/spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs.meta similarity index 100% rename from spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs.meta rename to spine-unity/Assets/spine-unity/Modules/AttachmentTools/SpriteAttacher.cs.meta diff --git a/spine-unity/Assets/spine-unity/Modules/CustomSkin.meta b/spine-unity/Assets/spine-unity/Modules/CustomSkin.meta new file mode 100644 index 000000000..3ddb7300b --- /dev/null +++ b/spine-unity/Assets/spine-unity/Modules/CustomSkin.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8a12beee9c82d2b44910dca725d9bfed +folderAsset: yes +timeCreated: 1480099262 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Assets/spine-unity/Modules/CustomSkin.cs b/spine-unity/Assets/spine-unity/Modules/CustomSkin/CustomSkin.cs similarity index 97% rename from spine-unity/Assets/spine-unity/Modules/CustomSkin.cs rename to spine-unity/Assets/spine-unity/Modules/CustomSkin/CustomSkin.cs index f175015ac..319c4837a 100644 --- a/spine-unity/Assets/spine-unity/Modules/CustomSkin.cs +++ b/spine-unity/Assets/spine-unity/Modules/CustomSkin/CustomSkin.cs @@ -1,83 +1,83 @@ -/****************************************************************************** - * Spine Runtimes Software License v2.5 - * - * Copyright (c) 2013-2016, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable, and - * non-transferable license to use, install, execute, and perform the Spine - * Runtimes software and derivative works solely for personal or internal - * use. Without the written permission of Esoteric Software (see Section 2 of - * the Spine Software License Agreement), you may not (a) modify, translate, - * adapt, or develop new applications using the Spine Runtimes or otherwise - * create derivative works or improvements of the Spine Runtimes or (b) remove, - * delete, alter, or obscure any trademarks or any copyright, trademark, patent, - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -using UnityEngine; -using Spine; -using Spine.Unity; - -namespace Spine.Unity.Modules { - public class CustomSkin : MonoBehaviour { - - [System.Serializable] - public class SkinPair { - /// SpineAttachment attachment path to help find the attachment. - /// This use of SpineAttachment generates an attachment path string that can only be used by SpineAttachment.GetAttachment. - [SpineAttachment(currentSkinOnly: false, returnAttachmentPath: true, dataField: "skinSource")] - [UnityEngine.Serialization.FormerlySerializedAs("sourceAttachment")] - public string sourceAttachmentPath; - - [SpineSlot] - public string targetSlot; - - /// The name of the skin placeholder/skin dictionary entry this attachment should be associated with. - /// This name is used by the skin dictionary, used in the method Skin.AddAttachment as well as setting a slot attachment - [SpineAttachment(currentSkinOnly: true, placeholdersOnly: true)] - public string targetAttachment; - } - - #region Inspector - public SkeletonDataAsset skinSource; - - [UnityEngine.Serialization.FormerlySerializedAs("skinning")] - public SkinPair[] skinItems; - - public Skin customSkin; - #endregion - - SkeletonRenderer skeletonRenderer; - - void Start () { - skeletonRenderer = GetComponent(); - Skeleton skeleton = skeletonRenderer.skeleton; - - customSkin = new Skin("CustomSkin"); - - foreach (var pair in skinItems) { - var attachment = SpineAttachment.GetAttachment(pair.sourceAttachmentPath, skinSource); - customSkin.AddAttachment(skeleton.FindSlotIndex(pair.targetSlot), pair.targetAttachment, attachment); - } - - // The custom skin does not need to be added to the skeleton data for it to work. - // But it's useful for your script to keep a reference to it. - skeleton.SetSkin(customSkin); - } - } - -} +/****************************************************************************** + * Spine Runtimes Software License v2.5 + * + * Copyright (c) 2013-2016, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable, and + * non-transferable license to use, install, execute, and perform the Spine + * Runtimes software and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +using UnityEngine; +using Spine; +using Spine.Unity; + +namespace Spine.Unity.Modules { + public class CustomSkin : MonoBehaviour { + + [System.Serializable] + public class SkinPair { + /// SpineAttachment attachment path to help find the attachment. + /// This use of SpineAttachment generates an attachment path string that can only be used by SpineAttachment.GetAttachment. + [SpineAttachment(currentSkinOnly: false, returnAttachmentPath: true, dataField: "skinSource")] + [UnityEngine.Serialization.FormerlySerializedAs("sourceAttachment")] + public string sourceAttachmentPath; + + [SpineSlot] + public string targetSlot; + + /// The name of the skin placeholder/skin dictionary entry this attachment should be associated with. + /// This name is used by the skin dictionary, used in the method Skin.AddAttachment as well as setting a slot attachment + [SpineAttachment(currentSkinOnly: true, placeholdersOnly: true)] + public string targetAttachment; + } + + #region Inspector + public SkeletonDataAsset skinSource; + + [UnityEngine.Serialization.FormerlySerializedAs("skinning")] + public SkinPair[] skinItems; + + public Skin customSkin; + #endregion + + SkeletonRenderer skeletonRenderer; + + void Start () { + skeletonRenderer = GetComponent(); + Skeleton skeleton = skeletonRenderer.skeleton; + + customSkin = new Skin("CustomSkin"); + + foreach (var pair in skinItems) { + var attachment = SpineAttachment.GetAttachment(pair.sourceAttachmentPath, skinSource); + customSkin.AddAttachment(skeleton.FindSlotIndex(pair.targetSlot), pair.targetAttachment, attachment); + } + + // The custom skin does not need to be added to the skeleton data for it to work. + // But it's useful for your script to keep a reference to it. + skeleton.SetSkin(customSkin); + } + } + +} diff --git a/spine-unity/Assets/spine-unity/Modules/CustomSkin.cs.meta b/spine-unity/Assets/spine-unity/Modules/CustomSkin/CustomSkin.cs.meta similarity index 100% rename from spine-unity/Assets/spine-unity/Modules/CustomSkin.cs.meta rename to spine-unity/Assets/spine-unity/Modules/CustomSkin/CustomSkin.cs.meta diff --git a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/Editor/SpineSpriteShaderGUI.cs b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/Editor/SpineSpriteShaderGUI.cs index 42377ac29..43d368d05 100644 --- a/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/Editor/SpineSpriteShaderGUI.cs +++ b/spine-unity/Assets/spine-unity/Modules/Shaders/Sprite/Editor/SpineSpriteShaderGUI.cs @@ -267,7 +267,7 @@ public class SpineSpriteShaderGUI : ShaderGUI { protected virtual void RenderTextureProperties (string label, Material material) { if (showAdvanced) Heading(label); - + _materialEditor.TexturePropertySingleLine(new GUIContent(showAdvanced ? "Albedo" : "Main Texture"), _mainTexture, _color); if (_bumpMap != null) @@ -291,15 +291,6 @@ public class SpineSpriteShaderGUI : ShaderGUI { // _materialEditor.TextureScaleOffsetProperty(_mainTexture); } - protected virtual void RenderDepthProperties (string label, Material material) { - - - } - - protected virtual void RenderNormalsProperties (string label, Material material) { - - } - bool UseMeshNormalsCheckbox (Material material) { EditorGUI.BeginChangeCheck(); bool fixedNormals = material.IsKeywordEnabled("_FIXED_NORMALS"); diff --git a/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/SkeletonGraphicDefault.mat b/spine-unity/Assets/spine-unity/Modules/SkeletonGraphic/Shaders/SkeletonGraphicDefault.mat index 132bc088e31f4d525200bb63da1b985850a15bd1..a8d591f48c45f696c96c0a07fc8dd4d47c3a2245 100644 GIT binary patch literal 3004 zcmd5;!BX2W5WVLs)B`;w8QTyh_!bhNOfgUlblOWsw%3k|EO{iEk~01GuH`_%;6Qrl zI0sE^>Fs-dyIN`M+ax$4?$GURT~3b3hw=k4H1kWr%yK&!#xn1Fj_dlp!C+9$dM^3s zxlZ-#1=N6Il>0qGwEf3^L2?aBGbwzsi?8$fS@Z*9^NA&J$Z4j1;@H>c3Q`)KQw74* zOMG&lG7iTxT=M(Lnqz@10$E%3ByyUQOQl z#O;$Mj+NH>hgnTi4W^!U?6l1pA#G}AU?}4g9zi0zrYfNNrc*YZN|jUI9h(kvrmH>O z9Yq0U0(U`2vKC-*bI#%;F17BCNoR4)%WmZj8$LQk@BY6@`TUSeYTnT_ZRdMlS;V!^ zZOv^exl}K^2yv^^puHzfOC!^?!Q>3rgX%{5*daC-JJV*Lj0viDyD?K!Lp~%dlfnJ}!hoWqNoS{=6xNT_&Zd`B4)hFWuIG# zYRpvTjpLk*--A1AqN2=PYdTxqyEp73Hp zr<`r}rQfZ}23wuJd~P@O8|}ibY2fei!ihJg%#M*A>ErFGEyE8dY+FFQV_`rXF(8h0 Fz&}n(Dz^Xt literal 5060 zcmeI0ONjA=8`s9Tz(?W+wrpG&!ubF9R^RE{GYKnqeI{q>-mlI*bskln zTO~5|waCV+B65$&y*P;M8Qnd)Yi_69URqkppF+7H)hnb@SrZ3!95z zd7K=?k@BiY3i~BJNkww_`=(FQOF2pV0qMtRPS#@lEBJaG^P1B-FMqDI$k1=LEyhm1x=K;&zx@{(h zu%0{6N7jvgwh*S|{kkt-WPGdT15UmVf}4B?oxW@%*E;C*5X#ef!{RPbo@4WvG za!7Z+hX_-0H{XKgZocD|yZKIlua@s5xmGt{{*D?xAg2%k^W|^n5va%r&JF51{EHdu za1@&B;I}gVRu{jW@nc<_7o(r!883Q?ihM7S>FFfeH&OMIFq&9MR3rAo#(t@nC;dPj z9minWOKKQsyHd@os)(n}$PSLF#gD?M8Uq~n=W9vbYfc8PfExy$bXy(5pbN0=)|SZx!IHTj`7nR1!80M_#k$SH{(x z*9sD|b&~zu6dB>`_hr8GLe@gLwJsMuzkyu>*|MbAIZ};iyF;ydlUor-Tsv;f%Ht~W z{NU{{s(Zm5?D?vJom1omfwyo6TfTairz(}8#l6=GW1Mwk(Y`0@e!Qx=Ys->kaTmS# z3}&6;+IHkP7Mxbqa78Gt{RX%y7g3WS@GFOdFpgI&fQ7q;ul4LtxfE3n1=tf}OdHL{ z<7Al$UeI7yXeHs?9F2@kyQToczkRh&+r0ly>6B+rl~jfHf)@wOi(!=!P;@Tsx)@~c#}c;J z6+a--J|wqbLOpKHpq lv6?+P7Bp*KA@I!w`1y;Uc*^bjNv{KNB+J>JYxmR~{{u59JkJ0C diff --git a/spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs b/spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs deleted file mode 100644 index 5f01c47f1..000000000 --- a/spine-unity/Assets/spine-unity/Modules/SpriteAttacher.cs +++ /dev/null @@ -1,261 +0,0 @@ -/****************************************************************************** - * Spine Runtimes Software License v2.5 - * - * Copyright (c) 2013-2016, Esoteric Software - * All rights reserved. - * - * You are granted a perpetual, non-exclusive, non-sublicensable, and - * non-transferable license to use, install, execute, and perform the Spine - * Runtimes software and derivative works solely for personal or internal - * use. Without the written permission of Esoteric Software (see Section 2 of - * the Spine Software License Agreement), you may not (a) modify, translate, - * adapt, or develop new applications using the Spine Runtimes or otherwise - * create derivative works or improvements of the Spine Runtimes or (b) remove, - * delete, alter, or obscure any trademarks or any copyright, trademark, patent, - * or other intellectual property or proprietary rights notices on or in the - * Software, including any copy thereof. Redistributions in binary or source - * form must include this license and terms. - * - * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "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 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 THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -// Contributed by: Mitch Thompson - -using UnityEngine; -using System.Collections.Generic; -using Spine; - -namespace Spine.Unity.Modules { - public class SpriteAttacher : MonoBehaviour { - public const string DefaultPMAShader = "Spine/Skeleton"; - public const string DefaultStraightAlphaShader = "Sprites/Default"; - - #region Inspector - public bool attachOnStart = true; - public bool keepLoaderInMemory = true; - public Sprite sprite; - - [SpineSlot] - public string slot; - #endregion - - private SpriteAttachmentLoader loader; - private RegionAttachment attachment; - private bool applyPMA; - - void Start () { - if (attachOnStart) - Attach(); - } - - public void Attach () { - var skeletonComponent = GetComponent(); - - var skeletonRenderer = skeletonComponent as SkeletonRenderer; - if (skeletonRenderer != null) - this.applyPMA = skeletonRenderer.pmaVertexColors; - else { - var skeletonGraphic = skeletonComponent as SkeletonGraphic; - if (skeletonGraphic != null) - this.applyPMA = skeletonGraphic.SpineMeshGenerator.PremultiplyVertexColors; - } - - Shader attachmentShader = applyPMA ? Shader.Find(DefaultPMAShader) : Shader.Find(DefaultStraightAlphaShader); - - loader = loader ?? new SpriteAttachmentLoader(sprite, attachmentShader, applyPMA); - - if (attachment == null) - attachment = loader.NewRegionAttachment(null, sprite.name, ""); - - skeletonComponent.Skeleton.FindSlot(slot).Attachment = attachment; - - if (!keepLoaderInMemory) - loader = null; - } - } - - public class SpriteAttachmentLoader : AttachmentLoader { - //IMPORTANT: Make sure you clear this when you don't need it anymore. Goodluck. - static public Dictionary atlasTable = new Dictionary(); - - static public List premultipliedAtlasIds = new List(); - - Sprite sprite; - Shader shader; - //bool applyPMA; - - public SpriteAttachmentLoader (Sprite sprite, Shader shader, bool applyPMA) { - if (sprite.packed && sprite.packingMode == SpritePackingMode.Tight) { - Debug.LogError("Tight Packer Policy not supported yet!"); - return; - } - - this.sprite = sprite; - this.shader = shader; - //this.applyPMA = applyPMA; - - if (applyPMA) { - try { - Texture2D texture = sprite.texture; - int instanceId = texture.GetInstanceID(); - if (!premultipliedAtlasIds.Contains(instanceId)) { - var colors = texture.GetPixels(); - Color c; - float a; - for (int i = 0; i < colors.Length; i++) { - c = colors[i]; - a = c.a; - c.r *= a; - c.g *= a; - c.b *= a; - colors[i] = c; - } - texture.SetPixels(colors); - texture.Apply(); - - premultipliedAtlasIds.Add(instanceId); - } - } catch { - if (Application.isEditor) - Debug.LogWarning("Texture was not readable! Could not apply premultiply alpha. Rendering may be incorrect. Please check your texture import settings and make sure Read/Write is enabled."); - } - } - #if UNITY_EDITOR - else { - Texture2D texture = sprite.texture; - int instanceId = texture.GetInstanceID(); - if (premultipliedAtlasIds.Contains(instanceId)) - Debug.LogWarning("The same texture was used by both premultiply and straight alpha shaders. Rendering may be incorrect."); - } - #endif - - } - - public RegionAttachment NewRegionAttachment (Skin skin, string name, string path) { - RegionAttachment attachment = new RegionAttachment(name); - - Texture2D tex = sprite.texture; - int instanceId = tex.GetInstanceID(); - AtlasRegion atlasRegion; - bool cachedMaterialExists = atlasTable.TryGetValue(instanceId, out atlasRegion); - - if (!cachedMaterialExists) { - // Setup new material. - var material = new Material(shader); - if (sprite.packed) - material.name = "Unity Packed Sprite Material"; - else - material.name = sprite.name + " Sprite Material"; - material.mainTexture = tex; - - // Create faux-region to play nice with SkeletonRenderer. - atlasRegion = new AtlasRegion(); - var page = new AtlasPage(); - page.rendererObject = material; - atlasRegion.page = page; - - // Cache it. - atlasTable[instanceId] = atlasRegion; - } - - Rect texRect = sprite.textureRect; - - // Normalize rect to UV space of packed atlas - texRect.x = Mathf.InverseLerp(0, tex.width, texRect.x); - texRect.y = Mathf.InverseLerp(0, tex.height, texRect.y); - texRect.width = Mathf.InverseLerp(0, tex.width, texRect.width); - texRect.height = Mathf.InverseLerp(0, tex.height, texRect.height); - - Bounds bounds = sprite.bounds; - Vector2 boundsMin = bounds.min, boundsMax = bounds.max; - Vector2 size = bounds.size; - float spriteUnitsPerPixel = 1f / sprite.pixelsPerUnit; - - bool rotated = false; - if (sprite.packed) - rotated = sprite.packingRotation == SpritePackingRotation.Any; - - attachment.SetUVs(texRect.xMin, texRect.yMax, texRect.xMax, texRect.yMin, rotated); - attachment.RendererObject = atlasRegion; - attachment.SetColor(Color.white); - attachment.ScaleX = 1; - attachment.ScaleY = 1; - attachment.RegionOffsetX = sprite.rect.width * (0.5f - InverseLerp(boundsMin.x, boundsMax.x, 0)) * spriteUnitsPerPixel; - attachment.RegionOffsetY = sprite.rect.height * (0.5f - InverseLerp(boundsMin.y, boundsMax.y, 0)) * spriteUnitsPerPixel; - attachment.Width = size.x; - attachment.Height = size.y; - attachment.RegionWidth = size.x; - attachment.RegionHeight = size.y; - attachment.RegionOriginalWidth = size.x; - attachment.RegionOriginalHeight = size.y; - attachment.UpdateOffset(); - - return attachment; - } - - public MeshAttachment NewMeshAttachment (Skin skin, string name, string path) { - return null; - } - - public BoundingBoxAttachment NewBoundingBoxAttachment (Skin skin, string name) { - return null; - } - - public PathAttachment NewPathAttachment (Skin skin, string name) { - return null; - } - - static float InverseLerp (float a, float b, float value) { - return (value - a) / (b - a); - } - } - - public static class SpriteAttachmentExtensions { - public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) { - return skeleton.AttachUnitySprite(slotName, sprite, Shader.Find(shaderName), applyPMA); - } - - public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName = "", string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) { - return skeletonData.AddUnitySprite(slotName, sprite, skinName, Shader.Find(shaderName), applyPMA); - } - - public static RegionAttachment ToRegionAttachment (this Sprite sprite, string shaderName = SpriteAttacher.DefaultPMAShader, bool applyPMA = true) { - return sprite.ToRegionAttachment(Shader.Find(shaderName), applyPMA); - } - - public static RegionAttachment AttachUnitySprite (this Skeleton skeleton, string slotName, Sprite sprite, Shader shader, bool applyPMA) { - var att = sprite.ToRegionAttachment(shader, applyPMA); - skeleton.FindSlot(slotName).Attachment = att; - return att; - } - - public static RegionAttachment AddUnitySprite (this SkeletonData skeletonData, string slotName, Sprite sprite, string skinName, Shader shader, bool applyPMA) { - var att = sprite.ToRegionAttachment(shader, applyPMA); - - var slotIndex = skeletonData.FindSlotIndex(slotName); - Skin skin = skeletonData.defaultSkin; - if (skinName != "") - skin = skeletonData.FindSkin(skinName); - - skin.AddAttachment(slotIndex, att.Name, att); - - return att; - } - - public static RegionAttachment ToRegionAttachment (this Sprite sprite, Shader shader, bool applyPMA) { - var loader = new SpriteAttachmentLoader(sprite, shader, applyPMA); - var att = loader.NewRegionAttachment(null, sprite.name, ""); - loader = null; - return att; - } - } -} diff --git a/spine-unity/Assets/spine-unity/Shaders/HiddenPass.mat b/spine-unity/Assets/spine-unity/Shaders/HiddenPass.mat index 31cf39d9972a7839972b6b5bf7d5263c728f8252..c7bc5ada31727a6801ed8a86e7e26216afe6801d 100644 GIT binary patch literal 863 zcmah{O>Y`85WVv&oI`qI(V7JUdy8mkQA0}`RH-L4tYH~k0I4|HBzlZy#GH`}kfUs!}sTH&IG%I6~G=e5HUc585GLI=skU8!qa zz9-1vN0_CdEQYfD7ykkc=7OXZnl*UOr0W|{=pKPbQ+C@IRjXAlW-=RHjK`_mm2#F{ zjEd!xv;41U<%ineF5z>14T6qyDX}AI-M= zCQD3rsCP>BC_&&5f~VJeJ!h}3Cz&hk`o1&dq{x?Oe9xLxZ}qe_xf5R;w^UCb%8 zC15ujnvJhH4yV<`kw^mSX*Z}rNC+ay2#AxB$cH&> z|M3W@bT-R(X!hUfkuZ&z5YDoa=Zdv@qU4U%pv7w_om*B7CuR1tVLna~03uTreS4s- zO0?75ds;fD5KPAAKqtn64AGc`CjvCoC<#vnAYnH`!kGwYkLsqdO~h}_nZ z092~OyCoeK+Npg$JKk>D(G>fH?e9eFL7-b{T2evc7<;#c#N@(A@3rh`hLPTn*rj~C z$XBZOgAi27TDNQ9L&AVKCXXr9+h>Q@=F7)Z@oktf*=;9&O`>~)KIEJ;W_mc>w zo%yGANQ{qG@1?+r&wjdk7a|B@xvpEh7Z(Fit=1>SS}`oFP<=TBRl-F(;m-)e$pTB5 zBUFD51Bp)-`ZU#Fpo@eN)qfroR~UQ<$FMflUq&$P%)cUx&pb-?)xe3*ewylQ5d`yh z`^M^uKPK?DS_*(lb$DONnpoDa2lhF#L&Uzr_GRwz`F6M^_AR!r{HtBFeKlf77pB!Y z-GQp^(}lMcF7&H&Yd;+S?ZTBCzbu{{{QB3Qf8cDJ$&7&+12YC@4E$diz^@|xv?nI- z>9VYk`lSt?4nEs)^y6c$e^X~UeY&!NZxy|zaEahWk3Zc0+SnCos(yd);2MwH$oIPR hO9?D6_*L%nOOX^F@BLKQkxTy$ecCp51^@n1{{ZTN@%aD% diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs index 47f38a874..53413a5fc 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs @@ -49,7 +49,7 @@ namespace Spine.Unity.Editor { bool canCreateHingeChain = false; Dictionary> boundingBoxTable = new Dictionary>(); - string currentSkinName = ""; + //string currentSkinName = ""; void OnEnable () { mode = this.serializedObject.FindProperty("mode"); @@ -77,7 +77,7 @@ namespace Spine.Unity.Editor { if (skeleton.Skin == null) skin = skeleton.Data.DefaultSkin; - currentSkinName = skin.Name; + //currentSkinName = skin.Name; for(int i = 0; i < slotCount; i++){ Slot slot = skeletonUtility.skeletonRenderer.skeleton.Slots.Items[i]; if (slot.Bone == utilityBone.bone) { diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs index 6561e22e2..ae02ed4a4 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/SkeletonUtility.cs @@ -47,7 +47,6 @@ namespace Spine.Unity { return null; } - int slotIndex = skeleton.FindSlotIndex(slotName); var attachment = skin.GetAttachment(skeleton.FindSlotIndex(slotName), attachmentName); if (attachment == null) { Debug.LogFormat("Attachment in slot '{0}' named '{1}' not found in skin '{2}'.", slotName, attachmentName, skin.name); diff --git a/spine-unity/Assets/spine-unity/SpineAttributes.cs b/spine-unity/Assets/spine-unity/SpineAttributes.cs index 407e4f66f..a100b734e 100644 --- a/spine-unity/Assets/spine-unity/SpineAttributes.cs +++ b/spine-unity/Assets/spine-unity/SpineAttributes.cs @@ -196,7 +196,11 @@ namespace Spine.Unity { } public class SpineAtlasRegion : PropertyAttribute { - + public string atlasAssetField; + + public SpineAtlasRegion(string atlasAssetField = "") { + this.atlasAssetField = atlasAssetField; + } } }