-
Notifications
You must be signed in to change notification settings - Fork 0
/
FeedbackActor.cs
65 lines (51 loc) · 1.4 KB
/
FeedbackActor.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
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
//using System.Linq;
using OpenTK;
using OpenTK.Input;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using BenTools.Data;
using BenTools.Mathematics;
using Sunflower.Geometry;
namespace Sunflower.Application {
public class FeedbackActor {
public static List<FeedbackActor> AllActors { get; set; }
public int Index { get; set; }
public Color4 Color { get; set; }
public double Duration { get; set; }
public double Time { get; set; }
public FeedbackActor(int index, Color4 color, double duration) {
Index = index-1;
Color = color;
Duration = duration;
Time = 0;
if (AllActors==null) {
AllActors = new List<FeedbackActor>();
}
AllActors.Add(this);
}
~FeedbackActor() {
if (AllActors.Contains(this))
AllActors.Remove(this);
}
public static void UpdateAll(double elapsed) {
if (AllActors == null)
return;
foreach (FeedbackActor actor in AllActors.ToArray())
actor.Update(elapsed);
}
public void Update(double elapsed) {
Time += elapsed;
if (Time > Duration)
AllActors.Remove(this);
}
public Color4 GetColor() {
if (Time > Duration)
return new Color4(0f, 0f, 0f, 0f);
return new Color4(Color.R, Color.G, Color.B, (float)(Color.A * (1 - Time / Duration)));
}
}
}