@openglobus/og 0.22.2 → 0.23.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 (167) hide show
  1. package/css/og.css +137 -1
  2. package/lib/@openglobus/js/Object3d.d.ts +20 -10
  3. package/lib/@openglobus/js/camera/Camera.d.ts +9 -0
  4. package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
  5. package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
  6. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
  7. package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  8. package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  9. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  10. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  11. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  12. package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  13. package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  14. package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  15. package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
  16. package/lib/@openglobus/js/control/index.d.ts +2 -0
  17. package/lib/@openglobus/js/entity/Entity.d.ts +278 -19
  18. package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
  19. package/lib/@openglobus/js/entity/GeoObject.d.ts +141 -36
  20. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
  21. package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
  22. package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
  23. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
  24. package/lib/@openglobus/js/index.d.ts +2 -1
  25. package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
  26. package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
  27. package/lib/@openglobus/js/math/Quat.d.ts +46 -33
  28. package/lib/@openglobus/js/math/Ray.d.ts +10 -4
  29. package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
  30. package/lib/@openglobus/js/math.d.ts +2 -2
  31. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
  32. package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
  33. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  34. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  35. package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
  36. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +1 -0
  37. package/lib/@openglobus/js/scene/Planet.d.ts +11 -7
  38. package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
  39. package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
  40. package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
  41. package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
  42. package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
  43. package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
  44. package/lib/@openglobus/js/ui/Input.d.ts +32 -0
  45. package/lib/@openglobus/js/ui/View.d.ts +3 -1
  46. package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
  47. package/lib/@openglobus/js/utils/shared.d.ts +22 -0
  48. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
  49. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
  50. package/lib/@openglobus/js/webgl/Handler.d.ts +1 -0
  51. package/lib/@openglobus/og.css +1 -1
  52. package/lib/@openglobus/og.esm.js +1 -1
  53. package/lib/@openglobus/og.esm.js.map +1 -1
  54. package/lib/@openglobus/og.umd.js +1 -1
  55. package/lib/@openglobus/og.umd.js.map +1 -1
  56. package/lib/js/Object3d.d.ts +20 -10
  57. package/lib/js/Object3d.js +124 -48
  58. package/lib/js/camera/Camera.d.ts +9 -0
  59. package/lib/js/camera/Camera.js +27 -1
  60. package/lib/js/camera/Frustum.d.ts +3 -0
  61. package/lib/js/camera/Frustum.js +7 -0
  62. package/lib/js/control/Atmosphere.js +10 -6
  63. package/lib/js/control/CameraLock.d.ts +38 -0
  64. package/lib/js/control/CameraLock.js +216 -0
  65. package/lib/js/control/Control.js +1 -1
  66. package/lib/js/control/DebugInfo.js +13 -3
  67. package/lib/js/control/KeyboardNavigation.js +1 -1
  68. package/lib/js/control/ScaleControl.js +9 -3
  69. package/lib/js/control/SimpleNavigation.d.ts +27 -10
  70. package/lib/js/control/SimpleNavigation.js +148 -49
  71. package/lib/js/control/Sun.js +1 -1
  72. package/lib/js/control/elevationProfile/ElevationProfileScene.js +4 -4
  73. package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  74. package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
  75. package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  76. package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
  77. package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  78. package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
  79. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  80. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +502 -0
  81. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  82. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
  83. package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  84. package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +106 -0
  85. package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  86. package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +34 -0
  87. package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  88. package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
  89. package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
  90. package/lib/js/control/geoObjectEditor/colors.js +8 -0
  91. package/lib/js/control/index.d.ts +2 -0
  92. package/lib/js/control/index.js +2 -0
  93. package/lib/js/control/timeline/TimelineControl.js +2 -0
  94. package/lib/js/entity/Entity.d.ts +278 -19
  95. package/lib/js/entity/Entity.js +483 -63
  96. package/lib/js/entity/EntityCollection.d.ts +8 -9
  97. package/lib/js/entity/EntityCollection.js +48 -45
  98. package/lib/js/entity/GeoObject.d.ts +141 -36
  99. package/lib/js/entity/GeoObject.js +153 -90
  100. package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
  101. package/lib/js/entity/GeoObjectHandler.js +198 -295
  102. package/lib/js/entity/InstanceData.d.ts +76 -0
  103. package/lib/js/entity/InstanceData.js +344 -0
  104. package/lib/js/entity/Polyline.d.ts +19 -6
  105. package/lib/js/entity/Polyline.js +76 -36
  106. package/lib/js/entity/PolylineHandler.d.ts +7 -0
  107. package/lib/js/entity/PolylineHandler.js +26 -1
  108. package/lib/js/index.d.ts +2 -1
  109. package/lib/js/index.js +2 -1
  110. package/lib/js/layer/Bing.js +2 -2
  111. package/lib/js/layer/Vector.d.ts +4 -0
  112. package/lib/js/layer/Vector.js +16 -0
  113. package/lib/js/light/LightSource.d.ts +1 -139
  114. package/lib/js/light/LightSource.js +21 -227
  115. package/lib/js/math/Quat.d.ts +46 -33
  116. package/lib/js/math/Quat.js +91 -90
  117. package/lib/js/math/Ray.d.ts +10 -4
  118. package/lib/js/math/Ray.js +20 -4
  119. package/lib/js/math/Vec3.d.ts +15 -0
  120. package/lib/js/math/Vec3.js +30 -1
  121. package/lib/js/math.d.ts +2 -2
  122. package/lib/js/math.js +3 -3
  123. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  124. package/lib/js/quadTree/EntityCollectionNode.js +8 -8
  125. package/lib/js/quadTree/Node.d.ts +1 -1
  126. package/lib/js/quadTree/Node.js +2 -2
  127. package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
  128. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  129. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
  130. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  131. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
  132. package/lib/js/renderer/Renderer.d.ts +63 -44
  133. package/lib/js/renderer/Renderer.js +260 -263
  134. package/lib/js/renderer/RendererEvents.d.ts +1 -0
  135. package/lib/js/renderer/RendererEvents.js +2 -1
  136. package/lib/js/scene/Planet.d.ts +11 -7
  137. package/lib/js/scene/Planet.js +109 -87
  138. package/lib/js/scene/RenderNode.d.ts +10 -25
  139. package/lib/js/scene/RenderNode.js +70 -58
  140. package/lib/js/shaders/depth.js +2 -5
  141. package/lib/js/shaders/drawnode.d.ts +1 -0
  142. package/lib/js/shaders/drawnode.js +51 -52
  143. package/lib/js/shaders/geoObject.d.ts +1 -0
  144. package/lib/js/shaders/geoObject.js +154 -91
  145. package/lib/js/shaders/polyline.js +68 -51
  146. package/lib/js/shaders/utils.d.ts +1 -1
  147. package/lib/js/shaders/utils.js +11 -0
  148. package/lib/js/ui/Checkbox.d.ts +31 -0
  149. package/lib/js/ui/Checkbox.js +110 -0
  150. package/lib/js/ui/Color.js +2 -1
  151. package/lib/js/ui/Dialog.d.ts +3 -0
  152. package/lib/js/ui/Dialog.js +20 -0
  153. package/lib/js/ui/Input.d.ts +32 -0
  154. package/lib/js/ui/Input.js +107 -0
  155. package/lib/js/ui/View.d.ts +3 -1
  156. package/lib/js/ui/View.js +6 -0
  157. package/lib/js/utils/objParser.d.ts +44 -12
  158. package/lib/js/utils/objParser.js +241 -149
  159. package/lib/js/utils/shared.d.ts +22 -0
  160. package/lib/js/utils/shared.js +34 -0
  161. package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
  162. package/lib/js/webgl/Framebuffer.d.ts +35 -8
  163. package/lib/js/webgl/Framebuffer.js +136 -29
  164. package/lib/js/webgl/Handler.d.ts +1 -0
  165. package/lib/js/webgl/Handler.js +11 -1
  166. package/lib/js/webgl/Program.js +0 -8
  167. package/package.json +4 -2
