@openglobus/og 0.11.5 → 0.12.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 (267) hide show
  1. package/css/og.css +5 -2
  2. package/package.json +12 -14
  3. package/src/og/Clock.js +6 -10
  4. package/src/og/Events.js +5 -7
  5. package/src/og/Extent.js +73 -32
  6. package/src/og/Globe.js +25 -10
  7. package/src/og/ImageCanvas.js +18 -15
  8. package/src/og/LonLat.js +13 -10
  9. package/src/og/Popup.js +19 -17
  10. package/src/og/QueueArray.js +3 -4
  11. package/src/og/Rectangle.js +4 -6
  12. package/src/og/Stack.js +2 -4
  13. package/src/og/ajax.js +20 -14
  14. package/src/og/astro/earth.js +21 -15
  15. package/src/og/bv/Box.js +2 -3
  16. package/src/og/bv/Sphere.js +10 -7
  17. package/src/og/camera/Camera.js +70 -79
  18. package/src/og/camera/Frustum.js +19 -12
  19. package/src/og/camera/PlanetCamera.js +33 -34
  20. package/src/og/control/CompassButton.js +1 -2
  21. package/src/og/control/Control.js +7 -9
  22. package/src/og/control/DebugInfo.js +2 -3
  23. package/src/og/control/EarthNavigation.js +26 -17
  24. package/src/og/control/KeyboardNavigation.js +9 -9
  25. package/src/og/control/LayerSwitcher.js +21 -20
  26. package/src/og/control/Lighting.js +74 -64
  27. package/src/og/control/MouseNavigation.js +30 -29
  28. package/src/og/control/MouseWheelZoomControl.js +257 -0
  29. package/src/og/control/SegmentBoundVisualization.js +5 -6
  30. package/src/og/control/ShowFps.js +12 -7
  31. package/src/og/control/SimpleNavigation.js +5 -7
  32. package/src/og/control/Sun.js +24 -14
  33. package/src/og/control/ToggleWireframe.js +3 -3
  34. package/src/og/control/TouchNavigation.js +43 -32
  35. package/src/og/control/ZoomControl.js +40 -24
  36. package/src/og/control/index.js +2 -0
  37. package/src/og/control/visibleExtent/Segment.js +1862 -0
  38. package/src/og/control/visibleExtent/VisibleExtent.js +80 -0
  39. package/src/og/control/visibleExtent/drawnode.js +751 -0
  40. package/src/og/ellipsoid/Ellipsoid.js +149 -57
  41. package/src/og/ellipsoid/wgs84.js +3 -3
  42. package/src/og/entity/BaseBillboard.js +72 -30
  43. package/src/og/entity/Billboard.js +9 -5
  44. package/src/og/entity/BillboardHandler.js +315 -62
  45. package/src/og/entity/Entity.js +742 -704
  46. package/src/og/entity/EntityCollection.js +47 -24
  47. package/src/og/entity/GeoObject.js +228 -0
  48. package/src/og/entity/GeoObjectHandler.js +895 -0
  49. package/src/og/entity/GeometryHandler.js +595 -123
  50. package/src/og/entity/Label.js +62 -30
  51. package/src/og/entity/LabelHandler.js +42 -243
  52. package/src/og/entity/LabelWorker.js +218 -0
  53. package/src/og/entity/Object3d.js +504 -0
  54. package/src/og/entity/PointCloud.js +76 -28
  55. package/src/og/entity/PointCloudHandler.js +5 -5
  56. package/src/og/entity/Ray.js +49 -16
  57. package/src/og/entity/Strip.js +72 -43
  58. package/src/og/entity/StripHandler.js +23 -23
  59. package/src/og/layer/BaseGeoImage.js +50 -19
  60. package/src/og/layer/CanvasTiles.js +16 -17
  61. package/src/og/layer/GeoImage.js +8 -16
  62. package/src/og/layer/GeoTexture2d.js +2 -10
  63. package/src/og/layer/GeoVideo.js +2 -10
  64. package/src/og/layer/KML.js +55 -33
  65. package/src/og/layer/Layer.js +24 -33
  66. package/src/og/layer/Material.js +1 -1
  67. package/src/og/layer/Vector.js +94 -48
  68. package/src/og/layer/WMS.js +33 -18
  69. package/src/og/layer/XYZ.js +24 -26
  70. package/src/og/light/LightSource.js +19 -12
  71. package/src/og/math/Mat3.js +24 -12
  72. package/src/og/math/Mat4.js +603 -603
  73. package/src/og/math/Plane.js +19 -18
  74. package/src/og/math/Ray.js +17 -12
  75. package/src/og/math/Vec2.js +24 -14
  76. package/src/og/math/Vec3.js +78 -32
  77. package/src/og/math/coder.js +7 -7
  78. package/src/og/proj/EPSG3857.js +3 -3
  79. package/src/og/proj/EPSG4326.js +3 -3
  80. package/src/og/proj/Proj.js +2 -4
  81. package/src/og/quadTree/Node.js +50 -95
  82. package/src/og/quadTree/quadTree.js +1 -1
  83. package/src/og/renderer/Renderer.js +106 -126
  84. package/src/og/renderer/RendererEvents.js +45 -23
  85. package/src/og/scene/BaseNode.js +2 -3
  86. package/src/og/scene/Planet.js +139 -191
  87. package/src/og/scene/RenderNode.js +15 -8
  88. package/src/og/segment/Segment.js +93 -268
  89. package/src/og/segment/Slice.js +45 -0
  90. package/src/og/shaders/drawnode.js +174 -360
  91. package/src/og/shaders/geoObject.js +211 -0
  92. package/src/og/shaders/pointCloud.js +41 -41
  93. package/src/og/shaders/shape.js +12 -18
  94. package/src/og/shaders/skybox.js +36 -36
  95. package/src/og/shaders/toneMapping.js +1 -0
  96. package/src/og/shapes/BaseShape.js +108 -36
  97. package/src/og/shapes/Icosphere.js +25 -10
  98. package/src/og/shapes/Sphere.js +8 -11
  99. package/src/og/terrain/EmptyTerrain.js +3 -2
  100. package/src/og/terrain/GlobusTerrain.js +2 -0
  101. package/src/og/utils/FontAtlas.js +6 -2
  102. package/src/og/utils/GeoImageCreator.js +5 -1
  103. package/src/og/utils/Loader.js +1 -1
  104. package/src/og/utils/PlainSegmentWorker.js +0 -13
  105. package/src/og/utils/TextureAtlas.js +18 -20
  106. package/src/og/utils/VectorTileCreator.js +1 -3
  107. package/src/og/utils/shared.js +2 -2
  108. package/src/og/webgl/Handler.js +219 -162
  109. package/src/og/webgl/Multisample.js +44 -16
  110. package/src/og/webgl/Program.js +78 -33
  111. package/src/og/webgl/callbacks.js +3 -3
  112. package/types/Clock.d.ts +0 -94
  113. package/types/Deferred.d.ts +0 -6
  114. package/types/Events.d.ts +0 -77
  115. package/types/Extent.d.ts +0 -166
  116. package/types/Globe.d.ts +0 -82
  117. package/types/ImageCanvas.d.ts +0 -123
  118. package/types/Lock.d.ts +0 -12
  119. package/types/LonLat.d.ts +0 -108
  120. package/types/Popup.d.ts +0 -42
  121. package/types/QueueArray.d.ts +0 -19
  122. package/types/Rectangle.d.ts +0 -80
  123. package/types/Stack.d.ts +0 -19
  124. package/types/ajax.d.ts +0 -24
  125. package/types/arial.d.ts +0 -48
  126. package/types/astro/astro.d.ts +0 -38
  127. package/types/astro/earth.d.ts +0 -7
  128. package/types/astro/jd.d.ts +0 -254
  129. package/types/bv/Box.d.ts +0 -30
  130. package/types/bv/Sphere.d.ts +0 -38
  131. package/types/bv/index.d.ts +0 -3
  132. package/types/camera/Camera.d.ts +0 -312
  133. package/types/camera/Frustum.d.ts +0 -133
  134. package/types/camera/PlanetCamera.d.ts +0 -218
  135. package/types/camera/index.d.ts +0 -3
  136. package/types/cons.d.ts +0 -40
  137. package/types/control/CompassButton.d.ts +0 -17
  138. package/types/control/Control.d.ts +0 -104
  139. package/types/control/DebugInfo.d.ts +0 -15
  140. package/types/control/EarthCoordinates.d.ts +0 -47
  141. package/types/control/EarthNavigation.d.ts +0 -42
  142. package/types/control/GeoImageDragControl.d.ts +0 -6
  143. package/types/control/KeyboardNavigation.d.ts +0 -21
  144. package/types/control/LayerSwitcher.d.ts +0 -21
  145. package/types/control/Lighting.d.ts +0 -16
  146. package/types/control/MouseNavigation.d.ts +0 -47
  147. package/types/control/ScaleControl.d.ts +0 -22
  148. package/types/control/ShowFps.d.ts +0 -11
  149. package/types/control/SimpleNavigation.d.ts +0 -25
  150. package/types/control/Sun.d.ts +0 -50
  151. package/types/control/ToggleWireframe.d.ts +0 -12
  152. package/types/control/TouchNavigation.d.ts +0 -48
  153. package/types/control/ZoomControl.d.ts +0 -27
  154. package/types/control/index.d.ts +0 -17
  155. package/types/ellipsoid/Ellipsoid.d.ts +0 -146
  156. package/types/ellipsoid/index.d.ts +0 -3
  157. package/types/ellipsoid/wgs84.d.ts +0 -6
  158. package/types/entity/BaseBillboard.d.ts +0 -208
  159. package/types/entity/Billboard.d.ts +0 -94
  160. package/types/entity/BillboardHandler.d.ts +0 -78
  161. package/types/entity/Entity.d.ts +0 -333
  162. package/types/entity/EntityCollection.d.ts +0 -311
  163. package/types/entity/Geometry.d.ts +0 -74
  164. package/types/entity/GeometryHandler.d.ts +0 -76
  165. package/types/entity/Label.d.ts +0 -189
  166. package/types/entity/LabelHandler.d.ts +0 -29
  167. package/types/entity/PointCloud.d.ts +0 -174
  168. package/types/entity/PointCloudHandler.d.ts +0 -38
  169. package/types/entity/Polyline.d.ts +0 -306
  170. package/types/entity/PolylineHandler.d.ts +0 -18
  171. package/types/entity/Ray.d.ts +0 -124
  172. package/types/entity/RayHandler.d.ts +0 -67
  173. package/types/entity/ShapeHandler.d.ts +0 -22
  174. package/types/entity/Strip.d.ts +0 -119
  175. package/types/entity/StripHandler.d.ts +0 -38
  176. package/types/entity/index.d.ts +0 -8
  177. package/types/index.core.d.ts +0 -65
  178. package/types/index.d.ts +0 -45
  179. package/types/index.webgl.d.ts +0 -7
  180. package/types/input/KeyboardHandler.d.ts +0 -10
  181. package/types/input/MouseHandler.d.ts +0 -5
  182. package/types/input/TouchHandler.d.ts +0 -5
  183. package/types/input/input.d.ts +0 -34
  184. package/types/layer/BaseGeoImage.d.ts +0 -94
  185. package/types/layer/CanvasTiles.d.ts +0 -68
  186. package/types/layer/GeoImage.d.ts +0 -52
  187. package/types/layer/GeoTexture2d.d.ts +0 -8
  188. package/types/layer/GeoVideo.d.ts +0 -55
  189. package/types/layer/KML.d.ts +0 -63
  190. package/types/layer/Layer.d.ts +0 -326
  191. package/types/layer/Material.d.ts +0 -45
  192. package/types/layer/Vector.d.ts +0 -208
  193. package/types/layer/WMS.d.ts +0 -63
  194. package/types/layer/XYZ.d.ts +0 -120
  195. package/types/layer/index.d.ts +0 -10
  196. package/types/light/LightSource.d.ts +0 -178
  197. package/types/math/Line2.d.ts +0 -11
  198. package/types/math/Line3.d.ts +0 -10
  199. package/types/math/Mat3.d.ts +0 -65
  200. package/types/math/Mat4.d.ts +0 -176
  201. package/types/math/Plane.d.ts +0 -18
  202. package/types/math/Quat.d.ts +0 -379
  203. package/types/math/Ray.d.ts +0 -82
  204. package/types/math/Vec2.d.ts +0 -309
  205. package/types/math/Vec3.d.ts +0 -460
  206. package/types/math/Vec4.d.ts +0 -162
  207. package/types/math/coder.d.ts +0 -43
  208. package/types/math/index.d.ts +0 -11
  209. package/types/math.d.ts +0 -261
  210. package/types/mercator.d.ts +0 -92
  211. package/types/proj/EPSG3857.d.ts +0 -6
  212. package/types/proj/EPSG4326.d.ts +0 -6
  213. package/types/proj/Proj.d.ts +0 -42
  214. package/types/quadTree/EntityCollectionNode.d.ts +0 -34
  215. package/types/quadTree/Node.d.ts +0 -61
  216. package/types/quadTree/quadTree.d.ts +0 -40
  217. package/types/renderer/Renderer.d.ts +0 -298
  218. package/types/renderer/RendererEvents.d.ts +0 -233
  219. package/types/res/images.d.ts +0 -3
  220. package/types/scene/Axes.d.ts +0 -11
  221. package/types/scene/BaseNode.d.ts +0 -60
  222. package/types/scene/Planet.d.ts +0 -577
  223. package/types/scene/RenderNode.d.ts +0 -142
  224. package/types/scene/SkyBox.d.ts +0 -10
  225. package/types/scene/index.d.ts +0 -4
  226. package/types/segment/Segment.d.ts +0 -279
  227. package/types/segment/SegmentLonLat.d.ts +0 -16
  228. package/types/segment/segmentHelper.d.ts +0 -13
  229. package/types/shaders/billboard.d.ts +0 -3
  230. package/types/shaders/depth.d.ts +0 -2
  231. package/types/shaders/drawnode.d.ts +0 -7
  232. package/types/shaders/label.d.ts +0 -4
  233. package/types/shaders/pointCloud.d.ts +0 -2
  234. package/types/shaders/polyline.d.ts +0 -3
  235. package/types/shaders/ray.d.ts +0 -2
  236. package/types/shaders/screenFrame.d.ts +0 -2
  237. package/types/shaders/shape.d.ts +0 -4
  238. package/types/shaders/skybox.d.ts +0 -2
  239. package/types/shaders/toneMapping.d.ts +0 -2
  240. package/types/shapes/BaseShape.d.ts +0 -250
  241. package/types/shapes/Sphere.d.ts +0 -41
  242. package/types/terrain/BilTerrain.d.ts +0 -7
  243. package/types/terrain/EmptyTerrain.d.ts +0 -72
  244. package/types/terrain/Geoid.d.ts +0 -26
  245. package/types/terrain/GlobusTerrain.d.ts +0 -116
  246. package/types/terrain/MapboxTerrain.d.ts +0 -7
  247. package/types/terrain/index.d.ts +0 -5
  248. package/types/utils/FontAtlas.d.ts +0 -14
  249. package/types/utils/GeoImageCreator.d.ts +0 -30
  250. package/types/utils/ImagesCacheManager.d.ts +0 -10
  251. package/types/utils/Loader.d.ts +0 -25
  252. package/types/utils/NormalMapCreator.d.ts +0 -39
  253. package/types/utils/PlainSegmentWorker.d.ts +0 -10
  254. package/types/utils/TerrainWorker.d.ts +0 -9
  255. package/types/utils/TextureAtlas.d.ts +0 -111
  256. package/types/utils/VectorTileCreator.d.ts +0 -16
  257. package/types/utils/colorTable.d.ts +0 -143
  258. package/types/utils/earcut.d.ts +0 -6
  259. package/types/utils/shared.d.ts +0 -231
  260. package/types/webgl/Framebuffer.d.ts +0 -135
  261. package/types/webgl/Handler.d.ts +0 -388
  262. package/types/webgl/Multisample.d.ts +0 -89
  263. package/types/webgl/Program.d.ts +0 -155
  264. package/types/webgl/ProgramController.d.ts +0 -89
  265. package/types/webgl/callbacks.d.ts +0 -1
  266. package/types/webgl/index.d.ts +0 -6
  267. package/types/webgl/types.d.ts +0 -2
