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 _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 ) { } } }