@openglobus/og 0.22.2 → 0.24.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 (205) hide show
  1. package/css/og.css +137 -1
  2. package/lib/@openglobus/js/Globe.d.ts +0 -1
  3. package/lib/@openglobus/js/Object3d.d.ts +20 -10
  4. package/lib/@openglobus/js/camera/Camera.d.ts +57 -15
  5. package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
  6. package/lib/@openglobus/js/camera/PlanetCamera.d.ts +13 -0
  7. package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
  8. package/lib/@openglobus/js/control/MouseNavigation.d.ts +62 -51
  9. package/lib/@openglobus/js/control/OldMouseNavigation.d.ts +64 -0
  10. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
  11. package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  12. package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  13. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  14. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  15. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  16. package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  17. package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  18. package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  19. package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
  20. package/lib/@openglobus/js/control/index.d.ts +3 -2
  21. package/lib/@openglobus/js/entity/Entity.d.ts +282 -19
  22. package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
  23. package/lib/@openglobus/js/entity/GeoObject.d.ts +135 -39
  24. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
  25. package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
  26. package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
  27. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
  28. package/lib/@openglobus/js/index.d.ts +2 -1
  29. package/lib/@openglobus/js/input/MouseHandler.d.ts +1 -0
  30. package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
  31. package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
  32. package/lib/@openglobus/js/math/Mat3.d.ts +1 -1
  33. package/lib/@openglobus/js/math/Mat4.d.ts +10 -1
  34. package/lib/@openglobus/js/math/Plane.d.ts +3 -1
  35. package/lib/@openglobus/js/math/Quat.d.ts +47 -33
  36. package/lib/@openglobus/js/math/Ray.d.ts +10 -14
  37. package/lib/@openglobus/js/math/Vec2.d.ts +22 -0
  38. package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
  39. package/lib/@openglobus/js/math.d.ts +2 -2
  40. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
  41. package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
  42. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  43. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  44. package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
  45. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +2 -0
  46. package/lib/@openglobus/js/scene/Planet.d.ts +15 -7
  47. package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
  48. package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
  49. package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
  50. package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
  51. package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
  52. package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
  53. package/lib/@openglobus/js/ui/Input.d.ts +32 -0
  54. package/lib/@openglobus/js/ui/View.d.ts +3 -1
  55. package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
  56. package/lib/@openglobus/js/utils/shared.d.ts +22 -0
  57. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
  58. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
  59. package/lib/@openglobus/js/webgl/Handler.d.ts +22 -12
  60. package/lib/@openglobus/og.css +1 -1
  61. package/lib/@openglobus/og.esm.js +1 -1
  62. package/lib/@openglobus/og.esm.js.map +1 -1
  63. package/lib/@openglobus/og.umd.js +1 -1
  64. package/lib/@openglobus/og.umd.js.map +1 -1
  65. package/lib/js/Globe.d.ts +0 -1
  66. package/lib/js/Globe.js +4 -2
  67. package/lib/js/Object3d.d.ts +20 -10
  68. package/lib/js/Object3d.js +124 -48
  69. package/lib/js/Popup.js +1 -1
  70. package/lib/js/camera/Camera.d.ts +57 -15
  71. package/lib/js/camera/Camera.js +109 -29
  72. package/lib/js/camera/Frustum.d.ts +3 -0
  73. package/lib/js/camera/Frustum.js +7 -0
  74. package/lib/js/camera/PlanetCamera.d.ts +13 -0
  75. package/lib/js/camera/PlanetCamera.js +52 -5
  76. package/lib/js/control/Atmosphere.js +10 -6
  77. package/lib/js/control/CameraLock.d.ts +38 -0
  78. package/lib/js/control/CameraLock.js +216 -0
  79. package/lib/js/control/Control.js +1 -1
  80. package/lib/js/control/DebugInfo.js +38 -8
  81. package/lib/js/control/KeyboardNavigation.js +9 -9
  82. package/lib/js/control/MouseNavigation.d.ts +62 -51
  83. package/lib/js/control/MouseNavigation.js +361 -305
  84. package/lib/js/control/MouseWheelZoomControl.d.ts +0 -44
  85. package/lib/js/control/MouseWheelZoomControl.js +270 -181
  86. package/lib/js/control/OldMouseNavigation.d.ts +64 -0
  87. package/lib/js/control/OldMouseNavigation.js +368 -0
  88. package/lib/js/control/ScaleControl.js +11 -5
  89. package/lib/js/control/SimpleNavigation.d.ts +27 -10
  90. package/lib/js/control/SimpleNavigation.js +149 -49
  91. package/lib/js/control/Sun.js +6 -6
  92. package/lib/js/control/TouchNavigation.js +11 -8
  93. package/lib/js/control/elevationProfile/ElevationProfileScene.js +6 -5
  94. package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  95. package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
  96. package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  97. package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
  98. package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  99. package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
  100. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  101. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +488 -0
  102. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  103. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
  104. package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  105. package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +107 -0
  106. package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  107. package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +31 -0
  108. package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  109. package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
  110. package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
  111. package/lib/js/control/geoObjectEditor/colors.js +8 -0
  112. package/lib/js/control/index.d.ts +3 -2
  113. package/lib/js/control/index.js +3 -2
  114. package/lib/js/control/timeline/TimelineControl.js +2 -0
  115. package/lib/js/control/visibleExtent/Segment.js +4 -4
  116. package/lib/js/entity/Entity.d.ts +282 -19
  117. package/lib/js/entity/Entity.js +497 -62
  118. package/lib/js/entity/EntityCollection.d.ts +8 -9
  119. package/lib/js/entity/EntityCollection.js +48 -45
  120. package/lib/js/entity/GeoObject.d.ts +135 -39
  121. package/lib/js/entity/GeoObject.js +150 -90
  122. package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
  123. package/lib/js/entity/GeoObjectHandler.js +198 -295
  124. package/lib/js/entity/InstanceData.d.ts +76 -0
  125. package/lib/js/entity/InstanceData.js +347 -0
  126. package/lib/js/entity/Polyline.d.ts +19 -6
  127. package/lib/js/entity/Polyline.js +76 -36
  128. package/lib/js/entity/PolylineHandler.d.ts +7 -0
  129. package/lib/js/entity/PolylineHandler.js +26 -1
  130. package/lib/js/index.d.ts +2 -1
  131. package/lib/js/index.js +2 -1
  132. package/lib/js/input/MouseHandler.d.ts +1 -0
  133. package/lib/js/input/MouseHandler.js +12 -1
  134. package/lib/js/layer/Bing.js +2 -2
  135. package/lib/js/layer/Vector.d.ts +4 -0
  136. package/lib/js/layer/Vector.js +16 -0
  137. package/lib/js/light/LightSource.d.ts +1 -139
  138. package/lib/js/light/LightSource.js +21 -227
  139. package/lib/js/math/Mat3.d.ts +1 -1
  140. package/lib/js/math/Mat3.js +1 -1
  141. package/lib/js/math/Mat4.d.ts +10 -1
  142. package/lib/js/math/Mat4.js +17 -1
  143. package/lib/js/math/Plane.d.ts +3 -1
  144. package/lib/js/math/Plane.js +11 -1
  145. package/lib/js/math/Quat.d.ts +47 -33
  146. package/lib/js/math/Quat.js +92 -90
  147. package/lib/js/math/Ray.d.ts +10 -14
  148. package/lib/js/math/Ray.js +56 -33
  149. package/lib/js/math/Vec2.d.ts +22 -0
  150. package/lib/js/math/Vec2.js +32 -0
  151. package/lib/js/math/Vec3.d.ts +15 -0
  152. package/lib/js/math/Vec3.js +30 -1
  153. package/lib/js/math.d.ts +2 -2
  154. package/lib/js/math.js +3 -3
  155. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  156. package/lib/js/quadTree/EntityCollectionNode.js +8 -8
  157. package/lib/js/quadTree/Node.d.ts +1 -1
  158. package/lib/js/quadTree/Node.js +2 -2
  159. package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
  160. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  161. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
  162. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  163. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
  164. package/lib/js/renderer/Renderer.d.ts +63 -44
  165. package/lib/js/renderer/Renderer.js +267 -266
  166. package/lib/js/renderer/RendererEvents.d.ts +2 -0
  167. package/lib/js/renderer/RendererEvents.js +5 -2
  168. package/lib/js/scene/Planet.d.ts +15 -7
  169. package/lib/js/scene/Planet.js +133 -90
  170. package/lib/js/scene/RenderNode.d.ts +10 -25
  171. package/lib/js/scene/RenderNode.js +70 -58
  172. package/lib/js/segment/Segment.js +4 -4
  173. package/lib/js/shaders/depth.js +2 -5
  174. package/lib/js/shaders/drawnode.d.ts +1 -0
  175. package/lib/js/shaders/drawnode.js +51 -52
  176. package/lib/js/shaders/geoObject.d.ts +1 -0
  177. package/lib/js/shaders/geoObject.js +154 -91
  178. package/lib/js/shaders/polyline.js +68 -51
  179. package/lib/js/shaders/utils.d.ts +1 -1
  180. package/lib/js/shaders/utils.js +11 -0
  181. package/lib/js/terrain/GlobusTerrain.js +2 -2
  182. package/lib/js/ui/Checkbox.d.ts +31 -0
  183. package/lib/js/ui/Checkbox.js +110 -0
  184. package/lib/js/ui/Color.js +2 -1
  185. package/lib/js/ui/Dialog.d.ts +3 -0
  186. package/lib/js/ui/Dialog.js +20 -0
  187. package/lib/js/ui/Input.d.ts +32 -0
  188. package/lib/js/ui/Input.js +107 -0
  189. package/lib/js/ui/View.d.ts +3 -1
  190. package/lib/js/ui/View.js +6 -0
  191. package/lib/js/utils/objParser.d.ts +44 -12
  192. package/lib/js/utils/objParser.js +241 -149
  193. package/lib/js/utils/shared.d.ts +22 -0
  194. package/lib/js/utils/shared.js +34 -0
  195. package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
  196. package/lib/js/webgl/Framebuffer.d.ts +35 -8
  197. package/lib/js/webgl/Framebuffer.js +136 -29
  198. package/lib/js/webgl/Handler.d.ts +22 -12
  199. package/lib/js/webgl/Handler.js +53 -34
  200. package/lib/js/webgl/Program.js +0 -8
  201. package/package.json +5 -3
  202. package/lib/@openglobus/js/control/EarthNavigation.d.ts +0 -50
  203. package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +0 -44
  204. package/lib/js/control/EarthNavigation.d.ts +0 -50
  205. package/lib/js/control/EarthNavigation.js +0 -202
