using mh; using System.Collections; using System.Collections.Generic; using UnityEngine; public class FastCircleCollider : FastColliderBase, IQuadTreeObject { [SerializeField] private ColliderType m_Type; [SerializeField] private float m_Radius; [SerializeField] private Vector2 m_Offset; public ColliderType type { get { return m_Type; } set { m_Type = value; } } public Vector2 center { get { Vector3 pos = transform.position + m_Offset.ToVector3(); return pos; } } public float radius { get { return m_Radius; } set { m_Radius = value; } } 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 { get { return m_Offset; } set { m_Offset = value; } } public void Awake() { if(m_Type == ColliderType.Collider) { PhysicsManager.Instance.AddCollider(this); } else if(m_Type == ColliderType.Hurtbox) { PhysicsManager.Instance.AddHurtboxes(this); } else if(m_Type == ColliderType.StaticCollider) { PhysicsManager.Instance.AddStaticCollider(this); } } public void OnDestroy() { if (m_Type == ColliderType.Collider) { PhysicsManager.Instance.RemoveCollider(this); } else if (m_Type == ColliderType.Hurtbox) { PhysicsManager.Instance.RemoveHurtbox(this); } else if(m_Type == ColliderType.StaticCollider) { PhysicsManager.Instance.RemoveStaticCollider(this); } } private void OnDrawGizmos() { Gizmos.DrawWireSphere(transform.position + m_Offset.ToVector3(), m_Radius); } }