From a2e3aacb9070379c1d31d7885c01b199971f856a Mon Sep 17 00:00:00 2001 From: Gandifil Date: Mon, 22 Jan 2024 20:10:34 +0300 Subject: [PATCH] Add special TweenTo. --- src/cs/MonoGame.Extended.Tweening/Tweener.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/cs/MonoGame.Extended.Tweening/Tweener.cs b/src/cs/MonoGame.Extended.Tweening/Tweener.cs index 893a5d3c..1e17efae 100644 --- a/src/cs/MonoGame.Extended.Tweening/Tweener.cs +++ b/src/cs/MonoGame.Extended.Tweening/Tweener.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Reflection; +using Microsoft.Xna.Framework; namespace MonoGame.Extended.Tweening { @@ -26,6 +27,21 @@ namespace MonoGame.Extended.Tweening public Tween TweenTo(TTarget target, Expression> expression, TMember toValue, float duration, float delay = 0f) where TTarget : class where TMember : struct + { + switch (toValue) + { + case Color toValueColor: + return (Tween)(object)TweenTo(target, expression as Expression>, toValueColor, duration, delay); + default: + return TweenTo>(target, expression, toValue, duration, delay); + } + + } + + public Tween TweenTo(TTarget target, Expression> expression, TMember toValue, float duration, float delay = 0f) + where TTarget : class + where TMember : struct + where TTween : Tween { var memberExpression = (MemberExpression)expression.Body; var memberInfo = memberExpression.Member; @@ -35,7 +51,7 @@ namespace MonoGame.Extended.Tweening activeTween?.Cancel(); AllocationCount++; - var tween = new LinearTween(target, duration, delay, member, toValue); + var tween = (TTween)Activator.CreateInstance(typeof(TTween), target, duration, delay, member, toValue); _activeTweens.Add(tween); return tween; }