@openglobus/og 0.20.4 → 0.22.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.
Files changed (133) hide show
  1. package/lib/@openglobus/js/Globe.d.ts +5 -1
  2. package/lib/@openglobus/js/Object3d.d.ts +8 -2
  3. package/lib/@openglobus/js/camera/Camera.d.ts +2 -0
  4. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
  5. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +1 -1
  6. package/lib/@openglobus/js/ellipsoid/index.d.ts +4 -3
  7. package/lib/@openglobus/js/ellipsoid/mars.d.ts +6 -0
  8. package/lib/@openglobus/js/ellipsoid/moon.d.ts +6 -0
  9. package/lib/@openglobus/js/entity/Entity.d.ts +4 -2
  10. package/lib/@openglobus/js/entity/EntityCollection.d.ts +3 -2
  11. package/lib/@openglobus/js/entity/GeoObject.d.ts +6 -1
  12. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +4 -0
  13. package/lib/@openglobus/js/entity/GeometryHandler.d.ts +3 -2
  14. package/lib/@openglobus/js/entity/Label.d.ts +14 -0
  15. package/lib/@openglobus/js/entity/LabelHandler.d.ts +1 -1
  16. package/lib/@openglobus/js/index.d.ts +3 -3
  17. package/lib/@openglobus/js/layer/Vector.d.ts +12 -29
  18. package/lib/@openglobus/js/proj/equi.d.ts +9 -0
  19. package/lib/@openglobus/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
  20. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +5 -13
  21. package/lib/@openglobus/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
  22. package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +11 -0
  23. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
  24. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
  25. package/lib/@openglobus/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
  26. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
  27. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
  28. package/lib/@openglobus/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
  29. package/lib/@openglobus/js/quadTree/index.d.ts +6 -6
  30. package/lib/{js/quadTree → @openglobus/js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
  31. package/lib/@openglobus/js/renderer/Renderer.d.ts +2 -0
  32. package/lib/@openglobus/js/scene/Planet.d.ts +0 -27
  33. package/lib/@openglobus/js/segment/Segment.d.ts +0 -1
  34. package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +0 -4
  35. package/lib/@openglobus/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
  36. package/lib/@openglobus/js/terrain/RgbTerrain.d.ts +20 -0
  37. package/lib/@openglobus/og.esm.js +1 -1
  38. package/lib/@openglobus/og.esm.js.map +1 -1
  39. package/lib/@openglobus/og.umd.js +1 -1
  40. package/lib/@openglobus/og.umd.js.map +1 -1
  41. package/lib/@openglobus/res/fonts/Ephesis-Regular.json +4648 -0
  42. package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.cfg +1282 -0
  43. package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.png +0 -0
  44. package/lib/js/Globe.d.ts +5 -1
  45. package/lib/js/Globe.js +13 -4
  46. package/lib/js/Object3d.d.ts +8 -2
  47. package/lib/js/Object3d.js +64 -6
  48. package/lib/js/camera/Camera.d.ts +2 -0
  49. package/lib/js/camera/Camera.js +8 -0
  50. package/lib/js/control/elevationProfile/ElevationProfileScene.js +2 -0
  51. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
  52. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +105 -0
  53. package/lib/js/ellipsoid/Ellipsoid.d.ts +1 -1
  54. package/lib/js/ellipsoid/Ellipsoid.js +1 -1
  55. package/lib/js/ellipsoid/index.d.ts +4 -3
  56. package/lib/js/ellipsoid/index.js +4 -3
  57. package/lib/js/ellipsoid/mars.d.ts +6 -0
  58. package/lib/js/ellipsoid/mars.js +6 -0
  59. package/lib/js/ellipsoid/moon.d.ts +6 -0
  60. package/lib/js/ellipsoid/moon.js +6 -0
  61. package/lib/js/entity/Entity.d.ts +4 -2
  62. package/lib/js/entity/Entity.js +4 -1
  63. package/lib/js/entity/EntityCollection.d.ts +3 -2
  64. package/lib/js/entity/EntityCollection.js +26 -2
  65. package/lib/js/entity/GeoObject.d.ts +6 -1
  66. package/lib/js/entity/GeoObject.js +9 -0
  67. package/lib/js/entity/GeoObjectHandler.d.ts +4 -0
  68. package/lib/js/entity/GeoObjectHandler.js +32 -1
  69. package/lib/js/entity/GeometryHandler.d.ts +3 -2
  70. package/lib/js/entity/GeometryHandler.js +58 -0
  71. package/lib/js/entity/Label.d.ts +14 -0
  72. package/lib/js/entity/Label.js +24 -4
  73. package/lib/js/entity/LabelHandler.d.ts +1 -1
  74. package/lib/js/entity/LabelHandler.js +4 -4
  75. package/lib/js/entity/Polyline.js +1 -1
  76. package/lib/js/index.d.ts +3 -3
  77. package/lib/js/index.js +3 -3
  78. package/lib/js/layer/Bing.js +1 -0
  79. package/lib/js/layer/Layer.js +7 -4
  80. package/lib/js/layer/Vector.d.ts +12 -29
  81. package/lib/js/layer/Vector.js +38 -161
  82. package/lib/js/layer/XYZ.js +1 -1
  83. package/lib/js/proj/equi.d.ts +9 -0
  84. package/lib/js/proj/equi.js +9 -0
  85. package/lib/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
  86. package/lib/js/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.js +16 -0
  87. package/lib/js/quadTree/EntityCollectionNode.d.ts +5 -13
  88. package/lib/js/quadTree/EntityCollectionNode.js +18 -83
  89. package/lib/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
  90. package/lib/js/quadTree/EntityCollectionsTreeStrategy.js +49 -0
  91. package/lib/js/quadTree/Node.js +6 -12
  92. package/lib/js/quadTree/QuadTreeStrategy.d.ts +11 -0
  93. package/lib/js/quadTree/QuadTreeStrategy.js +12 -0
  94. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
  95. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +74 -0
  96. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
  97. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.js +103 -0
  98. package/lib/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
  99. package/lib/js/quadTree/{EarthQuadTreeStrategy.js → earth/EarthQuadTreeStrategy.js} +29 -6
  100. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
  101. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +70 -0
  102. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
  103. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.js +75 -0
  104. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
  105. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.js +62 -0
  106. package/lib/js/quadTree/index.d.ts +6 -6
  107. package/lib/js/quadTree/index.js +6 -6
  108. package/lib/{@openglobus/js/quadTree → js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
  109. package/lib/js/quadTree/wgs84/Wgs84QuadTreeStrategy.js +15 -0
  110. package/lib/js/renderer/Renderer.d.ts +2 -0
  111. package/lib/js/renderer/Renderer.js +2 -2
  112. package/lib/js/scene/Planet.d.ts +0 -27
  113. package/lib/js/scene/Planet.js +2 -9
  114. package/lib/js/segment/Segment.d.ts +0 -1
  115. package/lib/js/segment/Segment.js +0 -3
  116. package/lib/js/segment/SegmentLonLat.d.ts +0 -4
  117. package/lib/js/segment/SegmentLonLat.js +0 -11
  118. package/lib/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
  119. package/lib/js/segment/{SegmentLonLatWgs84.js → SegmentLonLatEqui.js} +3 -1
  120. package/lib/js/shaders/geoObject.js +10 -5
  121. package/lib/js/shaders/polyline.js +8 -6
  122. package/lib/js/terrain/RgbTerrain.d.ts +20 -0
  123. package/lib/js/terrain/RgbTerrain.js +227 -214
  124. package/lib/js/utils/PlainSegmentWorker.js +3 -1
  125. package/lib/js/webgl/Handler.js +1 -1
  126. package/package.json +15 -15
  127. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  128. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  129. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +0 -16
  130. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  131. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  132. package/lib/js/quadTree/MarsQuadTreeStrategy.js +0 -43
  133. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +0 -15
@@ -45,6 +45,8 @@ export interface IGlobeParams {
45
45
  fontsSrc?: string;
46
46
  resourcesSrc?: string;
47
47
  atmosphereParameters?: IAtmosphereParams;
48
+ gamma?: number;
49
+ exposure?: number;
48
50
  }
49
51
  /**
50
52
  * Creates a WebGL context with globe.
@@ -97,6 +99,8 @@ export interface IGlobeParams {
97
99
  * @param {boolean} [options.atmosphereEnabled] - Enables atmosphere effect.
98
100
  * @param {boolean} [options.transtitionOpacityEnabled] - Enables terrain smooth opacity transition effect.
99
101
  * @param {IAtmosphereParams} [options.atmosphereParameters] - Atmosphere model parameters.
102
+ * @param {number} [options.gamma] - Gamma
103
+ * @param {number} [options.exposure] - Exposure
100
104
  */
101
105
  declare class Globe {
102
106
  static __counter__: number;
@@ -130,7 +134,7 @@ declare class Globe {
130
134
  * @public
131
135
  */
132
136
  fadeOut(): void;
133
- attachTo(target: HTMLElement | string): void;
137
+ attachTo(target: HTMLElement | string, isFirst?: boolean): void;
134
138
  detach(): void;
135
139
  destroy(): void;
136
140
  }
@@ -1,5 +1,6 @@
1
1
  import { TypedArray } from './utils/shared';
2
2
  import { NumberArray3, Vec3 } from './math/Vec3';
3
+ import { Mat4 } from "./math/Mat4";
3
4
  interface IObject3dParams {
4
5
  name?: string;
5
6
  vertices?: number[];
@@ -9,7 +10,7 @@ interface IObject3dParams {
9
10
  center?: boolean;
10
11
  src?: string;
11
12
  color?: number[] | TypedArray | string;
12
- scale?: number;
13
+ scale?: number | Vec3;
13
14
  }
14
15
  declare class Object3d {
15
16
  protected _name: string;
@@ -27,6 +28,10 @@ declare class Object3d {
27
28
  protected _normals: number[];
28
29
  constructor(data?: IObject3dParams);
29
30
  static centering(verts: number[]): void;
31
+ centering(): this;
32
+ applyMat4(m: Mat4): this;
33
+ scale(s: Vec3): this;
34
+ translate(v: Vec3): this;
30
35
  get src(): string | null;
31
36
  set src(src: string | null);
32
37
  get name(): string;
@@ -35,7 +40,7 @@ declare class Object3d {
35
40
  get indices(): number[];
36
41
  get texCoords(): number[];
37
42
  get numVertices(): number;
38
- static scale(vertices: number[], s: number): void;
43
+ static scale(vertices: number[], s: Vec3): void;
39
44
  static centroid(vertices: number[]): number[];
40
45
  static translate(vertices: number[], v: NumberArray3): void;
41
46
  static getNormals(vertices: number[]): number[];
@@ -60,5 +65,6 @@ declare class Object3d {
60
65
  static createCube(length?: number, height?: number, depth?: number, xOffset?: number, yOffset?: number, zOffset?: number): Object3d;
61
66
  static createArrow(back?: number, height?: number, front?: number): Object3d;
62
67
  static loadObj(src: string): Promise<Object3d[]>;
68
+ merge(other: Object3d): Object3d;
63
69
  }
64
70
  export { Object3d };
@@ -5,6 +5,7 @@ import { Mat4, NumberArray16 } from "../math/Mat4";
5
5
  import { Renderer } from "../renderer/Renderer";
6
6
  import { Vec2, NumberArray2 } from "../math/Vec2";
7
7
  import { Vec3 } from "../math/Vec3";
8
+ import { Sphere } from "../bv/Sphere";
8
9
  type CameraEvents = ["viewchange", "moveend"];
9
10
  export interface ICameraParams {
10
11
  eye?: Vec3;
@@ -285,6 +286,7 @@ declare class Camera {
285
286
  getNormalMatrix(): NumberArray9;
286
287
  setCurrentFrustum(k: number): void;
287
288
  getCurrentFrustum(): number;
289
+ containsSphere(sphere: Sphere): boolean;
288
290
  get frustum(): Frustum;
289
291
  /**
290
292
  * Returns projection matrix.
@@ -0,0 +1,58 @@
1
+ import { EventsHandler } from '../../Events';
2
+ import { Planet } from "../../scene/Planet";
3
+ import { RenderNode } from '../../scene/RenderNode';
4
+ import { Vector } from '../../layer/Vector';
5
+ import { Vec2 } from '../../math/Vec2';
6
+ import { IMouseState } from "../../renderer/RendererEvents";
7
+ import { Ellipsoid } from "../../ellipsoid/Ellipsoid";
8
+ export interface IGeoObjectEditorSceneParams {
9
+ planet?: Planet;
10
+ }
11
+ type GeoObjectSceneEventsList = [
12
+ "mousemove",
13
+ "mouseenter",
14
+ "mouseleave",
15
+ "lclick",
16
+ "rclick",
17
+ "mclick",
18
+ "ldblclick",
19
+ "rdblclick",
20
+ "mdblclick",
21
+ "lup",
22
+ "rup",
23
+ "mup",
24
+ "ldown",
25
+ "rdown",
26
+ "mdown",
27
+ "lhold",
28
+ "rhold",
29
+ "mhold",
30
+ "mousewheel",
31
+ "touchmove",
32
+ "touchstart",
33
+ "touchend",
34
+ "doubletouch",
35
+ "touchleave",
36
+ "touchenter"
37
+ ];
38
+ declare class GeoObjectEditorScene extends RenderNode {
39
+ events: EventsHandler<GeoObjectSceneEventsList>;
40
+ protected _planet: Planet | null;
41
+ protected _startPos: Vec2 | null;
42
+ protected _startClick: Vec2;
43
+ protected _axisLayer: Vector;
44
+ protected _rotLayer: Vector;
45
+ constructor(options?: IGeoObjectEditorSceneParams);
46
+ init(): void;
47
+ onremove(): void;
48
+ _activate(): void;
49
+ protected _deactivate(): void;
50
+ protected _onLUp: () => void;
51
+ setVisibility(visibility: boolean): void;
52
+ protected _onLclick: (e: IMouseState) => void;
53
+ protected _onMouseMove: (e: IMouseState) => void;
54
+ clear(): void;
55
+ frame(): void;
56
+ get ellipsoid(): Ellipsoid | null;
57
+ }
58
+ export { GeoObjectEditorScene };
@@ -98,7 +98,7 @@ declare class Ellipsoid {
98
98
  */
99
99
  lonLatToCartesianRes(lonlat: LonLat, res: Vec3): Vec3;
100
100
  /**
101
- * Gets cartesian ECEF from Wgs84 geodetic coordinates.
101
+ * Gets cartesian ECEF 3d coordinates from geodetic coordinates.
102
102
  * @public
103
103
  * @param {Number} lon - Longitude.
104
104
  * @param {Number} lat - Latitude.
@@ -1,3 +1,4 @@
1
- import { Ellipsoid } from './Ellipsoid';
2
- import { wgs84 } from './wgs84';
3
- export { Ellipsoid, wgs84 };
1
+ export * from './Ellipsoid';
2
+ export * from './wgs84';
3
+ export * from './mars';
4
+ export * from './moon';
@@ -0,0 +1,6 @@
1
+ import { Ellipsoid } from "./Ellipsoid";
2
+ /**
3
+ * Mars ellipsoid object.
4
+ * @type {Ellipsoid}
5
+ */
6
+ export declare const mars: Ellipsoid;
@@ -0,0 +1,6 @@
1
+ import { Ellipsoid } from "./Ellipsoid";
2
+ /**
3
+ * Moon ellipsoid object.
4
+ * @type {Ellipsoid}
5
+ */
6
+ export declare const moon: Ellipsoid;
@@ -10,7 +10,7 @@ import { NumberArray2 } from "../math/Vec2";
10
10
  import { IPointCloudParams, PointCloud } from "./PointCloud";
11
11
  import { IPolylineParams, Polyline } from "./Polyline";
12
12
  import { IRayParams, Ray } from "./Ray";
13
- import { Strip } from "./Strip";
13
+ import { Strip, IStripParams } from "./Strip";
14
14
  import { Vector, VectorEventsType } from "../layer/Vector";
15
15
  import { EntityCollectionNode } from "../quadTree/EntityCollectionNode";
16
16
  export interface IEntityParams {
@@ -27,7 +27,8 @@ export interface IEntityParams {
27
27
  pointCloud?: PointCloud | IPointCloudParams;
28
28
  geometry?: Geometry | IGeometryParams;
29
29
  geoObject?: GeoObject | IGeoObjectParams;
30
- strip?: Strip;
30
+ strip?: Strip | IStripParams;
31
+ independentPicking?: boolean;
31
32
  }
32
33
  /**
33
34
  * Entity instances aggregate multiple forms of visualization into a single high-level object.
@@ -134,6 +135,7 @@ declare class Entity {
134
135
  * @type {Vec3}
135
136
  */
136
137
  _pickingColor: Vec3;
138
+ _independentPicking: boolean;
137
139
  protected _featureConstructorArray: Record<string, [any, Function]>;
138
140
  /**
139
141
  * Billboard entity.
@@ -19,7 +19,7 @@ interface IEntityCollectionParams {
19
19
  labelMaxLetters?: number;
20
20
  pickingEnabled?: boolean;
21
21
  scaleByDistance?: NumberArray3;
22
- pickingScale?: number;
22
+ pickingScale?: number | NumberArray3;
23
23
  opacity?: number;
24
24
  useLighting?: boolean;
25
25
  entities?: Entity[];
@@ -160,7 +160,7 @@ declare class EntityCollection {
160
160
  * @type {Array.<number>} - (exactly 3 entries)
161
161
  */
162
162
  scaleByDistance: NumberArray3;
163
- pickingScale: number;
163
+ pickingScale: Float32Array;
164
164
  /**
165
165
  * Global opacity.
166
166
  * @protected
@@ -187,6 +187,7 @@ declare class EntityCollection {
187
187
  _quadNode?: EntityCollectionNode;
188
188
  _useLighting: number;
189
189
  constructor(options?: IEntityCollectionParams);
190
+ isEmpty(): boolean;
190
191
  get id(): number;
191
192
  get useLighting(): boolean;
192
193
  set useLighting(f: boolean);
@@ -13,7 +13,8 @@ export interface IGeoObjectParams {
13
13
  pitch?: number;
14
14
  yaw?: number;
15
15
  roll?: number;
16
- scale?: number | Vec3;
16
+ scale?: number | Vec3 | NumberArray3;
17
+ translate?: Vec3 | NumberArray3;
17
18
  color?: Vec4 | NumberArray4 | string;
18
19
  visibility?: boolean;
19
20
  }
@@ -49,6 +50,7 @@ declare class GeoObject {
49
50
  protected _yawRad: number;
50
51
  protected _rollRad: number;
51
52
  protected _scale: Vec3;
53
+ protected _translate: Vec3;
52
54
  /**
53
55
  * RGBA color.
54
56
  * @public
@@ -66,6 +68,7 @@ declare class GeoObject {
66
68
  protected _qNorthFrame: Quat;
67
69
  private _textureSrc?;
68
70
  _objectSrc?: string;
71
+ protected _children: GeoObject[];
69
72
  constructor(options: IGeoObjectParams);
70
73
  get tag(): string;
71
74
  getPosition(): Vec3;
@@ -139,6 +142,8 @@ declare class GeoObject {
139
142
  setScale(scale: number): void;
140
143
  setScale3v(scale: Vec3): void;
141
144
  getScale(): Vec3;
145
+ setTranslate3v(translate: Vec3): void;
146
+ getTranslate(): Vec3;
142
147
  /**
143
148
  * Removes geo object from handler.
144
149
  * @public
@@ -16,6 +16,7 @@ declare class InstanceData {
16
16
  _textureSrc: string | null;
17
17
  _objectSrc?: string;
18
18
  _sizeArr: number[] | TypedArray;
19
+ _translateArr: number[] | TypedArray;
19
20
  _vertexArr: number[] | TypedArray;
20
21
  _positionHighArr: number[] | TypedArray;
21
22
  _positionLowArr: number[] | TypedArray;
@@ -27,6 +28,7 @@ declare class InstanceData {
27
28
  _visibleArr: number[] | TypedArray;
28
29
  _texCoordArr: number[] | TypedArray;
29
30
  _sizeBuffer: WebGLBufferExt | null;
31
+ _translateBuffer: WebGLBufferExt | null;
30
32
  _vertexBuffer: WebGLBufferExt | null;
31
33
  _positionHighBuffer: WebGLBufferExt | null;
32
34
  _positionLowBuffer: WebGLBufferExt | null;
@@ -46,6 +48,7 @@ declare class InstanceData {
46
48
  createVertexBuffer(): void;
47
49
  createVisibleBuffer(): void;
48
50
  createSizeBuffer(): void;
51
+ createTranslateBuffer(): void;
49
52
  createTexCoordBuffer(): void;
50
53
  createPositionBuffer(): void;
51
54
  createRgbaBuffer(): void;
@@ -88,6 +91,7 @@ declare class GeoObjectHandler {
88
91
  setRgbaArr(tagData: InstanceData, tagDataIndex: number, rgba: Vec4): void;
89
92
  setPickingColorArr(tagData: InstanceData, tagDataIndex: number, color: Vec3): void;
90
93
  setScaleArr(tagData: InstanceData, tagDataIndex: number, scale: Vec3): void;
94
+ setTranslateArr(tagData: InstanceData, tagDataIndex: number, translate: Vec3): void;
91
95
  protected _updateTag(dataTag: InstanceData): void;
92
96
  update(): void;
93
97
  _removeAll(): void;
@@ -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 };
@@ -11,6 +11,7 @@ export interface ILabelParams extends IBaseBillboardParams {
11
11
  outlineColor?: string | NumberArray4 | Vec4;
12
12
  align?: string;
13
13
  isRTL?: boolean;
14
+ letterSpacing?: number;
14
15
  }
15
16
  declare const ALIGN: Record<string, number>;
16
17
  /**
@@ -84,6 +85,7 @@ declare class Label extends BaseBillboard {
84
85
  */
85
86
  protected _fontAtlas: FontAtlas | null;
86
87
  protected _isRTL: boolean;
88
+ protected _letterSpacing: number;
87
89
  constructor(options?: ILabelParams);
88
90
  /**
89
91
  * Set label text.
@@ -92,6 +94,18 @@ declare class Label extends BaseBillboard {
92
94
  * It can't be bigger than maximum labelHandler _maxLetters value.
93
95
  */
94
96
  setText(text: string): void;
97
+ /**
98
+ * Set text letter spacing.
99
+ * @public
100
+ * @param {number} spacing - Letter spacing.
101
+ */
102
+ setLetterSpacing(letterSpacing: number): void;
103
+ /**
104
+ * Returns label text letter spacing.
105
+ * @public
106
+ * @param {number} spacing - Letter spacing.
107
+ */
108
+ getLetterSpacing(): number;
95
109
  /**
96
110
  * Change text direction.
97
111
  * @public
@@ -43,7 +43,7 @@ declare class LabelHandler extends BaseBillboardHandler {
43
43
  _displayPASS(): void;
44
44
  protected _pickingPASS(): void;
45
45
  protected _removeBillboard(label: Label): void;
46
- setText(index: number, text: string, fontIndex: number, align: number, isRTL?: boolean): void;
46
+ setText(index: number, text: string, fontIndex: number, align: number, letterSpacing?: number, isRTL?: boolean): void;
47
47
  setPositionArr(index: number, positionHigh: Vec3, positionLow: Vec3): void;
48
48
  setPickingColorArr(index: number, color: Vec3): void;
49
49
  setSizeArr(index: number, size: number): void;
@@ -11,7 +11,7 @@ import * as webgl from './webgl/index';
11
11
  export * from './Globe';
12
12
  import { Geoid } from './terrain/Geoid';
13
13
  import { input } from './input/input';
14
- import { Ellipsoid, wgs84 } from './ellipsoid/index';
14
+ import { Ellipsoid, wgs84, moon, mars } from './ellipsoid/index';
15
15
  import { Camera, PlanetCamera } from './camera/index';
16
16
  import { Line2, Line3, Mat3, Mat4, Plane, Quat, Ray, Vec2, Vec3, Vec4 } from './math/index';
17
17
  import { Renderer } from './renderer/Renderer';
@@ -23,11 +23,11 @@ import { LonLat } from './LonLat';
23
23
  import { RenderNode } from './scene/RenderNode';
24
24
  import { Planet } from './scene/Planet';
25
25
  import { Popup } from './Popup';
26
- import { EarthQuadTreeStrategy, MarsQuadTreeStrategy, QuadTreeStrategy, quadTreeStrategyType, Wgs84QuadTreeStrategy } from './quadTree/index';
26
+ import { EarthQuadTreeStrategy, EquiQuadTreeStrategy, QuadTreeStrategy, quadTreeStrategyType, Wgs84QuadTreeStrategy } from './quadTree/index';
27
27
  import { Object3d } from './Object3d';
28
28
  import { Handler, Program, Framebuffer, Multisample } from './webgl/index';
29
29
  import { Control } from './control/Control';
30
30
  export * from './entity/index';
31
31
  export * from './layer/index';
32
32
  import { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain } from './terrain/index';
33
- export { bv, jd, math, mercator, utils, input, control, scene, quadTreeStrategyType, wgs84, terrain, layer, webgl, Framebuffer, EmptyTerrain, GlobusTerrain, RgbTerrain, GlobusRgbTerrain, BilTerrain, Control, Camera, Ellipsoid, Planet, PlanetCamera, LightSource, Program, Handler, Multisample, Renderer, Clock, Events, Extent, LonLat, RenderNode, Line2, Line3, Mat3, Mat4, Plane, Quat, Ray, Vec2, Vec3, Vec4, Geoid, Popup, QuadTreeStrategy, MarsQuadTreeStrategy, EarthQuadTreeStrategy, Wgs84QuadTreeStrategy, Object3d };
33
+ export { bv, jd, math, mercator, utils, input, control, scene, quadTreeStrategyType, wgs84, moon, mars, terrain, layer, webgl, Framebuffer, EmptyTerrain, GlobusTerrain, RgbTerrain, GlobusRgbTerrain, BilTerrain, Control, Camera, Ellipsoid, Planet, PlanetCamera, LightSource, Program, Handler, Multisample, Renderer, Clock, Events, Extent, LonLat, RenderNode, Line2, Line3, Mat3, Mat4, Plane, Quat, Ray, Vec2, Vec3, Vec4, Geoid, Popup, QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy, Wgs84QuadTreeStrategy, Object3d };
@@ -1,12 +1,11 @@
1
1
  import { Entity, IEntityParams } from "../entity/Entity";
2
2
  import { EntityCollection } from "../entity/EntityCollection";
3
- import { EntityCollectionNode, EntityCollectionNodeWGS84 } from "../quadTree/EntityCollectionNode";
3
+ import { EntityCollectionsTreeStrategy } from "../quadTree/EntityCollectionsTreeStrategy";
4
4
  import { EventsHandler } from "../Events";
5
5
  import { GeometryHandler } from "../entity/GeometryHandler";
6
6
  import { ILayerParams, Layer, LayerEventsList } from "./Layer";
7
7
  import { NumberArray3 } from "../math/Vec3";
8
8
  import { Planet } from "../scene/Planet";
9
- import { QueueArray } from "../QueueArray";
10
9
  import { Material } from "./Material";
11
10
  import { NumberArray4 } from "../math/Vec4";
12
11
  export interface IVectorParams extends ILayerParams {
@@ -16,7 +15,7 @@ export interface IVectorParams extends ILayerParams {
16
15
  relativeToGround?: boolean;
17
16
  clampToGround?: boolean;
18
17
  async?: boolean;
19
- pickingScale?: number;
18
+ pickingScale?: number | NumberArray3;
20
19
  scaleByDistance?: NumberArray3;
21
20
  labelMaxLetters?: number;
22
21
  useLighting?: boolean;
@@ -75,13 +74,18 @@ declare class Vector extends Layer {
75
74
  * @type {NumberArray3} - (exactly 3 entries)
76
75
  */
77
76
  scaleByDistance: NumberArray3;
78
- pickingScale: number;
77
+ pickingScale: Float32Array;
79
78
  /**
80
79
  * Asynchronous data handling before rendering.
81
80
  * @public
82
81
  * @type {boolean}
83
82
  */
84
83
  async: boolean;
84
+ /**
85
+ * Maximum entities quantity in the tree node.
86
+ * @public
87
+ */
88
+ _nodeCapacity: number;
85
89
  /**
86
90
  * Clamp vector data to the ground.
87
91
  * @public
@@ -94,34 +98,18 @@ declare class Vector extends Layer {
94
98
  * @type {boolean}
95
99
  */
96
100
  relativeToGround: boolean;
101
+ /** todo: combine into one */
97
102
  protected _stripEntityCollection: EntityCollection;
98
103
  protected _polylineEntityCollection: EntityCollection;
99
104
  protected _geoObjectEntityCollection: EntityCollection;
100
105
  _geometryHandler: GeometryHandler;
101
- /**
102
- * Maximum entities quantity in the tree node.
103
- * @public
104
- */
105
- _nodeCapacity: number;
106
- /**
107
- * @todo: remove, or replace with node strategy
108
- */
109
- protected _entityCollectionsTree: EntityCollectionNode | null;
110
- protected _entityCollectionsTreeNorth: EntityCollectionNodeWGS84 | null;
111
- protected _entityCollectionsTreeSouth: EntityCollectionNodeWGS84 | null;
112
- _renderingNodes: Record<number, boolean>;
113
- _renderingNodesNorth: Record<number, boolean>;
114
- _renderingNodesSouth: Record<number, boolean>;
115
- protected _counter: number;
116
- protected _deferredEntitiesPendingQueue: QueueArray<EntityCollectionNode>;
117
- protected _pendingsQueue: Entity[];
106
+ protected _entityCollectionsTreeStrategy: EntityCollectionsTreeStrategy | null;
118
107
  /**
119
108
  * Specifies the scale Units for gl.polygonOffset function to calculate depth values, 0.0 is default.
120
109
  * @public
121
110
  * @type {Number}
122
111
  */
123
112
  polygonOffsetUnits: number;
124
- _secondPASS: EntityCollectionNode[];
125
113
  protected _labelMaxLetters: number;
126
114
  protected _useLighting: boolean;
127
115
  constructor(name?: string | null, options?: IVectorParams);
@@ -198,7 +186,7 @@ declare class Vector extends Layer {
198
186
  */
199
187
  removeEntities(entities: Entity[]): this;
200
188
  /**
201
- * TODO: Clear the layer.
189
+ * Clear the layer.
202
190
  * @public
203
191
  */
204
192
  clear(): void;
@@ -215,12 +203,9 @@ declare class Vector extends Layer {
215
203
  * @returns {Vector} - Returns layer instance.
216
204
  */
217
205
  setEntities(entities: Entity[]): this;
218
- /**
219
- * @todo: replace to a strategy node collecting algorithm
220
- */
221
206
  protected _createEntityCollectionsTree(entitiesForTree: Entity[]): void;
222
207
  /**
223
- * @todo (refactoring) could be used in somethig like bindEntityCollectionQuad(...)
208
+ * @todo (refactoring) could be used in something like bindEntityCollectionQuad(...)
224
209
  * @param entityCollection
225
210
  */
226
211
  _bindEventsDefault(entityCollection: EntityCollection): void;
@@ -228,8 +213,6 @@ declare class Vector extends Layer {
228
213
  protected _collectPolylineCollectionPASS(outArr: EntityCollection[]): void;
229
214
  protected _collectGeoObjectCollectionPASS(outArr: EntityCollection[]): void;
230
215
  collectVisibleCollections(outArr: EntityCollection[]): void;
231
- _queueDeferredNode(node: EntityCollectionNode): void;
232
- protected _execDeferredNode(node: EntityCollectionNode): void;
233
216
  /**
234
217
  * Start to load tile material.
235
218
  * @public
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @module og/proj/equi
3
+ */
4
+ import { Proj } from "./Proj";
5
+ /**
6
+ * Any equrectangualr projection object.
7
+ * @type {Proj}
8
+ */
9
+ export declare const equi: Proj;
@@ -1,5 +1,5 @@
1
- import { Planet } from "../scene/Planet";
2
- import { QuadTreeStrategy } from "./QuadTreeStrategy";
1
+ import { Planet } from "../../scene/Planet";
2
+ import { QuadTreeStrategy } from "../QuadTreeStrategy";
3
3
  export declare class EPSG4326QuadTreeStrategy extends QuadTreeStrategy {
4
4
  constructor(planet: Planet);
5
5
  init(): void;
@@ -7,12 +7,14 @@ import { Sphere } from '../bv/Sphere';
7
7
  import { Segment } from "../segment/Segment";
8
8
  import { Vector } from "../layer/Vector";
9
9
  import { Entity } from "../entity/Entity";
10
- type NodesDict = Record<number, Node>;
10
+ import { EntityCollectionsTreeStrategy } from "./EntityCollectionsTreeStrategy";
11
+ export type NodesDict = Record<number, Node>;
11
12
  /**
12
13
  * @todo: remove planet parameter. It's already available in the layer.
13
14
  */
14
15
  declare class EntityCollectionNode {
15
16
  layer: Vector;
17
+ strategy: EntityCollectionsTreeStrategy;
16
18
  parentNode: EntityCollectionNode | null;
17
19
  childrenNodes: EntityCollectionNode[];
18
20
  partId: number;
@@ -25,7 +27,7 @@ declare class EntityCollectionNode {
25
27
  zoom: number;
26
28
  bsphere: Sphere;
27
29
  _inTheQueue: boolean;
28
- constructor(layer: Vector, partId: number, parent: EntityCollectionNode | null, extent: Extent, planet: Planet, zoom: number);
30
+ constructor(strategy: EntityCollectionsTreeStrategy, partId: number, parent: EntityCollectionNode | null, extent: Extent, planet: Planet, zoom: number);
29
31
  insertEntity(entity: Entity, rightNow?: boolean): void;
30
32
  protected _addEntitiesToCollection(entities: Entity[], rightNow?: boolean): void;
31
33
  protected _setExtentBounds(): void;
@@ -41,14 +43,4 @@ declare class EntityCollectionNode {
41
43
  alignEntityToTheGround(entity: Entity, segment: Segment): void;
42
44
  isVisible(): boolean;
43
45
  }
44
- declare class EntityCollectionNodeWGS84 extends EntityCollectionNode {
45
- isNorth: boolean;
46
- constructor(layer: Vector, partId: number, parent: EntityCollectionNodeWGS84 | null, extent: Extent, planet: Planet, zoom: number);
47
- createChildrenNodes(): void;
48
- protected _setExtentBounds(): void;
49
- __setLonLat__(entity: Entity): LonLat;
50
- isVisible(): boolean;
51
- isInside(entity: Entity): boolean;
52
- renderCollection(outArr: EntityCollection[], visibleNodes: NodesDict, renderingNode: number): void;
53
- }
54
- export { EntityCollectionNode, EntityCollectionNodeWGS84 };
46
+ export { EntityCollectionNode };
@@ -0,0 +1,25 @@
1
+ import { Vector } from "../layer/Vector";
2
+ import { EntityCollectionNode } from "./EntityCollectionNode";
3
+ import { Entity } from "../entity/Entity";
4
+ import { EntityCollection } from "../entity/EntityCollection";
5
+ import { QueueArray } from "../QueueArray";
6
+ export declare class EntityCollectionsTreeStrategy {
7
+ _layer: Vector;
8
+ /**
9
+ * Maximum entities quantity in the tree node.
10
+ * @public
11
+ */
12
+ _nodeCapacity: number;
13
+ _secondPASS: EntityCollectionNode[];
14
+ protected _counter: number;
15
+ protected _deferredEntitiesPendingQueue: QueueArray<EntityCollectionNode>;
16
+ _renderingNodes: Record<number, boolean>;
17
+ constructor(layer: Vector, nodeCapacity: number);
18
+ insertEntity(entity: Entity, rightNow?: boolean): void;
19
+ setPickingEnabled(pickingEnabled: boolean): void;
20
+ dispose(): void;
21
+ insertEntities(entitiesForTree: Entity[]): void;
22
+ collectVisibleEntityCollections(outArr: EntityCollection[]): void;
23
+ _queueDeferredNode(node: EntityCollectionNode): void;
24
+ protected _execDeferredNode(node: EntityCollectionNode): void;
25
+ }
@@ -1,8 +1,10 @@
1
1
  import { Layer } from "../layer/Layer";
2
+ import { Vector } from "../layer/Vector";
2
3
  import { Node } from "../quadTree/Node";
3
4
  import { Planet } from "../scene/Planet";
4
5
  import { Proj } from "../proj/Proj";
5
6
  import { LonLat } from "../LonLat";
7
+ import { EntityCollectionsTreeStrategy } from "./EntityCollectionsTreeStrategy";
6
8
  export declare class QuadTreeStrategy {
7
9
  name: string;
8
10
  projection: Proj;
@@ -13,16 +15,25 @@ export declare class QuadTreeStrategy {
13
15
  * @type {Node[]}
14
16
  */
15
17
  protected _quadTreeList: Node[];
18
+ /**
19
+ * Current visible mercator segments tree nodes array.
20
+ * @public
21
+ * @type {Node}
22
+ */
23
+ _visibleNodes: Record<number, Node>;
16
24
  constructor(planet: Planet, name?: string, proj?: Proj);
25
+ createEntitiCollectionsTreeStrategy(layer: Vector, nodeCapacity: number): EntityCollectionsTreeStrategy;
17
26
  destroyBranches(): void;
18
27
  clearLayerMaterial(layer: Layer): void;
19
28
  get planet(): Planet;
20
29
  init(): void;
21
30
  preRender(): void;
22
31
  preLoad(): void;
32
+ protected _clearVisibleNodes(): void;
23
33
  collectRenderNodes(): void;
24
34
  clear(): void;
25
35
  get quadTreeList(): Node[];
26
36
  getTileXY(lonLat: LonLat, zoom: number): [number, number, number, number];
27
37
  getLonLatTileOffset(lonLat: LonLat, x: number, y: number, z: number, gridSize: number): [number, number];
38
+ collectVisibleNode(node: Node): void;
28
39
  }
@@ -0,0 +1,18 @@
1
+ import { EarthEntityCollectionsTreeStrategy } from "./EarthEntityCollectionsTreeStrategy";
2
+ import { Extent } from "../../Extent";
3
+ import { Planet } from "../../scene/Planet";
4
+ import { LonLat } from "../../LonLat";
5
+ import { Entity } from "../../entity/Entity";
6
+ import { EntityCollection } from "../../entity/EntityCollection";
7
+ import { EntityCollectionNode, NodesDict } from "../EntityCollectionNode";
8
+ export declare class EarthEntityCollectionNodeLonLat extends EntityCollectionNode {
9
+ isNorth: boolean;
10
+ strategy: EarthEntityCollectionsTreeStrategy;
11
+ constructor(strategy: EarthEntityCollectionsTreeStrategy, partId: number, parent: EarthEntityCollectionNodeLonLat | null, extent: Extent, planet: Planet, zoom: number);
12
+ createChildrenNodes(): void;
13
+ protected _setExtentBounds(): void;
14
+ __setLonLat__(entity: Entity): LonLat;
15
+ isVisible(): boolean;
16
+ isInside(entity: Entity): boolean;
17
+ renderCollection(outArr: EntityCollection[], visibleNodes: NodesDict, renderingNode: number): void;
18
+ }