@openglobus/og 0.11.7 → 0.12.3

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 (211) hide show
  1. package/css/og.css +5 -2
  2. package/dist/@openglobus/og.css +1 -0
  3. package/dist/@openglobus/og.esm.js +21 -0
  4. package/dist/@openglobus/og.esm.js.map +1 -0
  5. package/dist/@openglobus/og.umd.js +21 -0
  6. package/dist/@openglobus/og.umd.js.map +1 -0
  7. package/package.json +11 -11
  8. package/src/og/Globe.js +18 -6
  9. package/src/og/camera/Camera.js +70 -79
  10. package/src/og/camera/PlanetCamera.js +25 -30
  11. package/src/og/control/DebugInfo.js +2 -2
  12. package/src/og/control/EarthNavigation.js +26 -17
  13. package/src/og/control/Lighting.js +52 -73
  14. package/src/og/control/MouseNavigation.js +30 -29
  15. package/src/og/control/MouseWheelZoomControl.js +257 -0
  16. package/src/og/control/Sun.js +3 -3
  17. package/src/og/control/index.js +2 -0
  18. package/src/og/control/visibleExtent/Segment.js +1862 -0
  19. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  20. package/src/og/control/visibleExtent/drawnode.js +751 -0
  21. package/src/og/entity/BaseBillboard.js +9 -9
  22. package/src/og/entity/Entity.js +742 -742
  23. package/src/og/entity/GeoObjectHandler.js +138 -134
  24. package/src/og/entity/Label.js +7 -7
  25. package/src/og/entity/LabelHandler.js +2 -1
  26. package/src/og/layer/CanvasTiles.js +8 -12
  27. package/src/og/layer/GeoImage.js +2 -10
  28. package/src/og/layer/GeoTexture2d.js +2 -10
  29. package/src/og/layer/GeoVideo.js +2 -10
  30. package/src/og/layer/KML.js +19 -12
  31. package/src/og/layer/Layer.js +4 -23
  32. package/src/og/layer/WMS.js +0 -2
  33. package/src/og/layer/XYZ.js +31 -33
  34. package/src/og/math/Vec3.js +18 -2
  35. package/src/og/quadTree/Node.js +48 -93
  36. package/src/og/quadTree/quadTree.js +1 -1
  37. package/src/og/renderer/Renderer.js +69 -96
  38. package/src/og/renderer/RendererEvents.js +3 -1
  39. package/src/og/scene/Planet.js +171 -173
  40. package/src/og/segment/Segment.js +99 -268
  41. package/src/og/segment/Slice.js +45 -0
  42. package/src/og/shaders/drawnode.js +171 -350
  43. package/src/og/shaders/geoObject.js +15 -6
  44. package/src/og/terrain/EmptyTerrain.js +3 -2
  45. package/src/og/terrain/GlobusTerrain.js +2 -0
  46. package/src/og/utils/GeoImageCreator.js +5 -1
  47. package/src/og/utils/Loader.js +1 -1
  48. package/src/og/utils/PlainSegmentWorker.js +0 -13
  49. package/src/og/webgl/Handler.js +14 -10
  50. package/types/Clock.d.ts +94 -0
  51. package/types/Deferred.d.ts +6 -0
  52. package/types/Events.d.ts +77 -0
  53. package/types/Extent.d.ts +166 -0
  54. package/types/Globe.d.ts +85 -0
  55. package/types/ImageCanvas.d.ts +123 -0
  56. package/types/Lock.d.ts +12 -0
  57. package/types/LonLat.d.ts +108 -0
  58. package/types/Popup.d.ts +42 -0
  59. package/types/QueueArray.d.ts +19 -0
  60. package/types/Rectangle.d.ts +80 -0
  61. package/types/Stack.d.ts +19 -0
  62. package/types/ajax.d.ts +24 -0
  63. package/types/arial.d.ts +48 -0
  64. package/types/astro/astro.d.ts +38 -0
  65. package/types/astro/earth.d.ts +7 -0
  66. package/types/astro/jd.d.ts +254 -0
  67. package/types/bv/Box.d.ts +30 -0
  68. package/types/bv/Sphere.d.ts +38 -0
  69. package/types/bv/index.d.ts +3 -0
  70. package/types/camera/Camera.d.ts +312 -0
  71. package/types/camera/Frustum.d.ts +133 -0
  72. package/types/camera/PlanetCamera.d.ts +219 -0
  73. package/types/camera/index.d.ts +3 -0
  74. package/types/cons.d.ts +40 -0
  75. package/types/control/CompassButton.d.ts +17 -0
  76. package/types/control/Control.d.ts +104 -0
  77. package/types/control/DebugInfo.d.ts +15 -0
  78. package/types/control/EarthCoordinates.d.ts +47 -0
  79. package/types/control/EarthNavigation.d.ts +43 -0
  80. package/types/control/GeoImageDragControl.d.ts +6 -0
  81. package/types/control/KeyboardNavigation.d.ts +21 -0
  82. package/types/control/LayerSwitcher.d.ts +21 -0
  83. package/types/control/Lighting.d.ts +16 -0
  84. package/types/control/MouseNavigation.d.ts +48 -0
  85. package/types/control/MouseWheelZoomControl.d.ts +45 -0
  86. package/types/control/ScaleControl.d.ts +22 -0
  87. package/types/control/ShowFps.d.ts +11 -0
  88. package/types/control/SimpleNavigation.d.ts +25 -0
  89. package/types/control/Sun.d.ts +50 -0
  90. package/types/control/ToggleWireframe.d.ts +12 -0
  91. package/types/control/TouchNavigation.d.ts +48 -0
  92. package/types/control/ZoomControl.d.ts +27 -0
  93. package/types/control/index.d.ts +18 -0
  94. package/types/ellipsoid/Ellipsoid.d.ts +146 -0
  95. package/types/ellipsoid/index.d.ts +3 -0
  96. package/types/ellipsoid/wgs84.d.ts +6 -0
  97. package/types/entity/BaseBillboard.d.ts +215 -0
  98. package/types/entity/Billboard.d.ts +94 -0
  99. package/types/entity/BillboardHandler.d.ts +79 -0
  100. package/types/entity/Entity.d.ts +348 -0
  101. package/types/entity/EntityCollection.d.ts +317 -0
  102. package/types/entity/GeoObject.d.ts +111 -0
  103. package/types/entity/GeoObjectHandler.d.ts +81 -0
  104. package/types/entity/Geometry.d.ts +74 -0
  105. package/types/entity/GeometryHandler.d.ts +76 -0
  106. package/types/entity/Label.d.ts +189 -0
  107. package/types/entity/LabelHandler.d.ts +31 -0
  108. package/types/entity/LabelWorker.d.ts +11 -0
  109. package/types/entity/PointCloud.d.ts +174 -0
  110. package/types/entity/PointCloudHandler.d.ts +38 -0
  111. package/types/entity/Polyline.d.ts +306 -0
  112. package/types/entity/PolylineHandler.d.ts +18 -0
  113. package/types/entity/Ray.d.ts +124 -0
  114. package/types/entity/RayHandler.d.ts +67 -0
  115. package/types/entity/ShapeHandler.d.ts +22 -0
  116. package/types/entity/Strip.d.ts +119 -0
  117. package/types/entity/StripHandler.d.ts +38 -0
  118. package/types/entity/index.d.ts +8 -0
  119. package/types/index.core.d.ts +65 -0
  120. package/types/index.d.ts +45 -0
  121. package/types/index.webgl.d.ts +7 -0
  122. package/types/input/KeyboardHandler.d.ts +10 -0
  123. package/types/input/MouseHandler.d.ts +5 -0
  124. package/types/input/TouchHandler.d.ts +5 -0
  125. package/types/input/input.d.ts +34 -0
  126. package/types/layer/BaseGeoImage.d.ts +94 -0
  127. package/types/layer/CanvasTiles.d.ts +67 -0
  128. package/types/layer/GeoImage.d.ts +52 -0
  129. package/types/layer/GeoTexture2d.d.ts +8 -0
  130. package/types/layer/GeoVideo.d.ts +55 -0
  131. package/types/layer/KML.d.ts +68 -0
  132. package/types/layer/Layer.d.ts +310 -0
  133. package/types/layer/Material.d.ts +45 -0
  134. package/types/layer/Vector.d.ts +208 -0
  135. package/types/layer/WMS.d.ts +61 -0
  136. package/types/layer/XYZ.d.ts +119 -0
  137. package/types/layer/index.d.ts +10 -0
  138. package/types/light/LightSource.d.ts +178 -0
  139. package/types/math/Line2.d.ts +11 -0
  140. package/types/math/Line3.d.ts +10 -0
  141. package/types/math/Mat3.d.ts +65 -0
  142. package/types/math/Mat4.d.ts +176 -0
  143. package/types/math/Plane.d.ts +18 -0
  144. package/types/math/Quat.d.ts +379 -0
  145. package/types/math/Ray.d.ts +82 -0
  146. package/types/math/Vec2.d.ts +309 -0
  147. package/types/math/Vec3.d.ts +467 -0
  148. package/types/math/Vec4.d.ts +162 -0
  149. package/types/math/coder.d.ts +43 -0
  150. package/types/math/index.d.ts +11 -0
  151. package/types/math.d.ts +261 -0
  152. package/types/mercator.d.ts +92 -0
  153. package/types/proj/EPSG3857.d.ts +6 -0
  154. package/types/proj/EPSG4326.d.ts +6 -0
  155. package/types/proj/Proj.d.ts +42 -0
  156. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  157. package/types/quadTree/Node.d.ts +60 -0
  158. package/types/quadTree/quadTree.d.ts +40 -0
  159. package/types/renderer/Renderer.d.ts +290 -0
  160. package/types/renderer/RendererEvents.d.ts +237 -0
  161. package/types/res/images.d.ts +3 -0
  162. package/types/scene/Axes.d.ts +11 -0
  163. package/types/scene/BaseNode.d.ts +60 -0
  164. package/types/scene/Planet.d.ts +576 -0
  165. package/types/scene/RenderNode.d.ts +142 -0
  166. package/types/scene/SkyBox.d.ts +10 -0
  167. package/types/scene/index.d.ts +4 -0
  168. package/types/segment/Segment.d.ts +275 -0
  169. package/types/segment/SegmentLonLat.d.ts +17 -0
  170. package/types/segment/Slice.d.ts +10 -0
  171. package/types/segment/segmentHelper.d.ts +13 -0
  172. package/types/shaders/billboard.d.ts +3 -0
  173. package/types/shaders/depth.d.ts +2 -0
  174. package/types/shaders/drawnode.d.ts +7 -0
  175. package/types/shaders/geoObject.d.ts +3 -0
  176. package/types/shaders/label.d.ts +4 -0
  177. package/types/shaders/pointCloud.d.ts +2 -0
  178. package/types/shaders/polyline.d.ts +3 -0
  179. package/types/shaders/ray.d.ts +2 -0
  180. package/types/shaders/screenFrame.d.ts +2 -0
  181. package/types/shaders/shape.d.ts +4 -0
  182. package/types/shaders/skybox.d.ts +2 -0
  183. package/types/shaders/toneMapping.d.ts +2 -0
  184. package/types/shapes/BaseShape.d.ts +250 -0
  185. package/types/shapes/Sphere.d.ts +41 -0
  186. package/types/terrain/BilTerrain.d.ts +7 -0
  187. package/types/terrain/EmptyTerrain.d.ts +73 -0
  188. package/types/terrain/Geoid.d.ts +26 -0
  189. package/types/terrain/GlobusTerrain.d.ts +116 -0
  190. package/types/terrain/MapboxTerrain.d.ts +7 -0
  191. package/types/terrain/index.d.ts +5 -0
  192. package/types/utils/FontAtlas.d.ts +15 -0
  193. package/types/utils/GeoImageCreator.d.ts +30 -0
  194. package/types/utils/ImagesCacheManager.d.ts +10 -0
  195. package/types/utils/Loader.d.ts +25 -0
  196. package/types/utils/NormalMapCreator.d.ts +39 -0
  197. package/types/utils/PlainSegmentWorker.d.ts +10 -0
  198. package/types/utils/TerrainWorker.d.ts +9 -0
  199. package/types/utils/TextureAtlas.d.ts +111 -0
  200. package/types/utils/VectorTileCreator.d.ts +16 -0
  201. package/types/utils/colorTable.d.ts +143 -0
  202. package/types/utils/earcut.d.ts +6 -0
  203. package/types/utils/shared.d.ts +231 -0
  204. package/types/webgl/Framebuffer.d.ts +135 -0
  205. package/types/webgl/Handler.d.ts +417 -0
  206. package/types/webgl/Multisample.d.ts +89 -0
  207. package/types/webgl/Program.d.ts +161 -0
  208. package/types/webgl/ProgramController.d.ts +89 -0
  209. package/types/webgl/callbacks.d.ts +1 -0
  210. package/types/webgl/index.d.ts +6 -0
  211. package/types/webgl/types.d.ts +2 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * Main class for rendering planet
