diff --git a/Runtime/Extensions/TweenCoreExtensions.cs b/Runtime/Extensions/TweenCoreExtensions.cs index cff48d0..89bebf8 100644 --- a/Runtime/Extensions/TweenCoreExtensions.cs +++ b/Runtime/Extensions/TweenCoreExtensions.cs @@ -967,7 +967,31 @@ public static IEnumerable AddTrigger(this IEnumerable self return self; } + + public static TweenCore AddTrigger(this TweenCore self, TweenCoreAction action, CancellationToken cancellationToken, string id = Trigger.UndefinedId) + { + if (!ValidationUtility.ValidateNullReference(self)) + { + return null; + } + + if (!ValidationUtility.ValidateNullReference(action)) + { + return self; + } + + var trigger = new CancellationTokenTrigger(id, action, cancellationToken); + return self.AddTrigger(trigger); + } + + public static TweenCore AddTrigger(this TweenCore self, CancellationToken cancellationToken, string id = Trigger.UndefinedId) + where TAction : TweenCoreAction, new() + { + var action = new TAction(); + return self.AddTrigger(action, cancellationToken, id); + } + #if BETTER_CONDITIONS public static TweenCore AddTrigger(this TweenCore self, TweenCoreAction action, Condition condition, string id = Trigger.UndefinedId) diff --git a/Runtime/Triggers/CancellationTokenTrigger.cs b/Runtime/Triggers/CancellationTokenTrigger.cs new file mode 100644 index 0000000..9319b90 --- /dev/null +++ b/Runtime/Triggers/CancellationTokenTrigger.cs @@ -0,0 +1,21 @@ +using System.Threading; +using Better.Tweens.Runtime.Actions; + +namespace Better.Tweens.Runtime.Triggers +{ + public class CancellationTokenTrigger : ActionTrigger + { + private readonly CancellationToken _cancellationToken; + + public CancellationTokenTrigger(string id, TweenCoreAction action, CancellationToken cancellationToken) + : base(id, action) + { + _cancellationToken = cancellationToken; + } + + public override bool Invoke(TweenCore tweenCore) + { + return _cancellationToken.IsCancellationRequested && base.Invoke(tweenCore); + } + } +} \ No newline at end of file diff --git a/Runtime/Triggers/CancellationTokenTrigger.cs.meta b/Runtime/Triggers/CancellationTokenTrigger.cs.meta new file mode 100644 index 0000000..1aaec75 --- /dev/null +++ b/Runtime/Triggers/CancellationTokenTrigger.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 17971b09125499d4ca7e375197482f49 +timeCreated: 1717854061 \ No newline at end of file diff --git a/package.json b/package.json index 0745555..a716ab2 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "name": "com.tdw.better.tweens", "displayName": "Better Tweens", - "version": "0.0.2", + "version": "0.0.3", "unity": "2021.3", "description": " ", "dependencies": { "com.tdw.better.internal.core": "0.0.2", "com.tdw.better.projectsettings": "0.1.3", "com.tdw.better.commons": "0.0.44", - "com.tdw.better.conditions": "0.0.4", "com.tdw.better.statemachine": "0.1.17", "com.tdw.better.attributes": "0.0.1" },