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 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.onUpdate.dispatch({ time: this._gameTime + alpha * this._fixedDeltaTime, deltaTime: frameTime, alpha: alpha });
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 tween(duration, from, to, onUpdate) {
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":"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"}
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../src/clock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mani-game-engine",
3
3
  "author": "Jan Mankopf",
4
- "version": "1.0.0-pre.79",
4
+ "version": "1.0.0-pre.80",
5
5
  "description": "entity component system game engine for typescript",
6
6
  "private": false,
7
7
  "scripts": {
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.onUpdate.dispatch({time: this._gameTime + alpha * this._fixedDeltaTime, deltaTime: frameTime, alpha: alpha});
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 tween(duration: number, from: number, to: number, onUpdate: (t: number) => void) {
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
- // for (let notDone = true; notDone;) {
173
- //
174
- // notDone = t < 1;
175
- // onUpdate(from + (to - from) * t);
176
- // if (notDone) {
177
- // await gameEngine.waitFrame();
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) {