summaryrefslogtreecommitdiff
path: root/WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs
diff options
context:
space:
mode:
authorchai <215380520@qq.com>2023-05-12 10:32:11 +0800
committerchai <215380520@qq.com>2023-05-12 10:32:11 +0800
commit2fc9585797067730f28b03b0727bf05f9deed091 (patch)
tree8807e37b85ba922045eaa17ac445dd0a1d2d730c /WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs
parent2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (diff)
+ worldline keepers
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs')
-rw-r--r--WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs b/WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs
new file mode 100644
index 0000000..df84e0d
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Physics/FastBoxCollider.cs
@@ -0,0 +1,90 @@
+using mh;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FastBoxCollider : MonoBehaviour, IQuadTreeObject
+{
+
+ [SerializeField] private ColliderType m_Type;
+ [SerializeField] private Vector2 m_Offset;
+ [SerializeField] private Vector2 m_Size;
+
+ public Vector2 center
+ {
+ get
+ {
+ Vector3 pos = transform.position + m_Offset.ToVector3();
+ return pos;
+ }
+ }
+
+ public Vector2 offset => m_Offset;
+ public Vector2 size => m_Size;
+
+ 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 = size.x;
+ b.w = size.y;
+ return b;
+ }
+ }
+
+ public Vector4 box
+ {
+ get
+ {
+ Vector2 c = center;
+ Vector4 b = new Vector4();
+ b.x = c.x;
+ b.y = c.y;
+ b.z = size.x;
+ b.w = size.y;
+ return b;
+ }
+ }
+
+ 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()
+ {
+ Color c = Gizmos.color;
+
+ if(m_Type == ColliderType.Hurtbox)
+ {
+ Gizmos.color = Color.red;
+ }
+ Gizmos.DrawWireCube(transform.position + m_Offset.ToVector3(), m_Size.ToVector3());
+
+ Gizmos.color = c;
+ }
+
+} \ No newline at end of file