summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs')
-rw-r--r--Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs
new file mode 100644
index 0000000..adcee59
--- /dev/null
+++ b/Plugins/MonoGame.Extended/source/MonoGame.Extended.Tweening/TweenMember.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Linq.Expressions;
+
+namespace MonoGame.Extended.Tweening
+{
+ public abstract class TweenMember
+ {
+ protected TweenMember(object target)
+ {
+ Target = target;
+ }
+
+ public object Target { get; }
+ public abstract Type Type { get; }
+ public abstract string Name { get; }
+ }
+
+ public abstract class TweenMember<T> : TweenMember
+ where T : struct
+ {
+ protected TweenMember(object target, Func<object, object> getMethod, Action<object, object> setMethod)
+ : base(target)
+ {
+ _getMethod = getMethod;
+ _setMethod = setMethod;
+ }
+
+ private readonly Func<object, object> _getMethod;
+ private readonly Action<object, object> _setMethod;
+
+ public T Value
+ {
+ get { return (T) _getMethod(Target); }
+ set { _setMethod(Target, value); }
+ }
+ }
+}