@@ -2,7 +2,7 @@
2
2
  * @module og/webgl/Multisample
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
7
  /**
8
8
  * Class represents multisample framebuffer.
@@ -16,9 +16,7 @@
16
16
  * @param {Boolean} [options.useDepth] - Using depth buffer during the rendering.
17
17
  */
18
18
  export class Multisample {
19
-
20
19
  constructor(handler, options) {
21
-
22
20
  options = options || {};
23
21
 
24
22
  /**
@@ -28,7 +26,9 @@ export class Multisample {
28
26
  */
29
27
  this.handler = handler;
30
28
 
31
- this._internalFormat = options.internalFormat ? options.internalFormat.toUpperCase() : "RGBA8";
29
+ this._internalFormat = options.internalFormat
30
+ ? options.internalFormat.toUpperCase()
31
+ : "RGBA8";
32
32
 
33
33
  /**
34
34
  * Framebuffer object.
@@ -62,10 +62,11 @@ export class Multisample {
62
62
 
63
63
  this._useDepth = options.useDepth != undefined ? options.useDepth : true;
64
64
 
65
- this._depthComponent = options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
65
+ this._depthComponent =
66
+ options.depthComponent != undefined ? options.depthComponent : "DEPTH_COMPONENT16";
66
67
 
67
68
  /**
68
- * Framebuffer activity.
69
+ * Framebuffer activity.
69
70
  * @private
70
71
  * @type {boolean}
71
72
  */
@@ -102,7 +103,6 @@ export class Multisample {
102
103
  * @private
103
104
  */
104
105
  init() {
105
-
106
106
  var gl = this.handler.gl;
107
107
 
108
108
  this._glFilter = gl[this._filter];
@@ -115,8 +115,19 @@ export class Multisample {
115
115
  for (var i = 0; i < this.renderbuffers.length; i++) {
116
116
  let rb = gl.createRenderbuffer();
117
117
  gl.bindRenderbuffer(gl.RENDERBUFFER, rb);
118
- gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._internalFormat], this._width, this._height);
119
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, rb);
118
+ gl.renderbufferStorageMultisample(
119
+ gl.RENDERBUFFER,
120
+ this._msaa,
121
+ gl[this._internalFormat],
122
+ this._width,
123
+ this._height
124
+ );
125
+ gl.framebufferRenderbuffer(
126
+ gl.FRAMEBUFFER,
127
+ gl.COLOR_ATTACHMENT0 + i,
128
+ gl.RENDERBUFFER,
129
+ rb
130
+ );
120
131
  colorAttachments.push(gl.COLOR_ATTACHMENT0 + i);
121
132
  this.renderbuffers[i] = rb;
122
133
  gl.bindRenderbuffer(gl.RENDERBUFFER, null);
@@ -126,8 +137,19 @@ export class Multisample {
126
137
  if (this._useDepth) {
127
138
  this._depthRenderbuffer = gl.createRenderbuffer();
128
139
  gl.bindRenderbuffer(gl.RENDERBUFFER, this._depthRenderbuffer);
129
- gl.renderbufferStorageMultisample(gl.RENDERBUFFER, this._msaa, gl[this._depthComponent], this._width, this._height);
130
- gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, this._depthRenderbuffer);
140
+ gl.renderbufferStorageMultisample(
141
+ gl.RENDERBUFFER,
142
+ this._msaa,
143
+ gl[this._depthComponent],
144
+ this._width,
145
+ this._height
146
+ );
147
+ gl.framebufferRenderbuffer(
148
+ gl.FRAMEBUFFER,
149
+ gl.DEPTH_ATTACHMENT,
150
+ gl.RENDERBUFFER,
151
+ this._depthRenderbuffer
152
+ );
131
153
  gl.bindRenderbuffer(gl.RENDERBUFFER, null);
132
154
  }
133
155
 
@@ -137,7 +159,6 @@ export class Multisample {
137
159
  }
138
160
 
139
161
  blitTo(framebuffer, attachmentIndex = 0) {
140
-
141
162
  let gl = this.handler.gl;
142
163
 
143
164
  gl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._fbo);
@@ -147,9 +168,16 @@ export class Multisample {
147
168
  gl.clearBufferfv(gl.COLOR, 0, [0.0, 0.0, 0.0, 1.0]);
148
169
 
149
170
  gl.blitFramebuffer(
150
- 0, 0, this._width, this._height,
151
- 0, 0, framebuffer._width, framebuffer._height,
152
- gl.COLOR_BUFFER_BIT, this._glFilter
171
+ 0,
172
+ 0,
173
+ this._width,
174
+ this._height,
175
+ 0,
176
+ 0,
177
+ framebuffer._width,
178
+ framebuffer._height,
179
+ gl.COLOR_BUFFER_BIT,
180
+ this._glFilter
153
181
  );
154
182
 
155
183
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
@@ -229,4 +257,4 @@ export class Multisample {
229
257
  gl.viewport(0, 0, h.canvas.width, h.canvas.height);
230
258
  }
231
259
  }
232
- }
260
+ }
@@ -2,20 +2,13 @@
2
2
  * @module og/webgl/Program
3
3
  */
4
4
 
5
- 'use strict';
5
+ "use strict";
6
6
 
7
- import { callbacks } from './callbacks.js';
8
- import { cons } from '../cons.js';
9
- import { typeStr } from './types.js';
7
+ import { callbacks } from "./callbacks.js";
8
+ import { cons } from "../cons.js";
9
+ import { typeStr, types } from "./types.js";
10
10
 
11
- const itemTypes = [
12
- "BYTE",
13
- "SHORT",
14
- "UNSIGNED_BYTE",
15
- "UNSIGNED_SHORT",
16
- "FLOAT",
17
- "HALF_FLOAT"
18
- ];
11
+ const itemTypes = ["BYTE", "SHORT", "UNSIGNED_BYTE", "UNSIGNED_SHORT", "FLOAT", "HALF_FLOAT"];
19
12
 
20
13
  /**
21
14
  * Represents more comfortable using WebGL shader program.
@@ -46,9 +39,11 @@ class Program {
46
39
  */
47
40
  this._attributes = {};
48
41
  for (let t in material.attributes) {
49
- if (typeof (material.attributes[t]) === "string" ||
50
- typeof (material.attributes[t]) === "number") {
51
- this._attributes[t] = { 'type': material.attributes[t] };
42
+ if (
43
+ typeof material.attributes[t] === "string" ||
44
+ typeof material.attributes[t] === "number"
45
+ ) {
46
+ this._attributes[t] = { type: material.attributes[t] };
52
47
  } else {
53
48
  this._attributes[t] = material.attributes[t];
54
49
  }
@@ -61,9 +56,11 @@ class Program {
61
56
  */
62
57
  this._uniforms = {};
63
58
  for (let t in material.uniforms) {
64
- if (typeof (material.uniforms[t]) === "string" ||
65
- typeof (material.uniforms[t]) === "number") {
66
- this._uniforms[t] = { 'type': material.uniforms[t] };
59
+ if (
60
+ typeof material.uniforms[t] === "string" ||
61
+ typeof material.uniforms[t] === "number"
62
+ ) {
63
+ this._uniforms[t] = { type: material.uniforms[t] };
67
64
  } else {
68
65
  this._uniforms[t] = material.uniforms[t];
69
66
  }
@@ -117,6 +114,13 @@ class Program {
117
114
  * @type {Array.<Object>}
118
115
  */
119
116
  this._attribArrays = [];
117
+
118
+ /**
119
+ * Program attributes divisor.
120
+ * @private
121
+ * @type {Array.<Object>}
122
+ */
123
+ this._attribDivisor = [];
120
124
  }
121
125
 
122
126
  /**
@@ -128,7 +132,14 @@ class Program {
128
132
  static bindBuffer(program, variable) {
129
133
  var gl = program.gl;
130
134
  gl.bindBuffer(gl.ARRAY_BUFFER, variable.value);
131
- gl.vertexAttribPointer(variable._pName, variable.value.itemSize, variable.itemType, variable.normalized, 0, 0);
135
+ gl.vertexAttribPointer(
136
+ variable._pName,
137
+ variable.value.itemSize,
138
+ variable.itemType,
139
+ variable.normalized,
140
+ 0,
141
+ 0
142
+ );
132
143
  }
133
144
 
134
145
  /**
@@ -196,7 +207,9 @@ class Program {
196
207
  this.gl.shaderSource(shader, src);
197
208
  this.gl.compileShader(shader);
198
209
  if (!this.gl.getShaderParameter(shader, this.gl.COMPILE_STATUS)) {
199
- cons.logErr("og/Program/Program:" + this.name + " - " + this.gl.getShaderInfoLog(shader) + ".");
210
+ cons.logErr(
211
+ "og/Program/Program:" + this.name + " - " + this.gl.getShaderInfoLog(shader) + "."
212
+ );
200
213
  return false;
201
214
  }
202
215
  return true;
@@ -237,9 +250,9 @@ class Program {
237
250
  disableAttribArrays() {
238
251
  var gl = this.gl;
239
252
  var a = this._attribArrays;
240
- var i = a.length;
241
- while (i--) {
253
+ for (let i = 0, len = a.length; i < len; i++) {
242
254
  gl.disableVertexAttribArray(a[i]);
255
+ gl.vertexAttribDivisor(a[i], 0);
243
256
  }
244
257
  }
245
258
 
@@ -250,9 +263,10 @@ class Program {
250
263
  enableAttribArrays() {
251
264
  var gl = this.gl;
252
265
  var a = this._attribArrays;
253
- var i = a.length;
254
- while (i--) {
266
+ var d = this._attribDivisor;
267
+ for (let i = 0, len = a.length; i < len; i++) {
255
268
  gl.enableVertexAttribArray(a[i]);
269
+ gl.vertexAttribDivisor(a[i], d[i]);
256
270
  }
257
271
  }
258
272
 
@@ -280,7 +294,13 @@ class Program {
280
294
  gl.linkProgram(this._p);
281
295
 
282
296
  if (!gl.getProgramParameter(this._p, gl.LINK_STATUS)) {
283
- cons.logErr("og/Program/Program:" + this.name + " - couldn't initialise shaders. " + gl.getProgramInfoLog(this._p) + ".");
297
+ cons.logErr(
298
+ "og/Program/Program:" +
299
+ this.name +
300
+ " - couldn't initialise shaders. " +
301
+ gl.getProgramInfoLog(this._p) +
302
+ "."
303
+ );
284
304
  gl.deleteProgram(this._p);
285
305
  return;
286
306
  }
@@ -293,25 +313,47 @@ class Program {
293
313
 
294
314
  this._attributes[a]._callback = Program.bindBuffer;
295
315
 
296
- let itemTypeStr = this._attributes[a].itemType ? this._attributes[a].itemType.trim().toUpperCase() : "FLOAT";
316
+ let itemTypeStr = this._attributes[a].itemType
317
+ ? this._attributes[a].itemType.trim().toUpperCase()
318
+ : "FLOAT";
319
+
297
320
  if (itemTypes.indexOf(itemTypeStr) == -1) {
298
- cons.logErr(`og/Program/Program: ${this.name}- attribute '${a}', item type ${this._attributes[a].itemType} not exists.`);
321
+ cons.logErr(
322
+ `og/Program/Program: ${this.name}- attribute '${a}', item type ${this._attributes[a].itemType} not exists.`
323
+ );
299
324
  this._attributes[a].itemType = gl.FLOAT;
300
325
  } else {
301
326
  this._attributes[a].itemType = gl[itemTypeStr];
302
327
  }
303
328
 
304
329
  this._attributes[a].normalized = this._attributes[a].normalized || false;
330
+ this._attributes[a].divisor = this._attributes[a].divisor || 0;
305
331
 
306
332
  this._p[a] = gl.getAttribLocation(this._p, a);
307
333
 
308
334
  if (this._p[a] == undefined) {
309
- cons.logErr("og/Program/Program:" + this.name + " - attribute '" + a + "' is not exists.");
335
+ cons.logErr(
336
+ "og/Program/Program:" + this.name + " - attribute '" + a + "' is not exists."
337
+ );
310
338
  gl.deleteProgram(this._p);
311
339
  return;
312
340
  }
313
341
 
314
- this._attribArrays.push(this._p[a]);
342
+ let type = this._attributes[a].type;
343
+ if (typeof type === "string") {
344
+ type = typeStr[type.trim().toLowerCase()];
345
+ }
346
+
347
+ let d = this._attributes[a].divisor;
348
+ if (type === types.MAT4) {
349
+ let loc = this._p[a];
350
+ this._attribArrays.push(loc, loc + 1, loc + 2, loc + 3);
351
+ this._attribDivisor.push(d, d, d, d);
352
+ } else {
353
+ this._attribArrays.push(this._p[a]);
354
+ this._attribDivisor.push(d);
355
+ }
356
+
315
357
  gl.enableVertexAttribArray(this._p[a]);
316
358
 
317
359
  this._attributes[a]._pName = this._p[a];
@@ -321,8 +363,9 @@ class Program {
321
363
  for (var u in this._uniforms) {
322
364
  //this.uniforms[u]._name = u;
323
365
 
324
- if (typeof (this._uniforms[u].type) === "string") {
325
- this._uniforms[u]._callback = callbacks.u[typeStr[this._uniforms[u].type.trim().toLowerCase()]];
366
+ if (typeof this._uniforms[u].type === "string") {
367
+ this._uniforms[u]._callback =
368
+ callbacks.u[typeStr[this._uniforms[u].type.trim().toLowerCase()]];
326
369
  } else {
327
370
  this._uniforms[u]._callback = callbacks.u[this._uniforms[u].type];
328
371
  }
@@ -331,7 +374,9 @@ class Program {
331
374
  this._p[u] = gl.getUniformLocation(this._p, u);
332
375
 
333
376
  if (this._p[u] == undefined) {
334
- cons.logErr("og/Program/Program:" + this.name + " - uniform '" + u + "' is not exists.");
377
+ cons.logErr(
378
+ "og/Program/Program:" + this.name + " - uniform '" + u + "' is not exists."
379
+ );
335
380
  gl.deleteProgram(this._p);
336
381
  return;
337
382
  }
@@ -348,4 +393,4 @@ class Program {
348
393
  }
349
394
  }
350
395
 
351
- export { Program };
396
+ export { Program };
@@ -93,6 +93,6 @@ callbacks.a[types.VEC3] = function (program, variable) {
93
93
  program.gl.vertexAttrib3fv(variable._pName, variable.value);
94
94
  };
95
95
 
96
- callbacks.a[types.VEC4] = function (program, variable) {
97
- program.gl.vertexAttrib4fv(variable._pName, variable.value);
98
- };
96
+ //callbacks.a[types.VEC4] = function (program, variable) {
97
+ // program.gl.vertexAttrib4fv(variable._pName, variable.value);
98
+ //};
package/types/Clock.d.ts DELETED
@@ -1,94 +0,0 @@
1
- /**
2
- * Class represents application timer that stores custom current julian datetime, and time speed multiplier.
3
- * @class
4
- * @param {Object} [params] - Clock parameters:
5
- * @param {number} [params.startDate=0.0] - Julian start date.
6
- * @param {number} [params.endDate=0.0] - Julian end date.
7
- * @param {number} [params.currentDate] - Julian current date. Default: current date.
8
- * @param {number} [params.multiplier=1.0] - Time speed multiolier.
9
- */
10
- export class Clock {
11
- static set _staticCounter(arg: any);
12
- static get _staticCounter(): any;
13
- /**
14
- *
15
- * @param {Object} [params] - Clock parameters:
16
- */
17
- constructor(params?: any);
18
- _id: number;
19
- /**
20
- * Clock name.
21
- * @public
22
- * @type {string}
23
- */
24
- public name: string;
25
- /**
26
- * Clock events.
27
- * @public
28
- * @type {Events}
29
- */
30
- public events: Events;
31
- /**
32
- * Start julian date clock loop.
33
- * @public
34
- * @type {number}
35
- */
36
- public startDate: number;
37
- /**
38
- * End julian date clock loop.
39
- * @public
40
- * @type {number}
41
- */
42
- public endDate: number;
43
- /**
44
- * Current julian datetime.
45
- * @public
46
- * @type {number}
47
- */
48
- public currentDate: number;
49
- /**
50
- * Timer speed multiplier.
51
- * @public
52
- * @type {number}
53
- */
54
- public multiplier: number;
55
- /**
56
- * Animation frame delta time.
57
- * @public
58
- * @readonly
59
- * @type {number}
60
- */
61
- public readonly deltaTicks: number;
62
- /**
63
- * Timer activity.
64
- * @public
65
- * @type {boolean}
66
- */
67
- public active: boolean;
68
- _intervalDelay: number;
69
- _intervalStart: number;
70
- _intervalCallback: any;
71
- clearInterval(): void;
72
- setInterval(delay: any, callback: any): void;
73
- /**
74
- * Sets current clock datetime.
75
- * @public
76
- * @param {Object} date - JavaScript Date object.
77
- */
78
- public setDate(date: any): void;
79
- /**
80
- * Returns current application date.
81
- * @public
82
- * @returns {Date} - Current date.
83
- */
84
- public getDate(): Date;
85
- reset(): void;
86
- _tick(dt: any): void;
87
- /**
88
- * @public
89
- * @param {Clock} clock - Clock instance to compare.
90
- * @returns {boolean} - Returns true if a clock is the same instance.
91
- */
92
- public equal(clock: Clock): boolean;
93
- }
94
- import { Events } from "./Events.js";
@@ -1,6 +0,0 @@
1
- export function Deferred(): void;
2
- export class Deferred {
3
- resolve: any;
4
- reject: any;
5
- promise: Promise<any>;
6
- }
package/types/Events.d.ts DELETED
@@ -1,77 +0,0 @@
1
- /**
2
- * Base events class to handle custom events.
3
- * @class
4
- */
5
- export class Events {
6
- static set _staticCounter(arg: any);
7
- static get _staticCounter(): any;
8
- /**
9
- *
10
- * @param {Array.<string>} [eventNames] - Event names that could be dispatched.
11
- * @param {*} [sender]
12
- */
13
- constructor(eventNames?: Array<string>, sender?: any);
14
- /**
15
- * Registered event names.
16
- * @protected
17
- * @type {Array.<string>}
18
- */
19
- protected _eventNames: Array<string>;
20
- _sender: any;
21
- /**
22
- * Stop propagation flag
23
- * @protected
24
- * @type {boolean}
25
- */
26
- protected _stopPropagation: boolean;
27
- _stampCache: {};
28
- __id: number;
29
- bindSender(sender: any): void;
30
- /**
31
- * Function that creates event object properties that would be dispatched.
32
- * @public
33
- * @param {Array.<string>} eventNames - Specified event names list.
34
- */
35
- public registerNames(eventNames: Array<string>): void;
36
- _getStamp(name: any, id: any, ogid: any): string;
37
- /**
38
- * Returns true if event callback has stamped.
39
- * @protected
40
- * @param {Object} name - Event identifier.
41
- * @param {Object} obj - Event callback.
42
- * @return {boolean} -
43
- */
44
- protected _stamp(name: any, obj: any): boolean;
45
- /**
46
- * Attach listener.
47
- * @public
48
- * @param {string} name - Event name to listen.
49
- * @param {eventCallback} callback - Event callback function.
50
- * @param {Object} sender - Event callback function owner.
51
- */
52
- public on(name: string, callback: any, sender: any, priority?: number): void;
53
- /**
54
- * Stop listening event name with specified callback function.
55
- * @public
56
- * @param {string} name - Event name.
57
- * @param {eventCallback} callback - Attached event callback.
58
- */
59
- public off(name: string, callback: any): void;
60
- /**
61
- * Dispatch event.
62
- * @public
63
- * @param {Object} event - Event instance property that created by event name.
64
- * @param {Object} [obj] - Event object.
65
- */
66
- public dispatch(event: any, ...args: any[]): boolean;
67
- /**
68
- * Brakes events propagation.
69
- * @public
70
- */
71
- public stopPropagation(): void;
72
- /**
73
- * Removes all events.
74
- * @public
75
- */
76
- public clear(): void;
77
- }
package/types/Extent.d.ts DELETED
@@ -1,166 +0,0 @@
1
- /**
2
- * Represents geographical coordinates extent.
3
- * @class
4
- * @param {LonLat} [sw] - South West extent corner coordiantes.
5
- * @param {LonLat} [ne] - North East extent corner coordiantes.
6
- */
7
- export class Extent {
8
- /**
9
- * Whole mercator extent.
10
- * @const
11
- */
12
- static get FULL_MERC(): Extent;
13
- /**
14
- * Degrees extent from north mercator limit to north pole.
15
- * @const
16
- */
17
- static get NORTH_POLE_DEG(): Extent;
18
- /**
19
- * Degrees extent from south pole to south mercator limit.
20
- * @const
21
- */
22
- static get SOUTH_POLE_DEG(): Extent;
23
- /**
24
- * Creates extent instance from values in array.
25
- * @static
26
- * @param {Array.<number>} arr - South west and north east longitude and latidudes packed in array. (exactly 4 entries)
27
- * @return {Extent} Extent object.
28
- */
29
- static createFromArray(arr: Array<number>): Extent;
30
- /**
31
- * Creates bound extent instance by coordinate array.
32
- * @static
33
- * @param {Array.<LonLat>} arr - Coordinate array.
34
- * @return {Extent} Extent object.
35
- */
36
- static createByCoordinates(arr: Array<LonLat>): Extent;
37
- /**
38
- * Creates bound extent instance by coordinate array.
39
- * @static
40
- * @param {Array.<Array<number>>} arr - Coordinate array. (exactly 2 entries)
41
- * @return {Extent} Extent object.
42
- */
43
- static createByCoordinatesArr(arr: Array<Array<number>>): Extent;
44
- /**
45
- * Creates extent by meractor grid tile coordinates.
46
- * @static
47
- * @param {number} x -
48
- * @param {number} y -
49
- * @param {number} z -
50
- * @param {number} width -
51
- * @param {number} height -
52
- * @returns {Extent} -
53
- */
54
- static fromTile(x: number, y: number, z: number, width: number, height: number): Extent;
55
- /**
56
- * @param {LonLat} [sw] - South West extent corner coordiantes.
57
- * @param {LonLat} [ne] - North East extent corner coordiantes.
58
- */
59
- constructor(sw?: LonLat, ne?: LonLat);
60
- /**
61
- * @public
62
- */
63
- public southWest: LonLat;
64
- /**
65
- * @public
66
- */
67
- public northEast: LonLat;
68
- /**
69
- * Sets current bounding extent object by coordinate array.
70
- * @public
71
- * @param {Array.<LonLat>} arr - Coordinate array.
72
- * @return {Extent} Current extent.
73
- */
74
- public setByCoordinates(arr: Array<LonLat>): Extent;
75
- /**
76
- * Determines if point inside extent.
77
- * @public
78
- * @param {LonLat} lonlat - Coordinate point.
79
- * @return {boolean} Returns true if point inside extent.
80
- */
81
- public isInside(lonlat: LonLat): boolean;
82
- /**
83
- * Returns true if two extent overlap each other.
84
- * @public
85
- * @param {Extent} e - Another extent.
86
- * @return {boolean} -
87
- */
88
- public overlaps(e: Extent): boolean;
89
- /**
90
- * Gets extent width.
91
- * @public
92
- * @return {number} Extent width.
93
- */
94
- public getWidth(): number;
95
- /**
96
- * Gets extent height.
97
- * @public
98
- * @return {number} Extent height.
99
- */
100
- public getHeight(): number;
101
- /**
102
- * Creates clone instance of the current extent.
103
- * @public
104
- * @return {Extent} Extent clone.
105
- */
106
- public clone(): Extent;
107
- /**
108
- * Gets the center coordinate of the extent.
109
- * @public
110
- * @return {number} Center coordinate.
111
- */
112
- public getCenter(): number;
113
- /**
114
- * @public
115
- */
116
- public getNorthWest(): LonLat;
117
- /**
118
- * @public
119
- */
120
- public getNorthEast(): LonLat;
121
- getSouthWest(): LonLat;
122
- /**
123
- * @public
124
- */
125
- public getSouthEast(): LonLat;
126
- /**
127
- * @public
128
- */
129
- public getNorth(): number;
130
- getEast(): number;
131
- /**
132
- * @public
133
- */
134
- public getWest(): number;
135
- /**
136
- * @public
137
- */
138
- public getSouth(): number;
139
- /**
140
- * Returns extents are equals.
141
- * @param {Extent} extent - Extent.
142
- * @returns {boolean} -
143
- */
144
- equals(extent: Extent): boolean;
145
- /**
146
- * Converts extent coordinates to mercator projection coordinates.
147
- * @public
148
- * @return {Extent} New instance of the current extent.
149
- */
150
- public forwardMercator(): Extent;
151
- /**
152
- * Converts extent coordinates from mercator projection to degrees.
153
- * @public
154
- * @return {Extent} New instance of the current extent.
155
- */
156
- public inverseMercator(): Extent;
157
- /**
158
- * Gets cartesian bounding bounds of the current ellipsoid.
159
- * @public
160
- * @param {Ellipsoid} ellipsoid - Ellipsoid.
161
- * @return {Array.<number>} Cartesian 3d coordinate array. (exactly 6 entries)
162
- */
163
- public getCartesianBounds(ellipsoid: any): Array<number>;
164
- toString(): string;
165
- }
166
- import { LonLat } from "./LonLat.js";