@openglobus/og 0.21.0 → 0.22.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 (133) hide show
  1. package/LICENSE.md +2 -2
  2. package/lib/@openglobus/js/Globe.d.ts +4 -0
  3. package/lib/@openglobus/js/Object3d.d.ts +7 -2
  4. package/lib/@openglobus/js/camera/Camera.d.ts +2 -0
  5. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
  6. package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +2 -1
  7. package/lib/@openglobus/js/ellipsoid/index.d.ts +4 -3
  8. package/lib/@openglobus/js/ellipsoid/mars.d.ts +6 -0
  9. package/lib/@openglobus/js/ellipsoid/moon.d.ts +6 -0
  10. package/lib/@openglobus/js/entity/Entity.d.ts +4 -2
  11. package/lib/@openglobus/js/entity/EntityCollection.d.ts +3 -2
  12. package/lib/@openglobus/js/entity/GeoObject.d.ts +6 -1
  13. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +4 -0
  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} +4 -1
  36. package/lib/@openglobus/js/terrain/RgbTerrain.d.ts +11 -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 +4 -0
  45. package/lib/js/Globe.js +8 -4
  46. package/lib/js/Object3d.d.ts +7 -2
  47. package/lib/js/Object3d.js +46 -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 +2 -1
  54. package/lib/js/ellipsoid/Ellipsoid.js +17 -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.js +16 -14
  70. package/lib/js/entity/Label.d.ts +14 -0
  71. package/lib/js/entity/Label.js +24 -4
  72. package/lib/js/entity/LabelHandler.d.ts +1 -1
  73. package/lib/js/entity/LabelHandler.js +4 -4
  74. package/lib/js/entity/Polyline.js +1 -1
  75. package/lib/js/index.d.ts +3 -3
  76. package/lib/js/index.js +3 -3
  77. package/lib/js/layer/CanvasTiles.js +1 -11
  78. package/lib/js/layer/Layer.js +9 -28
  79. package/lib/js/layer/Vector.d.ts +12 -29
  80. package/lib/js/layer/Vector.js +45 -160
  81. package/lib/js/layer/XYZ.js +10 -10
  82. package/lib/js/proj/equi.d.ts +9 -0
  83. package/lib/js/proj/equi.js +9 -0
  84. package/lib/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
  85. package/lib/js/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.js +16 -0
  86. package/lib/js/quadTree/EntityCollectionNode.d.ts +5 -13
  87. package/lib/js/quadTree/EntityCollectionNode.js +18 -83
  88. package/lib/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
  89. package/lib/js/quadTree/EntityCollectionsTreeStrategy.js +49 -0
  90. package/lib/js/quadTree/Node.js +6 -12
  91. package/lib/js/quadTree/QuadTreeStrategy.d.ts +11 -0
  92. package/lib/js/quadTree/QuadTreeStrategy.js +12 -0
  93. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
  94. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +74 -0
  95. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
  96. package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.js +103 -0
  97. package/lib/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
  98. package/lib/js/quadTree/{EarthQuadTreeStrategy.js → earth/EarthQuadTreeStrategy.js} +29 -6
  99. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
  100. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +70 -0
  101. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
  102. package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.js +75 -0
  103. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
  104. package/lib/js/quadTree/equi/EquiQuadTreeStrategy.js +62 -0
  105. package/lib/js/quadTree/index.d.ts +6 -6
  106. package/lib/js/quadTree/index.js +6 -6
  107. package/lib/{@openglobus/js/quadTree → js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
  108. package/lib/js/quadTree/wgs84/Wgs84QuadTreeStrategy.js +15 -0
  109. package/lib/js/renderer/Renderer.d.ts +2 -0
  110. package/lib/js/renderer/Renderer.js +2 -2
  111. package/lib/js/scene/Planet.d.ts +0 -27
  112. package/lib/js/scene/Planet.js +2 -9
  113. package/lib/js/segment/Segment.d.ts +0 -1
  114. package/lib/js/segment/Segment.js +0 -3
  115. package/lib/js/segment/SegmentLonLat.d.ts +0 -4
  116. package/lib/js/segment/SegmentLonLat.js +0 -11
  117. package/lib/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +4 -1
  118. package/lib/js/segment/SegmentLonLatEqui.js +46 -0
  119. package/lib/js/shaders/geoObject.js +10 -5
  120. package/lib/js/shaders/polyline.js +8 -6
  121. package/lib/js/terrain/RgbTerrain.d.ts +11 -0
  122. package/lib/js/terrain/RgbTerrain.js +12 -1
  123. package/lib/js/utils/PlainSegmentWorker.js +3 -1
  124. package/lib/js/webgl/Handler.js +1 -1
  125. package/package.json +4 -4
  126. package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  127. package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  128. package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +0 -16
  129. package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
  130. package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
  131. package/lib/js/quadTree/MarsQuadTreeStrategy.js +0 -43
  132. package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +0 -15
  133. package/lib/js/segment/SegmentLonLatWgs84.js +0 -25
package/LICENSE.md CHANGED
@@ -1,7 +1,7 @@
1
- Copyright (C) 2013 Michael Gevlich
1
+ Copyright (c) 2013-2025 Michael Gevlich
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
5
5
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
6
 
7
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -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;
@@ -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[];
@@ -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.
@@ -189,5 +189,6 @@ declare class Ellipsoid {
189
189
  */
190
190
  static getIntermediatePointOnGreatCircle(lonLat1: LonLat, lonLat2: LonLat, fraction: number): LonLat;
191
191
  static getRhumbBearing(lonLat1: LonLat, lonLat2: LonLat): number;
192
+ getLonLatVisibilitySimple(eye: Vec3, lonLat: LonLat, forward?: Vec3): boolean;
192
193
  }
193
194
  export { Ellipsoid };
@@ -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;
@@ -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
+ }
@@ -0,0 +1,19 @@
1
+ import { EntityCollectionNode } from "../EntityCollectionNode";
2
+ import { EarthEntityCollectionNodeLonLat } from "./EarthEntityCollectionNodeLonLat";
3
+ import { Vector } from "../../layer/Vector";
4
+ import { Entity } from "../../entity/Entity";
5
+ import { EntityCollection } from "../../entity/EntityCollection";
6
+ import { EntityCollectionsTreeStrategy } from "../EntityCollectionsTreeStrategy";
7
+ export declare class EarthEntityCollectionsTreeStrategy extends EntityCollectionsTreeStrategy {
8
+ protected _entityCollectionsTree: EntityCollectionNode;
9
+ protected _entityCollectionsTreeNorth: EarthEntityCollectionNodeLonLat;
10
+ protected _entityCollectionsTreeSouth: EarthEntityCollectionNodeLonLat;
11
+ _renderingNodesNorth: Record<number, boolean>;
12
+ _renderingNodesSouth: Record<number, boolean>;
13
+ constructor(layer: Vector, nodeCapacity: number);
14
+ insertEntity(entity: Entity, rightNow?: boolean): void;
15
+ setPickingEnabled(pickingEnabled: boolean): void;
16
+ dispose(): void;
17
+ insertEntities(entitiesForTree: Entity[]): void;
18
+ collectVisibleEntityCollections(outArr: EntityCollection[]): void;
19
+ }