@woosh/meep-engine 2.118.1 → 2.118.3
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/build/bundle-worker-terrain.js +1 -1
- package/build/meep.cjs +30 -5
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +30 -5
- package/package.json +1 -1
- package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
- package/src/core/collection/table/RowFirstTable.js +2 -0
- package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +22 -2
- package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
- package/src/core/geom/3d/topology/struct/TopoMesh.js +92 -29
- package/src/engine/animation/async/TimeSeries.d.ts +5 -1
- package/src/engine/animation/async/TimeSeries.d.ts.map +1 -1
- package/src/engine/animation/async/TimeSeries.js +14 -2
- package/src/engine/asset/loaders/material/computeTextureHash.d.ts.map +1 -1
- package/src/engine/asset/loaders/material/computeTextureHash.js +5 -0
- package/src/engine/graphics/canvas/computeHtmlCanvasElementHash.d.ts +7 -0
- package/src/engine/graphics/canvas/computeHtmlCanvasElementHash.d.ts.map +1 -0
- package/src/engine/graphics/canvas/computeHtmlCanvasElementHash.js +12 -0
- package/src/engine/graphics/canvas/computeImageCanvasEquality.js +3 -1
- package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.d.ts +2 -2
- package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.d.ts.map +1 -1
- package/src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.js +1 -1
- package/src/engine/graphics/texture/html_canvas_to_rendering_context2d_cached.d.ts +7 -0
- package/src/engine/graphics/texture/html_canvas_to_rendering_context2d_cached.d.ts.map +1 -0
- package/src/engine/graphics/texture/html_canvas_to_rendering_context2d_cached.js +20 -0
- package/src/engine/graphics/texture/html_canvas_to_sampler2d.d.ts.map +1 -1
- package/src/engine/graphics/texture/html_canvas_to_sampler2d.js +2 -11
package/build/meep.module.js
CHANGED
|
@@ -51201,18 +51201,28 @@ const context_cache = new WeakMap();
|
|
|
51201
51201
|
/**
|
|
51202
51202
|
*
|
|
51203
51203
|
* @param {HTMLCanvasElement} canvas
|
|
51204
|
-
* @returns {
|
|
51204
|
+
* @returns {CanvasRenderingContext2D}
|
|
51205
51205
|
*/
|
|
51206
|
-
function
|
|
51207
|
-
const width = canvas.width;
|
|
51208
|
-
const height = canvas.height;
|
|
51209
|
-
|
|
51206
|
+
function html_canvas_to_rendering_context2d_cached(canvas) {
|
|
51210
51207
|
let context = context_cache.get(canvas);
|
|
51211
51208
|
|
|
51212
51209
|
if (context === undefined) {
|
|
51213
51210
|
context = canvas.getContext("2d");
|
|
51214
51211
|
context_cache.set(canvas, context);
|
|
51215
51212
|
}
|
|
51213
|
+
return context;
|
|
51214
|
+
}
|
|
51215
|
+
|
|
51216
|
+
/**
|
|
51217
|
+
*
|
|
51218
|
+
* @param {HTMLCanvasElement} canvas
|
|
51219
|
+
* @returns {Sampler2D}
|
|
51220
|
+
*/
|
|
51221
|
+
function html_canvas_to_sampler2d(canvas) {
|
|
51222
|
+
const width = canvas.width;
|
|
51223
|
+
const height = canvas.height;
|
|
51224
|
+
|
|
51225
|
+
const context = html_canvas_to_rendering_context2d_cached(canvas);
|
|
51216
51226
|
|
|
51217
51227
|
const imageData = context.getImageData(0, 0, width, height);
|
|
51218
51228
|
|
|
@@ -76449,6 +76459,17 @@ function murmur3_32(key, seed) {
|
|
|
76449
76459
|
return h1 >>> 0;
|
|
76450
76460
|
}
|
|
76451
76461
|
|
|
76462
|
+
/**
|
|
76463
|
+
*
|
|
76464
|
+
* @param {HTMLCanvasElement} canvas
|
|
76465
|
+
* @returns {number}
|
|
76466
|
+
*/
|
|
76467
|
+
function computeHtmlCanvasElementHash(canvas) {
|
|
76468
|
+
const sampler = html_canvas_to_sampler2d(canvas);
|
|
76469
|
+
|
|
76470
|
+
return sampler.hash();
|
|
76471
|
+
}
|
|
76472
|
+
|
|
76452
76473
|
/**
|
|
76453
76474
|
* Guards against cases where ImageBitmap doesn't exist
|
|
76454
76475
|
* @param {*} image
|
|
@@ -76693,6 +76714,10 @@ function computeImageDataHash(image) {
|
|
|
76693
76714
|
|
|
76694
76715
|
result = computeStringHash(image.src);
|
|
76695
76716
|
|
|
76717
|
+
}else if(image instanceof HTMLCanvasElement) {
|
|
76718
|
+
|
|
76719
|
+
result = computeHtmlCanvasElementHash(image);
|
|
76720
|
+
|
|
76696
76721
|
}
|
|
76697
76722
|
|
|
76698
76723
|
let width = 0;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowFirstTable.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTable.js"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH;IACI;;;;;OAKG;IACH,oDAHW,OAAO,EAiDjB;IAzCG;;;OAGG;IACH,wBAAgB;IAEhB;;;OAGG;IACH,MAFU,WAAW,CAE4D;IAEjF;;;OAGG;IACH,QAFU,MAAM,CAED;IAEf;;;OAGG;IACH,UAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,UAFU,QAAQ,CAEqB;IAEvC;;;OAGG;IACH,IAFU;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAOxB;IAIL;;;OAGG;IACH,8BAEC;IAED;;;OAGG;IACH,6BAEC;IAED;;;OAGG;IACH,4BAFqB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAIrD;IAED;;;OAGG;IACH,6BAFqB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAIrD;IAGD;;;;OAIG;IACH,uDAMC;IAED;;;OAGG;IACH,QAFa,MAAM,CA+BlB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAgDhB;IAED;;OAEG;IACH,aAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,gBACN,MAAM,SACN,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,MAAM,CAmBlB;IAED;;;;OAIG;IACH,kBAHW,MAAM,aACN,MAAM,QAyBhB;IAED;;;;;;OAMG;IACH,kBAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;OAKG;IACH,kBAFY,MAAM,CAYjB;IAED;;;;OAIG;IACH,eAHW,MAAO,MAAM,CAAC,GACZ,MAAM,
|
|
1
|
+
{"version":3,"file":"RowFirstTable.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTable.js"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH;IACI;;;;;OAKG;IACH,oDAHW,OAAO,EAiDjB;IAzCG;;;OAGG;IACH,wBAAgB;IAEhB;;;OAGG;IACH,MAFU,WAAW,CAE4D;IAEjF;;;OAGG;IACH,QAFU,MAAM,CAED;IAEf;;;OAGG;IACH,UAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,UAFU,QAAQ,CAEqB;IAEvC;;;OAGG;IACH,IAFU;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAOxB;IAIL;;;OAGG;IACH,8BAEC;IAED;;;OAGG;IACH,6BAEC;IAED;;;OAGG;IACH,4BAFqB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAIrD;IAED;;;OAGG;IACH,6BAFqB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAIrD;IAGD;;;;OAIG;IACH,uDAMC;IAED;;;OAGG;IACH,QAFa,MAAM,CA+BlB;IAED;;;OAGG;IACH,sBAFW,MAAM,QAgDhB;IAED;;OAEG;IACH,aAEC;IAED;;;OAGG;IACH,kBAFW,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,gBACN,MAAM,SACN,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,yBAJW,MAAM,gBACN,MAAM,GACJ,MAAM,CAmBlB;IAED;;;;OAIG;IACH,kBAHW,MAAM,aACN,MAAM,QAyBhB;IAED;;;;;;OAMG;IACH,kBAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;OAKG;IACH,kBAFY,MAAM,CAYjB;IAED;;;;OAIG;IACH,eAHW,MAAO,MAAM,CAAC,GACZ,MAAM,CAYlB;IAED;;;;OAIG;IACH,eAHW,MAAM,4BA8ChB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,MAAM,QAwBhB;IAED;;;;OAIG;IACH,YAFW,aAAa,QAmBvB;IAED;;;OAGG;IACH,cAHW,aAAa,GACX,OAAO,CAmCnB;IAED;;;;;OAKG;IACH,eAJW,MAAM,WACN,MAAM,EAAE,GACN,MAAM,EAAE,CAUpB;IAED;;;;OAIG;IACH,gBAHW,MAAM,UACN,MAAM,EAAE,QAUlB;IAED;;OAEG;IACH,qBA4BC;IAED;;OAEG;IACH,cAIC;IAED;;;OAGG;IACH,iBAFa,MAAM,CAIlB;IAED;;;OAGG;IACH,cAFa,MAAM,EAAE,EAAE,CAetB;IAED;;OAEG;IACH,uBAIC;IAED;;OAEG;IACH,mBAEC;IAGL;;OAEG;IACH,gBAtHe,MAAM,WACN,MAAM,EAAE,KACN,MAAM,EAAE,CAoHK;IAC9B;;OAEG;IACH,gBA1Ge,MAAM,UACN,MAAM,EAAE,UAyGO;CAT7B;mBAlpBkB,+BAA+B"}
|
|
@@ -390,6 +390,8 @@ export class RowFirstTable {
|
|
|
390
390
|
* @returns {number} index of newly added row
|
|
391
391
|
*/
|
|
392
392
|
addRow(values) {
|
|
393
|
+
assert.isArrayLike(values, 'values');
|
|
394
|
+
|
|
393
395
|
const rowIndex = this.createEmptyRow();
|
|
394
396
|
|
|
395
397
|
this.spec.writeRowMethod(this.dataView, this.spec.bytesPerRecord * rowIndex, values);
|
|
@@ -154,9 +154,29 @@ export class TopoMesh {
|
|
|
154
154
|
/**
|
|
155
155
|
*
|
|
156
156
|
* @param {Float32Array} vertices
|
|
157
|
-
* @param {Uint32Array|Uint16Array|Uint8Array|number[]} faces
|
|
158
157
|
*/
|
|
159
|
-
|
|
158
|
+
setVerticesFromArray(vertices: Float32Array): void;
|
|
159
|
+
/**
|
|
160
|
+
*
|
|
161
|
+
* @param {Uint16Array|Uint32Array|number[]} faces
|
|
162
|
+
*/
|
|
163
|
+
setFacesFromIndexArray(faces: Uint16Array | Uint32Array | number[]): void;
|
|
164
|
+
setFacedUnindexed(): void;
|
|
165
|
+
/**
|
|
166
|
+
*
|
|
167
|
+
* @param {Float64Array|Float32Array|number[]} vertices
|
|
168
|
+
* @param {Uint32Array|Uint16Array|Uint8Array|number[]} [faces]
|
|
169
|
+
*/
|
|
170
|
+
build(vertices: Float64Array | Float32Array | number[], faces?: Uint32Array | Uint16Array | Uint8Array | number[]): void;
|
|
171
|
+
/**
|
|
172
|
+
*
|
|
173
|
+
* @param {number} index
|
|
174
|
+
* @param {TopoVertex} v0
|
|
175
|
+
* @param {TopoVertex} v1
|
|
176
|
+
* @param {TopoVertex} v2
|
|
177
|
+
* @returns {TopoTriangle}
|
|
178
|
+
*/
|
|
179
|
+
createTriangle(index: number, v0: TopoVertex, v1: TopoVertex, v2: TopoVertex): TopoTriangle;
|
|
160
180
|
toString(): string;
|
|
161
181
|
/**
|
|
162
182
|
* @readonly
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopoMesh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoMesh.js"],"names":[],"mappings":"AAcA;IAEI;;;OAGG;IACH,UAFU,UAAU,EAAE,CAER;IAEd;;;;OAIG;IACH,gBAAoB;IAGpB;;;;OAIG;IACH,gBAAoB;IAEpB;;;;OAIG;IACH,uBAkBC;IAED;;;OAGG;IACH,YAFa,IAAI,QAAQ,CAAC,CAIzB;IAED;;;OAGG;IACH,YAFa,IAAI,YAAY,CAAC,CAI7B;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACL,SAAS,GAAC,YAAY,CAYjC;IAED;;;;OAIG;IACH,wCAFa,OAAO,CA0GnB;IAED,kBAMC;IAED;;;OAGG;IACH,sBAFa,IAAI,MAAM,EAAE,UAAU,CAAC,CAoBnC;IAED;;;;OAIG;IACH,yBAHW,QAAQ,cACR,IAAI,MAAM,EAAE,UAAU,CAAC,QAYjC;IAED;;;;OAIG;IACH,kBAHW,YAAY,cACZ,IAAI,MAAM,EAAC,UAAU,CAAC,QAqChC;IAED;;;;OAIG;IACH,qBAFW,YAAY,QAsBtB;IAED;;;OAGG;IACH,WAFW,QAAQ,QAclB;IAED;;;OAGG;IACH,aAFW,UAAU,QAKpB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAMpB;IAED;;;OAGG;IACH,gBAFW,UAAU,QAIpB;IAED;;;;OAIG;IACH,kBAHW,UAAU,GACR,OAAO,CAKnB;IAGD;;;OAGG;IACH,WAFW,QAAQ,QAKlB;IAED;;;OAGG;IACH,iBAFW,QAAQ,QAMlB;IAED;;;OAGG;IACH,cAFW,QAAQ,QAIlB;IAED;;;;OAIG;IACH,gBAHW,QAAQ,GACN,OAAO,CAKnB;IAED;;;OAGG;IACH,WAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,uBAFW,SAAS,YAAY,CAAC,QAMhC;IAED;;;OAGG;IACH,cAFW,YAAY,QAwBtB;IAED;;;OAGG;IACH,cAFW,YAAY,QAItB;IAED;;;;OAIG;IACH,gBAHW,YAAY,GACV,OAAO,CAKnB;IAED;;;;;;OAMG;IACH,cALW,UAAU,KACV,UAAU,GAER,QAAQ,CAoCpB;IAED,mBAsCC;IAED,kCAQC;IAED;;;;OAIG;IACH,gBAHW,YAAY,
|
|
1
|
+
{"version":3,"file":"TopoMesh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoMesh.js"],"names":[],"mappings":"AAcA;IAEI;;;OAGG;IACH,UAFU,UAAU,EAAE,CAER;IAEd;;;;OAIG;IACH,gBAAoB;IAGpB;;;;OAIG;IACH,gBAAoB;IAEpB;;;;OAIG;IACH,uBAkBC;IAED;;;OAGG;IACH,YAFa,IAAI,QAAQ,CAAC,CAIzB;IAED;;;OAGG;IACH,YAFa,IAAI,YAAY,CAAC,CAI7B;IAED;;;;OAIG;IACH,sBAHW,MAAM,GACL,SAAS,GAAC,YAAY,CAYjC;IAED;;;;OAIG;IACH,wCAFa,OAAO,CA0GnB;IAED,kBAMC;IAED;;;OAGG;IACH,sBAFa,IAAI,MAAM,EAAE,UAAU,CAAC,CAoBnC;IAED;;;;OAIG;IACH,yBAHW,QAAQ,cACR,IAAI,MAAM,EAAE,UAAU,CAAC,QAYjC;IAED;;;;OAIG;IACH,kBAHW,YAAY,cACZ,IAAI,MAAM,EAAC,UAAU,CAAC,QAqChC;IAED;;;;OAIG;IACH,qBAFW,YAAY,QAsBtB;IAED;;;OAGG;IACH,WAFW,QAAQ,QAclB;IAED;;;OAGG;IACH,aAFW,UAAU,QAKpB;IAED;;;OAGG;IACH,mBAFW,UAAU,QAMpB;IAED;;;OAGG;IACH,gBAFW,UAAU,QAIpB;IAED;;;;OAIG;IACH,kBAHW,UAAU,GACR,OAAO,CAKnB;IAGD;;;OAGG;IACH,WAFW,QAAQ,QAKlB;IAED;;;OAGG;IACH,iBAFW,QAAQ,QAMlB;IAED;;;OAGG;IACH,cAFW,QAAQ,QAIlB;IAED;;;;OAIG;IACH,gBAHW,QAAQ,GACN,OAAO,CAKnB;IAED;;;OAGG;IACH,WAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,uBAFW,SAAS,YAAY,CAAC,QAMhC;IAED;;;OAGG;IACH,cAFW,YAAY,QAwBtB;IAED;;;OAGG;IACH,cAFW,YAAY,QAItB;IAED;;;;OAIG;IACH,gBAHW,YAAY,GACV,OAAO,CAKnB;IAED;;;;;;OAMG;IACH,cALW,UAAU,KACV,UAAU,GAER,QAAQ,CAoCpB;IAED,mBAsCC;IAED,kCAQC;IAED;;;OAGG;IACH,+BAFW,YAAY,QA6BtB;IAED;;;OAGG;IACH,8BAFW,WAAW,GAAC,WAAW,GAAC,MAAM,EAAE,QA4B1C;IAED,0BAiBC;IAED;;;;OAIG;IACH,gBAHW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,UAClC,WAAW,GAAC,WAAW,GAAC,UAAU,GAAC,MAAM,EAAE,QAYrD;IAED;;;;;;;OAOG;IACH,sBANW,MAAM,MACN,UAAU,MACV,UAAU,MACV,UAAU,GACR,YAAY,CA0BxB;IAED,mBAEC;IAIL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;2BAlsB0B,iBAAiB;yBAFnB,eAAe;6BACX,mBAAmB;qBAR3B,8BAA8B"}
|
|
@@ -581,22 +581,20 @@ export class TopoMesh {
|
|
|
581
581
|
/**
|
|
582
582
|
*
|
|
583
583
|
* @param {Float32Array} vertices
|
|
584
|
-
* @param {Uint32Array|Uint16Array|Uint8Array|number[]} faces
|
|
585
584
|
*/
|
|
586
|
-
|
|
585
|
+
setVerticesFromArray(vertices) {
|
|
586
|
+
assert.defined(vertices, 'vertices');
|
|
587
587
|
|
|
588
|
-
const face_array_size = faces.length;
|
|
589
588
|
const vertex_array_size = vertices.length;
|
|
590
589
|
|
|
591
|
-
assert.equal(face_array_size % 3, 0, `Face array size must be multiple of 3, instead was ${face_array_size}`)
|
|
592
590
|
assert.equal(vertex_array_size % 3, 0, `Vertex array size must be multiple of 3, instead was ${vertex_array_size}`)
|
|
593
591
|
|
|
594
|
-
const
|
|
592
|
+
const vertex_count = vertex_array_size / 3;
|
|
595
593
|
|
|
596
594
|
//populate vertices
|
|
597
|
-
const
|
|
595
|
+
const topo_vertices = this.vertices;
|
|
598
596
|
|
|
599
|
-
for (let i = 0; i <
|
|
597
|
+
for (let i = 0; i < vertex_count; i++) {
|
|
600
598
|
|
|
601
599
|
const i3 = i * 3;
|
|
602
600
|
|
|
@@ -608,46 +606,111 @@ export class TopoMesh {
|
|
|
608
606
|
v.y = vertices[i3 + 1];
|
|
609
607
|
v.z = vertices[i3 + 2];
|
|
610
608
|
|
|
611
|
-
|
|
609
|
+
topo_vertices[i] = v;
|
|
612
610
|
}
|
|
613
611
|
|
|
614
|
-
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
*
|
|
616
|
+
* @param {Uint16Array|Uint32Array|number[]} faces
|
|
617
|
+
*/
|
|
618
|
+
setFacesFromIndexArray(faces) {
|
|
619
|
+
const face_array_size = faces.length;
|
|
620
|
+
|
|
621
|
+
assert.equal(face_array_size % 3, 0, `Face array size must be multiple of 3, instead was ${face_array_size}`)
|
|
622
|
+
|
|
623
|
+
//populate vertices
|
|
624
|
+
const topo_vertices = this.vertices;
|
|
625
|
+
|
|
626
|
+
const face_count = face_array_size / 3;
|
|
615
627
|
|
|
616
628
|
// populate faces
|
|
617
|
-
const topoFaces = this.getFaces();
|
|
618
629
|
|
|
619
|
-
for (let i = 0; i <
|
|
630
|
+
for (let i = 0; i < face_count; i++) {
|
|
620
631
|
const i3 = i * 3;
|
|
621
632
|
|
|
622
633
|
const a = faces[i3];
|
|
623
634
|
const b = faces[i3 + 1];
|
|
624
635
|
const c = faces[i3 + 2];
|
|
625
636
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
637
|
+
this.createTriangle(
|
|
638
|
+
i,
|
|
639
|
+
topo_vertices[a],
|
|
640
|
+
topo_vertices[b],
|
|
641
|
+
topo_vertices[c]
|
|
642
|
+
);
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
setFacedUnindexed() {
|
|
647
|
+
const topo_vertices = this.vertices;
|
|
629
648
|
|
|
630
|
-
|
|
631
|
-
f.index = i;
|
|
649
|
+
const face_count = topo_vertices.length / 3;
|
|
632
650
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
const eCA = this.ensureEdge(vC, vA);
|
|
651
|
+
// populate faces
|
|
652
|
+
for (let i = 0; i < face_count; i++) {
|
|
636
653
|
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
654
|
+
const offset = i * 3;
|
|
655
|
+
|
|
656
|
+
this.createTriangle(
|
|
657
|
+
i,
|
|
658
|
+
topo_vertices[offset],
|
|
659
|
+
topo_vertices[offset + 1],
|
|
660
|
+
topo_vertices[offset + 2]
|
|
661
|
+
);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
641
664
|
|
|
642
|
-
|
|
643
|
-
|
|
665
|
+
/**
|
|
666
|
+
*
|
|
667
|
+
* @param {Float64Array|Float32Array|number[]} vertices
|
|
668
|
+
* @param {Uint32Array|Uint16Array|Uint8Array|number[]} [faces]
|
|
669
|
+
*/
|
|
670
|
+
build(vertices, faces) {
|
|
644
671
|
|
|
645
|
-
|
|
646
|
-
vB.faces.push(f);
|
|
647
|
-
vC.faces.push(f);
|
|
672
|
+
this.setVerticesFromArray(vertices);
|
|
648
673
|
|
|
649
|
-
|
|
674
|
+
if (faces === undefined || faces === null) {
|
|
675
|
+
this.setFacedUnindexed();
|
|
676
|
+
} else {
|
|
677
|
+
this.setFacesFromIndexArray(faces);
|
|
650
678
|
}
|
|
679
|
+
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
*
|
|
684
|
+
* @param {number} index
|
|
685
|
+
* @param {TopoVertex} v0
|
|
686
|
+
* @param {TopoVertex} v1
|
|
687
|
+
* @param {TopoVertex} v2
|
|
688
|
+
* @returns {TopoTriangle}
|
|
689
|
+
*/
|
|
690
|
+
createTriangle(index, v0, v1, v2) {
|
|
691
|
+
const f = new TopoTriangle();
|
|
692
|
+
|
|
693
|
+
f.index = index;
|
|
694
|
+
|
|
695
|
+
const e01 = this.ensureEdge(v0, v1);
|
|
696
|
+
const e12 = this.ensureEdge(v1, v2);
|
|
697
|
+
const e20 = this.ensureEdge(v2, v0);
|
|
698
|
+
|
|
699
|
+
//link primitives
|
|
700
|
+
e01.faces.push(f);
|
|
701
|
+
e12.faces.push(f);
|
|
702
|
+
e20.faces.push(f);
|
|
703
|
+
|
|
704
|
+
f.vertices.push(v0, v1, v2);
|
|
705
|
+
f.edges.push(e01, e12, e20);
|
|
706
|
+
|
|
707
|
+
v0.faces.push(f);
|
|
708
|
+
v1.faces.push(f);
|
|
709
|
+
v2.faces.push(f);
|
|
710
|
+
|
|
711
|
+
this.__faces.add(f);
|
|
712
|
+
|
|
713
|
+
return f;
|
|
651
714
|
}
|
|
652
715
|
|
|
653
716
|
toString() {
|
|
@@ -33,7 +33,11 @@ export class TimeSeries<T> {
|
|
|
33
33
|
* @returns {number}
|
|
34
34
|
*/
|
|
35
35
|
get last_timestamp(): number;
|
|
36
|
-
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param {number[]} data
|
|
39
|
+
*/
|
|
40
|
+
validateNextSample(data: number[]): void;
|
|
37
41
|
/**
|
|
38
42
|
*
|
|
39
43
|
* @param {number[]} data
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeSeries.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/async/TimeSeries.js"],"names":[],"mappings":"AAiBA;;GAEG;AACH;IA+BI;;;;OAIG;IACH,4CAFW,MAAM,EAuChB;IAxED;;OAEG;IACH,MAFU,iBAAiB,CAEvB;IAEJ;;OAEG;IACH,OAFU,aAAa,CAElB;IAEL,0BAAsB;IAyHtB;;;;OAIG;IACH,8BAHW,MAAM,OAOhB;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,6BAWC;IAED,
|
|
1
|
+
{"version":3,"file":"TimeSeries.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/async/TimeSeries.js"],"names":[],"mappings":"AAiBA;;GAEG;AACH;IA+BI;;;;OAIG;IACH,4CAFW,MAAM,EAuChB;IAxED;;OAEG;IACH,MAFU,iBAAiB,CAEvB;IAEJ;;OAEG;IACH,OAFU,aAAa,CAElB;IAEL,0BAAsB;IAyHtB;;;;OAIG;IACH,8BAHW,MAAM,OAOhB;IAED;;;OAGG;IACH,2BAEC;IAED;;;OAGG;IACH,6BAWC;IAED;;;OAGG;IACH,yBAFW,MAAM,EAAE,QAwBlB;IAED;;;OAGG;IACH,gBAFW,MAAM,EAAE,QAQlB;IAED;;;OAGG;IACH,mCAIC;IAED;;;;OAIG;IACH,yBAHW,MAAM,EAAE,SACR,MAAM,QAIhB;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAMlB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,EAAE,iBACR,MAAM,QACN,MAAM,QAuBhB;IAED;;;;OAIG;IACH,yBAHW,MAAM,OAShB;;CAEJ;kCAzSiC,qDAAqD;8BADzD,iDAAiD"}
|
|
@@ -186,8 +186,14 @@ export class TimeSeries {
|
|
|
186
186
|
return table.readCellValue(record_count - 1, time_column);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
+
/**
|
|
190
|
+
*
|
|
191
|
+
* @param {number[]} data
|
|
192
|
+
*/
|
|
189
193
|
validateNextSample(data) {
|
|
190
194
|
|
|
195
|
+
assert.isArrayLike(data, 'data');
|
|
196
|
+
|
|
191
197
|
const table = this.table;
|
|
192
198
|
const record_count = table.length;
|
|
193
199
|
|
|
@@ -195,8 +201,14 @@ export class TimeSeries {
|
|
|
195
201
|
const time_column = this.time_column_index;
|
|
196
202
|
const last_time = table.readCellValue(record_count - 1, time_column);
|
|
197
203
|
|
|
198
|
-
|
|
199
|
-
|
|
204
|
+
const record = data[time_column];
|
|
205
|
+
|
|
206
|
+
assert.isNumber(record, `data[${time_column}](time)`);
|
|
207
|
+
assert.notNaN(record, `data[${time_column}](time)`);
|
|
208
|
+
assert.isFiniteNumber(record, `data[${time_column}](time)`);
|
|
209
|
+
|
|
210
|
+
if (record <= last_time) {
|
|
211
|
+
throw new Error(`Sample.time[${time_column}] = ${record}, which is <= to previous time stamp(=${last_time}). Each sample's time stamp must be strictly greater than the previous one`);
|
|
200
212
|
}
|
|
201
213
|
}
|
|
202
214
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeTextureHash.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/asset/loaders/material/computeTextureHash.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"computeTextureHash.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/asset/loaders/material/computeTextureHash.js"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH;;WAHoD,MAAM;YAAQ,MAAM;IAC5D,MAAM,CA0CjB;AA4CD;;;;GAIG;AACH,sCAHW,UAAQ,MAAM,OAAO,GACnB,MAAM,CAqClB"}
|
|
@@ -2,6 +2,7 @@ import { combine_hash } from "../../../../core/collection/array/combine_hash.js"
|
|
|
2
2
|
import { murmur3_32 } from "../../../../core/math/hash/murmur3_32.js";
|
|
3
3
|
import { computeHashFloat } from "../../../../core/primitives/numbers/computeHashFloat.js";
|
|
4
4
|
import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
|
|
5
|
+
import { computeHtmlCanvasElementHash } from "../../../graphics/canvas/computeHtmlCanvasElementHash.js";
|
|
5
6
|
import { isImageBitmap } from "../../../graphics/texture/isImageBitmap.js";
|
|
6
7
|
import { computeImageBitmapHash } from "./computeImageBitmapHash.js";
|
|
7
8
|
|
|
@@ -44,6 +45,10 @@ export function computeImageDataHash(image) {
|
|
|
44
45
|
|
|
45
46
|
result = computeStringHash(image.src);
|
|
46
47
|
|
|
48
|
+
}else if(image instanceof HTMLCanvasElement) {
|
|
49
|
+
|
|
50
|
+
result = computeHtmlCanvasElementHash(image);
|
|
51
|
+
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
let width = 0;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeHtmlCanvasElementHash.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/canvas/computeHtmlCanvasElementHash.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,qDAHW,iBAAiB,GACf,MAAM,CAMlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import html_canvas_to_sampler2d from "../texture/html_canvas_to_sampler2d.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {HTMLCanvasElement} canvas
|
|
6
|
+
* @returns {number}
|
|
7
|
+
*/
|
|
8
|
+
export function computeHtmlCanvasElementHash(canvas) {
|
|
9
|
+
const sampler = html_canvas_to_sampler2d(canvas);
|
|
10
|
+
|
|
11
|
+
return sampler.hash();
|
|
12
|
+
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @param {Float64Array|Float32Array|number[]} positions
|
|
5
5
|
* @param {Float64Array|Float32Array|number[]} uvs
|
|
6
|
-
* @param {Uint16Array|Uint32Array|number[]} faces
|
|
6
|
+
* @param {Uint16Array|Uint32Array|number[]|undefined} faces
|
|
7
7
|
* @param {number} [steps] Number of optimization passes to perform
|
|
8
8
|
*/
|
|
9
|
-
export function geometry_optimize_uv_tension(positions: Float64Array | Float32Array | number[], uvs: Float64Array | Float32Array | number[], faces: Uint16Array | Uint32Array | number[], steps?: number): void;
|
|
9
|
+
export function geometry_optimize_uv_tension(positions: Float64Array | Float32Array | number[], uvs: Float64Array | Float32Array | number[], faces: Uint16Array | Uint32Array | number[] | undefined, steps?: number): void;
|
|
10
10
|
//# sourceMappingURL=geometry_optimize_uv_tension.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry_optimize_uv_tension.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wDALW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,OAClC,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,SAClC,WAAW,GAAC,WAAW,GAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"geometry_optimize_uv_tension.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/geometry/optimization/geometry_optimize_uv_tension.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,wDALW,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,OAClC,YAAY,GAAC,YAAY,GAAC,MAAM,EAAE,SAClC,WAAW,GAAC,WAAW,GAAC,MAAM,EAAE,GAAC,SAAS,UAC1C,MAAM,QA0EhB"}
|
|
@@ -7,7 +7,7 @@ import { TopoMesh } from "../../../../core/geom/3d/topology/struct/TopoMesh.js";
|
|
|
7
7
|
*
|
|
8
8
|
* @param {Float64Array|Float32Array|number[]} positions
|
|
9
9
|
* @param {Float64Array|Float32Array|number[]} uvs
|
|
10
|
-
* @param {Uint16Array|Uint32Array|number[]} faces
|
|
10
|
+
* @param {Uint16Array|Uint32Array|number[]|undefined} faces
|
|
11
11
|
* @param {number} [steps] Number of optimization passes to perform
|
|
12
12
|
*/
|
|
13
13
|
export function geometry_optimize_uv_tension(
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {HTMLCanvasElement} canvas
|
|
4
|
+
* @returns {CanvasRenderingContext2D}
|
|
5
|
+
*/
|
|
6
|
+
export function html_canvas_to_rendering_context2d_cached(canvas: HTMLCanvasElement): CanvasRenderingContext2D;
|
|
7
|
+
//# sourceMappingURL=html_canvas_to_rendering_context2d_cached.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html_canvas_to_rendering_context2d_cached.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/html_canvas_to_rendering_context2d_cached.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,kEAHW,iBAAiB,GACf,wBAAwB,CAUpC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @type {WeakMap<HTMLCanvasElement, CanvasRenderingContext2D>}
|
|
4
|
+
*/
|
|
5
|
+
const context_cache = new WeakMap();
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param {HTMLCanvasElement} canvas
|
|
10
|
+
* @returns {CanvasRenderingContext2D}
|
|
11
|
+
*/
|
|
12
|
+
export function html_canvas_to_rendering_context2d_cached(canvas) {
|
|
13
|
+
let context = context_cache.get(canvas);
|
|
14
|
+
|
|
15
|
+
if (context === undefined) {
|
|
16
|
+
context = canvas.getContext("2d");
|
|
17
|
+
context_cache.set(canvas, context);
|
|
18
|
+
}
|
|
19
|
+
return context;
|
|
20
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html_canvas_to_sampler2d.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/html_canvas_to_sampler2d.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"html_canvas_to_sampler2d.d.ts","sourceRoot":"","sources":["../../../../../src/engine/graphics/texture/html_canvas_to_sampler2d.js"],"names":[],"mappings":";AAIA;;;;GAIG;AACH,kDAHW,iBAAiB,GACf,SAAS,CAcrB;0BApByB,wBAAwB"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
+
import { html_canvas_to_rendering_context2d_cached } from "./html_canvas_to_rendering_context2d_cached.js";
|
|
1
2
|
import { Sampler2D } from './sampler/Sampler2D.js';
|
|
2
3
|
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* @type {WeakMap<HTMLCanvasElement, CanvasRenderingContext2D>}
|
|
6
|
-
*/
|
|
7
|
-
const context_cache = new WeakMap();
|
|
8
4
|
|
|
9
5
|
/**
|
|
10
6
|
*
|
|
@@ -15,12 +11,7 @@ function html_canvas_to_sampler2d(canvas) {
|
|
|
15
11
|
const width = canvas.width;
|
|
16
12
|
const height = canvas.height;
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (context === undefined) {
|
|
21
|
-
context = canvas.getContext("2d");
|
|
22
|
-
context_cache.set(canvas, context);
|
|
23
|
-
}
|
|
14
|
+
const context = html_canvas_to_rendering_context2d_cached(canvas);
|
|
24
15
|
|
|
25
16
|
const imageData = context.getImageData(0, 0, width, height);
|
|
26
17
|
|