mani-game-engine 1.0.0-pre.79 → 1.0.0-pre.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/clock.d.ts +4 -0
- package/lib/clock.js +20 -2
- package/lib/clock.js.map +1 -1
- package/package.json +1 -1
- package/src/clock.ts +22 -11
package/lib/clock.d.ts
CHANGED
|
@@ -25,10 +25,13 @@ export interface Clock {
|
|
|
25
25
|
setTimeout(callback: Function, delay: number): number;
|
|
26
26
|
setInterval(callback: Function, delay: number): number;
|
|
27
27
|
clearTimeout(timeoutId: number): boolean;
|
|
28
|
+
fixedTween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
28
29
|
tween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
29
30
|
}
|
|
30
31
|
export declare class GameClock implements Clock {
|
|
31
32
|
get gameTime(): number;
|
|
33
|
+
get animationTime(): number;
|
|
34
|
+
private _animationTime;
|
|
32
35
|
private nextTimeoutId;
|
|
33
36
|
private timeouts;
|
|
34
37
|
private isRunning;
|
|
@@ -53,6 +56,7 @@ export declare class GameClock implements Clock {
|
|
|
53
56
|
stop(): this;
|
|
54
57
|
setTimeout(callback: Function, delay: number): number;
|
|
55
58
|
setInterval(callback: Function, delay: number): number;
|
|
59
|
+
fixedTween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
56
60
|
tween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
57
61
|
clearTimeout(timeoutId: number): boolean;
|
|
58
62
|
}
|
package/lib/clock.js
CHANGED
|
@@ -13,7 +13,11 @@ class GameClock {
|
|
|
13
13
|
get gameTime() {
|
|
14
14
|
return this._gameTime;
|
|
15
15
|
}
|
|
16
|
+
get animationTime() {
|
|
17
|
+
return this._animationTime;
|
|
18
|
+
}
|
|
16
19
|
constructor(options) {
|
|
20
|
+
this._animationTime = 0;
|
|
17
21
|
this.nextTimeoutId = 0;
|
|
18
22
|
this.timeouts = new Map();
|
|
19
23
|
this.isRunning = false;
|
|
@@ -52,7 +56,8 @@ class GameClock {
|
|
|
52
56
|
this._gameTime += this._fixedDeltaTime;
|
|
53
57
|
}
|
|
54
58
|
const alpha = this.accumulator / this._fixedDeltaTime;
|
|
55
|
-
this.
|
|
59
|
+
this._animationTime = this._gameTime + alpha * this._fixedDeltaTime;
|
|
60
|
+
this.onUpdate.dispatch({ time: this._animationTime, deltaTime: frameTime, alpha: alpha });
|
|
56
61
|
if (this.isRunning) {
|
|
57
62
|
this.requestId = requestAnimationFrame(this.update);
|
|
58
63
|
}
|
|
@@ -108,7 +113,7 @@ class GameClock {
|
|
|
108
113
|
this.timeouts.set(this.nextTimeoutId, timeOut);
|
|
109
114
|
return this.nextTimeoutId;
|
|
110
115
|
}
|
|
111
|
-
async
|
|
116
|
+
async fixedTween(duration, from, to, onUpdate) {
|
|
112
117
|
return new Promise((resolve) => {
|
|
113
118
|
const startTime = this.gameTime;
|
|
114
119
|
const binding = this.onFixedUpdate.add(({ time }) => {
|
|
@@ -121,6 +126,19 @@ class GameClock {
|
|
|
121
126
|
});
|
|
122
127
|
});
|
|
123
128
|
}
|
|
129
|
+
async tween(duration, from, to, onUpdate) {
|
|
130
|
+
return new Promise((resolve) => {
|
|
131
|
+
const startTime = this._animationTime;
|
|
132
|
+
const binding = this.onUpdate.add(({ time }) => {
|
|
133
|
+
const t = Math.min(1, (this._animationTime - startTime) / duration);
|
|
134
|
+
onUpdate(from + (to - from) * t);
|
|
135
|
+
if (t >= 1) {
|
|
136
|
+
binding.detach();
|
|
137
|
+
resolve();
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
124
142
|
clearTimeout(timeoutId) {
|
|
125
143
|
return this.timeouts.delete(timeoutId);
|
|
126
144
|
}
|
package/lib/clock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":";;;AAAA,6CAAmC;AAGnC,MAAM,cAAc,GAAG,OAAO,CAAC;AAI/B,MAAM,cAAc,GAAG;IACrB,SAAS,EAAE,IAAI;IACf,cAAc,EAAE,CAAC,GAAG,EAAE;IACtB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,CAAC;CACb,CAAC;
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/clock.ts
CHANGED
|
@@ -32,6 +32,7 @@ export interface Clock {
|
|
|
32
32
|
setTimeout(callback: Function, delay: number): number;
|
|
33
33
|
setInterval(callback: Function, delay: number): number;
|
|
34
34
|
clearTimeout(timeoutId: number): boolean;
|
|
35
|
+
fixedTween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
35
36
|
tween(duration: number, from: number, to: number, onUpdate: (t: number) => void): Promise<void>;
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -39,7 +40,10 @@ export class GameClock implements Clock {
|
|
|
39
40
|
get gameTime(): number {
|
|
40
41
|
return this._gameTime;
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
+
get animationTime(): number {
|
|
44
|
+
return this._animationTime;
|
|
45
|
+
}
|
|
46
|
+
private _animationTime = 0;
|
|
43
47
|
private nextTimeoutId = 0;
|
|
44
48
|
private timeouts = new Map<number, Timeout>();
|
|
45
49
|
private isRunning = false;
|
|
@@ -83,7 +87,8 @@ export class GameClock implements Clock {
|
|
|
83
87
|
this._gameTime += this._fixedDeltaTime;
|
|
84
88
|
}
|
|
85
89
|
const alpha = this.accumulator / this._fixedDeltaTime;
|
|
86
|
-
this.
|
|
90
|
+
this._animationTime = this._gameTime + alpha * this._fixedDeltaTime;
|
|
91
|
+
this.onUpdate.dispatch({time: this._animationTime, deltaTime: frameTime, alpha: alpha});
|
|
87
92
|
if (this.isRunning) {
|
|
88
93
|
this.requestId = requestAnimationFrame(this.update);
|
|
89
94
|
}
|
|
@@ -155,7 +160,7 @@ export class GameClock implements Clock {
|
|
|
155
160
|
return this.nextTimeoutId;
|
|
156
161
|
}
|
|
157
162
|
|
|
158
|
-
async
|
|
163
|
+
async fixedTween(duration: number, from: number, to: number, onUpdate: (t: number) => void) {
|
|
159
164
|
return new Promise<void>((resolve) => {
|
|
160
165
|
const startTime = this.gameTime;
|
|
161
166
|
|
|
@@ -168,15 +173,21 @@ export class GameClock implements Clock {
|
|
|
168
173
|
}
|
|
169
174
|
});
|
|
170
175
|
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
async tween(duration: number, from: number, to: number, onUpdate: (t: number) => void) {
|
|
179
|
+
return new Promise<void>((resolve) => {
|
|
180
|
+
const startTime = this._animationTime;
|
|
171
181
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
const binding = this.onUpdate.add(({time}) => {
|
|
183
|
+
const t = Math.min(1, (this._animationTime - startTime) / duration);
|
|
184
|
+
onUpdate(from + (to - from) * t);
|
|
185
|
+
if (t >= 1) {
|
|
186
|
+
binding.detach();
|
|
187
|
+
resolve();
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
});
|
|
180
191
|
}
|
|
181
192
|
|
|
182
193
|
clearTimeout(timeoutId: number) {
|