@openglobus/og 0.20.4 → 0.21.0

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/lib/js/Globe.d.ts CHANGED
@@ -130,7 +130,7 @@ declare class Globe {
130
130
  * @public
131
131
  */
132
132
  fadeOut(): void;
133
- attachTo(target: HTMLElement | string): void;
133
+ attachTo(target: HTMLElement | string, isFirst?: boolean): void;
134
134
  detach(): void;
135
135
  destroy(): void;
136
136
  }
package/lib/js/Globe.js CHANGED
@@ -239,7 +239,7 @@ class Globe {
239
239
  fadeOut() {
240
240
  this._canvas.style.opacity = "0";
241
241
  }
242
- attachTo(target) {
242
+ attachTo(target, isFirst) {
243
243
  this.detach();
244
244
  let t;
245
245
  if (target instanceof HTMLElement) {
@@ -250,7 +250,12 @@ class Globe {
250
250
  }
251
251
  if (t) {
252
252
  this.$target = t;
253
- t.appendChild(this.$inner);
253
+ if (isFirst && this.$target.firstChild) {
254
+ this.$target.insertBefore(this.$inner, this.$target.firstChild);
255
+ }
256
+ else {
257
+ t.appendChild(this.$inner);
258
+ }
254
259
  }
255
260
  }
256
261
  detach() {
@@ -60,5 +60,6 @@ declare class Object3d {
60
60
  static createCube(length?: number, height?: number, depth?: number, xOffset?: number, yOffset?: number, zOffset?: number): Object3d;
61
61
  static createArrow(back?: number, height?: number, front?: number): Object3d;
62
62
  static loadObj(src: string): Promise<Object3d[]>;
63
+ merge(other: Object3d): Object3d;
63
64
  }
64
65
  export { Object3d };
@@ -370,5 +370,23 @@ class Object3d {
370
370
  texCoords: textures
371
371
  }));
372
372
  }
373
+ merge(other) {
374
+ const mergedVertices = [...this._vertices, ...other.vertices];
375
+ const mergedNormals = [...this._normals, ...other.normals];
376
+ const mergedTexCoords = [...this._texCoords, ...other.texCoords];
377
+ const offset = this._vertices.length / 3;
378
+ const mergedIndices = [
379
+ ...this._indices,
380
+ ...other.indices.map(index => index + offset)
381
+ ];
382
+ return new Object3d({
383
+ name: `${this._name}_${other.name}`,
384
+ vertices: mergedVertices,
385
+ texCoords: mergedTexCoords,
386
+ indices: mergedIndices,
387
+ normals: mergedNormals,
388
+ color: this.color
389
+ });
390
+ }
373
391
  }
374
392
  export { Object3d };
@@ -1,11 +1,10 @@
1
1
  import { Extent } from "../Extent";
2
- import { Handler } from "../webgl/Handler";
2
+ import { Handler, WebGLBufferExt } from "../webgl/Handler";
3
3
  import { Vector } from "../layer/Vector";
4
4
  import { Node } from "../quadTree/Node";
5
5
  import { Vec3 } from "../math/Vec3";
6
6
  import { Vec4 } from "../math/Vec4";
7
7
  import { CoordinatesType, Geometry } from "./Geometry";
8
- import { WebGLBufferExt } from "../webgl/Handler";
9
8
  declare class GeometryHandler {
10
9
  static __counter__: number;
11
10
  protected __id: number;
@@ -80,5 +79,7 @@ declare class GeometryHandler {
80
79
  createLineThicknessBuffer(): void;
81
80
  createLineStrokesBuffer(): void;
82
81
  createLineStrokeColorsBuffer(): void;
82
+ clear(): void;
83
+ _deleteBuffers(): void;
83
84
  }
84
85
  export { GeometryHandler };
@@ -682,6 +682,62 @@ class GeometryHandler {
682
682
  h.gl.deleteBuffer(this._lineStrokeColorsBuffer);
683
683
  this._lineStrokeColorsBuffer = h.createArrayBuffer(new Float32Array(this._lineStrokeColors), 4, this._lineStrokeColors.length / 4);
684
684
  }
685
+ clear() {
686
+ this._geometries = [];
687
+ this._polyVerticesHighMerc = [];
688
+ this._polyVerticesLowMerc = [];
689
+ this._polyIndexes = [];
690
+ this._polyColors = [];
691
+ this._polyPickingColors = [];
692
+ this._lineVerticesHighMerc = [];
693
+ this._lineVerticesLowMerc = [];
694
+ this._lineOrders = [];
695
+ this._lineIndexes = [];
696
+ this._lineColors = [];
697
+ this._linePickingColors = [];
698
+ this._lineThickness = [];
699
+ this._lineStrokeColors = [];
700
+ this._lineStrokes = [];
701
+ this._deleteBuffers();
702
+ this._polyVerticesHighBufferMerc = null;
703
+ this._polyVerticesLowBufferMerc = null;
704
+ this._polyIndexesBuffer = null;
705
+ this._polyColorsBuffer = null;
706
+ this._polyPickingColorsBuffer = null;
707
+ this._lineVerticesHighBufferMerc = null;
708
+ this._lineVerticesLowBufferMerc = null;
709
+ this._lineIndexesBuffer = null;
710
+ this._lineOrdersBuffer = null;
711
+ this._lineColorsBuffer = null;
712
+ this._linePickingColorsBuffer = null;
713
+ this._lineThicknessBuffer = null;
714
+ this._lineStrokeColorsBuffer = null;
715
+ this._lineStrokesBuffer = null;
716
+ this._updatedGeometryArr = [];
717
+ this._updatedGeometry = {};
718
+ this._removeGeometryExtentArr = [];
719
+ this._removeGeometryExtents = {};
720
+ this.refresh();
721
+ }
722
+ _deleteBuffers() {
723
+ if (this._layer._planet && this._layer._planet.renderer) {
724
+ let h = this._layer._planet.renderer.handler, gl = h.gl;
725
+ gl.deleteBuffer(this._polyVerticesHighBufferMerc);
726
+ gl.deleteBuffer(this._polyVerticesLowBufferMerc);
727
+ gl.deleteBuffer(this._polyIndexesBuffer);
728
+ gl.deleteBuffer(this._polyColorsBuffer);
729
+ gl.deleteBuffer(this._polyPickingColorsBuffer);
730
+ gl.deleteBuffer(this._lineVerticesHighBufferMerc);
731
+ gl.deleteBuffer(this._lineVerticesLowBufferMerc);
732
+ gl.deleteBuffer(this._lineIndexesBuffer);
733
+ gl.deleteBuffer(this._lineOrdersBuffer);
734
+ gl.deleteBuffer(this._lineColorsBuffer);
735
+ gl.deleteBuffer(this._linePickingColorsBuffer);
736
+ gl.deleteBuffer(this._lineThicknessBuffer);
737
+ gl.deleteBuffer(this._lineStrokeColorsBuffer);
738
+ gl.deleteBuffer(this._lineStrokesBuffer);
739
+ }
740
+ }
685
741
  }
