@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
@@ -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
+ }
@@ -0,0 +1,347 @@
1
+ import { makeArrayTyped } from "../utils/shared";
2
+ import { VERTEX_BUFFER, RTC_POSITION_BUFFER, RGBA_BUFFER, NORMALS_BUFFER, INDEX_BUFFER, QROT_BUFFER, SIZE_BUFFER, PICKINGCOLOR_BUFFER, VISIBLE_BUFFER, TEXCOORD_BUFFER, TRANSLATE_BUFFER, LOCALPOSITION_BUFFER } from "./GeoObjectHandler";
3
+ const AMBIENT_R = 0;
4
+ const AMBIENT_G = 1;
5
+ const AMBIENT_B = 2;
6
+ const DIFFUSE_R = 3;
7
+ const DIFFUSE_G = 4;
8
+ const DIFFUSE_B = 5;
9
+ const SPECULAR_R = 6;
10
+ const SPECULAR_G = 7;
11
+ const SPECULAR_B = 8;
12
+ export class InstanceData {
13
+ constructor(geoObjectHandler) {
14
+ this.isFree = true;
15
+ this._geoObjectHandler = geoObjectHandler;
16
+ this.geoObjects = [];
17
+ this.numInstances = 0;
18
+ this._colorTexture = null;
19
+ this._colorTextureSrc = null;
20
+ this._normalTexture = null;
21
+ this._normalTextureSrc = null;
22
+ this._metallicRoughnessTexture = null;
23
+ this._metallicRoughnessTextureSrc = null;
24
+ this._sizeArr = [];
25
+ this._translateArr = [];
26
+ this._vertexArr = [];
27
+ this._rtcPositionHighArr = [];
28
+ this._rtcPositionLowArr = [];
29
+ this._qRotArr = [];
30
+ this._rgbaArr = [];
31
+ this._normalsArr = [];
32
+ this._indicesArr = [];
33
+ this._pickingColorArr = [];
34
+ this._visibleArr = [];
35
+ this._texCoordArr = [];
36
+ this._localPositionArr = [];
37
+ this._sizeBuffer = null;
38
+ this._translateBuffer = null;
39
+ this._vertexBuffer = null;
40
+ this._rtcPositionHighBuffer = null;
41
+ this._rtcPositionLowBuffer = null;
42
+ this._qRotBuffer = null;
43
+ this._rgbaBuffer = null;
44
+ this._normalsBuffer = null;
45
+ this._indicesBuffer = null;
46
+ this._pickingColorBuffer = null;
47
+ this._visibleBuffer = null;
48
+ this._texCoordBuffer = null;
49
+ this._localPositionBuffer = null;
50
+ this._materialParams = new Float32Array(9);
51
+ this._materialShininess = 0;
52
+ this._buffersUpdateCallbacks = [];
53
+ this._buffersUpdateCallbacks[PICKINGCOLOR_BUFFER] = this.createPickingColorBuffer;
54
+ this._buffersUpdateCallbacks[NORMALS_BUFFER] = this.createNormalsBuffer;
55
+ this._buffersUpdateCallbacks[RGBA_BUFFER] = this.createRgbaBuffer;
56
+ this._buffersUpdateCallbacks[INDEX_BUFFER] = this.createIndicesBuffer;
57
+ this._buffersUpdateCallbacks[VERTEX_BUFFER] = this.createVertexBuffer;
58
+ this._buffersUpdateCallbacks[SIZE_BUFFER] = this.createSizeBuffer;
59
+ this._buffersUpdateCallbacks[VISIBLE_BUFFER] = this.createVisibleBuffer;
60
+ this._buffersUpdateCallbacks[TEXCOORD_BUFFER] = this.createTexCoordBuffer;
61
+ this._buffersUpdateCallbacks[QROT_BUFFER] = this.createQRotBuffer;
62
+ this._buffersUpdateCallbacks[TRANSLATE_BUFFER] = this.createTranslateBuffer;
63
+ this._buffersUpdateCallbacks[RTC_POSITION_BUFFER] = this.createRTCPositionBuffer;
64
+ this._buffersUpdateCallbacks[LOCALPOSITION_BUFFER] = this.createLocalPositionBuffer;
65
+ this._changedBuffers = new Array(this._buffersUpdateCallbacks.length);
66
+ }
67
+ setMaterialAmbient(r, g, b) {
68
+ this._materialParams[AMBIENT_R] = r;
69
+ this._materialParams[AMBIENT_G] = g;
70
+ this._materialParams[AMBIENT_B] = b;
71
+ }
72
+ setMaterialDiffuse(r, g, b) {
73
+ this._materialParams[DIFFUSE_R] = r;
74
+ this._materialParams[DIFFUSE_G] = g;
75
+ this._materialParams[DIFFUSE_B] = b;
76
+ }
77
+ setMaterialSpecular(r, g, b) {
78
+ this._materialParams[SPECULAR_R] = r;
79
+ this._materialParams[SPECULAR_G] = g;
80
+ this._materialParams[SPECULAR_B] = b;
81
+ }
82
+ setMaterialShininess(shininess) {
83
+ this._materialShininess = shininess;
84
+ }
85
+ setMaterialParams(ambient, diffuse, specular, shininess) {
86
+ this.setMaterialAmbient(ambient[0], ambient[1], ambient[2]);
87
+ this.setMaterialDiffuse(diffuse[0], diffuse[1], diffuse[2]);
88
+ this.setMaterialSpecular(specular[0], specular[1], specular[2]);
89
+ this.setMaterialShininess(shininess);
90
+ }
91
+ //
92
+ // Instance individual data
93
+ //
94
+ drawOpaque(p) {
95
+ let gl = p.gl, u = p.uniforms, a = p.attributes;
96
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._qRotBuffer);
97
+ gl.vertexAttribPointer(a.qRot, this._qRotBuffer.itemSize, gl.FLOAT, false, 0, 0);
98
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._sizeBuffer);
99
+ gl.vertexAttribPointer(a.aScale, this._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
100
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._translateBuffer);
101
+ gl.vertexAttribPointer(a.aTranslate, this._translateBuffer.itemSize, gl.FLOAT, false, 0, 0);
102
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._localPositionBuffer);
103
+ gl.vertexAttribPointer(a.aLocalPosition, this._localPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
104
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._visibleBuffer);
105
+ gl.vertexAttribPointer(a.aDispose, this._visibleBuffer.itemSize, gl.FLOAT, false, 0, 0);
106
+ gl.uniform1f(u.uUseTexture, this._colorTexture ? 1 : 0);
107
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer);
108
+ gl.vertexAttribPointer(a.aColor, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0);
109
+ gl.uniform3fv(u.materialParams, this._materialParams);
110
+ gl.uniform1f(u.materialShininess, this._materialShininess);
111
+ this._drawElementsInstanced(p);
112
+ }
113
+ //
114
+ // Instance individual data
115
+ //
116
+ drawTransparent(p) {
117
+ let gl = p.gl, u = p.uniforms, a = p.attributes;
118
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._qRotBuffer);
119
+ gl.vertexAttribPointer(a.qRot, this._qRotBuffer.itemSize, gl.FLOAT, false, 0, 0);
120
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._sizeBuffer);
121
+ gl.vertexAttribPointer(a.aScale, this._sizeBuffer.itemSize, gl.FLOAT, false, 0, 0);
122
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._translateBuffer);
123
+ gl.vertexAttribPointer(a.aTranslate, this._translateBuffer.itemSize, gl.FLOAT, false, 0, 0);
124
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._localPositionBuffer);
125
+ gl.vertexAttribPointer(a.aLocalPosition, this._localPositionBuffer.itemSize, gl.FLOAT, false, 0, 0);
126
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._visibleBuffer);
127
+ gl.vertexAttribPointer(a.aDispose, this._visibleBuffer.itemSize, gl.FLOAT, false, 0, 0);
128
+ gl.uniform1f(u.uUseTexture, this._colorTexture ? 1 : 0);
129
+ gl.uniform3fv(u.materialParams, this._materialParams);
130
+ gl.uniform1f(u.materialShininess, this._materialShininess);
131
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._rgbaBuffer);
132
+ gl.vertexAttribPointer(a.aColor, this._rgbaBuffer.itemSize, gl.FLOAT, false, 0, 0);
133
+ this._drawElementsInstanced(p);
134
+ }
135
+ //
136
+ // Instance common data(could be in VAO)
137
+ //
138
+ _drawElementsInstanced(p) {
139
+ let gl = p.gl, u = p.uniforms, a = p.attributes;
140
+ let r = this._geoObjectHandler._renderer;
141
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._rtcPositionHighBuffer);
142
+ gl.vertexAttribPointer(a.aRTCPositionHigh, this._rtcPositionHighBuffer.itemSize, gl.FLOAT, false, 0, 0);
143
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._rtcPositionLowBuffer);
144
+ gl.vertexAttribPointer(a.aRTCPositionLow, this._rtcPositionLowBuffer.itemSize, gl.FLOAT, false, 0, 0);
145
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._normalsBuffer);
146
+ gl.vertexAttribPointer(a.aVertexNormal, this._normalsBuffer.itemSize, gl.FLOAT, false, 0, 0);
147
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
148
+ gl.vertexAttribPointer(a.aVertexPosition, this._vertexBuffer.itemSize, gl.FLOAT, false, 0, 0);
149
+ gl.activeTexture(gl.TEXTURE0);
150
+ gl.bindTexture(gl.TEXTURE_2D, this._colorTexture || r.handler.defaultTexture);
151
+ gl.uniform1i(u.uTexture, 0);
152
+ gl.bindBuffer(gl.ARRAY_BUFFER, this._texCoordBuffer);
153
+ gl.vertexAttribPointer(a.aTexCoord, this._texCoordBuffer.itemSize, gl.FLOAT, false, 0, 0);
154
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indicesBuffer);
155
+ p.drawElementsInstanced(gl.TRIANGLES, this._indicesBuffer.numItems, gl.UNSIGNED_INT, 0, this.numInstances);
156
+ }
157
+ createColorTexture(image) {
158
+ if (this._geoObjectHandler && this._geoObjectHandler._renderer) {
159
+ let h = this._geoObjectHandler._renderer.handler;
160
+ this._colorTexture = h.createTextureDefault(image, null, h.gl.REPEAT);
161
+ }
162
+ }
163
+ createNormalTexture(image) {
164
+ if (this._geoObjectHandler && this._geoObjectHandler._renderer) {
165
+ let h = this._geoObjectHandler._renderer.handler;
166
+ this._normalTexture = h.createTextureDefault(image, null, h.gl.REPEAT);
167
+ }
168
+ }
169
+ createMetallicRoughnessTexture(image) {
170
+ if (this._geoObjectHandler && this._geoObjectHandler._renderer) {
171
+ let h = this._geoObjectHandler._renderer.handler;
172
+ this._metallicRoughnessTexture = h.createTextureDefault(image, null, h.gl.REPEAT);
173
+ }
174
+ }
175
+ clear() {
176
+ this.numInstances = 0;
177
+ this.geoObjects = [];
178
+ this._sizeArr = [];
179
+ this._translateArr = [];
180
+ this._vertexArr = [];
181
+ this._rtcPositionHighArr = [];
182
+ this._rtcPositionLowArr = [];
183
+ this._qRotArr = [];
184
+ this._rgbaArr = [];
185
+ this._normalsArr = [];
186
+ this._indicesArr = [];
187
+ this._pickingColorArr = [];
188
+ this._visibleArr = [];
189
+ this._texCoordArr = [];
190
+ this._localPositionArr = [];
191
+ this._deleteBuffers();
192
+ this.isFree = false;
193
+ //this._geoObjectHandler = null;
194
+ }
195
+ _deleteBuffers() {
196
+ if (this._geoObjectHandler && this._geoObjectHandler._renderer) {
197
+ let h = this._geoObjectHandler._renderer.handler, gl = h.gl;
198
+ h.deleteTexture(this._colorTexture);
199
+ h.deleteTexture(this._normalTexture);
200
+ h.deleteTexture(this._metallicRoughnessTexture);
201
+ this._colorTexture = null;
202
+ this._normalTexture = null;
203
+ this._metallicRoughnessTexture = null;
204
+ gl.deleteBuffer(this._sizeBuffer);
205
+ gl.deleteBuffer(this._translateBuffer);
206
+ gl.deleteBuffer(this._vertexBuffer);
207
+ gl.deleteBuffer(this._rtcPositionHighBuffer);
208
+ gl.deleteBuffer(this._rtcPositionLowBuffer);
209
+ gl.deleteBuffer(this._qRotBuffer);
210
+ gl.deleteBuffer(this._rgbaBuffer);
211
+ gl.deleteBuffer(this._normalsBuffer);
212
+ gl.deleteBuffer(this._indicesBuffer);
213
+ gl.deleteBuffer(this._pickingColorBuffer);
214
+ gl.deleteBuffer(this._visibleBuffer);
215
+ gl.deleteBuffer(this._texCoordBuffer);
216
+ gl.deleteBuffer(this._localPositionBuffer);
217
+ }
218
+ this._sizeBuffer = null;
219
+ this._translateBuffer = null;
220
+ this._vertexBuffer = null;
221
+ this._rtcPositionHighBuffer = null;
222
+ this._rtcPositionLowBuffer = null;
223
+ this._qRotBuffer = null;
224
+ this._rgbaBuffer = null;
225
+ this._normalsBuffer = null;
226
+ this._indicesBuffer = null;
227
+ this._pickingColorBuffer = null;
228
+ this._visibleBuffer = null;
229
+ this._texCoordBuffer = null;
230
+ this._localPositionBuffer = null;
231
+ }
232
+ createVertexBuffer() {
233
+ const h = this._geoObjectHandler._renderer.handler;
234
+ h.gl.deleteBuffer(this._vertexBuffer);
235
+ this._vertexArr = makeArrayTyped(this._vertexArr);
236
+ this._vertexBuffer = h.createArrayBuffer(this._vertexArr, 3, this._vertexArr.length / 3);
237
+ }
238
+ createVisibleBuffer() {
239
+ const h = this._geoObjectHandler._renderer.handler, numItems = this._visibleArr.length;
240
+ if (!this._visibleBuffer || this._visibleBuffer.numItems !== numItems) {
241
+ h.gl.deleteBuffer(this._visibleBuffer);
242
+ this._visibleBuffer = h.createStreamArrayBuffer(1, numItems);
243
+ }
244
+ this._visibleArr = makeArrayTyped(this._visibleArr);
245
+ h.setStreamArrayBuffer(this._visibleBuffer, this._visibleArr);
246
+ }
247
+ createSizeBuffer() {
248
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._sizeArr.length / 3;
249
+ if (!this._sizeBuffer || this._sizeBuffer.numItems !== numItems) {
250
+ h.gl.deleteBuffer(this._sizeBuffer);
251
+ this._sizeBuffer = h.createStreamArrayBuffer(3, numItems);
252
+ }
253
+ this._sizeArr = makeArrayTyped(this._sizeArr);
254
+ h.setStreamArrayBuffer(this._sizeBuffer, this._sizeArr);
255
+ }
256
+ createTranslateBuffer() {
257
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._translateArr.length / 3;
258
+ if (!this._translateBuffer || this._translateBuffer.numItems !== numItems) {
259
+ h.gl.deleteBuffer(this._translateBuffer);
260
+ this._translateBuffer = h.createStreamArrayBuffer(3, numItems);
261
+ }
262
+ this._translateArr = makeArrayTyped(this._translateArr);
263
+ h.setStreamArrayBuffer(this._translateBuffer, this._translateArr);
264
+ }
265
+ createLocalPositionBuffer() {
266
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._localPositionArr.length / 3;
267
+ if (!this._localPositionBuffer || this._localPositionBuffer.numItems !== numItems) {
268
+ h.gl.deleteBuffer(this._localPositionBuffer);
269
+ this._localPositionBuffer = h.createStreamArrayBuffer(3, numItems);
270
+ }
271
+ this._localPositionArr = makeArrayTyped(this._localPositionArr);
272
+ h.setStreamArrayBuffer(this._localPositionBuffer, this._localPositionArr);
273
+ }
274
+ createTexCoordBuffer() {
275
+ const h = this._geoObjectHandler._renderer.handler;
276
+ h.gl.deleteBuffer(this._texCoordBuffer);
277
+ this._texCoordArr = makeArrayTyped(this._texCoordArr);
278
+ this._texCoordBuffer = h.createArrayBuffer(this._texCoordArr, 2, this._texCoordArr.length / 2);
279
+ }
280
+ createRTCPositionBuffer() {
281
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._rtcPositionHighArr.length / 3;
282
+ if (!this._rtcPositionHighBuffer || this._rtcPositionHighBuffer.numItems !== numItems) {
283
+ h.gl.deleteBuffer(this._rtcPositionHighBuffer);
284
+ h.gl.deleteBuffer(this._rtcPositionLowBuffer);
285
+ this._rtcPositionHighBuffer = h.createStreamArrayBuffer(3, numItems);
286
+ this._rtcPositionLowBuffer = h.createStreamArrayBuffer(3, numItems);
287
+ }
288
+ this._rtcPositionHighArr = makeArrayTyped(this._rtcPositionHighArr);
289
+ this._rtcPositionLowArr = makeArrayTyped(this._rtcPositionLowArr);
290
+ h.setStreamArrayBuffer(this._rtcPositionHighBuffer, this._rtcPositionHighArr);
291
+ h.setStreamArrayBuffer(this._rtcPositionLowBuffer, this._rtcPositionLowArr);
292
+ }
293
+ createRgbaBuffer() {
294
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._rgbaArr.length / 4;
295
+ if (!this._rgbaBuffer || this._rgbaBuffer.numItems !== numItems) {
296
+ h.gl.deleteBuffer(this._rgbaBuffer);
297
+ this._rgbaBuffer = h.createStreamArrayBuffer(4, numItems);
298
+ }
299
+ this._rgbaArr = makeArrayTyped(this._rgbaArr);
300
+ h.setStreamArrayBuffer(this._rgbaBuffer, this._rgbaArr);
301
+ }
302
+ createQRotBuffer() {
303
+ let h = this._geoObjectHandler._renderer.handler, numItems = this._qRotArr.length / 4;
304
+ if (!this._qRotBuffer || this._qRotBuffer.numItems !== numItems) {
305
+ h.gl.deleteBuffer(this._qRotBuffer);
306
+ this._qRotBuffer = h.createStreamArrayBuffer(4, numItems);
307
+ }
308
+ this._qRotArr = makeArrayTyped(this._qRotArr);
309
+ h.setStreamArrayBuffer(this._qRotBuffer, this._qRotArr);
310
+ }
311
+ createNormalsBuffer() {
312
+ const h = this._geoObjectHandler._renderer.handler;
313
+ h.gl.deleteBuffer(this._normalsBuffer);
314
+ this._normalsArr = makeArrayTyped(this._normalsArr);
315
+ this._normalsBuffer = h.createArrayBuffer(this._normalsArr, 3, this._normalsArr.length / 3);
316
+ }
317
+ createIndicesBuffer() {
318
+ const h = this._geoObjectHandler._renderer.handler;
319
+ h.gl.deleteBuffer(this._indicesBuffer);
320
+ this._indicesArr = makeArrayTyped(this._indicesArr, Uint32Array);
321
+ this._indicesBuffer = h.createElementArrayBuffer(this._indicesArr, 1, this._indicesArr.length);
322
+ }
323
+ createPickingColorBuffer() {
324
+ const h = this._geoObjectHandler._renderer.handler;
325
+ h.gl.deleteBuffer(this._pickingColorBuffer);
326
+ this._pickingColorArr = makeArrayTyped(this._pickingColorArr);
327
+ this._pickingColorBuffer = h.createArrayBuffer(this._pickingColorArr, 3, this._pickingColorArr.length / 3);
328
+ }
329
+ refresh() {
330
+ let i = this._changedBuffers.length;
331
+ while (i--) {
332
+ this._changedBuffers[i] = true;
333
+ }
334
+ }
335
+ update() {
336
+ if (this._geoObjectHandler._renderer) {
337
+ let i = this._changedBuffers.length;
338
+ while (i--) {
339
+ if (this._changedBuffers[i]) {
340
+ this._buffersUpdateCallbacks[i].call(this);
341
+ this._changedBuffers[i] = false;
342
+ }
343
+ }
344
+ this.isFree = true;
345
+ }
346
+ }
347
+ }
@@ -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 };