@woosh/meep-engine 2.112.1 → 2.113.2

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.
Files changed (39) hide show
  1. package/build/bundle-worker-image-decoder.js +1 -1
  2. package/build/bundle-worker-terrain.js +1 -1
  3. package/build/meep.cjs +5 -2
  4. package/build/meep.module.js +5 -2
  5. package/editor/Editor.js +2 -0
  6. package/package.json +1 -1
  7. package/src/core/binary/BinaryBuffer.d.ts +7 -1
  8. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  9. package/src/core/binary/BinaryBuffer.js +17 -2
  10. package/src/core/binary/platform_compute_endianness.d.ts +8 -0
  11. package/src/core/binary/platform_compute_endianness.d.ts.map +1 -0
  12. package/src/core/binary/platform_compute_endianness.js +29 -0
  13. package/src/core/binary/type/DataTypeIndices.d.ts +1 -0
  14. package/src/core/binary/type/DataTypeIndices.d.ts.map +1 -1
  15. package/src/core/binary/type/DataTypeIndices.js +2 -1
  16. package/src/core/collection/CuckooFilter.d.ts +3 -0
  17. package/src/core/collection/CuckooFilter.d.ts.map +1 -1
  18. package/src/core/collection/CuckooFilter.js +8 -5
  19. package/src/core/collection/SCRATCH_UINT32_TRAVERSAL_STACK.js +1 -1
  20. package/src/core/collection/queue/Deque.d.ts.map +1 -1
  21. package/src/core/collection/queue/Deque.js +4 -1
  22. package/src/core/collection/table/RowFirstTableSpec.d.ts +2 -2
  23. package/src/core/collection/table/RowFirstTableSpec.d.ts.map +1 -1
  24. package/src/core/collection/table/RowFirstTableSpec.js +11 -7
  25. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  26. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +8 -3
  27. package/src/core/geom/3d/topology/simplify/collapseEdge.d.ts.map +1 -1
  28. package/src/core/geom/3d/topology/simplify/collapseEdge.js +8 -23
  29. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts +1 -0
  30. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts.map +1 -1
  31. package/src/core/geom/3d/topology/struct/TopoEdge.js +35 -36
  32. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
  33. package/src/core/geom/3d/topology/struct/TopoMesh.js +18 -21
  34. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
  35. package/src/core/geom/3d/topology/struct/TopoTriangle.js +24 -26
  36. package/src/core/geom/3d/topology/struct/TopoVertex.d.ts.map +1 -1
  37. package/src/core/geom/3d/topology/struct/TopoVertex.js +37 -70
  38. package/src/engine/scene/SerializedScene.d.ts.map +1 -1
  39. package/src/engine/scene/SerializedScene.js +7 -4
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.112.1",
8
+ "version": "2.113.2",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -3,6 +3,12 @@
3
3
  * Mostly useful for serialization/deserialization tasks
4
4
  */