3
+ * @class
4
+ * @extends {RenderNode}
5
+ * @param {string} [options.name="Earth"] - Planet name(Earth by default)
6
+ * @param {Ellipsoid} [options.ellipsoid] - Planet ellipsoid(WGS84 by default)
7
+ * @param {Number} [options.maxGridSize=128] - Segment maximal grid size
8
+ * @param {Number} [options.maxEqualZoomAltitude=15000000.0] - Maximal altitude since segments on the screen bacame the same zoom level
9
+ * @param {Number} [options.minEqualZoomAltitude=10000.0] - Minimal altitude since segments on the screen bacame the same zoom level
10
+ * @param {Number} [options.minEqualZoomCameraSlope=0.8] - Minimal camera slope above te globe where segments on the screen bacame the same zoom level
11
+ * @fires og.scene.Planet#draw
12
+ * @fires og.scene.Planet#layeradd
13
+ * @fires og.scene.Planet#baselayerchange
14
+ * @fires og.scene.Planet#layerremove
15
+ * @fires og.scene.Planet#layervisibilitychange
16
+ * @fires og.scene.Planet#geoimageadd
17
+ */
18
+ export class Planet extends RenderNode {
19
+ static getBearingNorthRotationQuat(cartesian: any): Quat;
20
+ constructor(options?: {});
21
+ _cameraFrustums: any;
22
+ /**
23
+ * @public
24
+ * @type {Ellipsoid}
25
+ */
26
+ public ellipsoid: Ellipsoid;
27
+ /**
28
+ * Squared ellipsoid radius.
29
+ * @protected
30
+ * @type {number}
31
+ */
32
+ protected _planetRadius2: number;
33
+ /**
34
+ * All layers array.
35
+ * @public
36
+ * @type {Array.<Layer>}
37
+ */
38
+ public layers: Array<Layer>;
39
+ /**
40
+ * Current visible imagery tile layers array.
41
+ * @public
42
+ * @type {Array.<Layer>}
43
+ */
44
+ public visibleTileLayers: Array<Layer>;
45
+ /**
46
+ * Current visible vector layers array.
47
+ * @protected
48
+ * @type {Array.<layer.Vector>}
49
+ */
50
+ protected visibleVectorLayers: Array<layer.Vector>;
51
+ _visibleTileLayerSlices: any[];
52
+ /**
53
+ * Vector layers visible nodes with collections.
54
+ * @protected
55
+ * @type {Array.<EntityCollection>}
56
+ */
57
+ protected _frustumEntityCollections: Array<EntityCollection>;
58
+ /**
59
+ * There is only one base layer on the globe when layer.isBaseLayer is true.
60
+ * @public
61
+ * @type {Layer}
62
+ */
63
+ public baseLayer: Layer;
64
+ /**
65
+ * Terrain provider.
66
+ * @public
67
+ * @type {Terrain}
68
+ */
69
+ public terrain: Terrain;
70
+ /**
71
+ * Camera is this.renderer.activeCamera pointer.
72
+ * @public
73
+ * @type {PlanetCamera}
74
+ */
75
+ public camera: PlanetCamera;
76
+ _minAltitude: any;
77
+ _maxAltitude: any;
78
+ maxEqualZoomAltitude: any;
79
+ minEqualZoomAltitude: any;
80
+ minEqualZoomCameraSlope: any;
81
+ /**
82
+ * Screen mouse pointer projected to planet cartesian position.
83
+ * @public
84
+ * @type {Vec3}
85
+ */
86
+ public mousePositionOnEarth: Vec3;
87
+ emptyTexture: any;
88
+ transparentTexture: any;
89
+ defaultTexture: any;
90
+ /**
91
+ * Current visible minimal zoom index planet segment.
92
+ * @public
93
+ * @type {number}
94
+ */
95
+ public minCurrZoom: number;
96
+ /**
97
+ * Current visible maximal zoom index planet segment.
98
+ * @public
99
+ * @type {number}
100
+ */
101
+ public maxCurrZoom: number;
102
+ _viewExtent: any;
103
+ /**
104
+ * @protected
105
+ */
106
+ protected _createdNodesCount: number;
107
+ /**
108
+ * Planet's segments collected for rendering frame.
109
+ * @protected
110
+ * @type {quadTree.Node}
111
+ */
112
+ protected _renderedNodes: quadTree.Node;
113
+ _renderedNodesInFrustum: any[];
114
+ /**
115
+ * Created nodes cache
116
+ * @protected
117
+ * @type {quadTree.Node}
118
+ */
119
+ protected _quadTreeNodesCacheMerc: quadTree.Node;
120
+ /**
121
+ * Current visible mercator segments tree nodes array.
122
+ * @protected
123
+ * @type {quadTree.Node}
124
+ */
125
+ protected _visibleNodes: quadTree.Node;
126
+ /**
127
+ * Current visible north pole nodes tree nodes array.
128
+ * @protected
129
+ * @type {quadTree.Node}
130
+ */
131
+ protected _visibleNodesNorth: quadTree.Node;
132
+ /**
133
+ * Current visible south pole nodes tree nodes array.
134
+ * @protected
135
+ * @type {quadTree.Node}
136
+ */
137
+ protected _visibleNodesSouth: quadTree.Node;
138
+ /**
139
+ * Layers activity lock.
140
+ * @public
141
+ * @type {idle.Lock}
142
+ */
143
+ public layerLock: idle.Lock;
144
+ /**
145
+ * Terrain providers activity lock.
146
+ * @public
147
+ * @type {idle.Lock}
148
+ */
149
+ public terrainLock: idle.Lock;
150
+ /**
151
+ * Layer's transparent colors.
152
+ * @protected
153
+ */
154
+ protected _tcolorArr: any[];
155
+ /**
156
+ * Height scale factor. 1 - is normal elevation scale.
157
+ * @protected
158
+ * @type {number}
159
+ */
160
+ protected _heightFactor: number;
161
+ /**
162
+ * Precomputed indexes array for differrent grid size segments.
163
+ * @protected
164
+ * @type {Array.<Array.<number>>}
165
+ */
166
+ protected _indexesCache: Array<Array<number>>;
167
+ _indexesCacheToRemove: any[];
168
+ _indexesCacheToRemoveCounter: number;
169
+ /**
170
+ * Precomputed texture coordinates buffers for differrent grid size segments.
171
+ * @protected
172
+ * @type {Array.<Array.<number>>}
173
+ */
174
+ protected _textureCoordsBufferCache: Array<Array<number>>;
175
+ /**
176
+ * Framebuffer for relief. Is null when WEBGL_draw_buffers extension initialized.
177
+ * @protected
178
+ * @type {Object}
179
+ */
180
+ protected _heightPickingFramebuffer: any;
181
+ /**
182
+ * Mercator grid tree.
183
+ * @protected
184
+ * @type {quadTree.Node}
185
+ */
186
+ protected _quadTree: quadTree.Node;
187
+ /**
188
+ * North grid tree.
189
+ * @protected
190
+ * @type {quadTree.Node}
191
+ */
192
+ protected _quadTreeNorth: quadTree.Node;
193
+ /**
194
+ * South grid tree.
195
+ * @protected
196
+ * @type {quadTree.Node}
197
+ */
198
+ protected _quadTreeSouth: quadTree.Node;
199
+ /**
200
+ * Night glowing gl texture.
201
+ * @protected
202
+ */
203
+ protected _nightTexture: any;
204
+ /**
205
+ * Specular mask gl texture.
206
+ * @protected
207
+ */
208
+ protected _specularTexture: any;
209
+ _ambient: Float32Array;
210
+ _diffuse: Float32Array;
211
+ _specular: Float32Array;
212
+ /**
213
+ * True for rendering night glowing texture.
214
+ * @protected
215
+ * @type {boolean}
216
+ */
217
+ protected _useNightTexture: boolean;
218
+ /**
219
+ * True for rendering specular mask texture.
220
+ * @protected
221
+ * @type {boolean}
222
+ */
223
+ protected _useSpecularTexture: boolean;
224
+ _maxGridSize: number;
225
+ /**
226
+ * Segment multiple textures size.(4 - convinient value for the most devices)
227
+ * @const
228
+ * @public
229
+ */
230
+ public SLICE_SIZE: number;
231
+ SLICE_SIZE_4: number;
232
+ SLICE_SIZE_3: number;
233
+ /**
234
+ * Level of the visible segment detalization.
235
+ * @public
236
+ * @type {number}
237
+ */
238
+ public _lodSize: number;
239
+ _curLodSize: number;
240
+ _minLodSize: number;
241
+ _maxLodSize: number;
242
+ _pickingColorArr: Float32Array;
243
+ _samplerArr: Int32Array;
244
+ _pickingMaskArr: Int32Array;
245
+ /**
246
+ * GeoImage creator.
247
+ * @protected
248
+ * @type{utils.GeoImageCreator}
249
+ */
250
+ protected _geoImageCreator: utils.GeoImageCreator;
251
+ _vectorTileCreator: VectorTileCreator;
252
+ _normalMapCreator: NormalMapCreator;
253
+ _terrainWorker: TerrainWorker;
254
+ _plainSegmentWorker: PlainSegmentWorker;
255
+ _tileLoader: Loader;
256
+ _memKey: Key;
257
+ _distBeforeMemClear: number;
258
+ _prevCamEye: Vec3;
259
+ _initialized: boolean;
260
+ always: any[];
261
+ _renderCompleted: boolean;
262
+ /**
263
+ * Add the given control to the renderer of the planet scene.
264
+ * @param {control.Control} control - Control.
265
+ */
266
+ addControl(control: control.Control): void;
267
+ get lodSize(): number;
268
+ setLodSize(currentLodSize: any, minLodSize: any, maxLodSize: any): void;
269
+ _renderCompletedActivated: boolean;
270
+ /**
271
+ * Add the given controls array to the renderer of the planet.
272
+ * @param {Array.<control.Control>} cArr - Control array.
273
+ */
274
+ addControls(cArr: Array<control.Control>): void;
275
+ /**
276
+ * Return layer by it name
277
+ * @param {string} name - Name of the layer. og.Layer.prototype.name
278
+ * @public
279
+ * @returns {Layer} -
280
+ */
281
+ public getLayerByName(name: string): Layer;
282
+ /**
283
+ * Adds the given layer to the planet.
284
+ * @param {Layer} layer - Layer object.
285
+ * @public
286
+ */
287
+ public addLayer(layer: Layer): void;
288
+ /**
289
+ * Dispatch layer visibility changing event.
290
+ * @param {Layer} layer - Changed layer.
291
+ * @protected
292
+ */
293
+ protected _onLayerVisibilityChanged(layer: Layer): void;
294
+ /**
295
+ * Adds the given layers array to the planet.
296
+ * @param {Array.<Layer>} layers - Layers array.
297
+ * @public
298
+ */
299
+ public addLayers(layers: Array<Layer>): void;
300
+ /**
301
+ * Removes the given layer from the planet.
302
+ * @param {Layer} layer - Layer to remove.
303
+ * @return {Layer|undefined} The removed layer or undefined if the layer was not found.
304
+ * @public
305
+ */
306
+ public removeLayer(layer: Layer): Layer | undefined;
307
+ /**
308
+ *
309
+ * @protected
310
+ * @param {Layer} layer - Material layer.
311
+ */
312
+ protected _clearLayerMaterial(layer: Layer): void;
313
+ /**
314
+ * Get the collection of layers associated with this planet.
315
+ * @return {Array.<Layer>} Layers array.
316
+ * @public
317
+ */
318
+ public getLayers(): Array<Layer>;
319
+ /**
320
+ * Sets base layer coverage to the planet.
321
+ * @param {Layer} layer - Layer object.
322
+ * @public
323
+ */
324
+ public setBaseLayer(layer: Layer): void;
325
+ /**
326
+ * Sets elevation scale. 1.0 is default.
327
+ * @param {number} factor - Elevation scale.
328
+ */
329
+ setHeightFactor(factor: number): void;
330
+ /**
331
+ * Gets elevation scale.
332
+ * @returns {number} Terrain elevation scale
333
+ */
334
+ getHeightFactor(): number;
335
+ /**
336
+ * Sets terrain provider
337
+ * @public
338
+ * @param {Terrain} terrain - Terrain provider.
339
+ */
340
+ public setTerrain(terrain: Terrain): void;
341
+ /**
342
+ * @virtual
343
+ * @protected
344
+ */
345
+ protected _initializeShaders(): void;
346
+ /**
347
+ * @virtual
348
+ * @public
349
+ */
350
+ public init(): void;
351
+ clearIndexesCache(): void;
352
+ _preRender(): void;
353
+ _preLoad(): void;
354
+ _skipPreRender: boolean;
355
+ /**
356
+ * Creates default textures first for nirth pole and whole globe and second for south pole.
357
+ * @public
358
+ * @param{Object} param0 -
359
+ * @param{Object} param1 -
360
+ */
361
+ public createDefaultTextures(param0: any, param1: any): void;
362
+ /**
363
+ * Updates attribution lists
364
+ * @public
365
+ */
366
+ public updateAttributionsList(): void;
367
+ /**
368
+ * Updates visible layers.
369
+ * @public
370
+ */
371
+ public updateVisibleLayers(): void;
372
+ /**
373
+ * Sort visible layer - preparing for rendering.
374
+ * @protected
375
+ */
376
+ protected _sortLayers(): void;
377
+ _clearRenderedNodeList(): void;
378
+ /**
379
+ * Collects visible quad nodes.
380
+ * @protected
381
+ */
382
+ protected _collectRenderNodes(): void;
383
+ _globalPreDraw(): void;
384
+ /**
385
+ * Render node callback.
386
+ * @public
387
+ */
388
+ public frame(): void;
389
+ _checkRendercompleted(): void;
390
+ /**
391
+ * @protected
392
+ */
393
+ protected _renderScreenNodesPASS(): void;
394
+ /**
395
+ * @protected
396
+ */
397
+ protected _renderHeightPickingFramebufferPASS(): void;
398
+ /**
399
+ * @protected
400
+ */
401
+ protected _renderColorPickingFramebufferPASS(): void;
402
+ /**
403
+ * @protected
404
+ */
405
+ protected _renderDepthFramebufferPASS(): void;
406
+ _collectVectorLayerCollections(): void;
407
+ /**
408
+ * Vector layers picking pass.
409
+ * @protected
410
+ */
411
+ protected _frustumEntityCollectionPickingCallback(): void;
412
+ /**
413
+ * Starts clear memory thread.
414
+ * @public
415
+ */
416
+ public memClear(): void;
417
+ /**
418
+ * Returns ray vector hit ellipsoid coordinates.
419
+ * If the ray doesn't hit ellipsoit returns null.
420
+ * @public
421
+ * @param {Ray} ray - Ray 3d.
422
+ * @returns {Vec3} -
423
+ */
424
+ public getRayIntersectionEllipsoid(ray: Ray): Vec3;
425
+ /**
426
+ * Returns 2d screen coordanates projection point to the planet ellipsoid 3d coordinates.
427
+ * @public
428
+ * @param {math.Pixel} px - 2D sreen coordinates.
429
+ * @returns {Vec3} -
430
+ */
431
+ public getCartesianFromPixelEllipsoid(px: math.Pixel): Vec3;
432
+ /**
433
+ * Returns 2d screen coordanates projection point to the planet ellipsoid geographical coordinates.
434
+ * @public
435
+ * @param {math.Pixel} px - 2D screen coordinates.
436
+ * @returns {LonLat} -
437
+ */
438
+ public getLonLatFromPixelEllipsoid(px: math.Pixel): LonLat;
439
+ /**
440
+ * Returns 3d cartesian coordinates on the relief planet by mouse cursor
441
+ * position or null if mouse cursor is outside the planet.
442
+ * @public
443
+ * @returns {Vec3} -
444
+ */
445
+ public getCartesianFromMouseTerrain(): Vec3;
446
+ /**
447
+ * Returns 3d cartesian coordinates on the relief planet by 2d screen coordinates.
448
+ * position or null if input coordinates is outside the planet.
449
+ * @public
450
+ * @param {Vec2} px - Pixel screen 2d coordinates.
451
+ * @param {Boolean} [force=false] - Force framebuffer rendering.
452
+ * @returns {Vec3} -
453
+ */
454
+ public getCartesianFromPixelTerrain(px: Vec2): Vec3;
455
+ /**
456
+ * Returns geographical coordinates on the relief planet by 2d screen coordinates.
457
+ * position or null if input coordinates is outside the planet.
458
+ * @public
459
+ * @param {Vec2} px - Pixel screen 2d coordinates.
460
+ * @param {Boolean} [force=false] - Force framebuffer rendering.
461
+ * @returns {LonLat} -
462
+ */
463
+ public getLonLatFromPixelTerrain(px: Vec2, force?: boolean): LonLat;
464
+ /**
465
+ * Returns projected 2d screen coordinates by 3d cartesian coordiantes.
466
+ * @public
467
+ * @param {Vec3} coords - Cartesian coordinates.
468
+ * @returns {Vec2} -
469
+ */
470
+ public getPixelFromCartesian(coords: Vec3): Vec2;
471
+ /**
472
+ * Returns projected 2d screen coordinates by geographical coordinates.
473
+ * @public
474
+ * @param {LonLat} lonlat - Geographical coordinates.
475
+ * @returns {Vec2} -
476
+ */
477
+ public getPixelFromLonLat(lonlat: LonLat): Vec2;
478
+ /**
479
+ * Returns distance from active camera to the the planet ellipsoid
480
+ * coordiantes unprojected by 2d screen coordiantes, or null if screen coordinates outside the planet.
481
+ * @public
482
+ * @param {Vec2} px - Screen coordinates.
483
+ * @returns {number} -
484
+ */
485
+ public getDistanceFromPixelEllipsoid(px: Vec2): number;
486
+ /**
487
+ * Returns distance from active camera to the the relief planet coordiantes unprojected
488
+ * by 2d screen coordiantes, or null if screen coordinates outside the planet.
489
+ * If screen coordinates inside the planet but relief is not exists in the
490
+ * point than function returns distance to the planet ellipsoid.
491
+ * @public
492
+ * @param {Vec2} px - Screen coordinates.
493
+ * @param {Boolean} [force=false] - Force framebuffer rendering.
494
+ * @returns {number} -
495
+ */
496
+ public getDistanceFromPixel(px: Vec2): number;
497
+ /**
498
+ * Sets camera to the planet geographical extent.
499
+ * @public
500
+ * @param {Extent} extent - Geographical extent.
501
+ */
502
+ public viewExtent(extent: Extent): void;
503
+ /**
504
+ * Sets camera to the planet geographical extent.
505
+ * @public
506
+ * @param {Array.<number>} extentArr - Geographical extent array, (exactly 4 entries)
507
+ * where index 0 - southwest longitude, 1 - latitude southwest, 2 - longitude northeast, 3 - latitude northeast.
508
+ */
509
+ public viewExtentArr(extentArr: Array<number>): void;
510
+ /**
511
+ * Gets current viewing geographical extent.
512
+ * @public
513
+ * @returns {Extent} -
514
+ */
515
+ public getViewExtent(): Extent;
516
+ /**
517
+ * Sets camera to the planet geographical position.
518
+ * @public
519
+ * @param {LonLat} lonlat - New geographical position.
520
+ * @param {Vec3} [up] - Camera UP vector.
521
+ */
522
+ public viewLonLat(lonlat: LonLat, up?: Vec3): void;
523
+ /**
524
+ * Fly camera to the planet geographical extent.
525
+ * @public
526
+ * @param {Extent} extent - Geographical extent.
527
+ * @param {Number} [height] - Height on the end of the flight route.
528
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
529
+ * @param {Number} [ampl] - Altitude amplitude factor.
530
+ * @param {cameraCallback} [startCallback] - Callback that calls after flying when flying is finished.
531
+ * @param {cameraCallback} [completeCallback] - Callback that calls befor the flying begins.
532
+ */
533
+ public flyExtent(extent: Extent, height?: number, up?: Vec3, ampl?: number, completeCallback?: cameraCallback, startCallback?: cameraCallback): void;
534
+ /**
535
+ * Fly camera to the new point.
536
+ * @public
537
+ * @param {Vec3} cartesian - Fly coordiantes.
538
+ * @param {Vec3} [look] - Camera "look at" point.
539
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
540
+ * @param {Number} [ampl] - Altitude amplitude factor.
541
+ * @param [completeCallback]
542
+ * @param [startCallback]
543
+ * @param [frameCallback]
544
+ */
545
+ public flyCartesian(cartesian: Vec3, look?: Vec3, up?: Vec3, ampl?: number, completeCallback?: any, startCallback?: any, frameCallback?: any): void;
546
+ /**
547
+ * Fly camera to the new geographical position.
548
+ * @public
549
+ * @param {LonLat} lonlat - Fly geographical coordiantes.
550
+ * @param {Vec3} [look] - Camera "look at" point on the end of a flying.
551
+ * @param {Vec3} [up] - Camera UP vector on the end of a flying.
552
+ * @param {Number} [ampl] - Altitude amplitude factor.
553
+ * @param [completeCallback]
554
+ * @param [startCallback]
555
+ * @param [frameCallback]
556
+ */
557
+ public flyLonLat(lonlat: LonLat, look?: Vec3, up?: Vec3, ampl?: number, completeCallback?: any, startCallback?: any, frameCallback?: any): void;
558
+ /**
559
+ * Breaks the flight.
560
+ * @public
561
+ */
562
+ public stopFlying(): void;
563
+ getEntityTerrainPoint(entity: any, res: any): any;
564
+ }
565
+ import { RenderNode } from "./RenderNode.js";
566
+ import { PlanetCamera } from "../camera/PlanetCamera.js";
567
+ import { Vec3 } from "../math/index.js";
568
+ import { VectorTileCreator } from "../utils/VectorTileCreator.js";
569
+ import { NormalMapCreator } from "../utils/NormalMapCreator.js";
570
+ import { TerrainWorker } from "../utils/TerrainWorker.js";
571
+ import { PlainSegmentWorker } from "../utils/PlainSegmentWorker.js";
572
+ import { Loader } from "../utils/Loader.js";
573
+ import { Key } from "../Lock.js";
574
+ import { LonLat } from "../LonLat.js";
575
+ import { Extent } from "../Extent.js";
576
+ import { Quat } from "../math/index.js";
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Render node is a logical part of a render mechanism. Represents scene rendering.
3
+ * Forexample one scene node for rendering the Earth, another one for rendering the Moon, another node for rendering stars etc.
4
+ * Each render node has own model view space defined with matrices(scale, rotation, translation, transformation).
5
+ * There are collections of ligh sources, entities and so on in the node.
6
+ * Access to the node is renderer.renderNodes["Earth"]
7
+ * @class
8
+ * @extends {RenderNode}
9
+ * @param {string} name - Node name.
10
+ */
11
+ export class RenderNode {
12
+ /**
13
+ * Renderer that calls frame() callback.
14
+ * @public
15
+ * @type {Renderer}
16
+ */
17
+ public renderer: Renderer;
18
+ drawMode: number;
19
+ /** Show rendering.
20
+ * @public
21
+ */
22
+ public show: boolean;
23
+ _isActive: boolean;
24
+ /**
25
+ * Lighting calculations.
26
+ * @public
27
+ * @type {boolean}
28
+ */
29
+ public lightEnabled: boolean;
30
+ /**
31
+ * Point light array.
32
+ * @private
33
+ * @type {Array.<LightSource>}
34
+ */
35
+ private _lights;
36
+ _lightsTransformedPositions: any[];
37
+ _lightsParamsv: any[];
38
+ _lightsParamsf: any[];
39
+ _lightsNames: any[];
40
+ /**
41
+ * Entity collection array.
42
+ * @public
43
+ * @type {Array.<EntityCollection>}
44
+ */
45
+ public entityCollections: Array<EntityCollection>;
46
+ _pickingId: number;
47
+ events: Events;
48
+ /**
49
+ * Adds node to the current hierarchy.
50
+ * @public
51
+ * @type {RenderNode}
52
+ */
53
+ public addNode(node: any): void;
54
+ /**
55
+ * Assign render node with renderer.
56
+ * @public
57
+ * @param {Renderer} renderer - Redner node's renderer.
58
+ */
59
+ public assign(renderer: Renderer): void;
60
+ onremove(): void;
61
+ remove(): void;
62
+ /**
63
+ * Adds entity collection.
64
+ * @public
65
+ * @param {EntityCollection} entityCollection - Entity collection.
66
+ * @param {boolean} [isHidden] - If it's true that this collection has specific rendering.
67
+ * @returns {RenderNode} -
68
+ */
69
+ public addEntityCollection(entityCollection: EntityCollection, isHidden?: boolean): RenderNode;
70
+ /**
71
+ * Removes entity collection.
72
+ * @public
73
+ * @param {EntityCollection} entityCollection - Entity collection for remove.
74
+ */
75
+ public removeEntityCollection(entityCollection: EntityCollection): void;
76
+ /**
77
+ * Adds point light source.
78
+ * @public
79
+ * @param {LightSource} light - Light source.
80
+ * @returns {RenderNode}
81
+ */
82
+ public addLight(light: LightSource): RenderNode;
83
+ /**
84
+ * Gets light object by its name.
85
+ * @public
86
+ * @param {string} name - Point light name.
87
+ * @returns {LightSource}
88
+ */
89
+ public getLightByName(name: string): LightSource;
90
+ /**
91
+ * Removes light source.
92
+ * @public
93
+ * @param {LightSource} light - Light source object.
94
+ */
95
+ public removeLight(light: LightSource): void;
96
+ /**
97
+ * Calls render frame node's callback. Used in renderer.
98
+ * @public
99
+ */
100
+ public drawNode(frustum: any, frustumIndex: any): void;
101
+ /**
102
+ * Gets render node activity.
103
+ * @public
104
+ * @returns {Boolean} -
105
+ */
106
+ public isActive(): boolean;
107
+ /**
108
+ * Rendering activation.
109
+ * @public
110
+ * @param {boolean} isActive - Activation flag.
111
+ */
112
+ public setActive(isActive: boolean): void;
113
+ /**
114
+ * Sets draw mode
115
+ * @public
116
+ * @param {Number} mode - Draw mode, such as gl.TRIANGLES, gl.TRIANGLE_STRIP, gl.LINES etc.
117
+ */
118
+ public setDrawMode(mode: number): void;
119
+ /**
120
+ * IMPORTANT: This function have to be called manualy in each render node frame callback, before drawing scene geometry.
121
+ * @public
122
+ */
123
+ public transformLights(): void;
124
+ updateBillboardsTexCoords(): void;
125
+ /**
126
+ * @private
127
+ */
128
+ private _drawNodes;
129
+ drawEntityCollections(ec: any): void;
130
+ /**
131
+ * Draw entity collections picking frame.
132
+ * @public
133
+ * @param {Array<og.EntityCollection>} ec - Entity collection array.
134
+ */
135
+ public drawPickingEntityCollections(ec: Array<og.EntityCollection>): void;
136
+ /**
137
+ * Picking entity frame callback
138
+ * @private
139
+ */
140
+ private _entityCollectionPickingCallback;
141
+ }
142
+ import { Events } from "../Events.js";