summaryrefslogtreecommitdiff
path: root/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs
diff options
context:
space:
mode:
Diffstat (limited to 'marching/Assets/Scripts/Physics/PhysicsQuadtree.cs')
-rw-r--r--marching/Assets/Scripts/Physics/PhysicsQuadtree.cs87
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