This repository has been archived by the owner on Dec 8, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInternalTransformableObject.cs
98 lines (83 loc) · 3.91 KB
/
InternalTransformableObject.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
namespace OSharp.Animation
{
public class InternalTransformableObject<T> : ITransformable<T> where T : struct
{
internal readonly Dictionary<TransformType, List<TransformAction>> TransformDictionary =
new Dictionary<TransformType, List<TransformAction>>();
internal bool _supportLoop = true;
internal List<(double startTime, int loopTimes, InternalTransformableObject<T> transformList)> loopList =
new List<(double, int, InternalTransformableObject<T>)>();
public void Fade(Easing easing, double startTime, double endTime, T startOpacity, T endOpacity)
{
const TransformType type = TransformType.Fade;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startOpacity, endOpacity));
}
public void Rotate(Easing easing, double startTime, double endTime, T startDeg, T endDeg)
{
const TransformType type = TransformType.Rotate;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startDeg, endDeg));
}
public void Move(Easing easing, double startTime, double endTime, Vector2<T> startPos, Vector2<T> endPos)
{
const TransformType type = TransformType.Move;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startPos, endPos));
}
public void MoveX(Easing easing, double startTime, double endTime, T startX, T endX)
{
const TransformType type = TransformType.MoveX;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startX, endX));
}
public void MoveY(Easing easing, double startTime, double endTime, T startY, T endY)
{
const TransformType type = TransformType.MoveY;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startY, endY));
}
public void ScaleVec(Easing easing, double startTime, double endTime, Vector2<T> startSize, Vector2<T> endSize)
{
const TransformType type = TransformType.ScaleVec;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startSize, endSize));
}
public void Color(Easing easing, double startTime, double endTime, Vector3<T> startColor, Vector3<T> endColor)
{
const TransformType type = TransformType.Color;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(easing, startTime, endTime, startColor, endColor));
}
public void Blend(double startTime, double endTime, BlendMode mode)
{
const TransformType type = TransformType.Blend;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(Easing.Linear, startTime, endTime, mode, mode));
}
public void Flip(double startTime, double endTime, FlipMode mode)
{
const TransformType type = TransformType.Flip;
AddKey(type);
TransformDictionary[type].Add(new TransformAction(Easing.Linear, startTime, endTime, mode, mode));
}
public void StartLoopGroup(double startTime, int loopTimes, Action<ITransformable<T>> func)
{
var loopGroup = new InternalTransformableObject<T>
{
_supportLoop = false
};
func?.Invoke(loopGroup);
loopList.Add((startTime, loopTimes, loopGroup));
}
private void AddKey(TransformType type)
{
if (!TransformDictionary.ContainsKey(type))
{
TransformDictionary.Add(type, new List<TransformAction>());
}
}
}
}