-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFTweenScene.cs
116 lines (108 loc) · 3.16 KB
/
FTweenScene.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Collections.Generic;
using FlaxEngine;
namespace FTween
{
public class FTweenScene : GamePlugin
{
public FTweenScene()
{
_description = new PluginDescription
{
Name = "FTween Runtime Game Plugin",
Version = new Version(0, 1),
Author = "honzapat_CZ",
AuthorUrl = "https://github.com/honzapatCZ, https://nejcraft.cz",
HomepageUrl = "https://github.com/honzapatCZ/FTween",
RepositoryUrl = "https://github.com/honzapatCZ/FTween",
Description = "This is the runtime plugin of FTween it manages tween updates",
Category = "Utility, Tweening",
IsBeta = true,
IsAlpha = false
};
}
public List<FTweener> tweens = new List<FTweener>();
public List<FTweener> toAddTweens = new List<FTweener>();
public List<FTweener> toRemoveTweens = new List<FTweener>();
public override void Initialize()
{
base.Initialize();
Scripting.Update += OnUpdate;
}
public override void Deinitialize()
{
Scripting.Update -= OnUpdate;
tweens.Clear();
toAddTweens.Clear();
toRemoveTweens.Clear();
base.Deinitialize();
}
void OnUpdate()
{
foreach (FTweener tween in toAddTweens)
{
tweens.Add(tween);
if (!tween.setup)
tween.Setup();
}
toAddTweens.Clear();
foreach (FTweener tween in toRemoveTweens)
{
tweens.Remove(tween);
}
toRemoveTweens.Clear();
foreach (FTweener tween in tweens)
{
tween.update(Time.DeltaTime);
}
}
public static FTweenScene Instance
{
get
{
return PluginManager.GetPlugin<FTweenScene>();
}
}
public void AddT(FTweener tween)
{
if (tweens.Contains(tween))
{
Debug.LogWarning("Tried to add duplicate tween to manager");
return;
}
toAddTweens.Add(tween);
}
public void RemoveT(FTweener tween)
{
if (!tweens.Contains(tween))
{
return;
}
toRemoveTweens.Add(tween);
}
public static void AddTween(FTweener tween)
{
if (!Platform.IsInMainThread)
{
Scripting.InvokeOnUpdate(() =>
{
AddTween(tween);
});
return;
}
Instance.AddT(tween);
}
public static void RemoveTween(FTweener tween)
{
if (!Platform.IsInMainThread)
{
Scripting.InvokeOnUpdate(() =>
{
RemoveTween(tween);
});
return;
}
Instance.RemoveT(tween);
}
}
}