diff options
author | chai <chaifix@163.com> | 2021-07-09 20:41:17 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-07-09 20:41:17 +0800 |
commit | 54626116a6dd170e92e2ca68130a270de284cf87 (patch) | |
tree | 946a977d0c64de13213ecf38dffb929c93edf704 /Assets/ActionTool/ActionToolGizmos.cs | |
parent | 9ceee66bf53b1fed9cd522bd288c4a1734c5d96e (diff) |
*misc
Diffstat (limited to 'Assets/ActionTool/ActionToolGizmos.cs')
-rw-r--r-- | Assets/ActionTool/ActionToolGizmos.cs | 87 |
1 files changed, 75 insertions, 12 deletions
diff --git a/Assets/ActionTool/ActionToolGizmos.cs b/Assets/ActionTool/ActionToolGizmos.cs index dfbbae0a..eda72b1c 100644 --- a/Assets/ActionTool/ActionToolGizmos.cs +++ b/Assets/ActionTool/ActionToolGizmos.cs @@ -2,20 +2,83 @@ using System.Collections.Generic;
using UnityEngine;
-public class ActionToolGizmos : MonoBehaviour
+namespace ActionTool
{
- private void OnDrawGizmos()
+ public class ActionToolGizmos : MonoBehaviour
{
- Gizmos.color = Color.yellow;
- Gizmos.DrawCube(transform.position, new Vector3(0.1f, 0.1f, 0.1f));
-
- Gizmos.color = Color.red;
- Gizmos.DrawLine(Vector3.zero, Vector3.right * 1000);
- Gizmos.color = Color.green;
- Gizmos.DrawLine(Vector3.zero, Vector3.up * 1000);
- Gizmos.color = Color.blue;
- Gizmos.DrawLine(-Vector3.forward * 1000, Vector3.forward * 1000);
- }
+ AnimationData m_AnimationData;
+
+ float m_CurAnimFrame;
+
+ public void SetAnimationData(AnimationData data)
+ {
+ m_AnimationData = data;
+ }
+
+ public void SetCurAnimFrame(float frame)
+ {
+ m_CurAnimFrame = frame;
+ }
+
+ void OnDrawGizmos()
+ {
+ DrawRoot();
+ DrawAxis();
+ DrawColliders();
+ }
+
+ void DrawRoot()
+ {
+ Gizmos.color = Color.yellow;
+ Gizmos.DrawCube(transform.position, new Vector3(0.1f, 0.1f, 0.1f));
+ }
+ void DrawAxis()
+ {
+ Gizmos.color = Color.red;
+ Gizmos.DrawLine(Vector3.zero, Vector3.right * 1000);
+ Gizmos.color = Color.green;
+ Gizmos.DrawLine(Vector3.zero, Vector3.up * 1000);
+ Gizmos.color = Color.blue;
+ Gizmos.DrawLine(-Vector3.forward * 1000, Vector3.forward * 1000);
+ }
+
+ void DrawColliders()
+ {
+ if (m_AnimationData == null)
+ return;
+ DrawBoxes(m_AnimationData.hurtBoxes, Color.green);
+ DrawBoxes(m_AnimationData.hitBoxes, Color.red);
+ }
+
+ void DrawBoxes(List<ColliderData> boxes, Color color)
+ {
+ if (boxes != null && boxes.Count > 0)
+ {
+ for (int i = 0; i < boxes.Count; ++i)
+ {
+ var box = boxes[i];
+ if (box != null)
+ {
+ var info = box.GetColliderInfo(m_CurAnimFrame);
+ if (!info.active)
+ continue;
+ Vector3 pos = info.position;
+ switch (box.pivot)
+ {
+ case ColliderBox.Pivot.MiddleBottom:
+ pos.y += info.size.y / 2;
+ break;
+ }
+ pos += transform.position;
+ Gizmos.color = color * 0.5f;
+ Gizmos.DrawCube(pos, info.size);
+ }
+ }
+ }
+
+ }
+
+ }
}
|