From 530881df3968089a8b07e0f9b79185b844d0cdd0 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Wed, 10 May 2023 18:09:12 +0800 Subject: * raycast --- marching/Assets/Scripts/Physics/PhysicsQuadtree.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'marching/Assets/Scripts/Physics/PhysicsQuadtree.cs') diff --git a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs index f4bad27..5cd374e 100644 --- a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs +++ b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs @@ -8,9 +8,20 @@ using UnityEngine; /// class PhysicsQuadtree { + /// + /// 边界 + /// public Vector4 quadtreeRange { set { m_QuadtreeRange = value; } } private Vector4 m_QuadtreeRange; + + /// + /// 根节点 + /// private Quadtree m_Quadtree; + + /// + /// 托管的全部对象,但不一定会加入到树里面(中心点在边界外的不加入树) + /// private List m_Objects = new List(); public PhysicsQuadtree(Vector4 range) @@ -33,12 +44,17 @@ class PhysicsQuadtree { 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())) + if (PhysicsManager.IsPointInsideBox(bound, obj.bound.xy())) { m_Quadtree.Insert(obj); } -- cgit v1.1-26-g67d0