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 +++++++++++++++++++++---- Assets/ActionTool/Editor/ActionData.cs | 2 + Assets/ActionTool/Editor/ActionEditorStyles.cs | 6 +- Assets/ActionTool/Editor/ActionPreviewEditor.cs | 2 +- 4 files changed, 81 insertions(+), 16 deletions(-) (limited to 'Assets/ActionTool') 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); + } + } + } + + } + + } } diff --git a/Assets/ActionTool/Editor/ActionData.cs b/Assets/ActionTool/Editor/ActionData.cs index 958e2c53..c00dd269 100644 --- a/Assets/ActionTool/Editor/ActionData.cs +++ b/Assets/ActionTool/Editor/ActionData.cs @@ -144,6 +144,8 @@ namespace ActionTool m_CurAnimFrame %= m_TotalFrame; } + ActionManager.gizmos.SetCurAnimFrame(m_CurAnimFrame); + SampleFrame(); RunEvent(); diff --git a/Assets/ActionTool/Editor/ActionEditorStyles.cs b/Assets/ActionTool/Editor/ActionEditorStyles.cs index fbc543ae..1943a74f 100644 --- a/Assets/ActionTool/Editor/ActionEditorStyles.cs +++ b/Assets/ActionTool/Editor/ActionEditorStyles.cs @@ -44,12 +44,12 @@ namespace ActionTool InitStyle(out textSmall, GUI.skin.label, s => { s.fontSize = 8; }); - InitStyle(out boxToggle, GUI.skin.button, s => { + InitStyle(out boxToggle, EditorStyles.miniButtonLeft, s => { s.fontSize = 8; s.normal.textColor = Color.white; - s.normal.background = null; + //s.normal.background = null; s.active.textColor = Color.white; - s.active.background = null; + //s.active.background = null; }); InitStyle(out keyFrameButton, GUI.skin.button, s => { s.fontSize = 8; diff --git a/Assets/ActionTool/Editor/ActionPreviewEditor.cs b/Assets/ActionTool/Editor/ActionPreviewEditor.cs index 858b28e2..d236770e 100644 --- a/Assets/ActionTool/Editor/ActionPreviewEditor.cs +++ b/Assets/ActionTool/Editor/ActionPreviewEditor.cs @@ -218,7 +218,7 @@ namespace ActionTool Rect rect = new Rect(0, y, 20, 15); for(int i = 0; i < sampleCount; i++) { - rect.x = kTimeLineViewXOffset + i * kFrameWidth - ((i >= 10) ? 7 : 3); + rect.x = kTimeLineViewXOffset + i * kFrameWidth - ((i >= 10) ? 7 : 5); if(i % 5 == 0) { Color c = GUI.color; -- cgit v1.1-26-g67d0