@woosh/meep-engine 2.89.0 → 2.89.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.
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.89.0",
8
+ "version": "2.89.2",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"paintTerrainOverlayViaLookupTable.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js"],"names":[],"mappings":"AAmBA;;;;;;;;GAQG;AACH;IAPkC,OAAO;IACZ,OAAO,EAAzB,SAAS;IACqB,GAAG,GAAjC,oBAAoB;IACK,KAAK,GAA9B,eAAe;IACkB,mBAAmB,UAA3C,MAAM,KAAE,MAAM;IACP,OAAO,GAAvB,MAAM;SA2ChB;0BAhEyB,gDAAgD;qCAFrC,iFAAiF;gCADtF,mDAAmD"}
1
+ {"version":3,"file":"paintTerrainOverlayViaLookupTable.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js"],"names":[],"mappings":"AA0BA;;;;;;;;GAQG;AACH;IAPkC,OAAO;IACZ,OAAO,EAAzB,SAAS;IACqB,GAAG,GAAjC,oBAAoB;IACK,KAAK,GAA9B,eAAe;IACkB,mBAAmB,UAA3C,MAAM,KAAE,MAAM;IACP,OAAO,GAAvB,MAAM;SA6DhB;0BAzFyB,gDAAgD;qCAFrC,iFAAiF;gCADtF,mDAAmD"}
@@ -4,6 +4,7 @@ import { NumericInterval } from "../../../../core/math/interval/NumericInterval.
4
4
  import { ParameterLookupTable } from "../../../graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
5
5
  import { sampler2d_scale } from "../../../graphics/texture/sampler/resize/sampler2d_scale.js";
6
6
  import { Sampler2D } from "../../../graphics/texture/sampler/Sampler2D.js";
7
+ import { logger } from "../../../logging/GlobalLogger.js";
7
8
 
8
9
 
9
10
  const heatmap_lut = new ParameterLookupTable(4);
@@ -17,6 +18,12 @@ heatmap_lut.write([
17
18
  ]);
18
19
  heatmap_lut.computeUniformPositions();
19
20
 
21
+ /**
22
+ * Color to use when sampled value is NaN
23
+ * @type {number[]}
24
+ */
25
+ const NAN_COLOR = [0, 0, 0, 0];
26
+
20
27
  /**
21
28
  * @param {Object} params
22
29
  * @param {TerrainOverlay} params.overlay
@@ -48,6 +55,8 @@ export function paintTerrainOverlayViaLookupTable({
48
55
  scaled_sampler.resize(w, h);
49
56
  sampler2d_scale(sampler, scaled_sampler);
50
57
 
58
+ let NaN_count = 0;
59
+
51
60
  for (j = 0; j < h; j++) {
52
61
 
53
62
 
@@ -55,9 +64,21 @@ export function paintTerrainOverlayViaLookupTable({
55
64
 
56
65
  const p = scaled_sampler.readChannel(i, j, channel);
57
66
 
58
- const scaledPosition = lookupScaleFunction(p);
67
+ if (Number.isNaN(p)) {
68
+ // handle NaN values by writing special color
69
+
70
+ buffer.set(i, j, NAN_COLOR);
71
+
72
+ NaN_count++;
59
73
 
60
- const position = clamp01(range.normalizeValue(scaledPosition));
74
+ continue;
75
+ }
76
+
77
+ const transformed_value = lookupScaleFunction(p);
78
+
79
+ const remapped_value = range.normalizeValue(transformed_value);
80
+
81
+ const position = clamp01(remapped_value);
61
82
 
62
83
  lut.sample(position, colorSample);
63
84
 
@@ -67,4 +88,8 @@ export function paintTerrainOverlayViaLookupTable({
67
88
 
68
89
  overlay.clear();
69
90
  overlay.writeData(buffer.data);
91
+
92
+ if (NaN_count > 0) {
93
+ logger.warn(`sampler had ${NaN_count} NaN values`);
94
+ }
70
95
  }
@@ -10,6 +10,8 @@ export class Sampler2D {
10
10
 
11
11
  readonly data: ArrayLike<number>
12
12
 
13
+ version: number
14
+
13
15
  readChannel(x: number, y: number, channel: number): number
14
16
 
15
17
  writeChannel(x: number, y: number, channel: number, value: number): void