@@ -1,34 +1,52 @@
1
1
  import { Entity } from "./Entity";
2
2
  import { Quat, Vec3, Vec4 } from "../math/index";
3
- import { GeoObjectHandler, InstanceData } from "./GeoObjectHandler";
3
+ import { GeoObjectHandler } from "./GeoObjectHandler";
4
+ import { InstanceData } from "./InstanceData";
4
5
  import { NumberArray3 } from "../math/Vec3";
5
6
  import { NumberArray4 } from "../math/Vec4";
6
7
  import { Object3d } from "../Object3d";
8
+ export declare const LOCAL_FORWARD: Vec3;
9
+ /**
10
+ * Interface for GeoObject parameters.
11
+ * @typedef {Object} IGeoObjectParams
12
+ * @property {Object3d} [object3d] - 3D object associated with the geo object.
13
+ * @property {string} [objSrc] - Source url of the 3D object.
14
+ * @property {string} [tag] - Unique instancing drawing identifier tag.
15
+ * @property {Vec3 | NumberArray3} [position] - Position in Cartesian coordinates.
16
+ * @property {number | Vec3 | NumberArray3} [scale] - Scale of the object.
17
+ * @property {Vec3 | NumberArray3} [translate] - Translation offset.
18
+ * @property {Vec4 | NumberArray4 | string} [color] - RGBA color or HTML color string.
19
+ * @property {boolean} [visibility] - Visibility flag.
20
+ */
7
21
  export interface IGeoObjectParams {
8
22
  object3d?: Object3d;
9
23
  objSrc?: string;
10
- textureSrc?: string;
11
24
  tag?: string;
12
25
  position?: Vec3 | NumberArray3;
13
- pitch?: number;
14
- yaw?: number;
15
- roll?: number;
16
26
  scale?: number | Vec3 | NumberArray3;
17
27
  translate?: Vec3 | NumberArray3;
18
28
  color?: Vec4 | NumberArray4 | string;
19
29
  visibility?: boolean;
20
30
  }
