From 6d6687d225d51e5f5d8efe11e143745116b70d6b Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 23 Dec 2021 12:41:01 +0300 Subject: [PATCH] First Commit --- 2D.meta | 8 +++ 2D/OneDimensional2DAirMovement.cs | 54 ++++++++++++++ 2D/OneDimensional2DAirMovement.cs.meta | 11 +++ 2D/OneDimensional2DGroundMovement.cs | 44 ++++++++++++ 2D/OneDimensional2DGroundMovement.cs.meta | 11 +++ ColliderCheck.meta | 8 +++ ColliderCheck/Ground.meta | 8 +++ ColliderCheck/Ground/IGroundCheck.cs | 4 ++ ColliderCheck/Ground/IGroundCheck.cs.meta | 11 +++ .../TwoDimensionalBoxChildGroundCheck.cs | 4 ++ .../TwoDimensionalBoxChildGroundCheck.cs.meta | 11 +++ ColliderCheck/IColliderCheck.cs | 10 +++ ColliderCheck/IColliderCheck.cs.meta | 11 +++ ColliderCheck/IColliderCheckExtensions.cs | 8 +++ .../IColliderCheckExtensions.cs.meta | 11 +++ .../TwoDimensionalBoxChildColliderCheck.cs | 24 +++++++ ...woDimensionalBoxChildColliderCheck.cs.meta | 11 +++ IMovement.cs | 9 +++ IMovement.cs.meta | 11 +++ IMovementExtensions.cs | 13 ++++ IMovementExtensions.cs.meta | 11 +++ IStateSwitch.cs | 7 ++ IStateSwitch.cs.meta | 11 +++ Movement.asmdef | 3 + Movement.asmdef.meta | 7 ++ SpecialAction.meta | 8 +++ SpecialAction/Actions.meta | 8 +++ SpecialAction/Actions/PlatformerJump.cs | 70 +++++++++++++++++++ SpecialAction/Actions/PlatformerJump.cs.meta | 11 +++ SpecialAction/ISpecialActionActivate.cs | 7 ++ SpecialAction/ISpecialActionActivate.cs.meta | 11 +++ SpecialAction/ISpecialActionDeactivate.cs | 7 ++ .../ISpecialActionDeactivate.cs.meta | 11 +++ 33 files changed, 454 insertions(+) create mode 100644 2D.meta create mode 100644 2D/OneDimensional2DAirMovement.cs create mode 100644 2D/OneDimensional2DAirMovement.cs.meta create mode 100644 2D/OneDimensional2DGroundMovement.cs create mode 100644 2D/OneDimensional2DGroundMovement.cs.meta create mode 100644 ColliderCheck.meta create mode 100644 ColliderCheck/Ground.meta create mode 100644 ColliderCheck/Ground/IGroundCheck.cs create mode 100644 ColliderCheck/Ground/IGroundCheck.cs.meta create mode 100644 ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs create mode 100644 ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs.meta create mode 100644 ColliderCheck/IColliderCheck.cs create mode 100644 ColliderCheck/IColliderCheck.cs.meta create mode 100644 ColliderCheck/IColliderCheckExtensions.cs create mode 100644 ColliderCheck/IColliderCheckExtensions.cs.meta create mode 100644 ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs create mode 100644 ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs.meta create mode 100644 IMovement.cs create mode 100644 IMovement.cs.meta create mode 100644 IMovementExtensions.cs create mode 100644 IMovementExtensions.cs.meta create mode 100644 IStateSwitch.cs create mode 100644 IStateSwitch.cs.meta create mode 100644 Movement.asmdef create mode 100644 Movement.asmdef.meta create mode 100644 SpecialAction.meta create mode 100644 SpecialAction/Actions.meta create mode 100644 SpecialAction/Actions/PlatformerJump.cs create mode 100644 SpecialAction/Actions/PlatformerJump.cs.meta create mode 100644 SpecialAction/ISpecialActionActivate.cs create mode 100644 SpecialAction/ISpecialActionActivate.cs.meta create mode 100644 SpecialAction/ISpecialActionDeactivate.cs create mode 100644 SpecialAction/ISpecialActionDeactivate.cs.meta diff --git a/2D.meta b/2D.meta new file mode 100644 index 0000000..15f8372 --- /dev/null +++ b/2D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 247a7892cc48fa54c971733d8e0213db +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D/OneDimensional2DAirMovement.cs b/2D/OneDimensional2DAirMovement.cs new file mode 100644 index 0000000..cc3f8c0 --- /dev/null +++ b/2D/OneDimensional2DAirMovement.cs @@ -0,0 +1,54 @@ +using Syntriax.Modules.Movement.ColliderCheck; +using Syntriax.Modules.Movement.ColliderCheck.Ground; +using UnityEngine; + +namespace Syntriax.Modules.Movement +{ + [RequireComponent(typeof(Rigidbody2D))] + public class OneDimensional2DAirMovement : MonoBehaviour, IMovement, IState + { + private IGroundCheck groundCheck = null; + private Rigidbody2D rigid = null; + private float moveValue = 0f; + + + public bool IsActive => StateEnabled && !groundCheck.IsCollided(); + public bool StateEnabled { get; set; } = true; + public float SpeedMultiplier { get; set; } = 1f; + + private void Start() + { + rigid = GetComponent(); + groundCheck = GetComponentInChildren(); + } + + private void FixedUpdate() + { + if (!IsActive) + return; + + ApplyMovement(); + } + + private void ApplyMovement() + { + Vector2 velocity = rigid.velocity; + velocity.x += moveValue * Time.fixedDeltaTime; + + if (moveValue != 0f) + { + if (Mathf.Abs(velocity.x) > Mathf.Abs(moveValue)) + velocity.x = moveValue; + else if (Mathf.Abs(velocity.x - moveValue) > Mathf.Abs(moveValue)) + velocity.x += moveValue * Time.fixedDeltaTime; + } + + rigid.velocity = velocity; + } + + public void Move(float x = 0, float y = 0, float z = 0) + { + moveValue = x * SpeedMultiplier; + } + } +} diff --git a/2D/OneDimensional2DAirMovement.cs.meta b/2D/OneDimensional2DAirMovement.cs.meta new file mode 100644 index 0000000..497661e --- /dev/null +++ b/2D/OneDimensional2DAirMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12a58daabbf3fa8418a164390a593753 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/2D/OneDimensional2DGroundMovement.cs b/2D/OneDimensional2DGroundMovement.cs new file mode 100644 index 0000000..66fac0c --- /dev/null +++ b/2D/OneDimensional2DGroundMovement.cs @@ -0,0 +1,44 @@ +using Syntriax.Modules.Movement.ColliderCheck; +using Syntriax.Modules.Movement.ColliderCheck.Ground; +using UnityEngine; + +namespace Syntriax.Modules.Movement +{ + [RequireComponent(typeof(Rigidbody2D))] + public class OneDimensional2DGroundMovement : MonoBehaviour, IMovement, IState + { + private IGroundCheck groundCheck = null; + private Rigidbody2D rigid = null; + private float moveValue = 0f; + + public bool IsActive => StateEnabled && groundCheck.IsCollided(); + public bool StateEnabled { get; set; } = true; + public float SpeedMultiplier { get; set; } = 1f; + + private void Start() + { + rigid = GetComponent(); + groundCheck = GetComponentInChildren(); + } + + private void FixedUpdate() + { + if (!IsActive) + return; + + ApplyMovement(); + } + + private void ApplyMovement() + { + Vector2 velocity = rigid.velocity; + velocity.x = moveValue; + rigid.velocity = velocity; + } + + public void Move(float x = 0, float y = 0, float z = 0) + { + moveValue = x * SpeedMultiplier; + } + } +} diff --git a/2D/OneDimensional2DGroundMovement.cs.meta b/2D/OneDimensional2DGroundMovement.cs.meta new file mode 100644 index 0000000..407916c --- /dev/null +++ b/2D/OneDimensional2DGroundMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 849a6316df6662a48ae6cfcd4c2fbc1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck.meta b/ColliderCheck.meta new file mode 100644 index 0000000..82c8171 --- /dev/null +++ b/ColliderCheck.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 115027fb4693d6247bd07cab06d81091 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/Ground.meta b/ColliderCheck/Ground.meta new file mode 100644 index 0000000..841050f --- /dev/null +++ b/ColliderCheck/Ground.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2c348589c341f3d4f8db2e34198ec32e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/Ground/IGroundCheck.cs b/ColliderCheck/Ground/IGroundCheck.cs new file mode 100644 index 0000000..a3e7221 --- /dev/null +++ b/ColliderCheck/Ground/IGroundCheck.cs @@ -0,0 +1,4 @@ +namespace Syntriax.Modules.Movement.ColliderCheck.Ground +{ + public interface IGroundCheck : IColliderCheck { } +} diff --git a/ColliderCheck/Ground/IGroundCheck.cs.meta b/ColliderCheck/Ground/IGroundCheck.cs.meta new file mode 100644 index 0000000..fa60c1b --- /dev/null +++ b/ColliderCheck/Ground/IGroundCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2cbb917bc29d63241aa50c7fe8dc141d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs b/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs new file mode 100644 index 0000000..0791d0b --- /dev/null +++ b/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs @@ -0,0 +1,4 @@ +namespace Syntriax.Modules.Movement.ColliderCheck.Ground +{ + public class TwoDimensionalBoxChildGroundCheck : TwoDimensionalBoxChildColliderCheck, IGroundCheck { } +} diff --git a/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs.meta b/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs.meta new file mode 100644 index 0000000..4eb6962 --- /dev/null +++ b/ColliderCheck/Ground/TwoDimensionalBoxChildGroundCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a878fb141e25e954c9b73eff8657605a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/IColliderCheck.cs b/ColliderCheck/IColliderCheck.cs new file mode 100644 index 0000000..04ca753 --- /dev/null +++ b/ColliderCheck/IColliderCheck.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Syntriax.Modules.Movement.ColliderCheck +{ + public interface IColliderCheck + { + LayerMask ColliderMask { get; set; } + bool IsColliderDetected { get; } + } +} diff --git a/ColliderCheck/IColliderCheck.cs.meta b/ColliderCheck/IColliderCheck.cs.meta new file mode 100644 index 0000000..d0f4f28 --- /dev/null +++ b/ColliderCheck/IColliderCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 164c4b9411986c14e8012b2e7fdd2a6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/IColliderCheckExtensions.cs b/ColliderCheck/IColliderCheckExtensions.cs new file mode 100644 index 0000000..c427d25 --- /dev/null +++ b/ColliderCheck/IColliderCheckExtensions.cs @@ -0,0 +1,8 @@ +namespace Syntriax.Modules.Movement.ColliderCheck +{ + public static class IColliderCheckExtensions + { + public static bool IsCollided(this IColliderCheck colliderCheck) + => colliderCheck == null ? true : colliderCheck.IsColliderDetected; + } +} diff --git a/ColliderCheck/IColliderCheckExtensions.cs.meta b/ColliderCheck/IColliderCheckExtensions.cs.meta new file mode 100644 index 0000000..2ec5c9b --- /dev/null +++ b/ColliderCheck/IColliderCheckExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a31fdb05e206b44cbe615353e924344 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs b/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs new file mode 100644 index 0000000..800a8ab --- /dev/null +++ b/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs @@ -0,0 +1,24 @@ +using UnityEngine; + +namespace Syntriax.Modules.Movement.ColliderCheck +{ + public class TwoDimensionalBoxChildColliderCheck : MonoBehaviour, IColliderCheck, IState + { + [SerializeField] private LayerMask colliderMask = 0; + + public LayerMask ColliderMask { get => colliderMask; set => colliderMask = value; } + + public bool IsColliderDetected + => StateEnabled ? Physics2D.OverlapBox(transform.position, transform.localScale, 0, ColliderMask) != null : true; + + public bool StateEnabled { get; set; } = true; + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + Gizmos.color = IsColliderDetected ? Color.green : Color.red; + Gizmos.DrawWireCube(transform.position, transform.lossyScale); + } +#endif + } +} diff --git a/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs.meta b/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs.meta new file mode 100644 index 0000000..bead24f --- /dev/null +++ b/ColliderCheck/TwoDimensionalBoxChildColliderCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 090650329160e7b42ba89ccfad00375e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IMovement.cs b/IMovement.cs new file mode 100644 index 0000000..299e2f3 --- /dev/null +++ b/IMovement.cs @@ -0,0 +1,9 @@ +namespace Syntriax.Modules.Movement +{ + public interface IMovement + { + float SpeedMultiplier { get; set; } + bool IsActive { get; } + void Move(float x = 0f, float y = 0f, float z = 0f); + } +} diff --git a/IMovement.cs.meta b/IMovement.cs.meta new file mode 100644 index 0000000..d6d71fe --- /dev/null +++ b/IMovement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c332dd4b3d45ea469fcfb42aa50e3db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IMovementExtensions.cs b/IMovementExtensions.cs new file mode 100644 index 0000000..e91c34b --- /dev/null +++ b/IMovementExtensions.cs @@ -0,0 +1,13 @@ +using UnityEngine; + +namespace Syntriax.Modules.Movement +{ + public static class IMovementExtensions + { + public static void Move(this IMovement movement, Vector2 moveVector) + => movement.Move(moveVector.x, moveVector.y); + + public static void Move(this IMovement movement, Vector3 moveVector) + => movement.Move(moveVector.x, moveVector.y, moveVector.z); + } +} diff --git a/IMovementExtensions.cs.meta b/IMovementExtensions.cs.meta new file mode 100644 index 0000000..aa645fa --- /dev/null +++ b/IMovementExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1d3a4ba263ed1648aa205a8a37a574b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IStateSwitch.cs b/IStateSwitch.cs new file mode 100644 index 0000000..2c46199 --- /dev/null +++ b/IStateSwitch.cs @@ -0,0 +1,7 @@ +namespace Syntriax.Modules.Movement +{ + public interface IState + { + bool StateEnabled { get; set; } + } +} diff --git a/IStateSwitch.cs.meta b/IStateSwitch.cs.meta new file mode 100644 index 0000000..ba13095 --- /dev/null +++ b/IStateSwitch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc4a8610b5876e14ab81beef027850b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Movement.asmdef b/Movement.asmdef new file mode 100644 index 0000000..2cc9602 --- /dev/null +++ b/Movement.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Movement" +} diff --git a/Movement.asmdef.meta b/Movement.asmdef.meta new file mode 100644 index 0000000..92a9f42 --- /dev/null +++ b/Movement.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c967acc4be781ca44b42a1887eb1ac7a +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SpecialAction.meta b/SpecialAction.meta new file mode 100644 index 0000000..95dd09f --- /dev/null +++ b/SpecialAction.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f411b98930309f4a9251106523e357a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SpecialAction/Actions.meta b/SpecialAction/Actions.meta new file mode 100644 index 0000000..3fbea5e --- /dev/null +++ b/SpecialAction/Actions.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a67ce871b9457064096bcbc81804138c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SpecialAction/Actions/PlatformerJump.cs b/SpecialAction/Actions/PlatformerJump.cs new file mode 100644 index 0000000..b9b490e --- /dev/null +++ b/SpecialAction/Actions/PlatformerJump.cs @@ -0,0 +1,70 @@ +using Syntriax.Modules.Movement.ColliderCheck; +using Syntriax.Modules.Movement.ColliderCheck.Ground; +using UnityEngine; + +namespace Syntriax.Modules.Movement.SpecialAction +{ + [RequireComponent(typeof(Rigidbody2D))] + public class PlatformerJump : MonoBehaviour, ISpecialActionActivate, ISpecialActionDeactivate, IState + { + public float JumpSpeed { get; set; } = 0f; + public bool StateEnabled { get; set; } = true; + + private bool airSuspension = false; + private float fallMultiplier = 0f; + private float suspensionMultiplier = 0f; + + private IGroundCheck groundCheck = null; + private Rigidbody2D rigid = null; + + + private void Awake() + { + JumpSpeed = 10f; + fallMultiplier = 1.5f * Time.fixedDeltaTime; + suspensionMultiplier = 1f * Time.fixedDeltaTime; + } + + private void Start() + { + rigid = GetComponent(); + groundCheck = GetComponentInChildren(); + } + + private void FixedUpdate() + { + if (!StateEnabled) + return; + + if (rigid.velocity.y < 0f) + ApplySuspension(suspensionMultiplier); + else if (!airSuspension) + ApplySuspension(fallMultiplier); + } + + private void ApplySuspension(float multipier) + { + rigid.velocity += Physics2D.gravity * multipier; + } + + private void Jump() + { + Vector2 velocity = rigid.velocity; + velocity.y = JumpSpeed; + rigid.velocity = velocity; + } + + public void OnActivation() + { + if (groundCheck.IsCollided()) + Jump(); + + airSuspension = true; + } + + public void OnDeactivation() + { + airSuspension = false; + } + } +} diff --git a/SpecialAction/Actions/PlatformerJump.cs.meta b/SpecialAction/Actions/PlatformerJump.cs.meta new file mode 100644 index 0000000..21b147d --- /dev/null +++ b/SpecialAction/Actions/PlatformerJump.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e45c80df261a5714e9a22fd73a2cd39a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SpecialAction/ISpecialActionActivate.cs b/SpecialAction/ISpecialActionActivate.cs new file mode 100644 index 0000000..1ff33dd --- /dev/null +++ b/SpecialAction/ISpecialActionActivate.cs @@ -0,0 +1,7 @@ +namespace Syntriax.Modules.Movement.SpecialAction +{ + public interface ISpecialActionActivate + { + void OnActivation(); + } +} diff --git a/SpecialAction/ISpecialActionActivate.cs.meta b/SpecialAction/ISpecialActionActivate.cs.meta new file mode 100644 index 0000000..65276c3 --- /dev/null +++ b/SpecialAction/ISpecialActionActivate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a73af08e7cc67da42bdbfebb05a87d20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/SpecialAction/ISpecialActionDeactivate.cs b/SpecialAction/ISpecialActionDeactivate.cs new file mode 100644 index 0000000..4c0f383 --- /dev/null +++ b/SpecialAction/ISpecialActionDeactivate.cs @@ -0,0 +1,7 @@ +namespace Syntriax.Modules.Movement.SpecialAction +{ + public interface ISpecialActionDeactivate + { + void OnDeactivation(); + } +} diff --git a/SpecialAction/ISpecialActionDeactivate.cs.meta b/SpecialAction/ISpecialActionDeactivate.cs.meta new file mode 100644 index 0000000..b4ebbf8 --- /dev/null +++ b/SpecialAction/ISpecialActionDeactivate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 81fa878c771128a4d8232969f0c2e460 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: