using UnityEngine; using UnityEngine.Playables; using Game; public class AttackMixerBehaviour : PlayableBehaviour { private const float ToGridSize = 16f / 64f; // NOTE: This function is called at runtime and edit time. Keep that in mind when setting the values of properties. public override void ProcessFrame(Playable playable, FrameData info, object playerData) { SwitchPanel(playable, info, playerData); DrawBox(playable, info, playerData); } private void SwitchPanel(Playable playable, FrameData info, object playerData) { } private void DrawBox(Playable playable, FrameData info, object playerData) { var trackBinding = playerData as Transform; if (!trackBinding) return; var inputCount = playable.GetInputCount(); for (var i = 0; i < inputCount; i++) { var inputPlayable = (ScriptPlayable)playable.GetInput(i); var input = inputPlayable.GetBehaviour(); var attackTimeClipTime = inputPlayable.GetTime(); var attackTimeClipTimeMax = inputPlayable.GetDuration(); if (attackTimeClipTime > 0 && attackTimeClipTime + 0.01f < attackTimeClipTimeMax) { var shape = input.ShapeNew; Util.DrawShape(input.ShapeNew, trackBinding.position + shape.Offset, Vector3.right, Color.green); } } } }