5
5
  export class BinaryBuffer {
6
+ /**
7
+ *
8
+ * @param {EndianType} type
9
+ * @return {BinaryBuffer}
10
+ */
11
+ static fromEndianness(type: EndianType): BinaryBuffer;
6
12
  /**
7
13
  *
8
14
  * @param {ArrayBuffer} v
@@ -66,7 +72,7 @@ export class BinaryBuffer {
66
72
  */
67
73
  static copyBytes(source: BinaryBuffer, target: BinaryBuffer, length: number): Uint8Array;
68
74
  /**
69
- *
75
+ * Default is little-endian as most platforms operate in little-endian
70
76
  * @type {EndianType|boolean}
71
77
  */
72
78
  endianness: EndianType | boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BinaryBuffer.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BinaryBuffer.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/BinaryBuffer.js"],"names":[],"mappings":"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"}
@@ -33,10 +33,10 @@ const DEFAULT_INITIAL_SIZE = 1024;
33
33
  export class BinaryBuffer {
34
34
 
35
35
  /**
36
- *
36
+ * Default is little-endian as most platforms operate in little-endian
37
37
  * @type {EndianType|boolean}
38
38
  */
39
- endianness = EndianType.BigEndian;
39
+ endianness = EndianType.LittleEndian;
40
40
 
41
41
  /**
42
42
  *
@@ -1004,6 +1004,21 @@ export class BinaryBuffer {
1004
1004
  return result;
1005
1005
  }
1006
1006
 
1007
+ /**
1008
+ *
1009
+ * @param {EndianType} type
1010
+ * @return {BinaryBuffer}
1011
+ */
1012
+ static fromEndianness(type) {
1013
+ assert.enum(type, EndianType, 'type');
1014
+
1015
+ const r = new BinaryBuffer();
1016
+
1017
+ r.endianness = type;
1018
+
1019
+ return r;
1020
+ }
1021
+
1007
1022
  /**
1008
1023
  *
1009
1024
  * @param {ArrayBuffer} v
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Determines underlying native endianness type
3
+ * Useful for knowing byte order in TypedArrays
4
+ * @returns {EndianType}
5
+ */
6
+ export function platform_compute_endianness(): EndianType;
7
+ import { EndianType } from "./EndianType.js";
8
+ //# sourceMappingURL=platform_compute_endianness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform_compute_endianness.d.ts","sourceRoot":"","sources":["../../../../src/core/binary/platform_compute_endianness.js"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,+CAFa,UAAU,CAoBtB;2BA5B0B,iBAAiB"}
@@ -0,0 +1,29 @@
1
+ import { EndianType } from "./EndianType.js";
2
+
3
+ let platform_endianness = EndianType.LittleEndian;
4
+ let platform_endianness_inferred = false;
5
+
6
+ /**
7
+ * Determines underlying native endianness type
8
+ * Useful for knowing byte order in TypedArrays
9
+ * @returns {EndianType}
10
+ */
11
+ export function platform_compute_endianness() {
12
+
13
+ if (platform_endianness_inferred) {
14
+ return platform_endianness;
15
+ }
16
+
17
+ const buffer = new ArrayBuffer(2);
18
+
19
+ const uint8 = new Uint8Array(buffer);
20
+ const uint16 = new Uint16Array(buffer);
21
+
22
+ uint8[0] = 0x13;
23
+
24
+ platform_endianness = ((uint16[0] & 0xFF) === 0x13) ? EndianType.LittleEndian : EndianType.BigEndian;
25
+
26
+ platform_endianness_inferred = true;
27
+
28
+ return platform_endianness;
29
+ }
@@ -1,5 +1,6 @@
1
1
  /**
2
2
  * *
3
+ * Provides stable indices, mainly useful for serialization where other data is subject to change
3
4
  */
4
5
  export type DataTypeIndices = number;
5
6
  export namespace DataTypeIndices {
@@ -1 +1 @@
1
- {"version":3,"file":"DataTypeIndices.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/type/DataTypeIndices.js"],"names":[],"mappings":";;;8BAIU,MAAM"}
1
+ {"version":3,"file":"DataTypeIndices.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/type/DataTypeIndices.js"],"names":[],"mappings":";;;;8BAKU,MAAM"}
@@ -1,7 +1,8 @@
1
1
  import { BinaryDataType } from "./BinaryDataType.js";
2
2
 
3
3
  /***
4
- *
4
+ * Provides stable indices, mainly useful for serialization where other data is subject to change
5
+ * @readonly
5
6
  * @enum {number}
6
7
  */
7
8
  export const DataTypeIndices = {
@@ -1,4 +1,7 @@
1
1
  /**
2
+ * Space-efficient probabilistic data structure that allows testing whether a key is included in the set or not
3
+ * Provides definite "not in set" answer and a probabilistic "is in set" answer, certainty probability of which can be controlled
4
+ * @see https://en.wikipedia.org/wiki/Cuckoo_filter
2
5
  * @description Inspired by MGunlogson's CuckooFilter4J library
3
6
  */
4
7
  export class CuckooFilter {
@@ -1 +1 @@
1
- {"version":3,"file":"CuckooFilter.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/CuckooFilter.js"],"names":[],"mappings":"AAqDA;;GAEG;AACH;IACI;;;;OAIG;IACH,+BAHW,MAAM,EA2ChB;IA5BG;;;OAGG;IACH,cAFU,MAAM,CAEgC;IAChD,sBAA8D;IAE9D;;;OAGG;IACH,cAFU,MAAM,CAE8C;IAE9D;;;OAGG;IACH,MAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,SAFU,MAAM,CAEA;IAEhB,yBAA4B;IAC5B,qBAAqB;IACrB,uBAAuB;IAG3B,oBAEC;IAED;;;;;;OAMG;IACH,uBAEC;IAED;;;;;;;;;OASG;IACH,mBAkBC;IAED;;;;;;OAMG;IACH,yBASC;IAED;;;;;;OAMG;IACH,0BAUC;IAED;;;;;OAKG;IACH,oBAIC;IAED;;;;;;OAMG;IACH,2BAUC;IAED;;;;;;;OAOG;IACH,2BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,MAAM,CAelB;IAED;;;;;;OAMG;IACH,0BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,OAAO,CAanB;IAED;;;;;;;;OAQG;IACH,wBAsBC;IAED;;;;;;;OAOG;IACH,gCAaC;IAED;;;;;OAKG;IACH,yCASC;IAED;;;;;;;;;;OAUG;IACH,mCAIC;IAED;;;;;OAKG;IACH,gCAWC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAJW,MAAM,GACJ,OAAO,CA8CnB;IAED,+BAcC;IAED;;;;;;;OAOG;IACH,sBAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,aAJW,MAAM,GACJ,OAAO,CA6BnB;IAGD;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,OAAO,CAUnB;CACJ;uBA5gBsB,qBAAqB"}
1
+ {"version":3,"file":"CuckooFilter.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/CuckooFilter.js"],"names":[],"mappings":"AAqDA;;;;;GAKG;AACH;IACI;;;;OAIG;IACH,+BAHW,MAAM,EA2ChB;IA5BG;;;OAGG;IACH,cAFU,MAAM,CAEgC;IAChD,sBAA8D;IAE9D;;;OAGG;IACH,cAFU,MAAM,CAE8C;IAE9D;;;OAGG;IACH,MAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,SAFU,MAAM,CAEA;IAEhB,yBAA4B;IAC5B,qBAAqB;IACrB,uBAAuB;IAG3B,oBAEC;IAED;;;;;;OAMG;IACH,uBAEC;IAED;;;;;;;;;OASG;IACH,mBAkBC;IAED;;;;;;OAMG;IACH,yBASC;IAED;;;;;;OAMG;IACH,0BAUC;IAED;;;;;OAKG;IACH,oBAIC;IAED;;;;;;OAMG;IACH,2BAUC;IAED;;;;;;;OAOG;IACH,2BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,MAAM,CAelB;IAED;;;;;;OAMG;IACH,0BALW,MAAM,kBACN,MAAM,OACN,MAAM,GACJ,OAAO,CAanB;IAED;;;;;;;;OAQG;IACH,wBAsBC;IAED;;;;;;;OAOG;IACH,gCAaC;IAED;;;;;OAKG;IACH,yCASC;IAED;;;;;;;;;;OAUG;IACH,mCAIC;IAED;;;;;OAKG;IACH,gCAWC;IAED;;;;;;;;;;;;;;;OAeG;IACH,aAJW,MAAM,GACJ,OAAO,CA8CnB;IAED,+BAcC;IAED;;;;;;;OAOG;IACH,sBAMC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,aAJW,MAAM,GACJ,OAAO,CA6BnB;IAGD;;;;;;OAMG;IACH,mBAHW,MAAM,GACJ,OAAO,CAUnB;CACJ;uBA/gBsB,qBAAqB"}
@@ -52,6 +52,9 @@ function createMaskFromBitCount(count) {
52
52
  }
53
53
 
54
54
  /**
55
+ * Space-efficient probabilistic data structure that allows testing whether a key is included in the set or not
56
+ * Provides definite "not in set" answer and a probabilistic "is in set" answer, certainty probability of which can be controlled
57
+ * @see https://en.wikipedia.org/wiki/Cuckoo_filter
55
58
  * @description Inspired by MGunlogson's CuckooFilter4J library
56
59
  */
57
60
  export class CuckooFilter {
@@ -454,10 +457,10 @@ export class CuckooFilter {
454
457
  */
455
458
  __checkVictim(i1, i2, tag) {
456
459
  return this.__victim_tag === tag
457
- && (
458
- this.__victim_index === i1
459
- || this.__victim_index === i2
460
- );
460
+ && (
461
+ this.__victim_index === i1
462
+ || this.__victim_index === i2
463
+ );
461
464
  }
462
465
 
463
466
  /**
@@ -520,7 +523,7 @@ export class CuckooFilter {
520
523
  const i2 = this.__compute_alt_bucket_index(i1, tag);
521
524
 
522
525
  return this.__findTag(i1, i2, tag)
523
- || (this.__victim_exists && this.__victim_tag === tag && (this.__victim_index === i1 || this.__victim_index === i2)) //check the victim
526
+ || (this.__victim_exists && this.__victim_tag === tag && (this.__victim_index === i1 || this.__victim_index === i2)) //check the victim
524
527
  ;
525
528
  }
526
529
  }
@@ -4,7 +4,7 @@
4
4
  * @readonly
5
5
  * @type {Uint32Array|{pointer:number}}
6
6
  */
7
- export const SCRATCH_UINT32_TRAVERSAL_STACK = new Uint32Array(781250);
7
+ export const SCRATCH_UINT32_TRAVERSAL_STACK = new Uint32Array(781250); // size is fairly arbitrary
8
8
 
9
9
  /**
10
10
  * Pointer used to track current top of the stack, make sure to unwind once your traversal is done
@@ -1 +1 @@
1
- {"version":3,"file":"Deque.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/queue/Deque.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH;IA8BI;;;OAGG;IACH,uBAFW,MAAM,EAUhB;IAqFD;;;OAGG;IACH,WAFY,OAAO,CAIlB;IAED,cAeC;IAED;;OAEG;IACH,QAFa,MAAM,CAalB;IA+CD;;;;OAIG;IACH,UAHW,CAAC,GACC,OAAO,CAYnB;IA4BD;;;;OAIG;IACH,WAFa,OAAO,CAInB;IAED;;;OAGG;IACH,YAFW,CAAC,QAOX;IAED;;;OAGG;IACH,eAFa,CAAC,GAAC,SAAS,CAQvB;IAED;;;OAGG;IACH,YAFa,CAAC,GAAC,SAAS,CAIvB;IAED;;;OAGG;IACH,WAFW,CAAC,QAOX;IAED;;;OAGG;IACH,cAFa,CAAC,CASb;IAGD;;;OAGG;IACH,WAFa,CAAC,GAAC,SAAS,CAKvB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,CAAC,GAAC,SAAS,CAmBvB;IAED;;;;;OAKG;IACH,iBAJW,CAAC,EAAE,kBACH,MAAM,GACJ,CAAC,EAAE,CAUf;IAoBL,gBAAoB;IACpB,uBAAoB;IACpB,eAAmB;IAEnB;;OAEG;IACH,sBAAmB;IAzBf;;;OAGG;IACH,qBAFa,UAAU,CAAC,EAAC,IAAI,CAAC,CAS7B;;CACJ"}
1
+ {"version":3,"file":"Deque.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/queue/Deque.js"],"names":[],"mappings":"AAcA;;;GAGG;AACH;IA8BI;;;OAGG;IACH,uBAFW,MAAM,EAUhB;IAuFD;;;OAGG;IACH,WAFY,OAAO,CAIlB;IAED,cAeC;IAED;;;OAGG;IACH,QAFa,MAAM,CAalB;IA+CD;;;;OAIG;IACH,UAHW,CAAC,GACC,OAAO,CAYnB;IA4BD;;;;OAIG;IACH,WAFa,OAAO,CAInB;IAED;;;OAGG;IACH,YAFW,CAAC,QAOX;IAED;;;OAGG;IACH,eAFa,CAAC,GAAC,SAAS,CAQvB;IAED;;;OAGG;IACH,YAFa,CAAC,GAAC,SAAS,CAIvB;IAED;;;OAGG;IACH,WAFW,CAAC,QAOX;IAED;;;OAGG;IACH,cAFa,CAAC,CASb;IAGD;;;OAGG;IACH,WAFa,CAAC,GAAC,SAAS,CAKvB;IAED;;;;OAIG;IACH,yBAHW,MAAM,GACJ,CAAC,GAAC,SAAS,CAmBvB;IAED;;;;;OAKG;IACH,iBAJW,CAAC,EAAE,kBACH,MAAM,GACJ,CAAC,EAAE,CAUf;IAoBL,gBAAoB;IACpB,uBAAoB;IACpB,eAAmB;IAEnB;;OAEG;IACH,sBAAmB;IAzBf;;;OAGG;IACH,qBAFa,UAAU,CAAC,EAAC,IAAI,CAAC,CAS7B;;CACJ"}
@@ -21,7 +21,7 @@ export class Deque {
21
21
  /**
22
22
  * Using static array allocator to preserve data locality.
23
23
  * Initialization via "[]" would give us a dynamically sized array,
24
- * but it would have unpredictable locality as array may or may not have it's elements stored next to each other in memory
24
+ * but it would have unpredictable locality as array may or may not have its elements stored next to each other in memory
25
25
  * @type {T[]}
26
26
  * @private
27
27
  */
@@ -112,9 +112,11 @@ export class Deque {
112
112
  const length = this.#data.length;
113
113
 
114
114
  if (UINT32_MAX === length) {
115
+ // array is already as big as it can get
115
116
  throw new Error('Maximum array size exceeded');
116
117
  }
117
118
 
119
+ // double existing length
118
120
  let new_length = length * 2;
119
121
 
120
122
  if (new_length > UINT32_MAX) {
@@ -169,6 +171,7 @@ export class Deque {
169
171
  }
170
172
 
171
173
  /**
174
+ * Number of elements in the collection
172
175
  * @returns {number}
173
176
  */
174
177
  size() {
@@ -13,10 +13,10 @@ export class RowFirstTableSpec {
13
13
  /**
14
14
  *
15
15
  * @param {BinaryDataType[]} types
16
- * @param {EndianType} [endianType]
16
+ * @param {EndianType} [endianness]
17
17
  * @constructor
18
18
  */
19
- constructor(types: BinaryDataType[], endianType?: EndianType);
19
+ constructor(types: BinaryDataType[], endianness?: EndianType);
20
20
  /**
21
21
  * @readonly
22
22
  * @type {BinaryDataType[]}
@@ -1 +1 @@
1
- {"version":3,"file":"RowFirstTableSpec.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTableSpec.js"],"names":[],"mappings":"AA+HA;;;GAGG;AACH;IAwGI;;;;;OAKG;IACH,kBAJW,cAAc,EAAE,eAChB,UAAU,GACR,iBAAiB,CAmB7B;IA9HD;;;;;OAKG;IACH,mBAJW,cAAc,EAAE,eAChB,UAAU,EAiEpB;IAzDG;;;OAGG;IACH,gBAFU,cAAc,EAAE,CAER;IAElB;;;OAGG;IACH,qBAFU,UAAU,CAEQ;IAE5B;;;OAGG;IACH,wBAFU,WAAW,CAEyB;IAc9C;;;OAGG;IACH,yBAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,+BAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEA;IAEpD;;;OAGG;IACH,gCAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEC;IAIrD,mBAAsC;IACtC,mBAAsC;IAQ1C;;;OAGG;IACH,kBAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,QAFY,MAAM,CAQjB;IAED;;;;OAIG;IACH,cAHW,iBAAiB,GACf,OAAO,CAQnB;IA4BL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;CAN9C;+BA3P8B,qCAAqC;2BADzC,4BAA4B"}
1
+ {"version":3,"file":"RowFirstTableSpec.d.ts","sourceRoot":"","sources":["../../../../../src/core/collection/table/RowFirstTableSpec.js"],"names":[],"mappings":"AA+HA;;;GAGG;AACH;IA4GI;;;;;OAKG;IACH,kBAJW,cAAc,EAAE,eAChB,UAAU,GACR,iBAAiB,CAmB7B;IAlID;;;;;OAKG;IACH,mBAJW,cAAc,EAAE,eAChB,UAAU,EAqEpB;IA5DG;;;OAGG;IACH,gBAFU,cAAc,EAAE,CAER;IAElB;;;OAGG;IACH,qBAFU,UAAU,CAEQ;IAE5B;;;OAGG;IACH,wBAFU,WAAW,CAEyB;IAiB9C;;;OAGG;IACH,yBAFU,MAAM,CAEgB;IAEhC;;;OAGG;IACH,+BAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEA;IAEpD;;;OAGG;IACH,gCAFmB,QAAQ,QAAE,MAAM,QAAE,MAAM,EAAE,KAAG,IAAI,CAEC;IAIrD,mBAAsC;IACtC,mBAAsC;IAQ1C;;;OAGG;IACH,kBAFY,MAAM,CAIjB;IAED;;;OAGG;IACH,QAFY,MAAM,CAQjB;IAED;;;;OAIG;IACH,cAHW,iBAAiB,GACf,OAAO,CAQnB;IA4BL;;;OAGG;IACH,8BAFU,OAAO,CAE8B;CAN9C;+BA/P8B,qCAAqC;2BADzC,4BAA4B"}
@@ -133,11 +133,12 @@ export class RowFirstTableSpec {
133
133
  /**
134
134
  *
135
135
  * @param {BinaryDataType[]} types
136
- * @param {EndianType} [endianType]
136
+ * @param {EndianType} [endianness]
137
137
  * @constructor
138
138
  */
139
- constructor(types, endianType = EndianType.BigEndian) {
139
+ constructor(types, endianness = EndianType.BigEndian) {
140
140
  assert.isArray(types, 'types');
141
+ assert.enum(endianness, EndianType, 'endianness');
141
142
 
142
143
  const numTypes = types.length;
143
144
 
@@ -151,7 +152,7 @@ export class RowFirstTableSpec {
151
152
  * @readonly
152
153
  * @type {EndianType}
153
154
  */
154
- this.endianType = endianType;
155
+ this.endianType = endianness;
155
156
 
156
157
  /**
157
158
  * @readonly
@@ -163,6 +164,9 @@ export class RowFirstTableSpec {
163
164
 
164
165
  for (let index = 0; index < numTypes; index++) {
165
166
  const type = types[index];
167
+
168
+ assert.enum(type, BinaryDataType, `type[${index}]`);
169
+
166
170
  this.columnOffsets[index] = byteOffset;
167
171
 
168
172
  const columnByteSize = DataTypeByteSizes[type];
@@ -181,13 +185,13 @@ export class RowFirstTableSpec {
181
185
  * @readonly
182
186
  * @type {function(DataView, number, number[]): void}
183
187
  */
184
- this.readRowMethod = genRowReader(types, endianType);
188
+ this.readRowMethod = genRowReader(types, endianness);
185
189
 
186
190
  /**
187
191
  * @readonly
188
192
  * @type {function(DataView, number, number[]): void}
189
193
  */
190
- this.writeRowMethod = genRowWriter(types, endianType);
194
+ this.writeRowMethod = genRowWriter(types, endianness);
191
195
 
192
196
 
193
197
  //generate cell readers/writers
@@ -195,8 +199,8 @@ export class RowFirstTableSpec {
195
199
  this.cellReaders = new Array(numTypes);
196
200
 
197
201
  for (let i = 0; i < numTypes; i++) {
198
- this.cellReaders[i] = compileDataViewValueReader(types[i], this.columnOffsets[i], endianType);
199
- this.cellWriters[i] = compileDataViewValueWriter(types[i], this.columnOffsets[i], endianType);
202
+ this.cellReaders[i] = compileDataViewValueReader(types[i], this.columnOffsets[i], endianness);
203
+ this.cellWriters[i] = compileDataViewValueWriter(types[i], this.columnOffsets[i], endianness);
200
204
  }
201
205
  }
202
206
 
@@ -1 +1 @@
1
- {"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,qCAFU,MAAM,CAEkD;AAElE;;;GAGG;AACH,gCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,4BAFU,MAAM,CAEwB;AAoBxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACI;;;OAGG;IACH,2BAFW,MAAM,EAqDhB;IAhDG;;;;OAIG;IACH,iBAAsE;IAEtE;;;;OAIG;IACH,sBAAmD;IAEnD;;;;OAIG;IACH,eAAyC;IAEzC;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,mBAAmB;IAEnB;;;;OAIG;IACH,eAAgB;IAEhB;;;;OAIG;IACH,uBAAuB;IAG3B;;;;;OAKG;IACH,2BAEC;IAED;;;;OAIG;IACH,2CAUC;IAED;;;;OAIG;IACH,WAFY,MAAM,EAAE,CAYnB;IAED;;;OAGG;IACH,cAWC;IAED;;;OAGG;IACH,sBAFW,MAAM,QA8BhB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,QAFY,MAAM,CAMjB;IAED;;;;OAIG;IACH,oBAEC;IAGD;;;;OAIG;IACH,qBAYC;IAED;;;OAGG;IACH,yBAFW,MAAM,QAWhB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACL,OAAO,CAiBlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,aACN,MAAM,QAchB;IAGD;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,UACN,MAAM,QAiBhB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,UACN,MAAM,GACL,OAAO,CAUlB;IAGD;;;;OAIG;IACH,YAFY,MAAM,CA4BjB;IAED;;;;;;;;OAQG;IACH,eAPW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAqBlB;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,2CAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,8BAPW,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,EAAE,sBACR,MAAM,GACJ,MAAM,CA8DlB;IAGD;;;;;OAKG;IACH,uBAHW,MAAM,qBACN,MAAM,QA0ChB;IAED;;;;OAIG;IACH,WAFa,MAAM,CA2ClB;IAED;;;OAGG;IACH,kBAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,oBAFW,YAAY,QAiBtB;IAED;;;OAGG;IACH,oBAFY,MAAM,CAUjB;IAED;;;OAGG;IACH,wBAFW,MAAM,QAQhB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;6BA1wB4B,iCAAiC"}
1
+ {"version":3,"file":"TetrahedralMesh.d.ts","sourceRoot":"","sources":["../../../../../../src/core/geom/3d/tetrahedra/TetrahedralMesh.js"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,qCAFU,MAAM,CAEkD;AAElE;;;GAGG;AACH,gCAFU,MAAM,CAE4B;AAE5C;;;GAGG;AACH,4BAFU,MAAM,CAEwB;AAoBxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH;IACI;;;OAGG;IACH,2BAFW,MAAM,EAqDhB;IAhDG;;;;OAIG;IACH,iBAAsE;IAEtE;;;;OAIG;IACH,sBAAmD;IAEnD;;;;OAIG;IACH,eAAyC;IAEzC;;;;OAIG;IACH,mBAA8B;IAE9B;;;;OAIG;IACH,mBAAmB;IAEnB;;;;OAIG;IACH,eAAgB;IAEhB;;;;OAIG;IACH,uBAAuB;IAG3B;;;;;OAKG;IACH,2BAEC;IAED;;;;OAIG;IACH,2CAUC;IAED;;;;OAIG;IACH,WAFY,MAAM,EAAE,CAYnB;IAED;;;OAGG;IACH,cAWC;IAED;;;OAGG;IACH,sBAFW,MAAM,QA8BhB;IAED;;;OAGG;IACH,eAFY,MAAM,CAIjB;IAED;;;;OAIG;IACH,QAFY,MAAM,CAMjB;IAED;;;;OAIG;IACH,oBAEC;IAGD;;;;OAIG;IACH,qBAYC;IAED;;;OAGG;IACH,yBAFW,MAAM,QAWhB;IAED;;;;OAIG;IACH,YAHW,MAAM,GACL,OAAO,CAiBlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,mBACN,MAAM,aACN,MAAM,QAchB;IAGD;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,GACJ,MAAM,CAYlB;IAED;;;;;OAKG;IACH,0BAJW,MAAM,eACN,MAAM,UACN,MAAM,QAiBhB;IAED;;;;;OAKG;IACH,uBAJW,MAAM,UACN,MAAM,GACL,OAAO,CAUlB;IAGD;;;;OAIG;IACH,YAFY,MAAM,CA4BjB;IAED;;;;;;;;OAQG;IACH,eAPW,MAAM,EAAE,GAAC,YAAY,KACrB,MAAM,KACN,MAAM,KACN,MAAM,KACN,MAAM,GACJ,MAAM,CAqBlB;IAED;;;;OAIG;IACH,wBAFW,MAAM,QAmBhB;IAED;;;;OAIG;IACH,oBAFW,MAAM,QAmBhB;IAED;;;;;OAKG;IACH,2CAHW,MAAM,aACN,MAAM,QAwBhB;IAED;;;;;;;;OAQG;IACH,8BAPW,MAAM,KACN,MAAM,KACN,MAAM,UACN,MAAM,EAAE,sBACR,MAAM,GACJ,MAAM,CA8DlB;IAGD;;;;;OAKG;IACH,uBAHW,MAAM,qBACN,MAAM,QA0ChB;IAED;;;;OAIG;IACH,WAFa,MAAM,CA2ClB;IAED;;;OAGG;IACH,kBAFW,YAAY,QAUtB;IAED;;;OAGG;IACH,oBAFW,YAAY,QAiBtB;IAED;;;OAGG;IACH,oBAFY,MAAM,CAYjB;IAED;;;OAGG;IACH,wBAFW,MAAM,QAUhB;IAGL;;;OAGG;IACH,4BAFU,OAAO,CAE0B;CAN1C;6BA/wB4B,iCAAiC"}
@@ -2,6 +2,7 @@ import { orient3d } from "robust-predicates";
2
2
  import { assert } from "../../../assert.js";
3
3
  import { Base64 } from "../../../binary/Base64.js";
4
4
  import { BinaryBuffer } from "../../../binary/BinaryBuffer.js";
5
+ import { EndianType } from "../../../binary/EndianType.js";
5
6
  import { array_copy } from "../../../collection/array/array_copy.js";
6
7
  import { array_quick_sort_by_comparator } from "../../../collection/array/array_quick_sort_by_comparator.js";
7
8
  import { typed_array_copy } from "../../../collection/array/typed/typed_array_copy.js";
@@ -761,6 +762,8 @@ export class TetrahedralMesh {
761
762
  serialize_base64() {
762
763
  const buffer = new BinaryBuffer();
763
764
 
765
+ buffer.endianness = EndianType.LittleEndian;
766
+
764
767
  this.serialize(buffer);
765
768
 
766
769
  buffer.trim();
@@ -773,11 +776,13 @@ export class TetrahedralMesh {
773
776
  * @param {string} str
774
777
  */
775
778
  deserialize_base64(str) {
776
- const arrayBuffer = Base64.decode(str);
779
+ const array_buffer = Base64.decode(str);
780
+
781
+ const buffer = BinaryBuffer.fromArrayBuffer(array_buffer);
777
782
 
778
- const binaryBuffer = BinaryBuffer.fromArrayBuffer(arrayBuffer);
783
+ buffer.endianness = EndianType.LittleEndian;
779
784
 
780
- this.deserialize(binaryBuffer);
785
+ this.deserialize(buffer);
781
786
  }
782
787
  }
783
788
 
@@ -1 +1 @@
1
- {"version":3,"file":"collapseEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/simplify/collapseEdge.js"],"names":[],"mappings":"AA+FA;;;;;;;;GAQG;AACH,uHAmDC;AAED;;;;;;;;GAQG;AACH,gHAeC"}
1
+ {"version":3,"file":"collapseEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/simplify/collapseEdge.js"],"names":[],"mappings":"AAwFA;;;;;;;;GAQG;AACH,uHAmDC;AAED;;;;;;;;GAQG;AACH,gHAOC"}
@@ -1,6 +1,9 @@
1
1
  //
2
2
 
3
3
  import { assert } from "../../../../assert.js";
4
+ import { tm_face_kill } from "../tm_face_kill.js";
5
+ import { tm_kill_only_edge } from "../tm_kill_only_edge.js";
6
+ import { tm_vert_splice } from "../tm_vert_splice.js";
4
7
 
5
8
  /**
6
9
  *
@@ -19,23 +22,13 @@ function cleanupDanglingEdges(face, mesh) {
19
22
  if (edge.faces.length === 0) {
20
23
  // dangling edge, remove
21
24
  edge.unlink();
22
- mesh.removeEdge(edge);
25
+ tm_kill_only_edge(mesh, edge);
23
26
 
24
27
  //TODO consider to clean up dangling vertices as well
25
28
  }
26
29
  }
27
30
  }
28
31
 
29
- /**
30
- *
31
- * @param {TopoTriangle} face
32
- * @param {TopoMesh} mesh
33
- */
34
- function removeFace(face, mesh) {
35
- face.unlink();
36
- mesh.removeFace(face);
37
- }
38
-
39
32
  /**
40
33
  *
41
34
  * @param {TopoMesh} mesh
@@ -74,7 +67,7 @@ function collapseFaceToEdge(mesh, victim_face, vertex_victim, vertex_successor)
74
67
  }
75
68
 
76
69
  victim_edge.unlink();
77
- mesh.removeEdge(victim_edge);
70
+ tm_kill_only_edge(mesh, victim_edge);
78
71
  // debugValidateMesh(mesh);
79
72
 
80
73
  // migrate faces
@@ -113,7 +106,7 @@ export function partialEdgeCollapse(mesh, edge, victim, replacement) {
113
106
  // unlink the edge
114
107
  edge.unlink();
115
108
  // remove the edge
116
- mesh.removeEdge(edge);
109
+ tm_kill_only_edge(mesh, edge);
117
110
 
118
111
  // debugValidateMesh(mesh);
119
112
 
@@ -123,7 +116,7 @@ export function partialEdgeCollapse(mesh, edge, victim, replacement) {
123
116
  // get the other two edges
124
117
  const remaining_edges = edge_face.edges;
125
118
  // remove the face
126
- removeFace(edge_face, mesh);
119
+ tm_face_kill(mesh, edge_face);
127
120
 
128
121
  // topology_find_broken_links(mesh);
129
122
 
@@ -170,13 +163,5 @@ export function collapseEdge(mesh, edge, victim, replacement) {
170
163
  partialEdgeCollapse(mesh, edge, victim, replacement);
171
164
 
172
165
  // replace the victim vertex with the replacer
173
- replacement.replaceAnotherVertex(victim);
174
- //remove replaced vertex
175
-
176
- /*
177
- NOTE we're not removing vertex because doing so is costly and resulting mesh can be parsed later to remove dangling vertices
178
- */
179
- // mesh.removeVertex(victim);
180
-
181
- // validateMesh(mesh);
166
+ tm_vert_splice(mesh,replacement,victim);
182
167
  }
@@ -124,6 +124,7 @@ export class TopoEdge {
124
124
  /**
125
125
  *
126
126
  * @param {TopoEdge} other
127
+ * @returns {boolean}
127
128
  */
128
129
  containsSameVerticesAs(other: TopoEdge): boolean;
129
130
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TopoEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoEdge.js"],"names":[],"mappings":"AAUA;IAEQ;;;OAGG;IACH,OAFU,MAAM,CAEY;IAE5B;;;OAGG;IACH,eAAc;IACd;;;OAGG;IACH,eAAc;IAGd;;;OAGG;IACH,OAFU,cAAc,CAET;IAEf;;;OAGG;IACH,WAFU,MAAM,CAEG;IAGvB,uBAEC;IAED;;;;OAIG;IACH,oBAHW,MAAM,cAWhB;IAED;;;OAGG;IACH,YAFW,QAAQ,QASlB;IAED,kBAMC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAiClB;IAED;;;OAGG;IACH,YAFY,OAAO,CAIlB;IAED;;OAEG;IACH,eAkBC;IAED;;;OAGG;IACH,oBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,oBAFY,OAAO,CAKlB;IAED;;;OAGG;IACH,qBAMC;IAED,6BAiBC;IAED;;;;OAIG;IACH,mEASC;IAED;;;;OAIG;IACH,aAFW,QAAQ,QA0ClB;IAED;;;;OAIG;IACH,kCAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kCAKC;IAED;;;OAGG;IACH,wCAIC;IAED;;;OAGG;IACH,kCAIC;IAED;;;;OAIG;IACH,0CAEC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAIlB;IAED;;;;;OAKG;IACH,oDAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,8BAFW,QAAQ,WAIlB;IAGL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B"}
1
+ {"version":3,"file":"TopoEdge.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoEdge.js"],"names":[],"mappings":"AAUA;IACI;;;OAGG;IACH,OAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,eAAU;IACV;;;OAGG;IACH,eAAU;IAGV;;;OAGG;IACH,OAFU,cAAc,CAEb;IAEX;;;OAGG;IACH,WAFU,MAAM,CAED;IAEf,uBAEC;IAED;;;;OAIG;IACH,oBAHW,MAAM,cAWhB;IAED;;;OAGG;IACH,YAFW,QAAQ,QASlB;IAED,kBAMC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAiClB;IAED;;;OAGG;IACH,YAFY,OAAO,CAIlB;IAED;;OAEG;IACH,eAkBC;IAED;;;OAGG;IACH,oBAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,oBAFY,OAAO,CAKlB;IAED;;;OAGG;IACH,qBAMC;IAED,6BAiBC;IAED;;;;OAIG;IACH,mEASC;IAED;;;;OAIG;IACH,aAFW,QAAQ,QA0ClB;IAED;;;;OAIG;IACH,kCAFY,OAAO,CAIlB;IAED;;;OAGG;IACH,kCAKC;IAED;;;OAGG;IACH,wCAIC;IAED;;;OAGG;IACH,kCAIC;IAED;;;;OAIG;IACH,0CAEC;IAED;;;;OAIG;IACH,+BAFY,OAAO,CAIlB;IAED;;;;;OAKG;IACH,oDAFY,OAAO,CAIlB;IAED;;;;OAIG;IACH,8BAHW,QAAQ,GACN,OAAO,CAInB;IAGL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAN5B"}
@@ -1,48 +1,46 @@
1
1
  import { assert } from "../../../../assert.js";
2
- import { array_remove_first } from "../../../../collection/array/array_remove_first.js";
3
2
  import { array_push_if_unique } from "../../../../collection/array/array_push_if_unique.js";
4
- import { query_vertex_in_edge } from "../query/query_vertex_in_edge.js";
3
+ import { array_remove_first } from "../../../../collection/array/array_remove_first.js";
4
+ import { query_edge_is_boundary } from "../query/query_edge_is_boundary.js";
5
5
  import { query_edge_other_vertex } from "../query/query_edge_other_vertex.js";
6
+ import { query_vertex_in_edge } from "../query/query_vertex_in_edge.js";
6
7
  import { query_vertices_in_edge } from "../query/query_vertices_in_edge.js";
7
- import { query_edge_is_boundary } from "../query/query_edge_is_boundary.js";
8
8
 
9
9
  let index_counter = 0;
10
10
 
11
11
  export class TopoEdge {
12
- constructor() {
13
- /**
14
- * Unique ID
15
- * @type {number}
16
- */
17
- this.index = index_counter++;
18
-
19
- /**
20
- *
21
- * @type {TopoVertex}
22
- */
23
- this.v0 = null;
24
- /**
25
- *
26
- * @type {TopoVertex}
27
- */
28
- this.v1 = null;
29
-
30
-
31
- /**
32
- *
33
- * @type {TopoTriangle[]}
34
- */
35
- this.faces = [];
36
-
37
- /**
38
- *
39
- * @type {number}
40
- */
41
- this.lengthSqr = -1;
42
- }
12
+ /**
13
+ * Unique ID
14
+ * @type {number}
15
+ */
16
+ index = index_counter++;
17
+
18
+ /**
19
+ *
20
+ * @type {TopoVertex}
21
+ */
22
+ v0 = null;
23
+ /**
24
+ *
25
+ * @type {TopoVertex}
26
+ */
27
+ v1 = null;
28
+
29
+
30
+ /**
31
+ *
32
+ * @type {TopoTriangle[]}
33
+ */
34
+ faces = [];
35
+
36
+ /**
37
+ *
38
+ * @type {number}
39
+ */
40
+ lengthSqr = -1;
43
41
 
44
42
  get byteSize() {
45
- return 80+5*4 + 4 + 8 + 8 + 8 + this.faces.length * 8 + 10;
43
+ return 80 + 5 * 4 + 4 + 8 + 8 + 8 + this.faces.length * 8 + 10;
46
44
  }
47
45
 
48
46
  /**
@@ -333,9 +331,10 @@ export class TopoEdge {
333
331
  /**
334
332
  *
335
333
  * @param {TopoEdge} other
334
+ * @returns {boolean}
336
335
  */
337
336
  containsSameVerticesAs(other) {
338
- return this.containsBothVertices(other.v0, other.v1);
337
+ return query_vertices_in_edge(this, other.v0, other.v1);
339
338
  }
340
339
  }
341
340
 
@@ -1 +1 @@
1
- {"version":3,"file":"TopoMesh.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/geom/3d/topology/struct/TopoMesh.js"],"names":[],"mappings":"AAcA;IAGQ;;;OAGG;IACH,UAFU,UAAU,EAAE,CAEJ;IAElB;;;;OAIG;IACH,gBAAwB;IAGxB;;;;OAIG;IACH,gBAAwB;IAG5B;;;;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,SACZ,WAAW,GAAC,WAAW,GAAC,UAAU,GAAC,MAAM,EAAE,QAoErD;IAED,mBAEC;IAIL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;2BAtoB0B,iBAAiB;yBAFnB,eAAe;6BACX,mBAAmB;qBAR3B,8BAA8B"}
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,SACZ,WAAW,GAAC,WAAW,GAAC,UAAU,GAAC,MAAM,EAAE,QAmErD;IAED,mBAEC;IAIL;;;OAGG;IACH,qBAFU,OAAO,CAEY;CAP5B;2BAnoB0B,iBAAiB;yBAFnB,eAAe;6BACX,mBAAmB;qBAR3B,8BAA8B"}
@@ -13,29 +13,27 @@ import { TopoTriangle } from "./TopoTriangle.js";
13
13
  import { TopoVertex } from "./TopoVertex.js";
14
14
 
15
15
  export class TopoMesh {
16
- constructor() {
17
16
 
18
- /**
19
- *
20
- * @type {TopoVertex[]}
21
- */
22
- this.vertices = [];
17
+ /**
18
+ *
19
+ * @type {TopoVertex[]}
20
+ */
21
+ vertices = [];
23
22
 
24
- /**
25
- *
26
- * @type {Set<TopoEdge>}
27
- * @private
28
- */
29
- this.__edges = new Set();
23
+ /**
24
+ *
25
+ * @type {Set<TopoEdge>}
26
+ * @private
27
+ */
28
+ __edges = new Set();
30
29
 
31
30
 
32
- /**
33
- *
34
- * @type {Set<TopoTriangle>}
35
- * @private
36
- */
37
- this.__faces = new Set();
38
- }
31
+ /**
32
+ *
33
+ * @type {Set<TopoTriangle>}
34
+ * @private
35
+ */
36
+ __faces = new Set();
39
37
 
40
38
  /**
41
39
  * Approximation of memory footprint of this object
@@ -562,7 +560,7 @@ export class TopoMesh {
562
560
  }
563
561
 
564
562
  //cut the second edge
565
- this.removeEdge(e1);
563
+ tm_kill_only_edge(this, e1);
566
564
 
567
565
  //absorb edge
568
566
  e0.merge(e1);
@@ -644,7 +642,6 @@ export class TopoMesh {
644
642
  f.vertices.push(vA, vB, vC);
645
643
  f.edges.push(eAB, eBC, eCA);
646
644
 
647
-
648
645
  vA.faces.push(f);
649
646
  vB.faces.push(f);
650
647
  vC.faces.push(f);