@woosh/meep-engine 2.55.0 → 2.56.1

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 (156) hide show
  1. package/editor/view/node-graph/PortView.js +2 -2
  2. package/package.json +1 -1
  3. package/src/core/binary/BinaryBuffer.js +2 -1
  4. package/src/core/cache/LoadingCache.js +10 -5
  5. package/src/core/collection/array/array_remove_element.js +6 -9
  6. package/src/core/collection/array/array_remove_first.js +13 -6
  7. package/src/core/collection/array/array_remove_first.spec.js +39 -0
  8. package/src/core/collection/array/binarySearchHighIndex.spec.js +10 -9
  9. package/src/core/collection/heap/Uin32Heap.spec.js +36 -0
  10. package/src/core/collection/heap/Uint32Heap.js +10 -5
  11. package/src/core/function/FunctionCompiler.js +4 -4
  12. package/src/core/function/Functions.js +0 -19
  13. package/src/core/geom/3d/SurfacePoint3.js +30 -20
  14. package/src/core/geom/3d/SurfacePoint3.spec.js +116 -0
  15. package/src/core/geom/3d/aabb/AABB3.js +10 -9
  16. package/src/core/geom/3d/aabb/{aabb3_array_contains_point.js → aabb3_array_intersects_point.js} +4 -1
  17. package/src/core/geom/3d/aabb/aabb3_from_min_max.js +25 -1
  18. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +2 -25
  19. package/src/core/geom/3d/aabb/aabb3_signed_distance_sqr_to_point.js +5 -1
  20. package/src/core/geom/3d/apply_mat4_transform_to_direction_v3_array.js +5 -1
  21. package/src/core/geom/3d/apply_mat4_transform_to_v3_array.js +5 -1
  22. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +2 -2
  23. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.spec.js +26 -0
  24. package/src/core/geom/3d/v3_compute_triangle_normal.spec.js +18 -0
  25. package/src/core/geom/Vector2.js +1 -1
  26. package/src/core/geom/Vector3.js +1 -1
  27. package/src/core/geom/packing/miniball/Miniball.spec.js +24 -0
  28. package/src/core/math/statistics/computeStatisticalPartialMedian.js +2 -2
  29. package/src/core/model/object/read_property.js +2 -2
  30. package/src/core/model/object/write_property.js +3 -3
  31. package/src/core/primitives/numbers/compareNumbers.js +4 -4
  32. package/src/core/primitives/numbers/number_compare_ascending.js +9 -0
  33. package/src/core/primitives/numbers/number_compare_ascending.spec.js +9 -0
  34. package/src/core/primitives/numbers/number_compare_descending.js +9 -0
  35. package/src/core/primitives/numbers/number_compare_descending.spec.js +9 -0
  36. package/src/core/primitives/numbers/number_format_by_thousands.spec.js +12 -0
  37. package/src/core/primitives/numbers/number_pretty_print.js +1 -1
  38. package/src/core/primitives/strings/compareStrings.spec.js +12 -0
  39. package/src/core/primitives/strings/string_capitalize.js +15 -0
  40. package/src/core/primitives/strings/string_capitalize.spec.js +13 -0
  41. package/src/core/primitives/strings/string_compute_byte_size.js +21 -0
  42. package/src/core/primitives/strings/string_compute_common_prefix.js +44 -0
  43. package/src/core/primitives/strings/string_compute_common_prefix.spec.js +23 -0
  44. package/src/core/primitives/strings/string_format_camel_to_kebab.js +9 -0
  45. package/src/core/primitives/strings/string_format_camel_to_kebab.spec.js +8 -0
  46. package/src/core/primitives/strings/string_format_kebab_to_underscore.js +8 -0
  47. package/src/core/time/current_time_in_seconds.js +11 -0
  48. package/src/engine/Clock.js +3 -13
  49. package/src/engine/animation/curve/AnimationCurve.spec.js +27 -0
  50. package/src/engine/asset/AssetManager.js +2 -2
  51. package/src/engine/ecs/EntityManager.js +8 -1
  52. package/src/engine/ecs/EntityManager.spec.js +56 -6
  53. package/src/engine/ecs/animation/Animation.spec.js +22 -0
  54. package/src/engine/ecs/attachment/Attachment.js +24 -25
  55. package/src/engine/ecs/attachment/AttachmentBinding.js +27 -30
  56. package/src/engine/ecs/attachment/AttachmentSystem.js +21 -24
  57. package/src/engine/ecs/attachment/BoneAttachmentBinding.js +6 -9
  58. package/src/engine/ecs/attachment/TransformAttachmentBinding.js +0 -3
  59. package/src/engine/ecs/components/CharacterController.js +24 -18
  60. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +3 -2
  61. package/src/engine/ecs/fow/FogOfWarRevealer.js +2 -3
  62. package/src/engine/ecs/ik/IKMath.js +6 -1
  63. package/src/engine/ecs/ik/IKProblem.js +17 -17
  64. package/src/engine/ecs/ik/InverseKinematics.js +6 -7
  65. package/src/engine/ecs/ik/InverseKinematicsSystem.js +24 -26
  66. package/src/engine/ecs/storage/BinaryBufferSerializer.js +3 -3
  67. package/src/engine/ecs/systems/TagSystem.js +1 -6
  68. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.js +2 -2
  69. package/src/engine/graphics/ecs/mesh/skeleton/BoneMapping.js +2 -2
  70. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.spec.js +14 -0
  71. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +21 -9
  72. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.spec.js +79 -0
  73. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.spec.js +7 -6
  74. package/src/engine/options/OptionGroup.js +10 -0
  75. package/src/engine/simulation/Ticker.js +17 -20
  76. package/src/generation/GridTaskGroup.js +5 -9
  77. package/src/generation/filtering/numeric/CellFilterCache.js +12 -16
  78. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +31 -32
  79. package/src/generation/filtering/numeric/complex/CellFilterLookupTable.js +6 -9
  80. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +7 -10
  81. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +6 -9
  82. package/src/generation/filtering/numeric/math/CellFilterMembershipGeneralizedBell.js +18 -21
  83. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +24 -25
  84. package/src/generation/filtering/numeric/sampling/CellFilterSampleLayerLinear.js +1 -1
  85. package/src/generation/grid/GridData.js +23 -22
  86. package/src/generation/grid/GridData.spec.js +41 -0
  87. package/src/generation/grid/GridTaskGenerator.js +7 -8
  88. package/src/generation/grid/layers/GridDataLayer.js +23 -25
  89. package/src/generation/markers/GridActionRuleSet.js +20 -22
  90. package/src/generation/markers/GridCellActionPlaceMarker.js +40 -43
  91. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +7 -9
  92. package/src/generation/markers/MarkerNode.js +44 -44
  93. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +15 -18
  94. package/src/generation/markers/actions/MarkerNodeActionSequence.js +6 -9
  95. package/src/generation/markers/actions/MarkerNodeProcessingRuleSet.js +5 -7
  96. package/src/generation/markers/actions/MarkerProcessingRule.js +25 -26
  97. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +12 -15
  98. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -5
  99. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +6 -9
  100. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +8 -11
  101. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +13 -13
  102. package/src/generation/markers/actions/util/GridCellActionDebugBreak.js +5 -8
  103. package/src/generation/markers/actions/util/GridCellActionLogToConsole.js +1 -4
  104. package/src/generation/markers/emitter/MarkerNodeConsumerBuffer.js +10 -13
  105. package/src/generation/markers/emitter/MarkerNodeEmitterFromAction.js +5 -9
  106. package/src/generation/markers/emitter/MarkerNodeEmitterGridCellAction.js +12 -15
  107. package/src/generation/markers/emitter/MarkerNodeEmitterGroup.js +5 -8
  108. package/src/generation/markers/emitter/MarkerNodeEmitterPredicated.js +18 -21
  109. package/src/generation/markers/matcher/MarkerNodeMatcher.js +2 -1
  110. package/src/generation/markers/matcher/MarkerNodeMatcherBinary.js +12 -13
  111. package/src/generation/markers/matcher/MarkerNodeMatcherContainsTag.js +7 -9
  112. package/src/generation/markers/matcher/MarkerNodeMatcherNot.js +7 -9
  113. package/src/generation/markers/predicate/GridDataNodePredicateBinary.js +10 -14
  114. package/src/generation/markers/predicate/GridDataNodePredicateNot.js +9 -11
  115. package/src/generation/markers/predicate/GridDataNodePredicateOverlaps.js +6 -9
  116. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +2 -6
  117. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +6 -9
  118. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +1 -4
  119. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +12 -15
  120. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.js +14 -17
  121. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +21 -23
  122. package/src/generation/markers/transform/MarkerNodeTransformerRemoveTag.js +1 -4
  123. package/src/generation/markers/transform/MarkerNodeTransformerSequence.js +6 -9
  124. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +13 -17
  125. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +12 -16
  126. package/src/generation/placement/GridCellActionTransformNearbyMarkers.js +26 -29
  127. package/src/generation/placement/GridCellPlacementRule.js +30 -32
  128. package/src/generation/placement/action/GridCellActionPlaceTags.js +26 -28
  129. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +16 -20
  130. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +13 -16
  131. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +11 -14
  132. package/src/generation/placement/action/util/CellMatcherWithinAABB.js +2 -6
  133. package/src/generation/placement/action/util/GridCellActionSequence.js +7 -9
  134. package/src/generation/placement/action/util/GridCellDisplacedAction.js +9 -12
  135. package/src/generation/rules/CellMatcherFromFilter.js +6 -9
  136. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -9
  137. package/src/generation/rules/GridLayerCellMatcher.js +11 -14
  138. package/src/generation/rules/cell/CellMatcherContainsMarkerWithinRadius.js +11 -14
  139. package/src/generation/rules/cell/CellMatcherGridPattern.js +6 -8
  140. package/src/generation/rules/cell/GridPatternMatcherCell.js +11 -12
  141. package/src/generation/rules/logic/CellMatcherBinary.js +10 -14
  142. package/src/generation/rules/logic/CellMatcherDecorator.js +5 -8
  143. package/src/generation/theme/AreaMask.js +15 -17
  144. package/src/generation/theme/AreaTheme.js +7 -8
  145. package/src/generation/theme/TerrainLayerDescription.js +10 -12
  146. package/src/generation/theme/TerrainLayerRule.js +11 -13
  147. package/src/generation/theme/TerrainTheme.js +6 -7
  148. package/src/generation/theme/Theme.js +15 -17
  149. package/src/generation/theme/ThemeEngine.js +16 -18
  150. package/src/view/string_tag_to_css_class_name.js +2 -2
  151. package/src/view/tooltip/gml/TooltipParser.js +2 -2
  152. package/src/core/cache/PersistentCacheAdapter.js +0 -378
  153. package/src/core/primitives/strings/StringUtils.js +0 -105
  154. package/src/core/primitives/strings/StringUtils.spec.js +0 -42
  155. package/src/engine/ecs/components/MonsterAI.js +0 -15
  156. package/src/generation/markers/MarkerRelation.js +0 -13