686
742
  GeometryHandler.__counter__ = 0;
687
743
  export { GeometryHandler };
@@ -20,6 +20,7 @@ export class Bing extends XYZ {
20
20
  subdomains: ['t0', 't1', 't2', 't3'],
21
21
  url: "https://ecn.{s}.tiles.virtualearth.net/tiles/a{quad}.jpeg?n=z&g=7146",
22
22
  isBaseLayer: true,
23
+ textureFilter: "LINEAR",
23
24
  maxNativeZoom: 17,
24
25
  defaultTextures: [{ color: "#001522" }, { color: "#E4E6F3" }],
25
26
  attribution: `<div style="transform: scale(0.8); margin-top:-2px;"><a href="https://www.bing.com" target="_blank"><img style="position: relative; top: 2px;" title="Bing Imagery" src="https://sandcastle.cesium.com/CesiumUnminified/Assets/Images/bing_maps_credit.png"></a> © 2021 Microsoft Corporation</div>`,
@@ -388,6 +388,7 @@ class Vector extends Layer {
388
388
  * @public
389
389
  */
390
390
  clear() {
391
+ super.clear();
391
392
  let temp = new Array(this._entities.length);
392
393
  for (let i = 0; i < temp.length; i++) {
393
394
  temp[i] = this._entities[i];
@@ -404,6 +405,7 @@ class Vector extends Layer {
404
405
  this._entityCollectionsTree = null;
405
406
  this._entityCollectionsTreeNorth = null;
406
407
  this._entityCollectionsTreeSouth = null;
408
+ this._geometryHandler.clear();
407
409
  }
408
410
  /**
409
411
  * Safety entities loop.
@@ -723,7 +725,7 @@ class Vector extends Layer {
723
725
  }
724
726
  _execDeferredNode(node) {
725
727
  this._counter++;
726
- setTimeout(() => {
728
+ requestAnimationFrame(() => {
727
729
  node.applyCollection();
728
730
  this._counter--;
729
731
  if (this._deferredEntitiesPendingQueue.length && this._counter < 1) {
@@ -736,7 +738,7 @@ class Vector extends Layer {
736
738
  }
737
739
  }
738
740
  }
739
- }, 0);
741
+ });
740
742
  }
741
743
  /**
742
744
  * Start to load tile material.
@@ -7,16 +7,25 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
7
7
  equalizeNormals?: boolean;
8
8
  key?: string;
9
9
  imageSize?: number;
10
+ minHeight?: number;
11
+ resolution?: number;
10
12
  }
11
13
  declare class RgbTerrain extends GlobusTerrain {
12
14
  protected _imageSize: number;
13
15
  protected _ctx: CanvasRenderingContext2D;
14
16
  protected _imageDataCache: Record<string, Uint8ClampedArray>;
17
+ protected _minHeight: number;
18
+ protected _resolution: number;
15
19
  constructor(name: string | null, options?: IRgbTerrainParams);
16
20
  static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
21
+ rgb2Height(r: number, g: number, b: number): number;
17
22
  isBlur(segment: Segment): boolean;
18
23
  protected _createTemporalCanvas(size: number): CanvasRenderingContext2D;
19
24
  protected _createHeights(data: HTMLImageElement | ImageBitmap, segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
20
25
  getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number): boolean;
26
+ extractElevationSimple(rgbaData: number[] | TypedArray, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentOffsetX: number, availableParentOffsetY: number, availableZoomDiff: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, heightFactor: number | undefined, imageSize: number): void;
27
+ extractElevationTilesRgbNonPowerOfTwo(rgbaData: number[] | TypedArray, outCurrenElevations: number[] | TypedArray, heightFactor?: number): void;
28
+ extractElevationTilesRgb(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, outChildrenElevations: number[][][] | TypedArray[][]): void;
29
+ extractElevationTilesRgbNoChildren(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray): void;
21
30
  }
22
31
  export { RgbTerrain };