@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,13 +1,29 @@
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} [pitch] - Rotation around X-axis in degrees.
17
+ * @property {number} [yaw] - Rotation around Y-axis in degrees.
18
+ * @property {number} [roll] - Rotation around Z-axis in degrees.
19
+ * @property {number | Vec3 | NumberArray3} [scale] - Scale of the object.
20
+ * @property {Vec3 | NumberArray3} [translate] - Translation offset.
21
+ * @property {Vec4 | NumberArray4 | string} [color] - RGBA color or HTML color string.
22
+ * @property {boolean} [visibility] - Visibility flag.
23
+ */
7
24
  export interface IGeoObjectParams {
8
25
  object3d?: Object3d;
9
26
  objSrc?: string;
10
- textureSrc?: string;
11
27
  tag?: string;
12
28
  position?: Vec3 | NumberArray3;
13
29
  pitch?: number;
@@ -19,16 +35,27 @@ export interface IGeoObjectParams {
19
35
  visibility?: boolean;
20
36
  }
21
37
  /**
38
+ * Represents 3D object on the the globe or 3d space
22
39
  * @class
23
- * @param {Object} options - Geo object parameters:
24
- * @param {Vec3} [options.position] - Geo object position.
40
+ * @param {IGeoObjectParams} options - Geo object parameters:
41
+ * @param {Object3d} [options.object3d] - 3D object associated with the geo object.
42
+ * @param {string} [options.objSrc] - Source url of the 3D object.
43
+ * @param {string} [options.tag] - Unique instancing drawing identifier tag.
44
+ * @param {Vec3 | NumberArray3} [options.position] - Position in Cartesian coordinates.
45
+ * @param {number} [options.pitch=0] - Rotation around X-axis in degrees.
46
+ * @param {number} [options.yaw=0] - Rotation around Y-axis in degrees.
47
+ * @param {number} [options.roll=0] - Rotation around Z-axis in degrees.
48
+ * @param {number | Vec3 | NumberArray3} [options.scale=1] - Scale of the object.
49
+ * @param {Vec3 | NumberArray3} [options.translate] - Translation offset.
50
+ * @param {Vec4 | NumberArray4 | string} [options.color] - RGBA color or HTML color string.
51
+ * @param {boolean} [options.visibility=true] - Visibility flag.
25
52
  *
26
53
  * @todo: GeoObject and GeoObjectHandler provides instanced objects only.
27
54
  * It would be nice if it could provide not instanced rendering loop too.
28
55
  */
29
56
  declare class GeoObject {
30
57
  protected _tag: string;
31
- instanced: boolean;
58
+ static __counter__: number;
32
59
  /**
33
60
  * Entity instance that holds this geo object.
34
61
  * @public
@@ -41,22 +68,18 @@ declare class GeoObject {
41
68
  * @type {Vec3}
42
69
  */
43
70
  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;
71
+ _rtcPositionHigh: Vec3;
72
+ _rtcPositionLow: Vec3;
52
73
  protected _scale: Vec3;
53
74
  protected _translate: Vec3;
75
+ protected _localPosition: Vec3;
54
76
  /**
55
77
  * RGBA color.
56
78
  * @public
57
79
  * @type {Vec4}
58
80
  */
59
81
  _color: Vec4;
82
+ protected _qFrame: Quat;
60
83
  _qRot: Quat;
61
84
  protected _direction: Vec3;
62
85
  _handler: GeoObjectHandler | null;
@@ -64,35 +87,67 @@ declare class GeoObject {
64
87
  _tagData: InstanceData | null;
65
88
  _tagDataIndex: number;
66
89
  protected _object3d: Object3d;
67
- protected _visibility: boolean;
68
- protected _qNorthFrame: Quat;
69
- private _textureSrc?;
70
90
  _objectSrc?: string;
91
+ protected _visibility: boolean;
71
92
  protected _children: GeoObject[];
72
93
  constructor(options: IGeoObjectParams);
94
+ /**
95
+ * Gets the unique tag of the geo object.
96
+ * @returns {string}
97
+ */
73
98
  get tag(): string;
99
+ /**
100
+ * Gets the position of the geo object.
101
+ * @public
102
+ * @returns {Vec3}
103
+ */
74
104
  getPosition(): Vec3;
75
- getPitch(): number;
76
- getYaw(): number;
77
- getRoll(): number;
105
+ /**
106
+ * Gets the 3D object associated with this geo object.
107
+ * @public
108
+ * @returns {Object3d}
109
+ */
78
110
  get object3d(): Object3d;
111
+ /**
112
+ * Gets geometry mesh vertices.
113
+ * @public
114
+ * @returns {number[]}
115
+ */
79
116
  get vertices(): number[];
117
+ /**
118
+ * Gets geometry mesh normals.
119
+ * @public
120
+ * @returns {number[]}
121
+ */
80
122
  get normals(): number[];
123
+ /**
124
+ * Gets geometry mesh texture coordinates.
125
+ * @public
126
+ * @returns {number[]}
127
+ */
81
128
  get texCoords(): number[];
82
- get indices(): number[];
83
129
  /**
84
- * Sets geo object opacity.
130
+ * Gets geometry mesh indices.
85
131
  * @public
86
- * @param {number} a - Billboard opacity.
132
+ * @returns {number[]}
133
+ */
134
+ get indices(): number[];
135
+ /**
136
+ * Sets the opacity of the geo object.
137
+ * @param {number} a - Opacity value (0 to 1).
87
138
  */
88
139
  setOpacity(a: number): void;
89
140
  /**
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.
141
+ * Gets the opacity of the geo object.
142
+ * @returns {number}
143
+ */
144
+ getOpacity(): number;
145
+ /**
146
+ * Sets the color of the geo object.
147
+ * @param {number} r - Red component.
148
+ * @param {number} g - Green component.
149
+ * @param {number} b - Blue component.
150
+ * @param {number} [a] - Alpha component.
96
151
  */
97
152
  setColor(r: number, g: number, b: number, a?: number): void;
98
153
  /**
@@ -121,31 +176,61 @@ declare class GeoObject {
121
176
  * @param {number} z - Z coordinate.
122
177
  */
123
178
  setPosition(x: number, y: number, z: number): void;
179
+ updateRTCPosition(): void;
124
180
  /**
125
181
  * Sets geo object position.
126
182
  * @public
127
183
  * @param {Vec3} position - Cartesian coordinates.
128
184
  */
129
185
  setPosition3v(position: Vec3): void;
130
- setYaw(yaw: number): void;
186
+ /**
187
+ * Sets Object3d for the object
188
+ * @param {Object3d} object
189
+ */
131
190
  setObject(object: Object3d): void;
191
+ /**
192
+ * Sets the object url source.
193
+ * @param {string} src
194
+ */
132
195
  setObjectSrc(src: string): void;
133
- setTextureSrc(src: string): void;
196
+ /**
197
+ * Sets object HTML color.
198
+ * @param {string} color
199
+ */
134
200
  setColorHTML(color: string): void;
135
201
  /**
136
- *
137
- * @param {number} pitch - Pitch in radians
202
+ * Sets scales.
203
+ * @public
204
+ * @param {number} scale
138
205
  */
139
- setPitch(pitch: number): void;
140
- setRoll(roll: number): void;
141
- setPitchYawRoll(pitch: number, yaw: number, roll: number): void;
142
206
  setScale(scale: number): void;
207
+ /**
208
+ * Sets X, Y, Z axis scales
209
+ * @public
210
+ * @param {Vec3} scale
211
+ */
143
212
  setScale3v(scale: Vec3): void;
213
+ /**
214
+ * Gets scale.
215
+ * @publci
216
+ * @returns {Vec3}
217
+ */
144
218
  getScale(): Vec3;
145
219
  setTranslate3v(translate: Vec3): void;
146
220
  getTranslate(): Vec3;
147
221
  /**
148
- * Removes geo object from handler.
222
+ * Sets local offset position.
223
+ * @param {Vec3} localPosition
224
+ */
225
+ setLocalPosition3v(localPosition: Vec3): void;
226
+ /**
227
+ * Gets local offset position.
228
+ * @public
229
+ * @returns {Vec3}
230
+ */
231
+ getLocalPosition(): Vec3;
232
+ /**
233
+ * Removes the geo object from the handler.
149
234
  * @public
150
235
  */
151
236
  remove(): void;
@@ -155,7 +240,27 @@ declare class GeoObject {
155
240
  * @param {Vec3} color - Picking color.
156
241
  */
157
242
  setPickingColor3v(color: Vec3): void;
243
+ /**
244
+ * Sets the rotation quaternion.
245
+ * @public
246
+ * @param {Quat} qRot - Rotation quaternion.
247
+ */
248
+ setRotation(qRot: Quat): void;
249
+ /**
250
+ * Returns orientation quaternion.
251
+ * @public
252
+ * @returns {Quat}
253
+ */
254
+ getRotation(): Quat;
255
+ /**
256
+ * Update object rotation
257
+ */
158
258
  updateRotation(): void;
259
+ /**
260
+ * Returns object direction
261
+ * @publcu
262
+ * @returns {Vec3}
263
+ */
159
264
  getDirection(): Vec3;
160
265
  }
161
266
  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, };
@@ -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;