@@ -1,7 +1,15 @@
1
1
  import { DrawMode } from "../../DrawMode.js";
2
2
 
3
3
  export class SGCacheKey {
4
+ /**
5
+ * ID of geometry
6
+ * @type {number}
7
+ */
4
8
  geometry = -1;
9
+ /**
10
+ * ID of material
11
+ * @type {number}
12
+ */
5
13
  material = -1;
6
14
  /**
7
15
  *
@@ -9,9 +17,13 @@ export class SGCacheKey {
9
17
  */
10
18
  mode = DrawMode.Triangles;
11
19
 
20
+ /**
21
+ *
22
+ * @type {number}
23
+ */
12
24
  flags = 0;
13
25
 
14
- hash(){
26
+ hash() {
15
27
  return this.geometry ^ this.material;
16
28
  }
17
29
 
@@ -20,29 +32,29 @@ export class SGCacheKey {
20
32
  * @param {SGCacheKey} other
21
33
  * @returns {boolean}
22
34
  */
23
- equals(other){
35
+ equals(other) {
24
36
  return this.geometry === other.geometry
25
- && this.material === other.material
26
- && this.mode === other.mode
27
- && this.flags === other.flags;
37
+ && this.material === other.material
38
+ && this.mode === other.mode
39
+ && this.flags === other.flags;
28
40
  }
29
41
 
30
42
  /**
31
43
  *
32
44
  * @param {SGCacheKey} other
33
45
  */
34
- copy(other){
46
+ copy(other) {
35
47
  this.geometry = other.geometry;
36
48
  this.material = other.material;
37
49
  this.mode = other.mode;
38
50
  this.flags = other.flags;
39
51
  }
40
52
 
41
- clone(){
53
+ clone() {
42
54
  const r = new SGCacheKey();
43
55
 
44
56
  r.copy(this);
45
-
57
+
46
58
  return r;
47
59
  }
48
60
 
@@ -50,7 +62,7 @@ export class SGCacheKey {
50
62
  *
51
63
  * @param {ShadedGeometry} sg
52
64
  */
53
- fromSG(sg){
65
+ fromSG(sg) {
54
66
  this.geometry = sg.geometry.id;
55
67
  this.material = sg.material.id;
56
68
  this.mode = sg.mode;
@@ -0,0 +1,79 @@
1
+ import { SGCacheKey } from "./SGCacheKey.js";
2
+ import { DrawMode } from "../../DrawMode.js";
3
+
4
+ test("constructor does not throw", () => {
5
+ new SGCacheKey()
6
+ });
7
+
8
+ test("equals", () => {
9
+ const a = new SGCacheKey();
10
+
11
+ a.geometry = 3;
12
+ a.material = 7;
13
+ a.mode = DrawMode.Triangles;
14
+ a.flags = 0xBEEF;
15
+
16
+ const b = new SGCacheKey();
17
+
18
+ b.geometry = 3;
19
+ b.material = 7;
20
+ b.mode = DrawMode.Triangles;
21
+ b.flags = 0xBEEF;
22
+
23
+ expect(a.equals(b)).toBe(true);
24
+
25
+ const c = new SGCacheKey();
26
+
27
+ c.geometry = 5;
28
+ c.material = 7;
29
+ c.mode = DrawMode.Triangles;
30
+ c.flags = 0xBEEF;
31
+
32
+ expect(a.equals(c)).toBe(false);
33
+
34
+ const d = new SGCacheKey();
35
+
36
+ d.geometry = 3;
37
+ d.material = 11;
38
+ d.mode = DrawMode.Triangles;
39
+ d.flags = 0xBEEF;
40
+
41
+ expect(a.equals(d)).toBe(false);
42
+
43
+ const e = new SGCacheKey();
44
+
45
+ e.geometry = 3;
46
+ e.material = 7;
47
+ e.mode = DrawMode.Points;
48
+ e.flags = 0xBEEF;
49
+
50
+ expect(a.equals(e)).toBe(false);
51
+
52
+ const f = new SGCacheKey();
53
+
54
+ f.geometry = 3;
55
+ f.material = 7;
56
+ f.mode = DrawMode.Triangles;
57
+ f.flags = 0xCAFE;
58
+
59
+ expect(a.equals(f)).toBe(false);
60
+
61
+ });
62
+
63
+ test("copy", () => {
64
+ const a = new SGCacheKey();
65
+
66
+ a.geometry = 3;
67
+ a.material = 7;
68
+ a.mode = DrawMode.Triangles;
69
+ a.flags = 0xBEEF;
70
+
71
+ const b = new SGCacheKey();
72
+
73
+ b.copy(a);
74
+
75
+ expect(b.geometry).toEqual(3);
76
+ expect(b.material).toEqual(7);
77
+ expect(b.mode).toEqual(DrawMode.Triangles);
78
+ expect(b.flags).toEqual(0xBEEF);
79
+ });
@@ -1,8 +1,9 @@
1
1
  import { IncrementalDeltaSet } from "./IncrementalDeltaSet.js";
2
- import { compareNumbersAscending } from "../../../../core/function/Functions.js";
2
+
3
+ import { number_compare_ascending } from "../../../../core/primitives/numbers/number_compare_ascending.js";
3
4
 
4
5
  test('set is sorted after insert, push 1,2', () => {
5
- const set = new IncrementalDeltaSet(compareNumbersAscending);
6
+ const set = new IncrementalDeltaSet(number_compare_ascending);
6
7
 
7
8
  set.initializeUpdate();
8
9
 
@@ -16,7 +17,7 @@ test('set is sorted after insert, push 1,2', () => {
16
17
  });
17
18
 
18
19
  test('set is sorted after insert, push 2,1', () => {
19
- const set = new IncrementalDeltaSet(compareNumbersAscending);
20
+ const set = new IncrementalDeltaSet(number_compare_ascending);
20
21
 
21
22
  set.initializeUpdate();
22
23
 
@@ -30,7 +31,7 @@ test('set is sorted after insert, push 2,1', () => {
30
31
  });
31
32
 
32
33
  test('set is sorted after insert, push 1,2,3', () => {
33
- const set = new IncrementalDeltaSet(compareNumbersAscending);
34
+ const set = new IncrementalDeltaSet(number_compare_ascending);
34
35
 
35
36
  set.initializeUpdate();
36
37
 
@@ -46,7 +47,7 @@ test('set is sorted after insert, push 1,2,3', () => {
46
47
  });
47
48
 
48
49
  test('set is sorted after insert, push 3,2,1', () => {
49
- const set = new IncrementalDeltaSet(compareNumbersAscending);
50
+ const set = new IncrementalDeltaSet(number_compare_ascending);
50
51
 
51
52
  set.initializeUpdate();
52
53
 
@@ -63,7 +64,7 @@ test('set is sorted after insert, push 3,2,1', () => {
63
64
 
64
65
 
65
66
  test('add/remove callbacks', () => {
66
- const set = new IncrementalDeltaSet(compareNumbersAscending);
67
+ const set = new IncrementalDeltaSet(number_compare_ascending);
67
68
 
68
69
  const add_listener = jest.fn();
69
70
  const remove_listener = jest.fn();
@@ -155,6 +155,16 @@ export class OptionGroup extends OptionAbstract {
155
155
 
156
156
  return p
157
157
  .then((loaded) => {
158
+ if (loaded === undefined) {
159
+ // no loaded data, assume options are loaded for hte first time
160
+ return;
161
+ }
162
+
163
+ if (typeof loaded !== "string") {
164
+ console.error(`expected loaded options to be a string, instead was '${typeof loaded}'`);
165
+ return;
166
+ }
167
+
158
168
  group.fromJSON(JSON.parse(loaded));
159
169
  })
160
170
  .finally(() => {
@@ -6,32 +6,29 @@ import { SignalHandler } from "../../core/events/signal/SignalHandler.js";
6
6
  import { assert } from "../../core/assert.js";
7
7
 
8
8
  class Ticker {
9
+ /**
10
+ * @readonly
11
+ * @type {Clock}
12
+ */
13
+ clock = new Clock();
14
+ /**
15
+ * @private
16
+ * @type {boolean}
17
+ */
18
+ isRunning = false;
19
+
20
+ /**
21
+ *
22
+ * @type {SignalHandler[]}
23
+ */
24
+ callbacks = [];
25
+
9
26
  /**
10
27
  *
11
28
  * @constructor
12
29
  */
13
30
  constructor() {
14
-
15
- /**
16
- * @readonly
17
- * @type {Clock}
18
- */
19
- this.clock = new Clock();
20
-
21
-
22
31
  this.clock.pause();
23
-
24
- /**
25
- * @private
26
- * @type {boolean}
27
- */
28
- this.isRunning = false;
29
-
30
- /**
31
- *
32
- * @type {SignalHandler[]}
33
- */
34
- this.callbacks = [];
35
32
  }
36
33
 
37
34
  /**
@@ -2,16 +2,12 @@ import TaskGroup from "../core/process/task/TaskGroup.js";
2
2
  import { GridTaskGenerator } from "./grid/GridTaskGenerator.js";
3
3
 
4
4
  export class GridTaskGroup extends GridTaskGenerator {
5
- constructor() {
6
- super();
7
5
 
8
- /**
9
- *
10
- * @type {GridTaskGenerator[]}
11
- */
12
- this.children = [];
13
-
14
- }
6
+ /**
7
+ *
8
+ * @type {GridTaskGenerator[]}
9
+ */
10
+ children = [];
15
11
 
16
12
 
17
13
  /**
@@ -4,22 +4,18 @@ import { assert } from "../../../core/assert.js";
4
4
 
5
5
  export class CellFilterCache extends CellFilterUnaryOperation {
6
6
 
7
- constructor() {
8
- super();
9
-
10
- /**
11
- *
12
- * @type {Sampler2D}
13
- * @private
14
- */
15
- this.__cache = Sampler2D.float32(1, 1, 1);
16
-
17
- /**
18
- *
19
- * @type {number}
20
- */
21
- this.scale = 1;
22
- }
7
+ /**
8
+ *
9
+ * @type {Sampler2D}
10
+ * @private
11
+ */
12
+ __cache = Sampler2D.float32(1, 1, 1);
13
+
14
+ /**
15
+ *
16
+ * @type {number}
17
+ */
18
+ scale = 1;
23
19
 
24
20
  /**
25
21
  *
@@ -7,38 +7,37 @@ import { CellFilter } from "../../CellFilter.js";
7
7
  * Based on FXAA algorithm by NVidia
8
8
  */
9
9
  export class CellFilterFXAA extends CellFilter {
10
- constructor() {
11
- super();
12
-
13
- /**
14
- *
15
- * @type {CellFilter}
16
- */
17
- this.source = null;
18
-
19
- /**
20
- * 0.125 leaves less aliasing, but is softer (default!!!)
21
- * 0.25 leaves more aliasing, and is sharper
22
- * @type {number}
23
- */
24
- this.edge_threshold = 0.25;
25
-
26
- /**
27
- * 0.06 - faster but more aliasing in darks
28
- * 0.05 - default
29
- * 0.04 - slower and less aliasing in darks
30
- * @type {number}
31
- */
32
- this.console_edge_threshold_min = 0.05;
33
-
34
- /**
35
- * 8.0 is sharper (default!!!)
36
- * 4.0 is softer
37
- * 2.0 is really soft (good only for vector renderer inputs)
38
- * @type {number}
39
- */
40
- this.console_edge_sharpness = 2;
41
- }
10
+
11
+
12
+ /**
13
+ *
14
+ * @type {CellFilter}
15
+ */
16
+ source = null;
17
+
18
+ /**
19
+ * 0.125 leaves less aliasing, but is softer (default!!!)
20
+ * 0.25 leaves more aliasing, and is sharper
21
+ * @type {number}
22
+ */
23
+ edge_threshold = 0.25;
24
+
25
+ /**
26
+ * 0.06 - faster but more aliasing in darks
27
+ * 0.05 - default
28
+ * 0.04 - slower and less aliasing in darks
29
+ * @type {number}
30
+ */
31
+ console_edge_threshold_min = 0.05;
32
+
33
+ /**
34
+ * 8.0 is sharper (default!!!)
35
+ * 4.0 is softer
36
+ * 2.0 is really soft (good only for vector renderer inputs)
37
+ * @type {number}
38
+ */
39
+ console_edge_sharpness = 2;
40
+
42
41
 
43
42
  /**
44
43
  *
@@ -5,15 +5,12 @@ import { assert } from "../../../../core/assert.js";
5
5
  const sample = [];
6
6
 
7
7
  export class CellFilterLookupTable extends CellFilterUnaryOperation {
8
- constructor() {
9
- super();
10
-
11
- /**
12
- *
13
- * @type {ParameterLookupTable}
14
- */
15
- this.lut = null;
16
- }
8
+
9
+ /**
10
+ *
11
+ * @type {ParameterLookupTable}
12
+ */
13
+ lut = null;
17
14
 
18
15
  /**
19
16
  *
@@ -7,34 +7,31 @@ import { CellFilterDivide } from "../math/algebra/CellFilterDivide.js";
7
7
  import { create_simplex_noise_2d } from "../../../../core/math/noise/create_simplex_noise_2d.js";
8
8
 
9
9
  export class CellFilterSimplexNoise extends CellFilter {
10
- constructor() {
11
- super();
12
10
 
13
11
  /**
14
12
  * @private
15
13
  * @type {function(x:number,y:number):number}
16
14
  */
17
- this.noise = null;
15
+ noise = null;
18
16
 
19
17
  /**
20
18
  * @private
21
19
  * @type {function}
22
20
  */
23
- this.random = seededRandom(0);
21
+ random = seededRandom(0);
24
22
 
25
- this.scale_x = 1;
26
- this.scale_y = 1;
23
+ scale_x = 1;
24
+ scale_y = 1;
27
25
 
28
- this.inv_scale_x = 1;
29
- this.inv_scale_y = 1;
26
+ inv_scale_x = 1;
27
+ inv_scale_y = 1;
30
28
 
31
29
  /**
32
30
  * RNG Seed offset
33
31
  * @type {number}
34
32
  * @private
35
33
  */
36
- this.__seed = 0;
37
- }
34
+ __seed = 0;
38
35
 
39
36
  /**
40
37
  * Build a fractal noise filter with a given number of octaves
@@ -5,15 +5,12 @@ import { assert } from "../../../../core/assert.js";
5
5
  * Sobel edge-detection filter
6
6
  */
7
7
  export class CellFilterSobel extends CellFilter {
8
- constructor() {
9
- super();
10
-
11
- /**
12
- *
13
- * @type {CellFilter}
14
- */
15
- this.source = null;
16
- }
8
+
9
+ /**
10
+ *
11
+ * @type {CellFilter}
12
+ */
13
+ source = null;
17
14
 
18
15
  initialize(grid, seed) {
19
16
  super.initialize(grid, seed);
@@ -8,27 +8,24 @@ import { bell_membership_function } from "../../../../core/math/bell_membership_
8
8
  * @see https://researchhubs.com/post/maths/fundamentals/bell-shaped-function.html
9
9
  */
10
10
  export class CellFilterMembershipGeneralizedBell extends CellFilterUnaryOperation {
11
- constructor() {
12
- super();
13
-
14
-
15
- /**
16
- * Controls window, larger value = larger window. Function will return exactly 0.5 at this distance away from center
17
- * @type {number}
18
- */
19
- this.a = 0;
20
-
21
- /**
22
- * Slope, larger slope makes function's tails sharper, meaning that values fall off faster away from center
23
- * @type {number}
24
- */
25
- this.b = 0;
26
- /**
27
- * Controls center of the bell
28
- * @type {number}
29
- */
30
- this.c = 0;
31
- }
11
+
12
+ /**
13
+ * Controls window, larger value = larger window. Function will return exactly 0.5 at this distance away from center
14
+ * @type {number}
15
+ */
16
+ a = 1;
17
+
18
+ /**
19
+ * Slope, larger slope makes function's tails sharper, meaning that values fall off faster away from center
20
+ * @type {number}
21
+ */
22
+ b = 1;
23
+
24
+ /**
25
+ * Controls center of the bell
26
+ * @type {number}
27
+ */
28
+ c = 0;
32
29
 
33
30
  static from(source, a = 1, b = 1, c = 0) {
34
31
  assert.equal(source.isCellFilter, true, 'source.isCellFilter !== true');
@@ -1,31 +1,30 @@
1
1
  import { CellFilter } from "../../CellFilter.js";
2
2
 
3
3
  export class AbstractCellFilterSampleGridLayer extends CellFilter {
4
- constructor() {
5
- super();
6
-
7
- /**
8
- *
9
- * @type {string}
10
- */
11
- this.layerId = null;
12
-
13
- /**
14
- *
15
- * @type {GridDataLayer}
16
- * @private
17
- */
18
- this.__layer = null;
19
-
20
- this.__u_scale = 0;
21
- this.__v_scale = 0;
22
- /**
23
- *
24
- * @type {Sampler2D}
25
- * @private
26
- */
27
- this.__sampler = null;
28
- }
4
+
5
+
6
+ /**
7
+ *
8
+ * @type {string}
9
+ */
10
+ layerId = null;
11
+
12
+ /**
13
+ *
14
+ * @type {GridDataLayer}
15
+ * @private
16
+ */
17
+ __layer = null;
18
+
19
+ __u_scale = 0;
20
+ __v_scale = 0;
21
+ /**
22
+ *
23
+ * @type {Sampler2D}
24
+ * @private
25
+ */
26
+ __sampler = null;
27
+
29
28
 
30
29
  initialize(grid, seed) {
31
30
  super.initialize(grid, seed);
@@ -9,7 +9,7 @@ export class CellFilterSampleLayerLinear extends AbstractCellFilterSampleGridLay
9
9
  * @returns {CellFilterSampleLayerLinear}
10
10
  */
11
11
  static from(layer) {
12
- assert.typeOf(layer, 'string', 'layer');
12
+ assert.isString(layer, 'layer');
13
13
 
14
14
  const r = new CellFilterSampleLayerLinear();
15
15
 
@@ -11,28 +11,29 @@ import { qt_collect_by_circle } from "../../core/geom/2d/quad-tree/qt_collect_by
11
11
  const marker_collection = [];
12
12
 
13
13
  export class GridData {
14
- constructor() {
15
- this.width = 0;
16
- this.height = 0;
17
-
18
- /**
19
- *
20
- * @type {OffsetScaleTransform2D}
21
- */
22
- this.transform = new OffsetScaleTransform2D();
23
-
24
- /**
25
- *
26
- * @type {QuadTreeNode<MarkerNode>}
27
- */
28
- this.markers = new QuadTreeNode();
29
-
30
- /**
31
- * Discrete data layers
32
- * @type {GridDataLayer[]}
33
- */
34
- this.layers = [];
35
- }
14
+
15
+ width = 0;
16
+ height = 0;
17
+
18
+ /**
19
+ * @readonly
20
+ * @type {OffsetScaleTransform2D}
21
+ */
22
+ transform = new OffsetScaleTransform2D();
23
+
24
+ /**
25
+ * @readonly
26
+ * @type {QuadTreeNode<MarkerNode>}
27
+ */
28
+ markers = new QuadTreeNode();
29
+
30
+ /**
31
+ * Discrete data layers
32
+ * @readonly
33
+ * @type {GridDataLayer[]}
34
+ */
35
+ layers = [];
36
+
36
37
 
37
38
  /**
38
39
  *