bruce-cesium 7.2.2 → 7.2.4

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.
@@ -24,6 +24,7 @@ __exportStar(require("./rendering/entity-render-engine-model3d"), exports);
24
24
  __exportStar(require("./rendering/entity-render-engine-point"), exports);
25
25
  __exportStar(require("./rendering/entity-render-engine-polygon"), exports);
26
26
  __exportStar(require("./rendering/entity-render-engine-polyline"), exports);
27
+ __exportStar(require("./rendering/texture-frame-series-animator"), exports);
27
28
  __exportStar(require("./rendering/texture-value-labels"), exports);
28
29
  __exportStar(require("./rendering/menu-item-creator"), exports);
29
30
  __exportStar(require("./rendering/menu-item-manager"), exports);
@@ -82,7 +83,7 @@ __exportStar(require("./widgets/widget-info-view"), exports);
82
83
  __exportStar(require("./widgets/widget-left-panel"), exports);
83
84
  __exportStar(require("./widgets/widget-nav-compass"), exports);
84
85
  __exportStar(require("./widgets/widget-view-bar"), exports);
85
- exports.VERSION = "7.2.2";
86
+ exports.VERSION = "7.2.4";
86
87
  /**
87
88
  * Updates the environment instance used by bruce-cesium to one specified.
88
89
  * This can be used to ensure that the instance a parent is referencing is shared between bruce-cesium, bruce-models, and the parent app.
@@ -1 +1 @@
1
- {"version":3,"file":"bruce-cesium.js","sourceRoot":"","sources":["../../src/bruce-cesium.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA2C;AAE3C,qEAAmD;AACnD,0EAAwD;AACxD,uEAAqD;AACrD,mEAAiD;AACjD,2EAAyD;AACzD,yEAAuD;AACvD,2EAAyD;AACzD,4EAA0D;AAC1D,mEAAiD;AACjD,gEAA8C;AAC9C,gEAA8C;AAC9C,qFAAmE;AACnE,kFAAgE;AAChE,iFAA+D;AAC/D,oFAAkE;AAClE,yGAAuF;AACvF,uGAAqF;AACrF,mGAAiF;AACjF,sGAAoF;AACpF,+FAA6E;AAC7E,6FAA2E;AAC3E,4FAA0E;AAC1E,iGAA+E;AAC/E,6FAA2E;AAC3E,6EAA2D;AAC3D,kGAAgF;AAChF,kGAAgF;AAChF,uGAAqF;AACrF,4GAA0F;AAC1F,kGAAgF;AAChF,yGAAuF;AACvF,iEAA+C;AAC/C,oEAAkD;AAClD,iEAA+C;AAC/C,qEAAmD;AACnD,+DAA6C;AAC7C,mEAAiD;AACjD,+DAA6C;AAC7C,wDAAsC;AACtC,uDAAqC;AACrC,wDAAsC;AACtC,sDAAoC;AACpC,qDAAmC;AACnC,+DAA6C;AAC7C,4DAA0C;AAC1C,gEAA8C;AAC9C,wDAAsC;AACtC,mEAAiD;AACjD,oEAAkD;AAClD,mEAAiD;AACjD,+DAA6C;AAC7C,sFAAoE;AACpE,6FAA2E;AAC3E,kFAAgE;AAChE,4FAA0E;AAC1E,4FAA0E;AAC1E,6FAA2E;AAC3E,mDAAiC;AACjC,6DAA2C;AAC3C,4DAA0C;AAC1C,6DAA2C;AAC3C,sEAAoD;AACpD,6DAA2C;AAC3C,8DAA4C;AAC5C,+DAA6C;AAC7C,4DAA0C;AAE7B,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,MAAW,EAAE,EAAE;IAC1C,0BAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;;GAGG;AACI,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,OAAO,0BAAW,CAAC;AACvB,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B"}
1
+ {"version":3,"file":"bruce-cesium.js","sourceRoot":"","sources":["../../src/bruce-cesium.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA2C;AAE3C,qEAAmD;AACnD,0EAAwD;AACxD,uEAAqD;AACrD,mEAAiD;AACjD,2EAAyD;AACzD,yEAAuD;AACvD,2EAAyD;AACzD,4EAA0D;AAC1D,4EAA0D;AAC1D,mEAAiD;AACjD,gEAA8C;AAC9C,gEAA8C;AAC9C,qFAAmE;AACnE,kFAAgE;AAChE,iFAA+D;AAC/D,oFAAkE;AAClE,yGAAuF;AACvF,uGAAqF;AACrF,mGAAiF;AACjF,sGAAoF;AACpF,+FAA6E;AAC7E,6FAA2E;AAC3E,4FAA0E;AAC1E,iGAA+E;AAC/E,6FAA2E;AAC3E,6EAA2D;AAC3D,kGAAgF;AAChF,kGAAgF;AAChF,uGAAqF;AACrF,4GAA0F;AAC1F,kGAAgF;AAChF,yGAAuF;AACvF,iEAA+C;AAC/C,oEAAkD;AAClD,iEAA+C;AAC/C,qEAAmD;AACnD,+DAA6C;AAC7C,mEAAiD;AACjD,+DAA6C;AAC7C,wDAAsC;AACtC,uDAAqC;AACrC,wDAAsC;AACtC,sDAAoC;AACpC,qDAAmC;AACnC,+DAA6C;AAC7C,4DAA0C;AAC1C,gEAA8C;AAC9C,wDAAsC;AACtC,mEAAiD;AACjD,oEAAkD;AAClD,mEAAiD;AACjD,+DAA6C;AAC7C,sFAAoE;AACpE,6FAA2E;AAC3E,kFAAgE;AAChE,4FAA0E;AAC1E,4FAA0E;AAC1E,6FAA2E;AAC3E,mDAAiC;AACjC,6DAA2C;AAC3C,4DAA0C;AAC1C,6DAA2C;AAC3C,sEAAoD;AACpD,6DAA2C;AAC3C,8DAA4C;AAC5C,+DAA6C;AAC7C,4DAA0C;AAE7B,QAAA,OAAO,GAAG,OAAO,CAAC;AAE/B;;;;GAIG;AACI,MAAM,cAAc,GAAG,CAAC,MAAW,EAAE,EAAE;IAC1C,0BAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEF;;;GAGG;AACI,MAAM,cAAc,GAAG,GAAG,EAAE;IAC/B,OAAO,0BAAW,CAAC;AACvB,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B"}
@@ -23,11 +23,6 @@ var DisplacedSurfacePrimitive;
23
23
  const SKIRT_FRACTION = 0.015;
24
24
  // Alpha below which a texel counts as no-data and is not drawn at all.
25
25
  const COVERAGE_CUTOFF = 0.35;
26
- // With no exaggeration stated, the full value range is drawn as this fraction of the extent's shorter side.
27
- const AUTO_RELIEF_FRACTION = 0.02;
28
- // Ceiling on the derived relief. Sizing purely off the extent is fine for a parcel and absurd for
29
- // a whole estuary: 4 m of water over an 82 km extent came out 1.6 km tall.
30
- const AUTO_MAX_RELIEF_METRES = 250.0;
31
26
  // Terrain is sampled on this grid and interpolated between samples.
32
27
  // Per-texel sampling would be hundreds of thousands of lookups for a surface whose own data is far coarser than that.
33
28
  const GROUND_SAMPLES_PER_SIDE = 64;
@@ -48,6 +43,7 @@ in float skirt;
48
43
 
49
44
  uniform sampler2D u_valueTexture;
50
45
  uniform sampler2D u_groundTexture;
46
+ uniform float u_valuePacked;
51
47
  uniform float u_valueMin;
52
48
  uniform float u_valueRange;
53
49
  uniform float u_exaggeration;
@@ -85,18 +81,37 @@ float sampleGround(vec2 uv) {
85
81
  return mix(mix(h00, h10, f.x), mix(h01, h11, f.x), f.y);
86
82
  }
87
83
 
84
+ /*
85
+ * The texel's normalised value, whichever way the archive packed it.
86
+ *
87
+ * A packed frame keeps the high byte in R, so reading R alone would quantise the whole range to 255
88
+ * steps and draw a plausible wrong surface rather than an obviously broken one.
89
+ *
90
+ * Each channel is scaled and then added, rather than reassembled to a 0..65535 integer and divided.
91
+ * That integer is outside the range mediump guarantees, and a fragment shader only gets highp where
92
+ * the device offers it, so the obvious form loses the low byte on exactly the older mobile hardware
93
+ * that Cesium falls back to mediump for.
94
+ */
95
+ float decodeValue(vec4 texel) {
96
+ float packed16 = texel.r * (255.0 * 256.0 / 65535.0) + texel.g * (255.0 / 65535.0);
97
+ return mix(texel.r, packed16, u_valuePacked);
98
+ }
99
+
88
100
  void main() {
89
101
  vec4 texel = texture(u_valueTexture, st);
90
102
  v_st = st;
91
- v_value = texel.r;
103
+ v_value = decodeValue(texel);
92
104
  v_coverage = texel.a;
93
105
 
94
- float metres = u_valueMin + texel.r * u_valueRange;
106
+ // Exaggeration stretches the span above the archive's minimum rather than the height itself. On an
107
+ // elevation the height is measured from the ellipsoid, tens of metres from any of the data, so
108
+ // scaling that instead translates the whole sheet underground rather than spreading it out.
109
+ float metres = u_valueMin + v_value * u_valueRange * u_exaggeration;
95
110
 
96
111
  // Value zero sits at the polygon's own altitude, plus the terrain underneath when the polygon
97
112
  // is following the ground rather than absolutely positioned.
98
113
  float ground = sampleGround(st) * u_groundWeight;
99
- float displacement = u_baseHeight + ground + metres * u_exaggeration * texel.a - skirt * u_skirtDepth;
114
+ float displacement = u_baseHeight + ground + metres * texel.a - skirt * u_skirtDepth;
100
115
 
101
116
  // Added to the LOW half of the encoded position: a metre-scale offset added to the high half
102
117
  // would be lost to float32 rounding at an earth radius.
@@ -109,6 +124,7 @@ uniform sampler2D u_valueTexture;
109
124
  uniform sampler2D u_rampTexture;
110
125
  uniform float u_coverageCutoff;
111
126
  uniform vec2 u_texelSize;
127
+ uniform float u_valuePacked;
112
128
  uniform float u_valueRange;
113
129
  uniform float u_exaggeration;
114
130
  uniform float u_metresPerTexel;
@@ -117,6 +133,16 @@ in vec2 v_st;
117
133
  in float v_value;
118
134
  in float v_coverage;
119
135
 
136
+ /*
137
+ * Scaled per channel for the same reason the vertex shader's decode is: reassembling the pair reaches
138
+ * 65535, which mediump does not have to represent, and this is the shader that may not get highp.
139
+ */
140
+ float valueAt(vec2 uv) {
141
+ vec4 texel = texture(u_valueTexture, uv);
142
+ float packed16 = texel.r * (255.0 * 256.0 / 65535.0) + texel.g * (255.0 / 65535.0);
143
+ return mix(texel.r, packed16, u_valuePacked);
144
+ }
145
+
120
146
  void main() {
121
147
  if (v_coverage < u_coverageCutoff) {
122
148
  discard;
@@ -131,10 +157,10 @@ void main() {
131
157
 
132
158
  // Relief shading from the value gradient, so the displacement reads at a distance without
133
159
  // recomputing vertex normals every time the texture changes.
134
- float left = texture(u_valueTexture, v_st - vec2(u_texelSize.x, 0.0)).r;
135
- float right = texture(u_valueTexture, v_st + vec2(u_texelSize.x, 0.0)).r;
136
- float down = texture(u_valueTexture, v_st - vec2(0.0, u_texelSize.y)).r;
137
- float up = texture(u_valueTexture, v_st + vec2(0.0, u_texelSize.y)).r;
160
+ float left = valueAt(v_st - vec2(u_texelSize.x, 0.0));
161
+ float right = valueAt(v_st + vec2(u_texelSize.x, 0.0));
162
+ float down = valueAt(v_st - vec2(0.0, u_texelSize.y));
163
+ float up = valueAt(v_st + vec2(0.0, u_texelSize.y));
138
164
  float scale = u_valueRange * u_exaggeration;
139
165
  vec3 n = normalize(vec3((left - right) * scale, (down - up) * scale, 2.0 * u_metresPerTexel));
140
166
  float lambert = clamp(dot(n, normalize(vec3(-0.5, -0.6, 0.62))), 0.0, 1.0);
@@ -344,8 +370,9 @@ void main() {
344
370
  this.source = options.source || null;
345
371
  this.valueMin = (_a = options.valueMin) !== null && _a !== void 0 ? _a : 0;
346
372
  this.valueMax = (_b = options.valueMax) !== null && _b !== void 0 ? _b : 1;
347
- this.exaggeration = (_c = options.exaggeration) !== null && _c !== void 0 ? _c : autoExaggeration(this.extent, this.valueMin, this.valueMax);
373
+ this.exaggeration = (_c = options.exaggeration) !== null && _c !== void 0 ? _c : 1;
348
374
  this.baseHeight = (_d = options.baseHeight) !== null && _d !== void 0 ? _d : 0;
375
+ this.packedValue = Boolean(options.packedValue);
349
376
  this.pixelPlacement = options.pixelPlacement;
350
377
  this.tileSkirts = Boolean(options.tileSkirts);
351
378
  this.rampPixels = (0, image_utils_1.RampLookup)(options.rampStops || null, options.lowColor || DEFAULT_LOW_COLOR, options.highColor || DEFAULT_HIGH_COLOR);
@@ -569,6 +596,14 @@ void main() {
569
596
  if (this.texture) {
570
597
  this.texture.destroy();
571
598
  }
599
+ // Nearest for a packed value, because filtering would blend the two bytes of the
600
+ // packing rather than the values they encode, the same trap sampleGround avoids.
601
+ const minification = this.packedValue
602
+ ? Cesium.TextureMinificationFilter.NEAREST
603
+ : Cesium.TextureMinificationFilter.LINEAR;
604
+ const magnification = this.packedValue
605
+ ? Cesium.TextureMagnificationFilter.NEAREST
606
+ : Cesium.TextureMagnificationFilter.LINEAR;
572
607
  this.texture = new Cesium.Texture({
573
608
  context,
574
609
  source: this.source,
@@ -578,8 +613,8 @@ void main() {
578
613
  sampler: new Cesium.Sampler({
579
614
  wrapS: Cesium.TextureWrap.CLAMP_TO_EDGE,
580
615
  wrapT: Cesium.TextureWrap.CLAMP_TO_EDGE,
581
- minificationFilter: Cesium.TextureMinificationFilter.LINEAR,
582
- magnificationFilter: Cesium.TextureMagnificationFilter.LINEAR
616
+ minificationFilter: minification,
617
+ magnificationFilter: magnification
583
618
  })
584
619
  });
585
620
  this.textureDirty = false;
@@ -680,6 +715,7 @@ void main() {
680
715
  uniformMap: {
681
716
  u_valueTexture: () => self.texture,
682
717
  u_groundTexture: () => self.groundTexture,
718
+ u_valuePacked: () => (self.packedValue ? 1 : 0),
683
719
  u_groundWeight: () => (self.followGround && self.groundPixels ? 1 : 0),
684
720
  u_groundRange: () => new Cesium.Cartesian2(GROUND_MIN_METRES, GROUND_MAX_METRES),
685
721
  u_groundSize: () => new Cesium.Cartesian2(self.groundPixels ? GROUND_SAMPLES_PER_SIDE : 1, self.groundPixels ? GROUND_SAMPLES_PER_SIDE : 1),
@@ -732,34 +768,6 @@ void main() {
732
768
  }
733
769
  return tiles;
734
770
  }
735
- /**
736
- * Exaggeration that makes the full value range stand AUTO_RELIEF_FRACTION of the extent tall.
737
- *
738
- * Derived from the whole extent rather than per tile: scaling each tile to its own size would
739
- * make neighbours disagree along their shared edge and tear the surface apart.
740
- * @param extent
741
- * @param valueMin
742
- * @param valueMax
743
- */
744
- function autoExaggeration(extent, valueMin, valueMax) {
745
- const range = Math.abs(valueMax - valueMin);
746
- if (!(range > 0)) {
747
- return 1;
748
- }
749
- const southWest = Cesium.Cartesian3.fromDegrees(extent.West, extent.South, 0);
750
- const southEast = Cesium.Cartesian3.fromDegrees(extent.East, extent.South, 0);
751
- const northWest = Cesium.Cartesian3.fromDegrees(extent.West, extent.North, 0);
752
- const shorterSide = Math.min(Cesium.Cartesian3.distance(southWest, southEast), Cesium.Cartesian3.distance(southWest, northWest));
753
- if (!(shorterSide > 0)) {
754
- return 1;
755
- }
756
- const relief = Math.min(shorterSide * AUTO_RELIEF_FRACTION, AUTO_MAX_RELIEF_METRES);
757
- return relief / range;
758
- }
759
- DisplacedSurfacePrimitive.autoExaggeration = autoExaggeration;
760
- function toCesiumColor(color) {
761
- return new Cesium.Color(color.red / 255, color.green / 255, color.blue / 255, color.alpha);
762
- }
763
771
  function now() {
764
772
  return typeof performance !== "undefined" ? performance.now() : Date.now();
765
773
  }
@@ -1 +1 @@
1
- {"version":3,"file":"displaced-surface-primitive.js","sourceRoot":"","sources":["../../../src/rendering/displaced-surface-primitive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"displaced-surface-primitive.js","sourceRoot":"","sources":["../../../src/rendering/displaced-surface-primitive.ts"],"names":[],"mappings":"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"}
@@ -745,12 +745,12 @@ function syncDisplacedSurface(params) {
745
745
  && existingAnimator.GetArchiveUrl() === extrusionArchive.url
746
746
  && existingSurface
747
747
  && !existingSurface.isDestroyed();
748
- const placement = surfacePlacement(entity, heightRef);
748
+ const placement = surfacePlacement(entity, heightRef, extrusionArchive && texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsDatumHeight(extrusionArchive.metadata));
749
749
  // Whether the surface follows terrain is baked into its ground sampling, so a change there has
750
750
  // to rebuild rather than update in place.
751
751
  if (reusable && existingSurface.GetFollowsGround() === placement.followGround) {
752
752
  existingSurface.SetBaseHeight(placement.baseHeight);
753
- existingSurface.SetExaggeration(exaggerationFor(style, extrusionArchive.metadata, existingSurface.GetExtent()));
753
+ existingSurface.SetExaggeration(exaggerationFor(style));
754
754
  return;
755
755
  }
756
756
  disposeDisplacedSurface(cEntity, viewer);
@@ -774,8 +774,6 @@ function syncDisplacedSurface(params) {
774
774
  produceValueCanvas: true,
775
775
  metadata: extrusionArchive.metadata,
776
776
  cellTexels: 1,
777
- baselineMask: extrusionArchive.metadata.BaselineMask,
778
- // Off-type for the same reason as the fill path: the pinned bruce-models predates the field.
779
777
  maskBaseline: style.maskTextureBaseline
780
778
  });
781
779
  cEntity[EXTRUSION_ANIMATOR_KEY] = animator;
@@ -790,12 +788,13 @@ function syncDisplacedSurface(params) {
790
788
  terrainProvider: viewer && viewer.terrainProvider,
791
789
  valueMin: extrusionArchive.metadata.ValueMin,
792
790
  valueMax: extrusionArchive.metadata.ValueMax,
793
- exaggeration: exaggerationFor(style, extrusionArchive.metadata, extent),
791
+ packedValue: texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsPackedValue(extrusionArchive.metadata),
792
+ exaggeration: exaggerationFor(style),
794
793
  lowColor: mask ? bruce_models_1.Color.ColorFromStr(mask.minColor) : null,
795
794
  highColor: mask ? bruce_models_1.Color.ColorFromStr(mask.maxColor) : null,
796
795
  // Normalised the same way the animator normalises them, so the surface and the flat drape
797
796
  // agree about which values the style hides.
798
- rampStops: (mask && mask.points || []).map((stop) => ({
797
+ rampStops: ((mask && mask.points) || []).map((stop) => ({
799
798
  position: texture_frame_series_animator_1.TextureFrameSeriesAnimator.NormalisePosition(extrusionArchive.metadata, stop.position),
800
799
  color: bruce_models_1.Color.ColorFromStr(stop.color)
801
800
  })).filter((stop) => Boolean(stop.color))
@@ -811,7 +810,7 @@ function syncDisplacedSurface(params) {
811
810
  * @param entity
812
811
  * @param heightRef
813
812
  */
814
- function surfacePlacement(entity, heightRef) {
813
+ function surfacePlacement(entity, heightRef, datumHeight) {
815
814
  const rawAltitude = bruce_models_1.Entity.GetValue({
816
815
  entity,
817
816
  path: ["Bruce", "Location", "altitude"]
@@ -823,32 +822,18 @@ function surfacePlacement(entity, heightRef) {
823
822
  if (heightRef === Cesium.HeightReference.RELATIVE_TO_GROUND) {
824
823
  return { baseHeight: altitude, followGround: true };
825
824
  }
826
- return { baseHeight: altitude, followGround: false };
825
+ // Values that ARE heights against a datum already say where they belong, so adding the entity's
826
+ // altitude on top would move a measured surface off the datum it was measured against.
827
+ return { baseHeight: datumHeight ? 0 : altitude, followGround: false };
827
828
  }
828
- /**
829
- * The archive's own extent when it recorded one, otherwise the polygon's own bounds so archives
830
- * generated before the extent was written still render somewhere sensible.
831
- * @param metadata
832
- * @param posses
833
- */
834
829
  /*
835
- * The factor a displaced surface should use, honouring an explicit style setting first.
836
- *
837
- * An elevation is a real height against a datum, so scaling it is not a display choice: it lifts the
838
- * surface off the datum it belongs to. Only a thickness is safe to exaggerate, which is why an
839
- * elevation archive defaults to 1 rather than to a derived factor.
830
+ * The factor a displaced surface should use, which is the style's or nothing.
840
831
  */
841
- function exaggerationFor(style, metadata, extent) {
832
+ function exaggerationFor(style) {
842
833
  if (style.extrusionExaggeration != null) {
843
834
  return style.extrusionExaggeration;
844
835
  }
845
- if (metadata.Quantity === texture_frame_series_animator_1.TextureFrameSeriesAnimator.QUANTITY_ELEVATION) {
846
- return 1;
847
- }
848
- if (!extent) {
849
- return undefined;
850
- }
851
- return displaced_surface_primitive_1.DisplacedSurfacePrimitive.autoExaggeration(extent, metadata.ValueMin, metadata.ValueMax);
836
+ return 1;
852
837
  }
853
838
  /*
854
839
  * The lon/lat bounding rectangle of a ring, which is the frame Cesium drapes an image material in.
@@ -949,7 +934,6 @@ function syncTextureFrameArchive(cEntity, frameArchive, viewer, textureColorMask
949
934
  metadata: frameArchive.metadata,
950
935
  cellBorder,
951
936
  cellTexels,
952
- baselineMask: frameArchive.metadata.BaselineMask,
953
937
  maskBaseline: maskTextureBaseline,
954
938
  produceValueCanvas,
955
939
  drapeExtent
@@ -1010,20 +994,19 @@ function syncTextureValueLabels(params) {
1010
994
  }
1011
995
  const labels = new texture_value_labels_1.TextureValueLabels.Labels({
1012
996
  viewer, extent, settings, metadata,
1013
- tiles: texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsTiledLayout(metadata)
1014
- ? metadata.Tiles.map((tile) => ({
1015
- West: tile.West, East: tile.East, South: tile.South, North: tile.North,
1016
- ResolutionX: tile.ResolutionX, ResolutionY: tile.ResolutionY
1017
- }))
1018
- : undefined,
997
+ tiles: texture_frame_series_animator_1.TextureFrameSeriesAnimator.TilesOf(metadata).map((tile) => ({
998
+ West: tile.West, East: tile.East, South: tile.South, North: tile.North,
999
+ ResolutionX: tile.ResolutionX, ResolutionY: tile.ResolutionY
1000
+ })),
1019
1001
  clipRing: params.clipRing
1020
1002
  });
1021
1003
  let lastVersion = -1;
1022
1004
  let appliedFloor = null;
1023
1005
  let appliedCeiling = null;
1024
- // The extremes are what turn an anomaly frame back into a reading, so they are worth two extra
1025
- // Range GETs here even though nothing else in the render path wants them.
1026
- animator.EnsureExtremes();
1006
+ // Two extra Range GETs, and worth it only because a label draws the cell's own range from them.
1007
+ if (!texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsTransformed(metadata)) {
1008
+ animator.EnsureExtremes();
1009
+ }
1027
1010
  const remove = viewer.scene.preRender.addEventListener(() => {
1028
1011
  if (animator.IsDisposed()) {
1029
1012
  return;
@@ -1149,10 +1132,14 @@ async function resolveTextureValue(params) {
1149
1132
  url = clientFile.URL;
1150
1133
  const clientFileData = clientFile.Data;
1151
1134
  if (texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsFrameArchiveMetadata(clientFileData)) {
1135
+ const adapted = texture_frame_series_animator_1.TextureFrameSeriesAnimator.Adapt(clientFileData.generation);
1136
+ if (!adapted) {
1137
+ return { dataUri: null, effective: textureTrace.effective };
1138
+ }
1152
1139
  return {
1153
1140
  dataUri: null,
1154
1141
  effective: textureTrace.effective,
1155
- frameArchive: { url, metadata: clientFileData.generation }
1142
+ frameArchive: { url, metadata: adapted }
1156
1143
  };
1157
1144
  }
1158
1145
  }
@@ -1181,7 +1168,11 @@ async function resolveTextureCondition(params) {
1181
1168
  const url = clientFile.URL;
1182
1169
  const clientFileData = clientFile.Data;
1183
1170
  if (texture_frame_series_animator_1.TextureFrameSeriesAnimator.IsFrameArchiveMetadata(clientFileData)) {
1184
- return { dataUri: null, effective: null, frameArchive: { url, metadata: clientFileData.generation } };
1171
+ const adapted = texture_frame_series_animator_1.TextureFrameSeriesAnimator.Adapt(clientFileData.generation);
1172
+ if (adapted) {
1173
+ return { dataUri: null, effective: null, frameArchive: { url, metadata: adapted } };
1174
+ }
1175
+ return { dataUri: null, effective: null };
1185
1176
  }
1186
1177
  const cacheKey = "texture-" + url + "-none";
1187
1178
  let prom = _textureCache.Get(cacheKey);