@@ -1,6 +1,6 @@
1
1
  import { Camera } from "../camera/Camera";
2
2
  import { Control } from "../control/Control";
3
- import { RendererEventsHandler } from "./RendererEvents";
3
+ import { IBaseInputState, RendererEventsHandler } from "./RendererEvents";
4
4
  import { EntityCollection } from "../entity/EntityCollection";
5
5
  import { Framebuffer, Multisample } from "../webgl/index";
6
6
  import { FontAtlas } from "../utils/FontAtlas";
@@ -18,6 +18,7 @@ interface IRendererParams {
18
18
  fontsSrc?: string;
19
19
  gamma?: number;
20
20
  exposure?: number;
21
+ dpi?: number;
21
22
  }
22
23
  interface IPickingObject {
23
24
  _pickingColor?: Vec3;
@@ -28,6 +29,39 @@ interface IFrameCallbackHandler {
28
29
  callback: Function;
29
30
  sender: any;
30
31
  }
32
+ /**
33
+ * Represents high level WebGL context interface that starts WebGL handler working in real time.
34
+ * @class
35
+ * @param {Handler} handler - WebGL handler context.
36
+ * @param {Object} [params] - Renderer parameters:
37
+ * @fires EventsHandler<RendererEventsType>#draw
38
+ * @fires EventsHandler<RendererEventsType>#resize
39
+ * @fires EventsHandler<RendererEventsType>#mousemove
40
+ * @fires EventsHandler<RendererEventsType>#mousestop
41
+ * @fires EventsHandler<RendererEventsType>#lclick
42
+ * @fires EventsHandler<RendererEventsType>#rclick
43
+ * @fires EventsHandler<RendererEventsType>#mclick
44
+ * @fires EventsHandler<RendererEventsType>#ldblclick
45
+ * @fires EventsHandler<RendererEventsType>#rdblclick
46
+ * @fires EventsHandler<RendererEventsType>#mdblclick
47
+ * @fires EventsHandler<RendererEventsType>#lup
48
+ * @fires EventsHandler<RendererEventsType>#rup
49
+ * @fires EventsHandler<RendererEventsType>#mup
50
+ * @fires EventsHandler<RendererEventsType>#ldown
51
+ * @fires EventsHandler<RendererEventsType>#rdown
52
+ * @fires EventsHandler<RendererEventsType>#mdown
53
+ * @fires EventsHandler<RendererEventsType>#lhold
54
+ * @fires EventsHandler<RendererEventsType>#rhold
55
+ * @fires EventsHandler<RendererEventsType>#mhold
56
+ * @fires EventsHandler<RendererEventsType>#mousewheel
57
+ * @fires EventsHandler<RendererEventsType>#touchstart
58
+ * @fires EventsHandler<RendererEventsType>#touchend
59
+ * @fires EventsHandler<RendererEventsType>#touchcancel
60
+ * @fires EventsHandler<RendererEventsType>#touchmove
61
+ * @fires EventsHandler<RendererEventsType>#doubletouch
62
+ * @fires EventsHandler<RendererEventsType>#touchleave
63
+ * @fires EventsHandler<RendererEventsType>#touchenter
64
+ */
31
65
  export interface HTMLDivElementExt extends HTMLDivElement {
32
66
  attributions?: HTMLElement;
33
67
  }
@@ -65,7 +99,7 @@ declare class Renderer {
65
99
  * @public
66
100
  * @type {Camera}
67
101
  */
68
- activeCamera: Camera | null;
102
+ activeCamera: Camera;
69
103
  /**
70
104
  * Renderer events. Represents interface for setting events like mousemove, draw, keypress etc.
71
105
  * @public
@@ -101,17 +135,6 @@ declare class Renderer {
101
135
  * @type {Framebuffer}
102
136
  */
103
137
  pickingFramebuffer: Framebuffer | null;
104
- protected _tempPickingPix_: Uint8Array;
105
- /**
106
- * @public
107
- * @type {Framebuffer}
108
- */
109
- distanceFramebuffer: Framebuffer | null;
110
- /**
111
- * @type {Function[]}
112
- */
113
- protected _distanceCallbacks: IFrameCallbackHandler[];
114
- protected _tempDistancePix_: Uint8Array;
115
138
  /**
116
139
  * Depth objects rendering queue.
117
140
  * @type {Function[]}
@@ -144,24 +167,19 @@ declare class Renderer {
144
167
  * @type {FontAtlas}
145
168
  */
146
169
  fontAtlas: FontAtlas;
147
- protected _entityCollections: EntityCollection[];
170
+ protected _entityCollections: EntityCollection[][];
148
171
  protected _currentOutput: string;
149
172
  protected _fnScreenFrame: Function | null;
150
173
  labelWorker: LabelWorker;
151
- __useDistanceFramebuffer__: boolean;
152
174
  screenDepthFramebuffer: Framebuffer | null;
153
175
  screenFramePositionBuffer: WebGLBufferExt | null;
154
176
  screenTexture: Record<string, WebGLTexture>;
155
177
  outputTexture: WebGLTexture | null;
156
- protected _skipDistanceFrame: boolean;
157
- protected _distancePixelBuffer: WebGLBuffer | null;
158
- protected _skipPickingFrame: boolean;
159
- protected _pickingPixelBuffer: WebGLBuffer | null;
160
- protected _readDistanceBuffer: () => void;
161
178
  protected _readPickingBuffer: () => void;
162
- constructor(handler: Handler, params?: IRendererParams);
179
+ constructor(handler: Handler | string | HTMLCanvasElement, params?: IRendererParams);
163
180
  enableBlendOneSrcAlpha(): void;
164
181
  enableBlendDefault(): void;
182
+ setRelativeCenter(c?: Vec3): void;
165
183
  /**
166
184
  * Sets renderer events activity.
167
185
  * @param {Boolean} activity - Events activity.
@@ -169,8 +187,6 @@ declare class Renderer {
169
187
  setEventsActivity(activity: boolean): void;
170
188
  addDepthCallback(sender: any, callback: Function): number;
171
189
  removeDepthCallback(id: number): void;
172
- addDistanceCallback(sender: any, callback: Function): number;
173
- removeDistanceCallback(id: number): void;
174
190
  /**
175
191
  * Adds picking rendering callback function.
176
192
  * @param {object} sender - Callback context.
@@ -243,7 +259,6 @@ declare class Renderer {
243
259
  * @public
244
260
  */
245
261
  initialize(): void;
246
- _initReadPixelsBuffers(): void;
247
262
  _initializeControls(): void;
248
263
  resize(): void;
249
264
  setCurrentScreen(screenName: string): void;
@@ -275,18 +290,14 @@ declare class Renderer {
275
290
  /**
276
291
  * TODO: replace with cache friendly linked list by BillboardHandler, LabelHandler etc.
277
292
  */
278
- enqueueEntityCollectionsToDraw(ecArr: EntityCollection[]): void;
279
- /**
280
- * Draws opaque items entity collections.
281
- * @protected
282
- */
283
- protected _drawOpaqueEntityCollections(): void;
293
+ enqueueEntityCollectionsToDraw(ecArr: EntityCollection[], depthOrder?: number): void;
284
294
  /**
285
- * Draws transparent items entity collections.
286
295
  * @protected
287
296
  */
288
- protected _drawTransparentEntityCollections(): void;
289
- protected _clearEntityCollectionQueue(): void;
297
+ protected _drawEntityCollections(depthOrder: number): void;
298
+ protected _drawPickingEntityCollections(depthOrder: number): void;
299
+ protected _drawDepthEntityCollections(depthOrder: number): void;
300
+ protected _clearEntityCollectionQueue(depthOrder: number): void;
290
301
  /**
291
302
  * Draw nodes.
292
303
  * @public
@@ -299,19 +310,27 @@ declare class Renderer {
299
310
  * Draw picking objects framebuffer.
300
311
  * @private
301
312
  */
302
- protected _drawPickingBuffer(): void;
313
+ protected _drawPickingBuffer(depthOrder: number): void;
314
+ protected _drawDepthBuffer(depthOrder: number): void;
315
+ protected _readDepthBuffer(): void;
316
+ protected _readPickingBuffer_webgl1(): void;
317
+ protected _readPickingBuffer_webgl2(): void;
318
+ readPickingColor(x: number, y: number, outColor: NumberArray3 | Uint8Array): void;
319
+ readDepth(x: number, y: number, outDepth: NumberArray3 | Float32Array): void;
303
320
  /**
304
- * Draw picking objects framebuffer.
305
- * @protected
321
+ * Returns the distance from the active (screen) camera to the 3d-surface using the defined screen coordinates
322
+ * @public
323
+ * @param {Vec2 | IBaseInputState} px - Screen coordinates.
324
+ * @returns {number | undefined} -
306
325
  */
307
- protected _drawDistanceBuffer(): void;
308
- protected _drawDepthBuffer(): void;
309
- protected _readPickingBuffer_webgl1: () => void;
310
- protected _readPickingBuffer_webgl2: () => void;
311
- protected _readDistanceBuffer_webgl1: () => void;
312
- protected _readDistanceBuffer_webgl2: () => void;
313
- readPickingColor(x: number, y: number, outColor: NumberArray3 | Uint8Array): void;
314
- readDistanceColor(x: number, y: number, outColor: NumberArray3 | Uint8Array): void;
326
+ getDistanceFromPixel(px: Vec2 | IBaseInputState, camera?: Camera | null): number | undefined;
327
+ /**
328
+ * Returns 3d coordinates from screen coordinates
329
+ * @public
330
+ * @param {Vec2 | IBaseInputState} px - Screen coordinates.
331
+ * @returns {Vec3 | undefined} -
332
+ */
333
+ getCartesianFromPixel(px: Vec2 | IBaseInputState): Vec3 | undefined;
315
334
  /**
316
335
  * Function starts renderer
317
336
  * @public