|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.Playables;
|
|
|
|
|
using Game;
|
|
|
|
|
|
|
|
|
|
public class AttackMixerBehaviour : PlayableBehaviour
|
|
|
|
|
{
|
|
|
|
|
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 GameObject;
|
|
|
|
|
|
|
|
|
|
if (!trackBinding)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
var trans = trackBinding.transform;
|
|
|
|
|
|
|
|
|
|
var inputCount = playable.GetInputCount();
|
|
|
|
|
|
|
|
|
|
for (var i = 0; i < inputCount; i++)
|
|
|
|
|
{
|
|
|
|
|
var inputPlayable = (ScriptPlayable<AttackBehaviour>)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, trans.position + shape.Offset, Vector3.right, Color.green);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|