21
31
  /**
32
+ * Represents 3D object on the the globe or 3d space
22
33
  * @class
23
- * @param {Object} options - Geo object parameters:
24
- * @param {Vec3} [options.position] - Geo object position.
34
+ * @param {IGeoObjectParams} options - Geo object parameters:
35
+ * @param {Object3d} [options.object3d] - 3D object associated with the geo object.
36
+ * @param {string} [options.objSrc] - Source url of the 3D object.
37
+ * @param {string} [options.tag] - Unique instancing drawing identifier tag.
38
+ * @param {Vec3 | NumberArray3} [options.position] - Position in Cartesian coordinates.
39
+ * @param {number | Vec3 | NumberArray3} [options.scale=1] - Scale of the object.
40
+ * @param {Vec3 | NumberArray3} [options.translate] - Translation offset.
41
+ * @param {Vec4 | NumberArray4 | string} [options.color] - RGBA color or HTML color string.
42
+ * @param {boolean} [options.visibility=true] - Visibility flag.
25
43
  *
26
44
  * @todo: GeoObject and GeoObjectHandler provides instanced objects only.
27
45
  * It would be nice if it could provide not instanced rendering loop too.
28
46
  */
29
47
  declare class GeoObject {
30
48
  protected _tag: string;
31
- instanced: boolean;
49
+ static __counter__: number;
32
50
  /**
33
51
  * Entity instance that holds this geo object.
34
52
  * @public
@@ -41,22 +59,18 @@ declare class GeoObject {
41
59
  * @type {Vec3}
42
60
  */
43
61
  protected _position: Vec3;
44
- _positionHigh: Vec3;
45
- _positionLow: Vec3;
46
- protected _pitch: number;
47
- protected _yaw: number;
48
- protected _roll: number;
49
- protected _pitchRad: number;
50
- protected _yawRad: number;
51
- protected _rollRad: number;
62
+ _rtcPositionHigh: Vec3;
63
+ _rtcPositionLow: Vec3;
52
64
  protected _scale: Vec3;
53
65
  protected _translate: Vec3;
66
+ protected _localPosition: Vec3;
54
67
  /**
55
68
  * RGBA color.
56
69
  * @public
57
70
  * @type {Vec4}
58
71
  */
59
72
  _color: Vec4;
73
+ protected _qFrame: Quat;
60
74
  _qRot: Quat;
61
75
  protected _direction: Vec3;
62
76
  _handler: GeoObjectHandler | null;
@@ -64,35 +78,67 @@ declare class GeoObject {
64
78
  _tagData: InstanceData | null;
65
79
  _tagDataIndex: number;
66
80
  protected _object3d: Object3d;
67
- protected _visibility: boolean;
68
- protected _qNorthFrame: Quat;
69
- private _textureSrc?;
70
81
  _objectSrc?: string;
82
+ protected _visibility: boolean;
71
83
  protected _children: GeoObject[];
72
84
  constructor(options: IGeoObjectParams);
85
+ /**
86
+ * Gets the unique tag of the geo object.
87
+ * @returns {string}
88
+ */
73
89
  get tag(): string;
90
+ /**
91
+ * Gets the position of the geo object.
92
+ * @public
93
+ * @returns {Vec3}
94
+ */
74
95
  getPosition(): Vec3;
75
- getPitch(): number;
76
- getYaw(): number;
77
- getRoll(): number;
96
+ /**
97
+ * Gets the 3D object associated with this geo object.
98
+ * @public
99
+ * @returns {Object3d}
100
+ */
78
101
  get object3d(): Object3d;
102
+ /**
103
+ * Gets geometry mesh vertices.
104
+ * @public
105
+ * @returns {number[]}
106
+ */
79
107
  get vertices(): number[];
108
+ /**
109
+ * Gets geometry mesh normals.
110
+ * @public
111
+ * @returns {number[]}
112
+ */
80
113
  get normals(): number[];
114
+ /**
115
+ * Gets geometry mesh texture coordinates.
116
+ * @public
117
+ * @returns {number[]}
118
+ */
81
119
  get texCoords(): number[];
82
- get indices(): number[];
83
120
  /**
84
- * Sets geo object opacity.
121
+ * Gets geometry mesh indices.
85
122
  * @public
86
- * @param {number} a - Billboard opacity.
123
+ * @returns {number[]}
124
+ */
125
+ get indices(): number[];
126
+ /**
127
+ * Sets the opacity of the geo object.
128
+ * @param {number} a - Opacity value (0 to 1).
87
129
  */
88
130
  setOpacity(a: number): void;
89
131
  /**
90
- * Sets color.
91
- * @public
92
- * @param {number} r - Red.
93
- * @param {number} g - Green.
94
- * @param {number} b - Blue.
95
- * @param {number} [a] - Alpha.
132
+ * Gets the opacity of the geo object.
133
+ * @returns {number}
134
+ */
135
+ getOpacity(): number;
136
+ /**
137
+ * Sets the color of the geo object.
138
+ * @param {number} r - Red component.
139
+ * @param {number} g - Green component.
140
+ * @param {number} b - Blue component.
141
+ * @param {number} [a] - Alpha component.
96
142
  */
97
143
  setColor(r: number, g: number, b: number, a?: number): void;
98
144
  /**
@@ -121,31 +167,61 @@ declare class GeoObject {
121
167
  * @param {number} z - Z coordinate.
122
168
  */
123
169
  setPosition(x: number, y: number, z: number): void;
170
+ updateRTCPosition(): void;
124
171
  /**
125
172
  * Sets geo object position.
126
173
  * @public
127
174
  * @param {Vec3} position - Cartesian coordinates.
128
175
  */
129
176
  setPosition3v(position: Vec3): void;
130
- setYaw(yaw: number): void;
177
+ /**
178
+ * Sets Object3d for the object
179
+ * @param {Object3d} object
180
+ */
131
181
  setObject(object: Object3d): void;
182
+ /**
183
+ * Sets the object url source.
184
+ * @param {string} src
185
+ */
132
186
  setObjectSrc(src: string): void;
133
- setTextureSrc(src: string): void;
187
+ /**
188
+ * Sets object HTML color.
189
+ * @param {string} color
190
+ */
134
191
  setColorHTML(color: string): void;
135
192
  /**
136
- *
137
- * @param {number} pitch - Pitch in radians
193
+ * Sets scales.
194
+ * @public
195
+ * @param {number} scale
138
196
  */
139
- setPitch(pitch: number): void;
140
- setRoll(roll: number): void;
141
- setPitchYawRoll(pitch: number, yaw: number, roll: number): void;
142
197
  setScale(scale: number): void;
198
+ /**
199
+ * Sets X, Y, Z axis scales
200
+ * @public
201
+ * @param {Vec3} scale
202
+ */
143
203
  setScale3v(scale: Vec3): void;
204
+ /**
205
+ * Gets scale.
206
+ * @publci
207
+ * @returns {Vec3}
208
+ */
144
209
  getScale(): Vec3;
145
210
  setTranslate3v(translate: Vec3): void;
146
211
  getTranslate(): Vec3;
147
212
  /**
148
- * Removes geo object from handler.
213
+ * Sets local offset position.
214
+ * @param {Vec3} localPosition
215
+ */
216
+ setLocalPosition3v(localPosition: Vec3): void;
217
+ /**
218
+ * Gets local offset position.
219
+ * @public
220
+ * @returns {Vec3}
221
+ */
222
+ getLocalPosition(): Vec3;
223
+ /**
224
+ * Removes the geo object from the handler.
149
225
  * @public
150
226
  */
151
227
  remove(): void;
@@ -155,7 +231,27 @@ declare class GeoObject {
155
231
  * @param {Vec3} color - Picking color.
156
232
  */
157
233
  setPickingColor3v(color: Vec3): void;
234
+ /**
235
+ * Sets the rotation quaternion.
236
+ * @public
237
+ * @param {Quat} qRot - Rotation quaternion.
238
+ */
239
+ setRotation(qRot: Quat): void;
240
+ /**
241
+ * Returns orientation quaternion.
242
+ * @public
243
+ * @returns {Quat}
244
+ */
245
+ getRotation(): Quat;
246
+ /**
247
+ * Update object rotation
248
+ */
158
249
  updateRotation(): void;
250
+ /**
251
+ * Returns object direction
252
+ * @publcu
253
+ * @returns {Vec3}
254
+ */
159
255
  getDirection(): Vec3;
160
256
  }
161
257
  export { GeoObject };
@@ -1,65 +1,25 @@
1
- import { TypedArray } from "../utils/shared";
2
1
  import { EntityCollection } from "./EntityCollection";
3
2
  import { GeoObject } from "./GeoObject";
4
- import { Planet } from "../scene/Planet";
5
3
  import { Vec3 } from "../math/Vec3";
6
4
  import { Vec4 } from "../math/Vec4";
7
5
  import { Quat } from "../math/Quat";
8
- import { WebGLBufferExt, WebGLTextureExt } from "../webgl/Handler";
9
6
  import { Object3d } from "../Object3d";
10
- declare class InstanceData {
11
- isFree: boolean;
12
- _geoObjectHandler: GeoObjectHandler;
13
- geoObjects: GeoObject[];
14
- numInstances: number;
15
- _texture: WebGLTextureExt | null;
16
- _textureSrc: string | null;
17
- _objectSrc?: string;
18
- _sizeArr: number[] | TypedArray;
19
- _translateArr: number[] | TypedArray;
20
- _vertexArr: number[] | TypedArray;
21
- _positionHighArr: number[] | TypedArray;
22
- _positionLowArr: number[] | TypedArray;
23
- _qRotArr: number[] | TypedArray;
24
- _rgbaArr: number[] | TypedArray;
25
- _normalsArr: number[] | TypedArray;
26
- _indicesArr: number[] | TypedArray;
27
- _pickingColorArr: number[] | TypedArray;
28
- _visibleArr: number[] | TypedArray;
29
- _texCoordArr: number[] | TypedArray;
30
- _sizeBuffer: WebGLBufferExt | null;
31
- _translateBuffer: WebGLBufferExt | null;
32
- _vertexBuffer: WebGLBufferExt | null;
33
- _positionHighBuffer: WebGLBufferExt | null;
34
- _positionLowBuffer: WebGLBufferExt | null;
35
- _qRotBuffer: WebGLBufferExt | null;
36
- _rgbaBuffer: WebGLBufferExt | null;
37
- _normalsBuffer: WebGLBufferExt | null;
38
- _indicesBuffer: WebGLBufferExt | null;
39
- _pickingColorBuffer: WebGLBufferExt | null;
40
- _visibleBuffer: WebGLBufferExt | null;
41
- _texCoordBuffer: WebGLBufferExt | null;
42
- _buffersUpdateCallbacks: Function[];
43
- _changedBuffers: boolean[];
44
- constructor(geoObjectHandler: GeoObjectHandler);
45
- createTexture(image: HTMLCanvasElement | ImageBitmap | ImageData | HTMLImageElement): void;
46
- clear(): void;
47
- _deleteBuffers(): void;
48
- createVertexBuffer(): void;
49
- createVisibleBuffer(): void;
50
- createSizeBuffer(): void;
51
- createTranslateBuffer(): void;
52
- createTexCoordBuffer(): void;
53
- createPositionBuffer(): void;
54
- createRgbaBuffer(): void;
55
- createQRotBuffer(): void;
56
- createNormalsBuffer(): void;
57
- createIndicesBuffer(): void;
58
- createPickingColorBuffer(): void;
59
- refresh(): void;
60
- update(): void;
61
- }
62
- declare class GeoObjectHandler {
7
+ import { InstanceData } from "./InstanceData";
8
+ import { Renderer } from "../renderer/Renderer";
9
+ import { RenderNode } from "../scene/RenderNode";
10
+ export declare const VERTEX_BUFFER = 0;
11
+ export declare const RTC_POSITION_BUFFER = 1;
12
+ export declare const RGBA_BUFFER = 2;
13
+ export declare const NORMALS_BUFFER = 3;
14
+ export declare const INDEX_BUFFER = 4;
15
+ export declare const QROT_BUFFER = 5;
16
+ export declare const SIZE_BUFFER = 6;
17
+ export declare const PICKINGCOLOR_BUFFER = 7;
18
+ export declare const VISIBLE_BUFFER = 8;
19
+ export declare const TEXCOORD_BUFFER = 9;
20
+ export declare const TRANSLATE_BUFFER = 10;
21
+ export declare const LOCALPOSITION_BUFFER = 11;
22
+ export declare class GeoObjectHandler {
63
23
  static __counter__: number;
64
24
  protected __id: number;
65
25
  /**
@@ -69,37 +29,53 @@ declare class GeoObjectHandler {
69
29
  */
70
30
  pickingEnabled: boolean;
71
31
  protected _entityCollection: EntityCollection;
72
- _planet: Planet | null;
32
+ _renderNode: RenderNode | null;
33
+ _renderer: Renderer | null;
73
34
  protected _geoObjects: GeoObject[];
74
35
  protected _instanceDataMap: Map<string, InstanceData>;
75
36
  protected _instanceDataMapValues: InstanceData[];
76
37
  protected _dataTagUpdateQueue: InstanceData[];
38
+ protected _relativeCenter: Vec3;
39
+ protected _rtcEyePositionHigh: Float32Array;
40
+ protected _rtcEyePositionLow: Float32Array;
77
41
  constructor(entityCollection: EntityCollection);
78
42
  initProgram(): void;
79
- setRenderNode(renderNode: Planet): void;
80
- setTextureTag(src: string, tag: string): void;
43
+ setRenderNode(renderNode: RenderNode): void;
44
+ setColorTextureTag(src: string, tag: string): void;
45
+ setNormalTextureTag(src: string, tag: string): void;
46
+ setMetallicRoughnessTextureTag(src: string, tag: string): void;
81
47
  setObjectSrc(src: string, tag: string): void;
82
48
  _updateInstanceData(object: Object3d, tag: string): void;
83
49
  protected _addGeoObjectToArray(geoObject: GeoObject): void;
84
- _displayPASS(): void;
50
+ protected _bindCommon(): void;
51
+ _displayOpaquePASS(): void;
52
+ _displayTransparentPASS(): void;
53
+ protected _depthPASS(): void;
54
+ drawDepth(): void;
85
55
  drawPicking(): void;
86
56
  protected _pickingPASS(): void;
87
- _loadDataTagTexture(tagData: InstanceData): Promise<void>;
57
+ _loadColorTexture(tagData: InstanceData): Promise<void>;
58
+ _loadNormalTexture(tagData: InstanceData): Promise<void>;
59
+ _loadMetallicRoughnessTexture(tagData: InstanceData): Promise<void>;
88
60
  setQRotArr(tagData: InstanceData, tagDataIndex: number, qRot: Quat): void;
89
61
  setVisibility(tagData: InstanceData, tagDataIndex: number, visibility: boolean): void;
90
- setPositionArr(tagData: InstanceData, tagDataIndex: number, positionHigh: Vec3, positionLow: Vec3): void;
62
+ setRTCPositionArr(tagData: InstanceData, tagDataIndex: number, rtcPositionHigh: Vec3, rtcPositionLow: Vec3): void;
91
63
  setRgbaArr(tagData: InstanceData, tagDataIndex: number, rgba: Vec4): void;
92
64
  setPickingColorArr(tagData: InstanceData, tagDataIndex: number, color: Vec3): void;
93
65
  setScaleArr(tagData: InstanceData, tagDataIndex: number, scale: Vec3): void;
94
66
  setTranslateArr(tagData: InstanceData, tagDataIndex: number, translate: Vec3): void;
67
+ setLocalPositionArr(tagData: InstanceData, tagDataIndex: number, localPosition: Vec3): void;
95
68
  protected _updateTag(dataTag: InstanceData): void;
96
69
  update(): void;
97
70
  _removeAll(): void;
98
71
  clear(): void;
72
+ getRTCPosition(pos: Vec3, rtcPositionHigh: Vec3, rtcPositionLow: Vec3): void;
73
+ setRelativeCenter(c: Vec3): void;
74
+ protected _updateRTCEyePosition(): void;
99
75
  draw(): void;
76
+ drawTransparent(): void;
100
77
  add(geoObject: GeoObject): void;
101
78
  remove(geoObject: GeoObject): void;
102
79
  _clearDataTagQueue(): void;
103
80
  _removeGeoObject(geoObject: GeoObject): void;
104
81
  }
105
- export { GeoObjectHandler, InstanceData };
@@ -0,0 +1,76 @@
1
+ import { GeoObject } from "./GeoObject";
2
+ import { WebGLBufferExt, WebGLTextureExt } from "../webgl/Handler";
3
+ import { TypedArray } from "../utils/shared";
4
+ import { Program } from "../webgl/Program";
5
+ import { GeoObjectHandler } from "./GeoObjectHandler";
6
+ export declare class InstanceData {
7
+ isFree: boolean;
8
+ _geoObjectHandler: GeoObjectHandler;
9
+ geoObjects: GeoObject[];
10
+ numInstances: number;
11
+ _colorTexture: WebGLTextureExt | null;
12
+ _normalTexture: WebGLTextureExt | null;
13
+ _metallicRoughnessTexture: WebGLTextureExt | null;
14
+ _colorTextureSrc: string | null;
15
+ _normalTextureSrc: string | null;
16
+ _metallicRoughnessTextureSrc: string | null;
17
+ _objectSrc?: string;
18
+ _sizeArr: number[] | TypedArray;
19
+ _translateArr: number[] | TypedArray;
20
+ _vertexArr: number[] | TypedArray;
21
+ _rtcPositionHighArr: number[] | TypedArray;
22
+ _rtcPositionLowArr: number[] | TypedArray;
23
+ _qRotArr: number[] | TypedArray;
24
+ _rgbaArr: number[] | TypedArray;
25
+ _normalsArr: number[] | TypedArray;
26
+ _indicesArr: number[] | TypedArray;
27
+ _pickingColorArr: number[] | TypedArray;
28
+ _visibleArr: number[] | TypedArray;
29
+ _texCoordArr: number[] | TypedArray;
30
+ _localPositionArr: number[] | TypedArray;
31
+ _sizeBuffer: WebGLBufferExt | null;
32
+ _translateBuffer: WebGLBufferExt | null;
33
+ _vertexBuffer: WebGLBufferExt | null;
34
+ _rtcPositionHighBuffer: WebGLBufferExt | null;
35
+ _rtcPositionLowBuffer: WebGLBufferExt | null;
36
+ _qRotBuffer: WebGLBufferExt | null;
37
+ _rgbaBuffer: WebGLBufferExt | null;
38
+ _normalsBuffer: WebGLBufferExt | null;
39
+ _indicesBuffer: WebGLBufferExt | null;
40
+ _pickingColorBuffer: WebGLBufferExt | null;
41
+ _visibleBuffer: WebGLBufferExt | null;
42
+ _texCoordBuffer: WebGLBufferExt | null;
43
+ _localPositionBuffer: WebGLBufferExt | null;
44
+ _buffersUpdateCallbacks: Function[];
45
+ _changedBuffers: boolean[];
46
+ _materialParams: Float32Array;
47
+ _materialShininess: number;
48
+ constructor(geoObjectHandler: GeoObjectHandler);
49
+ setMaterialAmbient(r: number, g: number, b: number): void;
50
+ setMaterialDiffuse(r: number, g: number, b: number): void;
51
+ setMaterialSpecular(r: number, g: number, b: number): void;
52
+ setMaterialShininess(shininess: number): void;
53
+ setMaterialParams(ambient: Float32Array, diffuse: Float32Array, specular: Float32Array, shininess: number): void;
54
+ drawOpaque(p: Program): void;
55
+ drawTransparent(p: Program): void;
56
+ protected _drawElementsInstanced(p: Program): void;
57
+ createColorTexture(image: HTMLCanvasElement | ImageBitmap | ImageData | HTMLImageElement): void;
58
+ createNormalTexture(image: HTMLCanvasElement | ImageBitmap | ImageData | HTMLImageElement): void;
59
+ createMetallicRoughnessTexture(image: HTMLCanvasElement | ImageBitmap | ImageData | HTMLImageElement): void;
60
+ clear(): void;
61
+ _deleteBuffers(): void;
62
+ createVertexBuffer(): void;
63
+ createVisibleBuffer(): void;
64
+ createSizeBuffer(): void;
65
+ createTranslateBuffer(): void;
66
+ createLocalPositionBuffer(): void;
67
+ createTexCoordBuffer(): void;
68
+ createRTCPositionBuffer(): void;
69
+ createRgbaBuffer(): void;
70
+ createQRotBuffer(): void;
71
+ createNormalsBuffer(): void;
72
+ createIndicesBuffer(): void;
73
+ createPickingColorBuffer(): void;
74
+ refresh(): void;
75
+ update(): void;
76
+ }
@@ -26,6 +26,8 @@ export interface IPolylineParams {
26
26
  pathColors?: SegmentPathColor[];
27
27
  path3v?: SegmentPath3vExt[];
28
28
  pathLonLat?: SegmentPathLonLatExt[];
29
+ visibleSpherePosition?: Cartesian;
30
+ visibleSphereRadius?: number;
29
31
  }
30
32
  /**
31
33
  * Polyline object.
@@ -128,23 +130,23 @@ declare class Polyline {
128
130
  _handlerIndex: number;
129
131
  protected _buffersUpdateCallbacks: Function[];
130
132
  protected _changedBuffers: boolean[];
133
+ protected _visibleSphere: Float32Array;
134
+ __doubleToTwoFloats: (pos: Vec3, highPos: Vec3, lowPos: Vec3) => void;
131
135
  constructor(options?: IPolylineParams);
132
136
  /**
133
137
  * Appends to the line array new cartesian coordinates line data.
134
- * @static
135
138
  */
136
- static appendLineData3v(path3v: SegmentPath3vExt[], pathColors: SegmentPathColor[], defaultColor: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid, outTransformedPathLonLat: SegmentPathLonLatExt[], outPath3v: SegmentPath3vExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent, outColors: number[]): void;
139
+ protected __appendLineData3v(path3v: SegmentPath3vExt[], pathColors: SegmentPathColor[], defaultColor: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid, outTransformedPathLonLat: SegmentPathLonLatExt[], outPath3v: SegmentPath3vExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent, outColors: number[]): void;
137
140
  /**
138
141
  * Appends to the line new cartesian coordinates point data.
139
- * @static
140
142
  */
141
- static appendPoint3v(path3v: SegmentPath3vExt[], point3v: Vec3, pathColors: SegmentPathColor[], color: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outColors: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid | null, outTransformedPathLonLat: SegmentPathLonLatExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent): void;
143
+ protected __appendPoint3v(path3v: SegmentPath3vExt[], point3v: Vec3, pathColors: SegmentPathColor[], color: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outColors: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid | null, outTransformedPathLonLat: SegmentPathLonLatExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent): void;
142
144
  static setPathColors(pathLonLat: SegmentPathLonLatExt[], pathColors: SegmentPathColor[], defaultColor: NumberArray4, outColors: number[]): void;
143
145
  /**
144
146
  * Appends to the line array new geodetic coordinates line data.
145
147
  * @static
146
148
  */
147
- static appendLineDataLonLat(pathLonLat: SegmentPathLonLatExt[], pathColors: SegmentPathColor[], defaultColor: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid, outTransformedPathCartesian: SegmentPath3vExt[], outPathLonLat: SegmentPathLonLatExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent, outColors: number[]): void;
149
+ protected __appendLineDataLonLat(pathLonLat: SegmentPathLonLatExt[], pathColors: SegmentPathColor[], defaultColor: NumberArray4, isClosed: boolean, outVerticesHigh: number[], outVerticesLow: number[], outOrders: number[], outIndexes: number[], ellipsoid: Ellipsoid, outTransformedPathCartesian: SegmentPath3vExt[], outPathLonLat: SegmentPathLonLatExt[], outTransformedPathMerc: LonLat[][], outExtent: Extent, outColors: number[]): void;
148
150
  /**
149
151
  * Sets polyline path with cartesian coordinates.
150
152
  * @protected
@@ -226,6 +228,12 @@ declare class Polyline {
226
228
  * @param {number} opacity - Opacity.
227
229
  */
228
230
  setOpacity(opacity: number): void;
231
+ /**
232
+ * Gets polyline opacity.
233
+ * @public
234
+ * @param {number} opacity - Opacity.
235
+ */
236
+ getOpacity(): number;
229
237
  /**
230
238
  * Sets Polyline thickness in screen pixels.
231
239
  * @public
@@ -298,13 +306,16 @@ declare class Polyline {
298
306
  * @param {string} htmlColor- HTML color
299
307
  */
300
308
  setColorHTML(htmlColor: string): void;
309
+ setPathLonLatFast(pathLonLat: SegmentPathLonLatExt[], pathColors?: SegmentPathColor[]): void;
310
+ setPath3vFast(path3v: SegmentPath3vExt[], pathColors?: SegmentPathColor[]): void;
301
311
  /**
302
312
  * Sets polyline geodetic coordinates.
303
313
  * @public
304
314
  * @param {SegmentPathLonLat[]} pathLonLat - Polyline path cartesian coordinates.
305
315
  * @param {Boolean} [forceEqual=false] - OPTIMIZATION FLAG: Makes assigning faster for size equal coordinates array.
306
316
  */
307
- setPathLonLat(pathLonLat: SegmentPathLonLatExt[], forceEqual?: boolean): void;
317
+ setPathLonLat(pathLonLat: SegmentPathLonLatExt[], pathColors?: SegmentPathColor[], forceEqual?: boolean): void;
318
+ getSize(index?: number): number;
308
319
  /**
309
320
  * Sets Polyline cartesian coordinates.
310
321
  * @public
@@ -341,5 +352,7 @@ declare class Polyline {
341
352
  */
342
353
  protected _createIndexBuffer(): void;
343
354
  protected _createColorsBuffer(): void;
355
+ setVisibleSphere(p: Vec3, r: number): void;
356
+ updateRTCPosition(): void;
344
357
  }
345
358
  export { Polyline };
@@ -2,6 +2,7 @@ import { EntityCollection } from "./EntityCollection";
2
2
  import { Polyline } from "./Polyline";
3
3
  import { Renderer } from "../renderer/Renderer";
4
4
  import { RenderNode } from "../scene/RenderNode";
5
+ import { Vec3 } from "../math/Vec3";
5
6
  declare class PolylineHandler {
6
7
  static __counter__: number;
7
8
  protected __id: number;
@@ -9,6 +10,9 @@ declare class PolylineHandler {
9
10
  pickingEnabled: boolean;
10
11
  protected _renderer: Renderer | null;
11
12
  protected _polylines: Polyline[];
13
+ _relativeCenter: Vec3;
14
+ _rtcEyePositionHigh: Float32Array;
15
+ _rtcEyePositionLow: Float32Array;
12
16
  constructor(entityCollection: EntityCollection);
13
17
  protected _initProgram(): void;
14
18
  setRenderNode(renderNode: RenderNode): void;
@@ -18,5 +22,8 @@ declare class PolylineHandler {
18
22
  draw(): void;
19
23
  drawPicking(): void;
20
24
  clear(): void;
25
+ getRTCPosition(pos: Vec3, rtcPositionHigh: Vec3, rtcPositionLow: Vec3): void;
26
+ setRelativeCenter(c: Vec3): void;
27
+ protected _updateRTCEyePosition(): void;
21
28
  }
22
29
  export { PolylineHandler };
@@ -30,4 +30,5 @@ 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, 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 };
33
+ import { MoveAxisEntity } from "./control/geoObjectEditor/MoveAxisEntity";
34
+ 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, MoveAxisEntity, };
@@ -1,6 +1,7 @@
1
1
  export type MouseEventExt = MouseEvent & {
2
2
  wheelDelta?: number;
3
3
  deltaY?: number;
4
+ isTouchPad?: boolean;
4
5
  };
5
6
  export interface MouseHandlerEvent {
6
7
  button?: number;
@@ -19,6 +19,7 @@ export interface IVectorParams extends ILayerParams {
19
19
  scaleByDistance?: NumberArray3;
20
20
  labelMaxLetters?: number;
21
21
  useLighting?: boolean;
22
+ depthOrder?: number;
22
23
  }
23
24
  type VectorEventsList = [
24
25
  "draw",
@@ -61,6 +62,7 @@ export type VectorEventsType = EventsHandler<VectorEventsList> & EventsHandler<L
61
62
  */
62
63
  declare class Vector extends Layer {
63
64
  events: VectorEventsType;
65
+ protected _depthOrder: number;
64
66
  /**
65
67
  * Entities collection.
66
68
  * @protected
@@ -113,6 +115,8 @@ declare class Vector extends Layer {
113
115
  protected _labelMaxLetters: number;
114
116
  protected _useLighting: boolean;
115
117
  constructor(name?: string | null, options?: IVectorParams);
118
+ get depthOrder(): number;
119
+ set depthOrder(d: number);
116
120
  get useLighting(): boolean;
117
121
  set useLighting(f: boolean);
118
122
  get labelMaxLetters(): number;