- Movement & Controller
- Special Actions
- ToggleState
- ColliderChecker
- and 2D Implementations
This commit is contained in:
2022-03-08 10:13:27 +03:00
parent 91839d2323
commit f0ffc2a8c4
81 changed files with 419 additions and 751 deletions

View File

@@ -1,7 +0,0 @@
namespace Syntriax.Modules.Movement.ColliderCheck
{
public class ColliderCheckFactory : TypeFactoryBaseMonoBehaviour<ColliderCheckFactory, IColliderCheck>
{
protected override int InitialCapacity => 8;
}
}

View File

@@ -1,4 +0,0 @@
namespace Syntriax.Modules.Movement.ColliderCheck
{
public interface IGroundCheck : IColliderCheck { }
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 2cbb917bc29d63241aa50c7fe8dc141d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,4 @@
namespace Syntriax.Modules.Movement.ColliderTrigger
{
public interface IGroundTrigger : IColliderTrigger { }
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a878fb141e25e954c9b73eff8657605a
guid: 91b4c4b7439cfcb448a15d0f2ce12ff9
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,4 +0,0 @@
namespace Syntriax.Modules.Movement.ColliderCheck
{
public class TwoDimensionalBoxChildGroundCheck : TwoDimensionalBoxChildColliderCheck, IGroundCheck { }
}

View File

@@ -0,0 +1,4 @@
namespace Syntriax.Modules.Movement.ColliderTrigger
{
public class TwoDimensionalBoxChildGroundTrigger : TwoDimensionalBoxChildColliderTrigger, IGroundTrigger { }
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b1da221e5cee86a429230fca11bdf8dd
guid: 1213a467d17883844b2dc54d266cf211
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,10 +0,0 @@
using UnityEngine;
namespace Syntriax.Modules.Movement.ColliderCheck
{
public interface IColliderCheck
{
LayerMask ColliderMask { get; set; }
bool IsColliderDetected { get; }
}
}

View File

@@ -1,8 +1,8 @@
namespace Syntriax.Modules.Movement.ColliderCheck
namespace Syntriax.Modules.Movement.ColliderTrigger
{
public static class IColliderCheckExtensions
public static class IColliderTriggerExtensions
{
public static bool IsCollided(this IColliderCheck colliderCheck)
=> colliderCheck == null ? true : colliderCheck.IsColliderDetected;
public static bool IsTriggeredNullChecked(this IColliderTrigger colliderCheck)
=> colliderCheck == null ? true : colliderCheck.IsTrigerred;
}
}

View File

@@ -0,0 +1,12 @@
using UnityEngine;
using UnityEngine.Events;
namespace Syntriax.Modules.Movement.ColliderTrigger
{
public interface IColliderTrigger
{
LayerMask ColliderMask { get; set; }
bool IsTrigerred { get; }
UnityEvent<bool> OnTriggered { get; }
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 164c4b9411986c14e8012b2e7fdd2a6a
guid: 8ab2264f0e385af4d8decc8750297a9e
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,22 +1,40 @@
using UnityEngine;
using UnityEngine.Events;
namespace Syntriax.Modules.Movement.ColliderCheck
namespace Syntriax.Modules.Movement.ColliderTrigger
{
public class TwoDimensionalBoxChildColliderCheck : MonoBehaviour, IColliderCheck, IState
public class TwoDimensionalBoxChildColliderTrigger : MonoBehaviour, IColliderTrigger
{
[SerializeField] private LayerMask colliderMask = 0;
private bool _isTrigerred = false;
public LayerMask ColliderMask { get => colliderMask; set => colliderMask = value; }
public bool IsColliderDetected
=> StateEnabled ? Physics2D.OverlapBox(transform.position, transform.localScale, 0, ColliderMask) != null : true;
public UnityEvent<bool> OnTriggered { get; protected set; } = null;
public bool IsTrigerred
{
get => _isTrigerred;
protected set
{
bool isNewValue = _isTrigerred != value;
public bool StateEnabled { get; set; } = true;
_isTrigerred = value;
if (isNewValue)
OnTriggered.Invoke(value);
}
}
protected void Awake()
=> OnTriggered = new UnityEvent<bool>();
protected void FixedUpdate()
=> IsTrigerred = Physics2D.OverlapBox(transform.position, transform.localScale, 0, ColliderMask) != null;
#if UNITY_EDITOR
private void OnDrawGizmosSelected()
{
Gizmos.color = IsColliderDetected ? Color.green : Color.red;
Gizmos.color = IsTrigerred ? Color.green : Color.red;
Gizmos.DrawWireCube(transform.position, transform.lossyScale);
}
#endif