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