From 54626116a6dd170e92e2ca68130a270de284cf87 Mon Sep 17 00:00:00 2001 From: chai Date: Fri, 9 Jul 2021 20:41:17 +0800 Subject: *misc --- Assets/ActionTool/ActionToolGizmos.cs | 87 ++++++++++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 12 deletions(-) (limited to 'Assets/ActionTool/ActionToolGizmos.cs') 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 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); + } + } + } + + } + + } } -- cgit v1.1-26-g67d0