diff options
Diffstat (limited to 'marching/Assets/Scripts')
-rw-r--r-- | marching/Assets/Scripts/Battle.meta | 8 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/BattleManager.cs | 10 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/BattleManager.cs.meta | 11 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/GridMap.cs | 47 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/GridMap.cs.meta | 11 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/SceneManager.cs | 11 | ||||
-rw-r--r-- | marching/Assets/Scripts/Battle/SceneManager.cs.meta | 11 | ||||
-rw-r--r-- | marching/Assets/Scripts/Managers.meta | 8 | ||||
-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 |
11 files changed, 195 insertions, 62 deletions
diff --git a/marching/Assets/Scripts/Battle.meta b/marching/Assets/Scripts/Battle.meta new file mode 100644 index 0000000..446dac0 --- /dev/null +++ b/marching/Assets/Scripts/Battle.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62800c830f138d1439e0974c0c683f76 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/marching/Assets/Scripts/Battle/BattleManager.cs b/marching/Assets/Scripts/Battle/BattleManager.cs new file mode 100644 index 0000000..8372139 --- /dev/null +++ b/marching/Assets/Scripts/Battle/BattleManager.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BattleManager : Singleton<BattleManager> +{ + + + +}
\ No newline at end of file diff --git a/marching/Assets/Scripts/Battle/BattleManager.cs.meta b/marching/Assets/Scripts/Battle/BattleManager.cs.meta new file mode 100644 index 0000000..a89b003 --- /dev/null +++ b/marching/Assets/Scripts/Battle/BattleManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bea0e35a4b2fa264698b0e2816565545 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/marching/Assets/Scripts/Battle/GridMap.cs b/marching/Assets/Scripts/Battle/GridMap.cs new file mode 100644 index 0000000..c99bf4a --- /dev/null +++ b/marching/Assets/Scripts/Battle/GridMap.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// <summary> +/// 用Grid托管需要实现这个接口 +/// </summary> +public interface IGridMapObject +{ + // 坐标,transform.position + public Vector2 coordinate { get; } +} + +public class GridCell +{ + public List<IGridMapObject> m_Object; +} + +/// <summary> +/// 用网格划分场景,不依赖形状,只依赖位置 +/// </summary> +public class GridMap +{ + + // 单个cell的大小 + private Vector2 m_CellSize; + + // 整个grid的范围 x, y, xcount, ycount + private Vector4 m_Range; + + // 左上角开始索引 + private List<GridCell> m_GridCells; + + public GridMap() + { + m_GridCells = new List<GridCell>(); + } + + private int GetGridIndex(Vector2 pos) + { + + + return -1; + } + +}
\ No newline at end of file diff --git a/marching/Assets/Scripts/Battle/GridMap.cs.meta b/marching/Assets/Scripts/Battle/GridMap.cs.meta new file mode 100644 index 0000000..989a829 --- /dev/null +++ b/marching/Assets/Scripts/Battle/GridMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 66e52a379c253b54d896c3a5631bfdfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/marching/Assets/Scripts/Battle/SceneManager.cs b/marching/Assets/Scripts/Battle/SceneManager.cs new file mode 100644 index 0000000..9ed2fc9 --- /dev/null +++ b/marching/Assets/Scripts/Battle/SceneManager.cs @@ -0,0 +1,11 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SceneManager : Singleton<SceneManager> +{ + + // 场景内所有对象用这个结构维护 + private GridMap m_GridMap; + +}
\ No newline at end of file diff --git a/marching/Assets/Scripts/Battle/SceneManager.cs.meta b/marching/Assets/Scripts/Battle/SceneManager.cs.meta new file mode 100644 index 0000000..fe1604c --- /dev/null +++ b/marching/Assets/Scripts/Battle/SceneManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d3730897865ceb44a87a57742832f78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/marching/Assets/Scripts/Managers.meta b/marching/Assets/Scripts/Managers.meta new file mode 100644 index 0000000..4c87204 --- /dev/null +++ b/marching/Assets/Scripts/Managers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b80abdfc07d3d442917d0b5c531db6b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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> -/// IJռ仮֣Żײ -/// </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: |