using mh; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting.Antlr3.Runtime.Tree; using UnityEngine; public partial class PhysicsManager : Singleton { private List m_SharedCollideResults = new List(); public Vector4 GetCircleBound(Vector3 circle) { float size = circle.z * 2; return new Vector4(circle.x, circle.y, size, size); } public Vector4 GetBoxBound(Vector4 box) { return box; } public ref readonly List CircleCast(ColliderType target, Vector3 circle) { m_SharedCollideResults.Clear(); var retriver = GetRetriverByType(target); if(retriver != null) { if (retriver(GetCircleBound(circle))) { for(int i = 0; i < m_SharedRetriveResults.Count; ++i) { var collider = m_SharedRetriveResults[i]; if(collider != null) { if(collider is FastCircleCollider) { if(CircleVsCircle((collider as FastCircleCollider).circle, circle)) { m_SharedCollideResults.Add(collider); } } else if(collider is FastBoxCollider) { if (BoxVsCircle((collider as FastBoxCollider).box, circle)) { m_SharedCollideResults.Add(collider); } } } } } } return ref m_SharedCollideResults; } public ref readonly List BoxCast(ColliderType target, Vector4 box) { return ref m_SharedCollideResults; } public ref readonly List LineCast(ColliderType target, Vector4 line) { return ref m_SharedCollideResults; } public ref readonly List PointCast(ColliderType target, Vector2 point) { return ref m_SharedCollideResults; } }