@woosh/meep-engine 2.123.2 → 2.123.5
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/package.json +1 -1
- package/src/core/collection/RingBuffer.d.ts.map +1 -1
- package/src/core/collection/RingBuffer.js +9 -0
- package/src/core/geom/Quaternion.d.ts +48 -7
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +48 -7
- package/src/engine/development/performance/AbstractMetric.d.ts +12 -0
- package/src/engine/development/performance/AbstractMetric.d.ts.map +1 -1
- package/src/engine/development/performance/AbstractMetric.js +21 -0
- package/src/engine/development/performance/MetricCollection.d.ts +26 -2
- package/src/engine/development/performance/MetricCollection.d.ts.map +1 -1
- package/src/engine/development/performance/MetricCollection.js +32 -3
- package/src/engine/development/performance/MetricStatistics.js +1 -1
- package/src/engine/development/performance/RingBufferMetric.d.ts +14 -1
- package/src/engine/development/performance/RingBufferMetric.d.ts.map +1 -1
- package/src/engine/development/performance/RingBufferMetric.js +17 -1
- package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.d.ts +10 -1
- package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.d.ts.map +1 -1
- package/src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.js +12 -3
- package/src/engine/development/performance/monitor/PeriodicConsolePrinter.d.ts.map +1 -1
- package/src/engine/development/performance/monitor/PeriodicConsolePrinter.js +5 -0
- package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
- package/src/engine/ecs/EntityComponentDataset.js +39 -9
- package/src/engine/ecs/transform/Transform.d.ts +12 -2
- package/src/engine/ecs/transform/Transform.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform.js +19 -1
- package/src/engine/ecs/transform/TransformFlags.d.ts +3 -0
- package/src/engine/ecs/transform/TransformFlags.d.ts.map +1 -1
- package/src/engine/ecs/transform/TransformFlags.js +1 -0
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/RingBuffer.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAFa,CAAC;IAGV;;OAEG;IACH,kBAFW,MAAM,EAoChB;IA7BG;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,MAFU,CAAC,EAAE,CAEc;IAG/B;;;OAGG;IACH,iBAFW,MAAM,
|
|
1
|
+
{"version":3,"file":"RingBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/RingBuffer.js"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAFa,CAAC;IAGV;;OAEG;IACH,kBAFW,MAAM,EAoChB;IA7BG;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,MAFU,CAAC,EAAE,CAEc;IAG/B;;;OAGG;IACH,iBAFW,MAAM,QAwBhB;IAED;;;OAGG;IACH,WAFY,CAAC,CAIZ;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,CAAC,CAYb;IAED,cAIC;IAED;;;OAGG;IACH,cAFW,CAAC,QAuBX;IAED;;;OAGG;IACH,SAFa,CAAC,GAAC,SAAS,CAcvB;IAED;;;OAGG;IACH,4BAFW,MAAM,QA8BhB;IAED;;;;;OAKG;IACH,oBAJW,CAAS,IAAC,EAAD,CAAC,KAAE,OAAO,YACnB,GAAC,GACC,CAAC,GAAC,SAAS,CAsBvB;IAED;;;;OAIG;IACH,iBAHW,CAAS,IAAC,EAAD,CAAC,QAAC,YACX,GAAC,QAkBX;IAED;;;;OAIG;IACH,gBAHW,CAAC,GACC,OAAO,CAKnB;CACJ"}
|
|
@@ -52,6 +52,8 @@ export class RingBuffer {
|
|
|
52
52
|
* @param {number} new_size
|
|
53
53
|
*/
|
|
54
54
|
resize(new_size) {
|
|
55
|
+
assert.isNonNegativeInteger(new_size, 'new_size');
|
|
56
|
+
assert.greaterThan(new_size, 0, `new_size`);
|
|
55
57
|
|
|
56
58
|
if (new_size === this.size) {
|
|
57
59
|
// already the right size
|
|
@@ -87,6 +89,8 @@ export class RingBuffer {
|
|
|
87
89
|
* @returns {V}
|
|
88
90
|
*/
|
|
89
91
|
getFromHead(offset) {
|
|
92
|
+
assert.isNonNegativeInteger(offset, 'offset');
|
|
93
|
+
|
|
90
94
|
let i = this.head - (offset + 1);
|
|
91
95
|
|
|
92
96
|
while (i < 0) {
|
|
@@ -188,6 +192,8 @@ export class RingBuffer {
|
|
|
188
192
|
* @returns {V|undefined}
|
|
189
193
|
*/
|
|
190
194
|
removeIf(condition, thisArg) {
|
|
195
|
+
assert.isFunction(condition, 'condition');
|
|
196
|
+
|
|
191
197
|
const count = this.count;
|
|
192
198
|
const size = this.size;
|
|
193
199
|
|
|
@@ -213,6 +219,8 @@ export class RingBuffer {
|
|
|
213
219
|
* @param {*} [thisArg]
|
|
214
220
|
*/
|
|
215
221
|
forEach(visitor, thisArg) {
|
|
222
|
+
assert.isFunction(visitor, 'visitor');
|
|
223
|
+
|
|
216
224
|
const count = this.count;
|
|
217
225
|
const size = this.size;
|
|
218
226
|
|
|
@@ -234,6 +242,7 @@ export class RingBuffer {
|
|
|
234
242
|
* @returns {boolean}
|
|
235
243
|
*/
|
|
236
244
|
contains(value) {
|
|
245
|
+
// TODO do a bounds check
|
|
237
246
|
return this.data.indexOf(value) !== -1;
|
|
238
247
|
}
|
|
239
248
|
}
|
|
@@ -73,13 +73,45 @@ export class Quaternion {
|
|
|
73
73
|
* @type {Signal<number, number, number, number, number, number, number, number>}
|
|
74
74
|
*/
|
|
75
75
|
readonly onChanged: Signal<number, number, number, number, number, number, number, number>;
|
|
76
|
+
/**
|
|
77
|
+
*
|
|
78
|
+
* @param {number} v
|
|
79
|
+
*/
|
|
76
80
|
set 0(v: number);
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @return {number}
|
|
84
|
+
*/
|
|
77
85
|
get 0(): number;
|
|
86
|
+
/**
|
|
87
|
+
*
|
|
88
|
+
* @param {number} v
|
|
89
|
+
*/
|
|
78
90
|
set 1(v: number);
|
|
91
|
+
/**
|
|
92
|
+
*
|
|
93
|
+
* @return {number}
|
|
94
|
+
*/
|
|
79
95
|
get 1(): number;
|
|
96
|
+
/**
|
|
97
|
+
*
|
|
98
|
+
* @param {number} v
|
|
99
|
+
*/
|
|
80
100
|
set 2(v: number);
|
|
101
|
+
/**
|
|
102
|
+
*
|
|
103
|
+
* @return {number}
|
|
104
|
+
*/
|
|
81
105
|
get 2(): number;
|
|
106
|
+
/**
|
|
107
|
+
*
|
|
108
|
+
* @param {number} v
|
|
109
|
+
*/
|
|
82
110
|
set 3(v: number);
|
|
111
|
+
/**
|
|
112
|
+
*
|
|
113
|
+
* @return {number}
|
|
114
|
+
*/
|
|
83
115
|
get 3(): number;
|
|
84
116
|
/**
|
|
85
117
|
* Orient quaternion on a `forward` vector, with the spin matching `up` vector
|
|
@@ -90,8 +122,9 @@ export class Quaternion {
|
|
|
90
122
|
* @param {number} ux up vector
|
|
91
123
|
* @param {number} uy up vector
|
|
92
124
|
* @param {number} uz up vector
|
|
125
|
+
* @returns {this}
|
|
93
126
|
*/
|
|
94
|
-
_lookRotation(fx: number, fy: number, fz: number, ux: number, uy: number, uz: number):
|
|
127
|
+
_lookRotation(fx: number, fy: number, fz: number, ux: number, uy: number, uz: number): this;
|
|
95
128
|
/**
|
|
96
129
|
*
|
|
97
130
|
* @param {Vector3} forward
|
|
@@ -111,8 +144,9 @@ export class Quaternion {
|
|
|
111
144
|
copyInverse(other: Quaternion): void;
|
|
112
145
|
/**
|
|
113
146
|
* Calculates the inverse
|
|
147
|
+
* @returns {this}
|
|
114
148
|
*/
|
|
115
|
-
invert():
|
|
149
|
+
invert(): this;
|
|
116
150
|
/**
|
|
117
151
|
* Returns angle between this orientation and another
|
|
118
152
|
* @param {Quaternion} other
|
|
@@ -402,7 +436,12 @@ export class Quaternion {
|
|
|
402
436
|
z: number;
|
|
403
437
|
w: number;
|
|
404
438
|
};
|
|
405
|
-
|
|
439
|
+
/**
|
|
440
|
+
*
|
|
441
|
+
* @param obj
|
|
442
|
+
* @return {this}
|
|
443
|
+
*/
|
|
444
|
+
fromJSON(obj: any): this;
|
|
406
445
|
/**
|
|
407
446
|
*
|
|
408
447
|
* @param {BinaryBuffer} buffer
|
|
@@ -438,9 +477,10 @@ export class Quaternion {
|
|
|
438
477
|
/**
|
|
439
478
|
*
|
|
440
479
|
* @param {number[]} array
|
|
441
|
-
* @param {number} offset
|
|
480
|
+
* @param {number} [offset]
|
|
481
|
+
* @returns {this}
|
|
442
482
|
*/
|
|
443
|
-
readFromArray(array: number[], offset?: number):
|
|
483
|
+
readFromArray(array: number[], offset?: number): this;
|
|
444
484
|
/**
|
|
445
485
|
*
|
|
446
486
|
* @param {number[]} [array]
|
|
@@ -483,7 +523,7 @@ export class Quaternion {
|
|
|
483
523
|
*/
|
|
484
524
|
random(random?: () => number): Quaternion;
|
|
485
525
|
toString(): string;
|
|
486
|
-
fromArray: (array: number[], offset?: number) =>
|
|
526
|
+
fromArray: (array: number[], offset?: number) => Quaternion;
|
|
487
527
|
toArray: (array?: number[], offset?: number) => number[];
|
|
488
528
|
asArray: (array?: number[], offset?: number) => number[];
|
|
489
529
|
fromEulerAngles: (x: number, y: number, z: number) => Quaternion;
|
|
@@ -495,8 +535,9 @@ export class Quaternion {
|
|
|
495
535
|
readonly isQuaternion: boolean;
|
|
496
536
|
/**
|
|
497
537
|
* Making quaternion iterable
|
|
538
|
+
* @returns {Generator<number>}
|
|
498
539
|
*/
|
|
499
|
-
[Symbol.iterator](): Generator<number
|
|
540
|
+
[Symbol.iterator](): Generator<number>;
|
|
500
541
|
}
|
|
501
542
|
export namespace Quaternion {
|
|
502
543
|
let identity: Quaternion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH;
|
|
1
|
+
{"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
|
|
@@ -72,40 +72,73 @@ export class Quaternion {
|
|
|
72
72
|
|
|
73
73
|
// Making Quaternion comply to array interface
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
*
|
|
77
|
+
* @return {number}
|
|
78
|
+
*/
|
|
75
79
|
get 0() {
|
|
76
80
|
return this.x;
|
|
77
81
|
}
|
|
78
82
|
|
|
83
|
+
/**
|
|
84
|
+
*
|
|
85
|
+
* @return {number}
|
|
86
|
+
*/
|
|
79
87
|
get 1() {
|
|
80
88
|
return this.y;
|
|
81
89
|
}
|
|
82
90
|
|
|
91
|
+
/**
|
|
92
|
+
*
|
|
93
|
+
* @return {number}
|
|
94
|
+
*/
|
|
83
95
|
get 2() {
|
|
84
96
|
return this.z;
|
|
85
97
|
}
|
|
86
98
|
|
|
99
|
+
/**
|
|
100
|
+
*
|
|
101
|
+
* @return {number}
|
|
102
|
+
*/
|
|
87
103
|
get 3() {
|
|
88
104
|
return this.w;
|
|
89
105
|
}
|
|
90
106
|
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* @param {number} v
|
|
110
|
+
*/
|
|
91
111
|
set 0(v) {
|
|
92
112
|
this.x = v;
|
|
93
113
|
}
|
|
94
114
|
|
|
115
|
+
/**
|
|
116
|
+
*
|
|
117
|
+
* @param {number} v
|
|
118
|
+
*/
|
|
95
119
|
set 1(v) {
|
|
96
120
|
this.y = v;
|
|
97
121
|
}
|
|
98
122
|
|
|
123
|
+
/**
|
|
124
|
+
*
|
|
125
|
+
* @param {number} v
|
|
126
|
+
*/
|
|
99
127
|
set 2(v) {
|
|
100
128
|
this.z = v;
|
|
101
129
|
}
|
|
102
130
|
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @param {number} v
|
|
134
|
+
*/
|
|
103
135
|
set 3(v) {
|
|
104
136
|
this.w = v;
|
|
105
137
|
}
|
|
106
138
|
|
|
107
139
|
/**
|
|
108
140
|
* Making quaternion iterable
|
|
141
|
+
* @returns {Generator<number>}
|
|
109
142
|
*/
|
|
110
143
|
* [Symbol.iterator]() {
|
|
111
144
|
|
|
@@ -126,6 +159,7 @@ export class Quaternion {
|
|
|
126
159
|
* @param {number} ux up vector
|
|
127
160
|
* @param {number} uy up vector
|
|
128
161
|
* @param {number} uz up vector
|
|
162
|
+
* @returns {this}
|
|
129
163
|
*/
|
|
130
164
|
_lookRotation(
|
|
131
165
|
fx, fy, fz,
|
|
@@ -173,7 +207,7 @@ export class Quaternion {
|
|
|
173
207
|
const m12 = scratch_v3_a.y;
|
|
174
208
|
const m22 = scratch_v3_a.z;
|
|
175
209
|
|
|
176
|
-
|
|
210
|
+
return this.__setFromRotationMatrix(
|
|
177
211
|
m00, m01, m02,
|
|
178
212
|
m10, m11, m12,
|
|
179
213
|
m20, m21, m22
|
|
@@ -218,6 +252,7 @@ export class Quaternion {
|
|
|
218
252
|
|
|
219
253
|
/**
|
|
220
254
|
* Calculates the inverse
|
|
255
|
+
* @returns {this}
|
|
221
256
|
*/
|
|
222
257
|
invert() {
|
|
223
258
|
const x = this.x;
|
|
@@ -228,8 +263,8 @@ export class Quaternion {
|
|
|
228
263
|
const length_sqr = x * x + y * y + z * z + w * w;
|
|
229
264
|
|
|
230
265
|
if (length_sqr === 0) {
|
|
231
|
-
|
|
232
|
-
return;
|
|
266
|
+
// 0 magnitude, avoid division by 0 and set identity (arbitrage)
|
|
267
|
+
return this.set(0, 0, 0, 1);
|
|
233
268
|
}
|
|
234
269
|
|
|
235
270
|
const invDot = 1.0 / length_sqr;
|
|
@@ -239,7 +274,7 @@ export class Quaternion {
|
|
|
239
274
|
const _z = -z * invDot;
|
|
240
275
|
const _w = w * invDot;
|
|
241
276
|
|
|
242
|
-
this.set(_x, _y, _z, _w);
|
|
277
|
+
return this.set(_x, _y, _z, _w);
|
|
243
278
|
}
|
|
244
279
|
|
|
245
280
|
/**
|
|
@@ -1259,8 +1294,13 @@ export class Quaternion {
|
|
|
1259
1294
|
};
|
|
1260
1295
|
}
|
|
1261
1296
|
|
|
1297
|
+
/**
|
|
1298
|
+
*
|
|
1299
|
+
* @param obj
|
|
1300
|
+
* @return {this}
|
|
1301
|
+
*/
|
|
1262
1302
|
fromJSON(obj) {
|
|
1263
|
-
this.set(obj.x, obj.y, obj.z, obj.w);
|
|
1303
|
+
return this.set(obj.x, obj.y, obj.z, obj.w);
|
|
1264
1304
|
}
|
|
1265
1305
|
|
|
1266
1306
|
/**
|
|
@@ -1332,10 +1372,11 @@ export class Quaternion {
|
|
|
1332
1372
|
/**
|
|
1333
1373
|
*
|
|
1334
1374
|
* @param {number[]} array
|
|
1335
|
-
* @param {number} offset
|
|
1375
|
+
* @param {number} [offset]
|
|
1376
|
+
* @returns {this}
|
|
1336
1377
|
*/
|
|
1337
1378
|
readFromArray(array, offset = 0) {
|
|
1338
|
-
this.set(
|
|
1379
|
+
return this.set(
|
|
1339
1380
|
array[offset],
|
|
1340
1381
|
array[offset + 1],
|
|
1341
1382
|
array[offset + 2],
|
|
@@ -15,6 +15,18 @@ export class AbstractMetric {
|
|
|
15
15
|
* @returns {boolean} whether metric was successfully computed or not
|
|
16
16
|
*/
|
|
17
17
|
computeStats(result: MetricStatistics): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Shortcut to {@link computeStats}
|
|
20
|
+
* Use the other one if you want to avoid memory allocation
|
|
21
|
+
* @return {MetricStatistics}
|
|
22
|
+
*/
|
|
23
|
+
get stats(): MetricStatistics;
|
|
18
24
|
clear(): void;
|
|
25
|
+
/**
|
|
26
|
+
* @readonly
|
|
27
|
+
* @type {boolean}
|
|
28
|
+
*/
|
|
29
|
+
readonly isMetric: boolean;
|
|
19
30
|
}
|
|
31
|
+
import { MetricStatistics } from "./MetricStatistics.js";
|
|
20
32
|
//# sourceMappingURL=AbstractMetric.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractMetric.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/AbstractMetric.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractMetric.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/AbstractMetric.js"],"names":[],"mappings":"AAEA;IACI;;;;OAIG;IACH,cAHW,MAAM,GACJ,IAAI,CAIhB;IAED;;OAEG;IACH,iBAFa,MAAM,GAAC,SAAS,CAI5B;IAED;;;;OAIG;IACH,qBAHW,gBAAgB,GACd,OAAO,CAInB;IAED;;;;OAIG;IACH,aAFY,gBAAgB,CAQ3B;IAED,cAEC;IAGL;;;OAGG;IACH,mBAFU,OAAO,CAEgB;CANhC;iCA5CgC,uBAAuB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { MetricStatistics } from "./MetricStatistics.js";
|
|
2
|
+
|
|
1
3
|
export class AbstractMetric {
|
|
2
4
|
/**
|
|
3
5
|
*
|
|
@@ -24,7 +26,26 @@ export class AbstractMetric {
|
|
|
24
26
|
throw new Error('Not implemented');
|
|
25
27
|
}
|
|
26
28
|
|
|
29
|
+
/**
|
|
30
|
+
* Shortcut to {@link computeStats}
|
|
31
|
+
* Use the other one if you want to avoid memory allocation
|
|
32
|
+
* @return {MetricStatistics}
|
|
33
|
+
*/
|
|
34
|
+
get stats() {
|
|
35
|
+
const stats = new MetricStatistics();
|
|
36
|
+
|
|
37
|
+
this.computeStats(stats);
|
|
38
|
+
|
|
39
|
+
return stats;
|
|
40
|
+
}
|
|
41
|
+
|
|
27
42
|
clear() {
|
|
28
43
|
throw new Error('Not implemented');
|
|
29
44
|
}
|
|
30
45
|
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @readonly
|
|
49
|
+
* @type {boolean}
|
|
50
|
+
*/
|
|
51
|
+
AbstractMetric.prototype.isMetric = true;
|
|
@@ -1,19 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A class for managing a collection of metrics where each metric can store data and be accessed by name.
|
|
3
|
+
* Provides functionality to add, retrieve, list, and clear metrics.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* const metrics = new MetricCollection();
|
|
7
|
+
* metrics.create({name: "execution time"});
|
|
8
|
+
*
|
|
9
|
+
* // ... record metrics
|
|
10
|
+
* const t0 = performance.now();
|
|
11
|
+
* do_expensive_computation();
|
|
12
|
+
* const t1 = performance.now();
|
|
13
|
+
*
|
|
14
|
+
* metrics.get("execution time").record(t1 - t0);
|
|
15
|
+
*
|
|
16
|
+
* // ... read stats
|
|
17
|
+
* const stats = metrics.get("execution time").stats;
|
|
18
|
+
*
|
|
19
|
+
* console.log(`Average execution time: ${stats.mean}`);
|
|
20
|
+
*/
|
|
1
21
|
export class MetricCollection {
|
|
2
22
|
/**
|
|
3
23
|
* @private
|
|
4
24
|
* @type {Map<string, AbstractMetric>}
|
|
5
25
|
*/
|
|
6
26
|
private data;
|
|
27
|
+
/**
|
|
28
|
+
* Clear all data records.
|
|
29
|
+
* Note: does not remove any metrics, just the data within them
|
|
30
|
+
*/
|
|
7
31
|
clear(): void;
|
|
8
32
|
/**
|
|
9
|
-
*
|
|
33
|
+
* Get names of available metrics
|
|
10
34
|
* @returns {string[]}
|
|
11
35
|
*/
|
|
12
36
|
list(): string[];
|
|
13
37
|
/**
|
|
14
38
|
*
|
|
15
39
|
* @param {string} name
|
|
16
|
-
* @param {number} [buffer_size]
|
|
40
|
+
* @param {number} [buffer_size] The larger this number is - the more detail metric can hold. If you plan to compute statistics, this is your sample size.
|
|
17
41
|
* @returns {AbstractMetric}
|
|
18
42
|
*/
|
|
19
43
|
create({ name, buffer_size }: string): AbstractMetric;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricCollection.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/MetricCollection.js"],"names":[],"mappings":"AAGA;IAEI;;;OAGG;IACH,aAAiB;IAEjB,cAIC;IAED;;;OAGG;IACH,QAFa,MAAM,EAAE,CAIpB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,GAEJ,cAAc,CAQ1B;IAED;;;;OAIG;IACH,UAHW,MAAM,UACN,cAAc,
|
|
1
|
+
{"version":3,"file":"MetricCollection.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/MetricCollection.js"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAEI;;;OAGG;IACH,aAAiB;IAEjB;;;OAGG;IACH,cAIC;IAED;;;OAGG;IACH,QAFa,MAAM,EAAE,CAIpB;IAED;;;;;OAKG;IACH,8BAJW,MAAM,GAEJ,cAAc,CAQ1B;IAED;;;;OAIG;IACH,UAHW,MAAM,UACN,cAAc,QASxB;IAED;;;;OAIG;IACH,UAHW,MAAM,GACJ,cAAc,GAAC,SAAS,CAMpC;CACJ"}
|
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
import { assert } from "../../../core/assert.js";
|
|
2
2
|
import { RingBufferMetric } from "./RingBufferMetric.js";
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* A class for managing a collection of metrics where each metric can store data and be accessed by name.
|
|
6
|
+
* Provides functionality to add, retrieve, list, and clear metrics.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const metrics = new MetricCollection();
|
|
10
|
+
* metrics.create({name: "execution time"});
|
|
11
|
+
*
|
|
12
|
+
* // ... record metrics
|
|
13
|
+
* const t0 = performance.now();
|
|
14
|
+
* do_expensive_computation();
|
|
15
|
+
* const t1 = performance.now();
|
|
16
|
+
*
|
|
17
|
+
* metrics.get("execution time").record(t1 - t0);
|
|
18
|
+
*
|
|
19
|
+
* // ... read stats
|
|
20
|
+
* const stats = metrics.get("execution time").stats;
|
|
21
|
+
*
|
|
22
|
+
* console.log(`Average execution time: ${stats.mean}`);
|
|
23
|
+
*/
|
|
4
24
|
export class MetricCollection {
|
|
5
25
|
|
|
6
26
|
/**
|
|
@@ -9,6 +29,10 @@ export class MetricCollection {
|
|
|
9
29
|
*/
|
|
10
30
|
data = new Map();
|
|
11
31
|
|
|
32
|
+
/**
|
|
33
|
+
* Clear all data records.
|
|
34
|
+
* Note: does not remove any metrics, just the data within them
|
|
35
|
+
*/
|
|
12
36
|
clear() {
|
|
13
37
|
this.data.forEach((value, key) => {
|
|
14
38
|
value.clear();
|
|
@@ -16,7 +40,7 @@ export class MetricCollection {
|
|
|
16
40
|
}
|
|
17
41
|
|
|
18
42
|
/**
|
|
19
|
-
*
|
|
43
|
+
* Get names of available metrics
|
|
20
44
|
* @returns {string[]}
|
|
21
45
|
*/
|
|
22
46
|
list() {
|
|
@@ -26,10 +50,10 @@ export class MetricCollection {
|
|
|
26
50
|
/**
|
|
27
51
|
*
|
|
28
52
|
* @param {string} name
|
|
29
|
-
* @param {number} [buffer_size]
|
|
53
|
+
* @param {number} [buffer_size] The larger this number is - the more detail metric can hold. If you plan to compute statistics, this is your sample size.
|
|
30
54
|
* @returns {AbstractMetric}
|
|
31
55
|
*/
|
|
32
|
-
create({ name, buffer_size =
|
|
56
|
+
create({ name, buffer_size = 128 }) {
|
|
33
57
|
const metric = new RingBufferMetric(buffer_size);
|
|
34
58
|
|
|
35
59
|
this.add(name, metric);
|
|
@@ -44,6 +68,9 @@ export class MetricCollection {
|
|
|
44
68
|
*/
|
|
45
69
|
add(name, metric) {
|
|
46
70
|
assert.isString(name, 'name');
|
|
71
|
+
assert.defined(metric, 'metric');
|
|
72
|
+
assert.isObject(metric, "metric");
|
|
73
|
+
assert.equal(metric.isMetric, true, "metric");
|
|
47
74
|
|
|
48
75
|
this.data.set(name, metric);
|
|
49
76
|
}
|
|
@@ -54,6 +81,8 @@ export class MetricCollection {
|
|
|
54
81
|
* @returns {AbstractMetric|undefined}
|
|
55
82
|
*/
|
|
56
83
|
get(name) {
|
|
84
|
+
assert.isString(name, 'name');
|
|
85
|
+
|
|
57
86
|
return this.data.get(name);
|
|
58
87
|
}
|
|
59
88
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metric container with a limited size and great performance characteristics.
|
|
3
|
+
* Does not allocate memory during usage.
|
|
4
|
+
*/
|
|
1
5
|
export class RingBufferMetric extends AbstractMetric {
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {number} [size] how many records should the ring-buffer hold?
|
|
9
|
+
*/
|
|
2
10
|
constructor(size?: number);
|
|
3
11
|
/**
|
|
4
12
|
*
|
|
@@ -12,8 +20,13 @@ export class RingBufferMetric extends AbstractMetric {
|
|
|
12
20
|
* @param {number} size
|
|
13
21
|
*/
|
|
14
22
|
resize(size: number): void;
|
|
15
|
-
getLastRecord(): any;
|
|
16
23
|
record(value: any): void;
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @param {MetricStatistics} result
|
|
27
|
+
* @returns {boolean}
|
|
28
|
+
*/
|
|
29
|
+
computeStats(result: MetricStatistics): boolean;
|
|
17
30
|
}
|
|
18
31
|
import { AbstractMetric } from "./AbstractMetric.js";
|
|
19
32
|
//# sourceMappingURL=RingBufferMetric.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RingBufferMetric.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/RingBufferMetric.js"],"names":[],"mappings":"AAOA;IACI,
|
|
1
|
+
{"version":3,"file":"RingBufferMetric.d.ts","sourceRoot":"","sources":["../../../../../src/engine/development/performance/RingBufferMetric.js"],"names":[],"mappings":"AAOA;;;GAGG;AACH;IACI;;;OAGG;IACH,mBAFW,MAAM,EAYhB;IAPG;;;;;OAKG;IACH,wBAAkC;IAGtC;;;OAGG;IACH,aAFW,MAAM,QAIhB;IAcD,yBAEC;IAED;;;;OAIG;IACH,qBAHW,gBAAgB,GACd,OAAO,CA4BnB;CAKJ;+BAnF8B,qBAAqB"}
|
|
@@ -5,8 +5,16 @@ import { computeStatisticalMean } from "../../../core/math/statistics/computeSta
|
|
|
5
5
|
import { computeStatisticalPartialMedian } from "../../../core/math/statistics/computeStatisticalPartialMedian.js";
|
|
6
6
|
import { AbstractMetric } from "./AbstractMetric.js";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Metric container with a limited size and great performance characteristics.
|
|
10
|
+
* Does not allocate memory during usage.
|
|
11
|
+
*/
|
|
8
12
|
export class RingBufferMetric extends AbstractMetric {
|
|
9
|
-
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @param {number} [size] how many records should the ring-buffer hold?
|
|
16
|
+
*/
|
|
17
|
+
constructor(size = 128) {
|
|
10
18
|
super();
|
|
11
19
|
|
|
12
20
|
/**
|
|
@@ -26,7 +34,15 @@ export class RingBufferMetric extends AbstractMetric {
|
|
|
26
34
|
this.__data.resize(size);
|
|
27
35
|
}
|
|
28
36
|
|
|
37
|
+
/**
|
|
38
|
+
* When metric has no records - this will produce 0
|
|
39
|
+
* @return {number}
|
|
40
|
+
*/
|
|
29
41
|
getLastRecord() {
|
|
42
|
+
if (this.__data.count === 0) {
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
30
46
|
return this.__data.getHead();
|
|
31
47
|
}
|
|
32
48
|
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @example
|
|
4
|
+
* const metrics = new MetricCollection(); // get a metrics collection
|
|
5
|
+
*
|
|
6
|
+
* // ...
|
|
7
|
+
* MetricCollectionConsoleMonitor.from(metrics).start(); // from now on all metric stats will be printed in console every few seconds
|
|
8
|
+
*/
|
|
1
9
|
export class MetricCollectionConsoleMonitor {
|
|
2
10
|
/**
|
|
3
11
|
*
|
|
4
12
|
* @param {MetricCollection} metrics
|
|
13
|
+
* @param {number} [timeout_seconds] how frequently should stats be printed? In seconds.
|
|
5
14
|
* @returns {PeriodicConsolePrinter}
|
|
6
15
|
*/
|
|
7
|
-
static from(metrics: MetricCollection): PeriodicConsolePrinter;
|
|
16
|
+
static from(metrics: MetricCollection, timeout_seconds?: number): PeriodicConsolePrinter;
|
|
8
17
|
}
|
|
9
18
|
import { PeriodicConsolePrinter } from "./PeriodicConsolePrinter.js";
|
|
10
19
|
//# sourceMappingURL=MetricCollectionConsoleMonitor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricCollectionConsoleMonitor.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.js"],"names":[],"mappings":"AAGA;IAEI
|
|
1
|
+
{"version":3,"file":"MetricCollectionConsoleMonitor.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/development/performance/monitor/MetricCollectionConsoleMonitor.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH;IAEI;;;;;OAKG;IACH,qBAJW,gBAAgB,oBAChB,MAAM,GACJ,sBAAsB,CAYlC;CAEJ;uCA9BsC,6BAA6B"}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import { MetricStatistics } from "../MetricStatistics.js";
|
|
2
2
|
import { PeriodicConsolePrinter } from "./PeriodicConsolePrinter.js";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* const metrics = new MetricCollection(); // get a metrics collection
|
|
8
|
+
*
|
|
9
|
+
* // ...
|
|
10
|
+
* MetricCollectionConsoleMonitor.from(metrics).start(); // from now on all metric stats will be printed in console every few seconds
|
|
11
|
+
*/
|
|
12
|
+
export class MetricCollectionConsoleMonitor {
|
|
5
13
|
|
|
6
14
|
/**
|
|
7
15
|
*
|
|
8
16
|
* @param {MetricCollection} metrics
|
|
17
|
+
* @param {number} [timeout_seconds] how frequently should stats be printed? In seconds.
|
|
9
18
|
* @returns {PeriodicConsolePrinter}
|
|
10
19
|
*/
|
|
11
|
-
static from(metrics){
|
|
20
|
+
static from(metrics,timeout_seconds= 3) {
|
|
12
21
|
|
|
13
22
|
const metric_stats = new MetricStatistics();
|
|
14
23
|
|
|
15
|
-
return new PeriodicConsolePrinter(
|
|
24
|
+
return new PeriodicConsolePrinter(timeout_seconds, () => metrics.list().map(m => {
|
|
16
25
|
metrics.get(m).computeStats(metric_stats);
|
|
17
26
|
|
|
18
27
|
return `${m}: ${metric_stats}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PeriodicConsolePrinter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/development/performance/monitor/PeriodicConsolePrinter.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PeriodicConsolePrinter.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/development/performance/monitor/PeriodicConsolePrinter.js"],"names":[],"mappings":"AAEA;IACI;;;;;OAKG;IACH,qBAJW,MAAM,uCAEN,GAAC,EAcX;IARG,kBAAwB;IACxB,iBAAkB;IAElB,qBAIC;IAGL,cAOC;IAED,aAQC;CACJ"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { assert } from "../../../../core/assert.js";
|
|
2
|
+
|
|
1
3
|
export class PeriodicConsolePrinter {
|
|
2
4
|
/**
|
|
3
5
|
*
|
|
@@ -6,6 +8,9 @@ export class PeriodicConsolePrinter {
|
|
|
6
8
|
* @param {*} [thisArg]
|
|
7
9
|
*/
|
|
8
10
|
constructor(timeout = 15, builderFunction, thisArg) {
|
|
11
|
+
assert.isNumber(timeout, "timeout");
|
|
12
|
+
assert.isFunction(builderFunction, "builderFunction");
|
|
13
|
+
|
|
9
14
|
this.__timeout = timeout;
|
|
10
15
|
this.__handle = -1;
|
|
11
16
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityComponentDataset.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityComponentDataset.js"],"names":[],"mappings":"AAyHA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IAEI;;;;OAIG;IACH,wBAA+B;IAE/B;;;;;OAKG;IACH,yBAAsC;IAEtC
|
|
1
|
+
{"version":3,"file":"EntityComponentDataset.d.ts","sourceRoot":"","sources":["../../../../src/engine/ecs/EntityComponentDataset.js"],"names":[],"mappings":"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"}
|
|
@@ -161,12 +161,20 @@ export class EntityComponentDataset {
|
|
|
161
161
|
entityGeneration = new Uint32Array(0);
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
|
+
* Bit table, if a bit is set - that means component is present.
|
|
165
|
+
* The format is
|
|
166
|
+
* entity_0: [component_0, component_1, ... component_n]
|
|
167
|
+
* entity_1: [component_0, component_1, ... component_n]
|
|
168
|
+
* ...
|
|
169
|
+
* entity_n: [component_0, component_1, ... component_n]
|
|
164
170
|
* @private
|
|
165
171
|
* @type {BitSet}
|
|
166
172
|
*/
|
|
167
173
|
componentOccupancy = new BitSet();
|
|
168
174
|
|
|
169
175
|
/**
|
|
176
|
+
* Do not modify directly.
|
|
177
|
+
* Use {@link setComponentTypeMap} instead.
|
|
170
178
|
* @private
|
|
171
179
|
* @type {Class[]}
|
|
172
180
|
*/
|
|
@@ -425,7 +433,7 @@ export class EntityComponentDataset {
|
|
|
425
433
|
/**
|
|
426
434
|
* Convenience method for retrieving a collection of components for a given entity
|
|
427
435
|
* @param {number} entity ID of the entity
|
|
428
|
-
* @param {
|
|
436
|
+
* @param {[]} componentClasses Classes of components to extract
|
|
429
437
|
* @returns {Array}
|
|
430
438
|
*/
|
|
431
439
|
getComponents(entity, componentClasses) {
|
|
@@ -495,6 +503,7 @@ export class EntityComponentDataset {
|
|
|
495
503
|
/**
|
|
496
504
|
* Modify dataset component mapping. Algorithm will attempt to mutate dataset even if entities exist, however, it will not remove component classes for which instances exist in the dataset.
|
|
497
505
|
* @param {Class[]} map collection of component classes
|
|
506
|
+
* @returns {void}
|
|
498
507
|
* @throws Error when attempting to remove component classes with live instances
|
|
499
508
|
*/
|
|
500
509
|
setComponentTypeMap(map) {
|
|
@@ -598,6 +607,8 @@ export class EntityComponentDataset {
|
|
|
598
607
|
for (i = 0, l = typesToAdd.length; i < l; i++) {
|
|
599
608
|
const type = typesToAdd[i];
|
|
600
609
|
|
|
610
|
+
assert.defined(type, 'type');
|
|
611
|
+
|
|
601
612
|
const newIndex = map.indexOf(type);
|
|
602
613
|
|
|
603
614
|
//initialize component store
|
|
@@ -683,10 +694,13 @@ export class EntityComponentDataset {
|
|
|
683
694
|
/**
|
|
684
695
|
*
|
|
685
696
|
* @param {Class[]} types
|
|
686
|
-
* @returns {boolean}
|
|
697
|
+
* @returns {boolean} true if all types are present, false otherwise
|
|
687
698
|
*/
|
|
688
699
|
areComponentTypesRegistered(types) {
|
|
689
|
-
|
|
700
|
+
assert.isArray(types, 'types');
|
|
701
|
+
|
|
702
|
+
const count = types.length;
|
|
703
|
+
for (let i = 0; i < count; i++) {
|
|
690
704
|
const type = types[i];
|
|
691
705
|
|
|
692
706
|
if (!this.isComponentTypeRegistered(type)) {
|
|
@@ -704,6 +718,9 @@ export class EntityComponentDataset {
|
|
|
704
718
|
* @return {boolean}
|
|
705
719
|
*/
|
|
706
720
|
isComponentTypeRegistered(type) {
|
|
721
|
+
assert.defined(type, 'type');
|
|
722
|
+
assert.notNull(type, 'type');
|
|
723
|
+
|
|
707
724
|
const componentTypeMap = this.getComponentTypeMap();
|
|
708
725
|
|
|
709
726
|
return componentTypeMap.indexOf(type) !== -1;
|
|
@@ -762,7 +779,8 @@ export class EntityComponentDataset {
|
|
|
762
779
|
* @returns {boolean} true iff component is removed, false if it was not registered
|
|
763
780
|
*/
|
|
764
781
|
unregisterComponentType(type) {
|
|
765
|
-
|
|
782
|
+
|
|
783
|
+
if (!this.isComponentTypeRegistered(type)) {
|
|
766
784
|
// not registered
|
|
767
785
|
return false;
|
|
768
786
|
}
|
|
@@ -806,7 +824,7 @@ export class EntityComponentDataset {
|
|
|
806
824
|
*/
|
|
807
825
|
getEntityGeneration(entity_id) {
|
|
808
826
|
assert.isNonNegativeInteger(entity_id, 'entity_id');
|
|
809
|
-
assert.ok(this.entityExists(entity_id)
|
|
827
|
+
assert.ok(this.entityExists(entity_id), `Entity ${entity_id} does not exist`);
|
|
810
828
|
|
|
811
829
|
return this.entityGeneration[entity_id];
|
|
812
830
|
}
|
|
@@ -1003,10 +1021,13 @@ export class EntityComponentDataset {
|
|
|
1003
1021
|
|
|
1004
1022
|
/**
|
|
1005
1023
|
*
|
|
1006
|
-
* @param klass
|
|
1024
|
+
* @param {Function|Class} klass
|
|
1007
1025
|
* @returns {number}
|
|
1008
1026
|
*/
|
|
1009
1027
|
computeComponentTypeIndex(klass) {
|
|
1028
|
+
assert.defined(klass, "klass");
|
|
1029
|
+
assert.notNull(klass, "klass");
|
|
1030
|
+
|
|
1010
1031
|
const idx = this.__type_to_index_map.get(klass);
|
|
1011
1032
|
|
|
1012
1033
|
if (idx === undefined) {
|
|
@@ -1399,13 +1420,15 @@ export class EntityComponentDataset {
|
|
|
1399
1420
|
traverseComponentsByIndex(componentTypeIndex, visitor, thisArg) {
|
|
1400
1421
|
|
|
1401
1422
|
assert.isNumber(componentTypeIndex, "componentTypeIndex");
|
|
1423
|
+
assert.isNonNegativeInteger(componentTypeIndex, "componentTypeIndex");
|
|
1402
1424
|
assert.isFunction(visitor, "visitor");
|
|
1403
1425
|
|
|
1404
1426
|
this.__traverseComponentsByIndex_via_property(componentTypeIndex, visitor, thisArg);
|
|
1405
1427
|
}
|
|
1406
1428
|
|
|
1407
1429
|
/**
|
|
1408
|
-
*
|
|
1430
|
+
* Alternative to {@link __traverseComponentsByIndex_via_property} as of 2020, appears to be significantly slower on Chrome with larger datasets
|
|
1431
|
+
* @private
|
|
1409
1432
|
* @param {number} componentTypeIndex
|
|
1410
1433
|
* @param {function} visitor
|
|
1411
1434
|
* @param {*} [thisArg]
|
|
@@ -1438,7 +1461,7 @@ export class EntityComponentDataset {
|
|
|
1438
1461
|
}
|
|
1439
1462
|
|
|
1440
1463
|
/**
|
|
1441
|
-
*
|
|
1464
|
+
* @private
|
|
1442
1465
|
* @param {number} componentTypeIndex
|
|
1443
1466
|
* @param {function} visitor
|
|
1444
1467
|
* @param {*} [thisArg]
|
|
@@ -1574,6 +1597,9 @@ export class EntityComponentDataset {
|
|
|
1574
1597
|
* @returns {boolean}
|
|
1575
1598
|
*/
|
|
1576
1599
|
removeAnyEventListener(entity, listener, thisArg) {
|
|
1600
|
+
assert.isNonNegativeInteger(entity, "entity");
|
|
1601
|
+
assert.isFunction(listener, "listener");
|
|
1602
|
+
|
|
1577
1603
|
const evl = this.__entityAnyEventListeners;
|
|
1578
1604
|
|
|
1579
1605
|
let handlers = evl[entity];
|
|
@@ -1609,7 +1635,7 @@ export class EntityComponentDataset {
|
|
|
1609
1635
|
* @param {*} [thisArg]
|
|
1610
1636
|
*/
|
|
1611
1637
|
addEntityEventListener(entity, eventName, listener, thisArg) {
|
|
1612
|
-
|
|
1638
|
+
assert.isNonNegativeInteger(entity, "entity");
|
|
1613
1639
|
assert.isString(eventName, "eventName");
|
|
1614
1640
|
assert.isFunction(listener, "listener");
|
|
1615
1641
|
|
|
@@ -1648,6 +1674,10 @@ export class EntityComponentDataset {
|
|
|
1648
1674
|
* @returns {boolean}
|
|
1649
1675
|
*/
|
|
1650
1676
|
removeEntityEventListener(entity, eventName, listener, thisArg) {
|
|
1677
|
+
assert.isNonNegativeInteger(entity, "entity");
|
|
1678
|
+
assert.isString(eventName, "eventName");
|
|
1679
|
+
assert.isFunction(listener, "listener");
|
|
1680
|
+
|
|
1651
1681
|
const evl = this.__entityEventListeners;
|
|
1652
1682
|
|
|
1653
1683
|
const hash = evl[entity];
|
|
@@ -32,6 +32,8 @@ export class Transform {
|
|
|
32
32
|
*/
|
|
33
33
|
readonly position: Vector3;
|
|
34
34
|
/**
|
|
35
|
+
* Orientation represented as a quaternion.
|
|
36
|
+
* If Euler (XYZ) angles are required - consult {@link Quaternion} for relevant method
|
|
35
37
|
* @type {Quaternion}
|
|
36
38
|
* @readonly
|
|
37
39
|
*/
|
|
@@ -155,17 +157,25 @@ export class Transform {
|
|
|
155
157
|
* @returns {number}
|
|
156
158
|
*/
|
|
157
159
|
hash(): number;
|
|
160
|
+
/**
|
|
161
|
+
*
|
|
162
|
+
* @param {Transform} other
|
|
163
|
+
* @returns {this}
|
|
164
|
+
*/
|
|
165
|
+
multiply(other: Transform): this;
|
|
158
166
|
/**
|
|
159
167
|
* Multiply two transforms, result it written into this one
|
|
160
168
|
* @param {Transform} a
|
|
161
169
|
* @param {Transform} b
|
|
170
|
+
* @returns {this}
|
|
162
171
|
*/
|
|
163
|
-
multiplyTransforms(a: Transform, b: Transform):
|
|
172
|
+
multiplyTransforms(a: Transform, b: Transform): this;
|
|
164
173
|
/**
|
|
165
174
|
*
|
|
166
175
|
* @param {mat4|number[]|Float32Array} matrix
|
|
176
|
+
* @returns {this}
|
|
167
177
|
*/
|
|
168
|
-
fromMatrix4(matrix: mat4 | number[] | Float32Array):
|
|
178
|
+
fromMatrix4(matrix: mat4 | number[] | Float32Array): this;
|
|
169
179
|
/**
|
|
170
180
|
* Write out the current transform to a supplied container
|
|
171
181
|
* @param {number[]|Float32Array} result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform.js"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH;
|
|
1
|
+
{"version":3,"file":"Transform.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/Transform.js"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH;IA0QI;;;;OAIG;IACH,4BAFa,SAAS,CAQrB;IAED;;;;OAIG;IACH,uBAHW,MAAM,EAAE,GAAC,YAAY,GACnB,SAAS,CAQrB;IAiFD;;;;;OAKG;IACH,wCAJW,UAAU,gBACV,OAAO,wBAajB;IAjYD;;;OAGG;IACH,mBAHU,OAAO,CAGe;IAEhC;;;;;OAKG;IACH,mBAHU,UAAU,CAGkB;IAEtC;;;OAGG;IACH,gBAHU,OAAO,CAGY;IAE7B;;;;OAIG;IACH,iBAFU,YAAY,CAEC;IAEvB;;;;OAIG;IACH,OAFU,MAAM,CAEM;IAOtB;;;;OAIG;IACH,eAFa,OAAO,CAQnB;IAED;;;OAGG;IACH,UAFY,OAAO,CAQlB;IAED;;;OAGG;IACH,aAFY,OAAO,CAQlB;IAED;;;;OAIG;IACH,uCAFW,GAAC,QAMX;IAED;;;;OAIG;IACH,yCAFW,GAAC,QAMX;IAYD;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAC,cAAc,SACrB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,GAAC,cAAc,GACnB,OAAO,CAInB;IAED;;OAEG;IACH,qBAEC;IAED;;;;OAIG;IACH,eAHW,OAAO,OACP,OAAO,QAmBjB;IAED,0BAwBC;IAED;;;;;;;;;;;;;;;;;MAMC;IAED;;;OAGG;IACH,YAFW,SAAS,QAenB;IAED;;;OAGG;IACH,SAFa,SAAS,CAQrB;IAED;;;;OAIG;IACH,cAHW,SAAS,GACP,OAAO,CAMnB;IAED;;;OAGG;IACH,QAFa,MAAM,CAKlB;IA4BD;;;;OAIG;IACH,gBAHW,SAAS,GACP,IAAI,CAIhB;IAED;;;;;OAKG;IACH,sBAJW,SAAS,KACT,SAAS,GACP,IAAI,CAShB;IAED;;;;OAIG;IACH,oBAHW,IAAI,GAAC,MAAM,EAAE,GAAC,YAAY,GACxB,IAAI,CAkBhB;IAED;;;OAGG;IACH,kBAFW,MAAM,EAAE,GAAC,YAAY,QAI/B;IAED;;;;;OAKG;IACH,qBAEC;IAED;;;OAGG;IACH,cAFa,OAAO,CAMnB;IAED,mBAEC;IA2BL;;;OAGG;IACH,sBAFU,OAAO,CAEc;;CAZ9B;;kBAIS,MAAM;;oBA/ZI,+BAA+B;uBAD5B,kCAAkC;+BAE1B,qBAAqB"}
|
|
@@ -37,6 +37,8 @@ export class Transform {
|
|
|
37
37
|
position = new Vector3(0, 0, 0);
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
|
+
* Orientation represented as a quaternion.
|
|
41
|
+
* If Euler (XYZ) angles are required - consult {@link Quaternion} for relevant method
|
|
40
42
|
* @type {Quaternion}
|
|
41
43
|
* @readonly
|
|
42
44
|
*/
|
|
@@ -318,20 +320,34 @@ export class Transform {
|
|
|
318
320
|
return result;
|
|
319
321
|
}
|
|
320
322
|
|
|
323
|
+
/**
|
|
324
|
+
*
|
|
325
|
+
* @param {Transform} other
|
|
326
|
+
* @returns {this}
|
|
327
|
+
*/
|
|
328
|
+
multiply(other) {
|
|
329
|
+
return this.multiplyTransforms(this, other);
|
|
330
|
+
}
|
|
331
|
+
|
|
321
332
|
/**
|
|
322
333
|
* Multiply two transforms, result it written into this one
|
|
323
334
|
* @param {Transform} a
|
|
324
335
|
* @param {Transform} b
|
|
336
|
+
* @returns {this}
|
|
325
337
|
*/
|
|
326
338
|
multiplyTransforms(a, b) {
|
|
339
|
+
assert.defined(a, 'a');
|
|
340
|
+
assert.defined(b, 'b');
|
|
341
|
+
|
|
327
342
|
m4_multiply(scratch_matrix, a.matrix, b.matrix);
|
|
328
343
|
|
|
329
|
-
this.fromMatrix4(scratch_matrix);
|
|
344
|
+
return this.fromMatrix4(scratch_matrix);
|
|
330
345
|
}
|
|
331
346
|
|
|
332
347
|
/**
|
|
333
348
|
*
|
|
334
349
|
* @param {mat4|number[]|Float32Array} matrix
|
|
350
|
+
* @returns {this}
|
|
335
351
|
*/
|
|
336
352
|
fromMatrix4(matrix) {
|
|
337
353
|
assert.isArrayLike(matrix, 'matrix');
|
|
@@ -347,6 +363,8 @@ export class Transform {
|
|
|
347
363
|
|
|
348
364
|
// restore value of the flag
|
|
349
365
|
this.writeFlag(TransformFlags.AutomaticChangeDetection, ad);
|
|
366
|
+
|
|
367
|
+
return this;
|
|
350
368
|
}
|
|
351
369
|
|
|
352
370
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformFlags.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/TransformFlags.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransformFlags.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/TransformFlags.js"],"names":[],"mappings":";;;6BAGU,MAAM"}
|