diff options
author | chai <chaifix@163.com> | 2021-07-09 19:17:38 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-07-09 19:17:38 +0800 |
commit | 172d4723c7405d2e748ed03267ca10be9711212b (patch) | |
tree | adc7260f0e88a7402ce0e5f35e4e35c1afe0cb48 /Assets/Scripts | |
parent | f9bf87f60bd777cc5922e38133436eaa9fa45ba1 (diff) |
*misc
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Unit/AnimationData.cs | 44 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Collider/ColliderData.cs | 63 |
2 files changed, 106 insertions, 1 deletions
diff --git a/Assets/Scripts/Unit/AnimationData.cs b/Assets/Scripts/Unit/AnimationData.cs index 4ee79cf9..8717cf87 100644 --- a/Assets/Scripts/Unit/AnimationData.cs +++ b/Assets/Scripts/Unit/AnimationData.cs @@ -27,4 +27,48 @@ public class AnimationData : ScriptableObject return hurt + hit + thro + block + defend;
}
+ public void AddBox(List<ColliderData> boxList, ColliderData box)
+ {
+ if (boxList == null)
+ {
+ boxList = new List<ColliderData>();
+ return;
+ }
+ boxList.Add(box);
+ }
+
+ public void DeleteBox(ColliderData box)
+ {
+ if (hurtBoxes != null) hurtBoxes.Remove(box);
+ if (hitBoxes != null) hitBoxes.Remove(box);
+ if (throwBoxes != null) throwBoxes.Remove(box);
+ if (blockBoxes != null) blockBoxes.Remove(box);
+ if (defendBoxes != null) defendBoxes.Remove(box);
+ }
+
+ public ColliderData GetColliderByIndex(int index)
+ {
+ if (hurtBoxes != null && hurtBoxes.Count > index)
+ return hurtBoxes[index];
+ else
+ index -= hurtBoxes.Count;
+ if (hitBoxes != null && hitBoxes.Count > index)
+ return hitBoxes[index];
+ else
+ index -= hitBoxes.Count;
+ if (throwBoxes != null && throwBoxes.Count > index)
+ return throwBoxes[index];
+ else
+ index -= throwBoxes.Count;
+ if (blockBoxes != null && blockBoxes.Count > index)
+ return blockBoxes[index];
+ else
+ index -= blockBoxes.Count;
+ if (defendBoxes != null && defendBoxes.Count > index)
+ return defendBoxes[index];
+ else
+ index -= defendBoxes.Count;
+ return null;
+ }
+
}
diff --git a/Assets/Scripts/Unit/Collider/ColliderData.cs b/Assets/Scripts/Unit/Collider/ColliderData.cs index 744e6a45..b4ae17c5 100644 --- a/Assets/Scripts/Unit/Collider/ColliderData.cs +++ b/Assets/Scripts/Unit/Collider/ColliderData.cs @@ -3,13 +3,20 @@ using System.Collections; using System.Collections.Generic;
using UnityEngine;
+public struct ColliderInfo
+{
+ public bool active;
+ public Vector3 position;
+ public Vector3 size;
+}
+
[Serializable]
public class ColliderData
{
[Serializable]
public class ColliderFrame
{
- public int frameIndex;
+ public int frame;
public bool active;
public Vector3 position;
public Vector3 size;
@@ -20,4 +27,58 @@ public class ColliderData public ColliderBox.Pivot pivot;
public List<ColliderFrame> frames;
+
+ public ColliderData(ColliderBox.EColliderType type, ColliderBox.Pivot pivot)
+ {
+ this.type = type;
+ this.pivot = pivot;
+ this.frames = new List<ColliderFrame>();
+ }
+
+ public ColliderInfo GetColliderInfo()
+ {
+ ColliderInfo info = new ColliderInfo();
+
+ return info;
+ }
+
+ public void AddFrame(int frameIndex)
+ {
+ if (frames == null)
+ frames = new List<ColliderFrame>();
+ ColliderFrame frame = new ColliderFrame();
+ frame.frame = frameIndex;
+ frame.active = true;
+ frame.position = Vector3.zero;
+ frame.size = Vector3.one;
+ frames.Add(frame);
+ frames.Sort((a, b) => {
+ if (a == null)
+ return 1;
+ if (b == null)
+ return -1;
+ if (a.frame < b.frame)
+ return -1;
+ if (a.frame > b.frame)
+ return 1;
+ return 0;
+ });
+ }
+
+ public void DeleteFrame(int frameIndex)
+ {
+ if (frames == null)
+ return;
+ ColliderFrame frame = null;
+ foreach(var f in frames)
+ {
+ if (f.frame == frameIndex)
+ frame = f;
+ }
+ if(frame != null)
+ {
+ frames.Remove(frame);
+ }
+ }
+
}
|