using System.Collections; using System.Collections.Generic; using UnityEngine; namespace ActionTool { public class ActionToolGizmos : MonoBehaviour { 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); } } } } } }