rj-action-library/Runtime/Animation/Shake/Shake.cs

60 lines
1.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text;
using Godot;
namespace Rokojori
{
[Tool]
[GlobalClass]
public partial class Shake:RJSequenceAction
{
[Export]
public ShakeEffect shakeEffect;
[Export]
public Node3D[] targets;
List<Transform3D> _targetValues;
int actionID = -1;
int animationID = -1;
public override void _OnTrigger()
{
if ( actionID != -1 )
{
CancelAction( actionID );
}
actionID = DispatchStart();
var random = shakeEffect.shakeCurve.Randomize();
var timeline = shakeEffect.timeline;
var duration = shakeEffect.shakeCurve.GetRandomizedEndTime( random );
var start = TimeLineManager.GetPosition( shakeEffect.timeline );
var end = start + duration;
animationID = TimeLineScheduler.ScheduleSpanIn( timeline, 0, duration,
( int id, int type )=>
{
if ( animationID != id )
{
return;
}
}
);
}
public override void CancelAction( int id )
{
}
}
}