diff options
author | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-12 10:32:11 +0800 |
commit | 2fc9585797067730f28b03b0727bf05f9deed091 (patch) | |
tree | 8807e37b85ba922045eaa17ac445dd0a1d2d730c /marching/Assets/Scripts/Physics/PhysicsQuadtree.cs | |
parent | 2a1cd4fda8a4a8e649910d16b4dfa1ce7ae63543 (diff) |
+ worldline keepers
Diffstat (limited to 'marching/Assets/Scripts/Physics/PhysicsQuadtree.cs')
-rw-r--r-- | marching/Assets/Scripts/Physics/PhysicsQuadtree.cs | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs deleted file mode 100644 index 5cd374e..0000000 --- a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs +++ /dev/null @@ -1,87 +0,0 @@ -using mh; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -/// <summary> -/// 基于图形的四叉树 -/// </summary> -class PhysicsQuadtree -{ - /// <summary> - /// 边界 - /// </summary> - public Vector4 quadtreeRange { set { m_QuadtreeRange = value; } } - private Vector4 m_QuadtreeRange; - - /// <summary> - /// 根节点 - /// </summary> - private Quadtree m_Quadtree; - - /// <summary> - /// 托管的全部对象,但不一定会加入到树里面(中心点在边界外的不加入树) - /// </summary> - private List<IQuadTreeObject> m_Objects = new List<IQuadTreeObject>(); - - public PhysicsQuadtree(Vector4 range) - { - m_QuadtreeRange = range; - m_Quadtree = new Quadtree(0, range, true); - } - - public void AddObject(IQuadTreeObject obj) - { - m_Objects.Add(obj); - } - - public void RemoveObject(IQuadTreeObject obj) - { - m_Objects.Remove(obj); - } - - public void UpdateQuadtree() - { - m_Quadtree.Clear(false); - m_Quadtree.Rebound(m_QuadtreeRange); - InsertAllObjects(); - } - - private void InsertAllObjects() - { - Vector4 bound = m_Quadtree.bound; - for (int i = 0; i < m_Objects.Count; i++) - { - IQuadTreeObject obj = m_Objects[i]; - // 简单的忽略中心在边界外的object - if (PhysicsManager.IsPointInsideBox(bound, obj.bound.xy())) - { - m_Quadtree.Insert(obj); - } - } - } - - public void Debug() - { - Color c = Gizmos.color; - Gizmos.color = Color.green; - m_Quadtree?.Iterate((t) => - { - Vector3 pos = new Vector3(t.x, t.y, 0); - Vector3 size = new Vector3(t.w, t.h, 1); - Gizmos.DrawWireCube(pos, size); - }); - Gizmos.color = c; - } - - public bool Retrive(ref List<IQuadTreeObject> returnObjs, IQuadTreeObject obj) - { - return m_Quadtree.Retrieve(ref returnObjs, obj); - } - - public bool Retrive(ref List<IQuadTreeObject> returnObjs, Vector4 bound) - { - return m_Quadtree.Retrieve(ref returnObjs, bound); - } - -}
\ No newline at end of file |