using UnityEngine; using UnityEngine.Playables; using Game; public class AttackMixerBehaviour : PlayableBehaviour { // 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) { Transform trackBinding = playerData as Transform; if (!trackBinding) return; int inputCount = playable.GetInputCount(); for (int i = 0; i < inputCount; i++) { float inputWeight = playable.GetInputWeight(i); ScriptPlayable inputPlayable = (ScriptPlayable)playable.GetInput(i); AttackBehaviour input = inputPlayable.GetBehaviour(); var toGridSize = 16f / 64f; var attackTimeClipTime = inputPlayable.GetTime(); var attackTimeClipTimeMax = inputPlayable.GetDuration(); if (attackTimeClipTime > 0 && attackTimeClipTime + 0.01f < attackTimeClipTimeMax) { Util.DrawBox(trackBinding.position + input.center * toGridSize, input.halfExtents * toGridSize, Vector3.right, Color.green); } // Use the above variables to process each frame of this playable. } } }