mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-15 15:09:29 +00:00
Add special TweenTo.
This commit is contained in:
@@ -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<TMember> TweenTo<TTarget, TMember>(TTarget target, Expression<Func<TTarget, TMember>> expression, TMember toValue, float duration, float delay = 0f)
|
||||
where TTarget : class
|
||||
where TMember : struct
|
||||
{
|
||||
switch (toValue)
|
||||
{
|
||||
case Color toValueColor:
|
||||
return (Tween<TMember>)(object)TweenTo<TTarget, Color, ColorTween>(target, expression as Expression<Func<TTarget, Color>>, toValueColor, duration, delay);
|
||||
default:
|
||||
return TweenTo<TTarget, TMember, LinearTween<TMember>>(target, expression, toValue, duration, delay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Tween<TMember> TweenTo<TTarget, TMember, TTween>(TTarget target, Expression<Func<TTarget, TMember>> expression, TMember toValue, float duration, float delay = 0f)
|
||||
where TTarget : class
|
||||
where TMember : struct
|
||||
where TTween : Tween<TMember>
|
||||
{
|
||||
var memberExpression = (MemberExpression)expression.Body;
|
||||
var memberInfo = memberExpression.Member;
|
||||
@@ -35,7 +51,7 @@ namespace MonoGame.Extended.Tweening
|
||||
activeTween?.Cancel();
|
||||
|
||||
AllocationCount++;
|
||||
var tween = new LinearTween<TMember>(target, duration, delay, member, toValue);
|
||||
var tween = (TTween)Activator.CreateInstance(typeof(TTween), target, duration, delay, member, toValue);
|
||||
_activeTweens.Add(tween);
|
||||
return tween;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user