summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs82
1 files changed, 82 insertions, 0 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs b/WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs
new file mode 100644
index 0000000..dde49f9
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Physics/FastCircleCollider.cs
@@ -0,0 +1,82 @@
+using mh;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FastCircleCollider : MonoBehaviour, IQuadTreeObject
+{
+
+ [SerializeField] private ColliderType m_Type;
+ [SerializeField] private float m_Radius;
+ [SerializeField] private Vector2 m_Offset;
+
+ public Vector2 center
+ {
+ get
+ {
+ Vector3 pos = transform.position + m_Offset.ToVector3();
+ return pos;
+ }
+ }
+
+ public float radius => m_Radius;
+
+ public Vector4 bound
+ {
+ get
+ {
+ Vector3 pos = transform.position + m_Offset.ToVector3();
+ Vector4 b = new Vector4();
+ b.x = pos.x;
+ b.y = pos.y;
+ b.z = m_Radius * 2;
+ b.w = m_Radius * 2;
+ return b;
+ }
+ }
+
+ public Vector3 circle
+ {
+ get
+ {
+ Vector3 c = new Vector3();
+ Vector2 ct = center;
+ c.x = ct.x;
+ c.y = ct.y;
+ c.z = radius;
+ return c;
+ }
+ }
+
+ public Vector2 offset => m_Offset;
+
+ public void Awake()
+ {
+ if(m_Type == ColliderType.Collider)
+ {
+ PhysicsManager.Instance.AddCollider(this);
+ }
+ else if(m_Type == ColliderType.Hurtbox)
+ {
+ PhysicsManager.Instance.AddHurtboxes(this);
+ }
+ }
+
+ public void OnDestroy()
+ {
+ if (m_Type == ColliderType.Collider)
+ {
+ PhysicsManager.Instance.RemoveCollider(this);
+ }
+ else if (m_Type == ColliderType.Hurtbox)
+ {
+ PhysicsManager.Instance.RemoveHurtbox(this);
+ }
+ }
+
+ private void OnDrawGizmos()
+ {
+ Gizmos.DrawWireSphere(transform.position + m_Offset.ToVector3(), m_Radius);
+ }
+
+} \ No newline at end of file