diff options
Diffstat (limited to 'WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs')
-rw-r--r-- | WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs b/WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs index c759e32..b89da29 100644 --- a/WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs +++ b/WorldlineKeepers/Assets/Scripts/Physics/PhysicsManager_StaticTree.cs @@ -1,10 +1,48 @@ +using mh; using System.Collections; using System.Collections.Generic; using UnityEngine; +/// <summary> +/// 不经常改变位置和大小的collider认为是静态collider,不会每帧重建 +/// </summary> public partial class PhysicsManager : Singleton<PhysicsManager> { + private PhysicsQuadtree m_StaticCollisionQuadtree; + public Vector4 staticCollisionQuadtreeRange + { + set + { + m_StaticCollisionQuadtree.quadtreeRange = value; + } + } + + public void AddStaticCollider(IQuadTreeObject collider) + { + m_StaticCollisionQuadtree.AddObject(collider); + } + + public void RemoveStaticCollider(IQuadTreeObject collider) + { + m_StaticCollisionQuadtree.RemoveObject(collider); + } + + public bool RetriveStaticColliders(ref List<IQuadTreeObject> returnObjs, IQuadTreeObject obj) + { + return m_StaticCollisionQuadtree.Retrive(ref returnObjs, obj); + } + + public bool RetriveStaticColliders(ref List<IQuadTreeObject> returnObjs, Vector4 bound) + { + return m_StaticCollisionQuadtree.Retrive(ref returnObjs, bound); + } + + public bool RetriveStaticColliders(Vector4 bound) + { + m_SharedRetriveResults.Clear(); + return m_StaticCollisionQuadtree.Retrive(ref m_SharedRetriveResults, bound); + } } |