diff options
author | chai <215380520@qq.com> | 2023-05-09 19:28:57 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-05-09 19:28:57 +0800 |
commit | fc2cfdad0d3cfb3844681855c1c45d9415f5ee8e (patch) | |
tree | acbcac9d6e153b011171ae0246592d68ff008b75 /marching/Assets/Scripts/Physics | |
parent | 4afa7c36ba9ec33ed113dcfb7cd33bd630d444f2 (diff) |
*misc
Diffstat (limited to 'marching/Assets/Scripts/Physics')
-rw-r--r-- | marching/Assets/Scripts/Physics/PhysicsManager.cs | 62 | ||||
-rw-r--r-- | marching/Assets/Scripts/Physics/PhysicsQuadtree.cs | 67 | ||||
-rw-r--r-- | marching/Assets/Scripts/Physics/PhysicsQuadtree.cs.meta | 11 |
3 files changed, 78 insertions, 62 deletions
diff --git a/marching/Assets/Scripts/Physics/PhysicsManager.cs b/marching/Assets/Scripts/Physics/PhysicsManager.cs index bfb1dfe..bbba030 100644 --- a/marching/Assets/Scripts/Physics/PhysicsManager.cs +++ b/marching/Assets/Scripts/Physics/PhysicsManager.cs @@ -11,68 +11,6 @@ public enum ColliderType Hitbox, } -class PhysicsQuadtree -{ - public Vector4 quadtreeRange { set { m_QuadtreeRange = value; } } - private Vector4 m_QuadtreeRange; - private Quadtree m_Quadtree; - private List<IQuadTreeObject> m_Objects = new List<IQuadTreeObject>(); - - public PhysicsQuadtree(Vector4 range) - { - m_QuadtreeRange = range; - m_Quadtree = new Quadtree(0, range); - } - - 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); - for (int i = 0; i < m_Objects.Count; i++) - { - IQuadTreeObject obj = m_Objects[i]; - m_Quadtree.Insert(obj); - } - } - - public void Debug() - { - Color c = Gizmos.color; - Gizmos.color = Color.red; - 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); - } - -} - -/// <summary> -/// 四叉树空间划分,优化碰撞检测 -/// </summary> public partial class PhysicsManager : Singleton<PhysicsManager> { #region Quadtrees diff --git a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs new file mode 100644 index 0000000..cb17900 --- /dev/null +++ b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs @@ -0,0 +1,67 @@ +using mh; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 鍩轰簬鍥惧舰鐨勫洓鍙夋爲 +/// </summary> +class PhysicsQuadtree +{ + public Vector4 quadtreeRange { set { m_QuadtreeRange = value; } } + private Vector4 m_QuadtreeRange; + private Quadtree m_Quadtree; + private List<IQuadTreeObject> m_Objects = new List<IQuadTreeObject>(); + + public PhysicsQuadtree(Vector4 range) + { + m_QuadtreeRange = range; + m_Quadtree = new Quadtree(0, range); + } + + 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); + for (int i = 0; i < m_Objects.Count; i++) + { + IQuadTreeObject obj = m_Objects[i]; + m_Quadtree.Insert(obj); + } + } + + public void Debug() + { + Color c = Gizmos.color; + Gizmos.color = Color.red; + 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); + } + +} + diff --git a/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs.meta b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs.meta new file mode 100644 index 0000000..c9d1346 --- /dev/null +++ b/marching/Assets/Scripts/Physics/PhysicsQuadtree.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07c60bb0f452e9a4a8cec80be4c6183a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |