Skip to content

Commit f99272f

Browse files
committed
Init timeline
1 parent 12b4d51 commit f99272f

2 files changed

Lines changed: 87 additions & 0 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package engine.time;
2+
3+
public class LocalTimeline implements Timeline {
4+
5+
private int tickSize;
6+
public Timeline anchor;
7+
private long startTime;
8+
9+
10+
/* Is it paused? */
11+
private boolean isPaused = false;
12+
13+
/* Accumulates paused time */
14+
private long pauseTotalTime = 0;
15+
16+
/* Anchor for when timeline was paused */
17+
private long pausedTime = 0;
18+
19+
20+
public LocalTimeline(Timeline anchor, int tickSize) {
21+
this.anchor = anchor;
22+
this.tickSize = tickSize;
23+
}
24+
25+
@Override
26+
public void start() {
27+
this.startTime = anchor.getCurrentTime();
28+
}
29+
30+
@Override
31+
public void pause() {
32+
synchronized (this) {
33+
if (!this.isPaused) {
34+
this.pausedTime = anchor.getCurrentTime();
35+
this.isPaused = true;
36+
}
37+
}
38+
39+
}
40+
41+
@Override
42+
public void unpause() {
43+
this.pausedTime += (anchor.getCurrentTime() - this.pausedTime);
44+
this.pausedTime = 0;
45+
this.isPaused = true;
46+
}
47+
48+
@Override
49+
public long getCurrentTime() {
50+
long elapsedTime = (this.anchor.getCurrentTime() - this.startTime) - this.pauseTotalTime;
51+
return elapsedTime / this.tickSize;
52+
}
53+
54+
@Override
55+
public int getTickSize() {
56+
return this.tickSize;
57+
}
58+
59+
@Override
60+
public void setTickSize(int tickSize) {
61+
this.tickSize = tickSize;
62+
}
63+
64+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package engine.time;
2+
3+
public interface Timeline {
4+
5+
/* Start Timeline */
6+
public void start();
7+
8+
/* Pause Timeline */
9+
public void pause();
10+
11+
/* Unpause Timeline */
12+
public void unpause();
13+
14+
/* Get Current time */
15+
public long getCurrentTime();
16+
17+
/* Get tick size */
18+
public int getTickSize();
19+
20+
/* Set tick size */
21+
public void setTickSize(int tickSize);
22+
23+
}

0 commit comments

Comments
 (0)