@openglobus/og 0.11.1 → 0.11.6

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 (255) hide show
  1. package/package.json +18 -20
  2. package/src/og/Clock.js +11 -11
  3. package/src/og/Deferred.js +1 -1
  4. package/src/og/Events.js +9 -7
  5. package/src/og/Extent.js +117 -72
  6. package/src/og/Globe.js +35 -22
  7. package/src/og/ImageCanvas.js +24 -18
  8. package/src/og/Lock.js +2 -2
  9. package/src/og/LonLat.js +40 -37
  10. package/src/og/Popup.js +21 -15
  11. package/src/og/QueueArray.js +7 -3
  12. package/src/og/Rectangle.js +11 -6
  13. package/src/og/Stack.js +8 -5
  14. package/src/og/ajax.js +21 -33
  15. package/src/og/astro/astro.js +5 -5
  16. package/src/og/astro/earth.js +23 -17
  17. package/src/og/astro/jd.js +44 -39
  18. package/src/og/astro/orbit.js +20 -18
  19. package/src/og/astro/rotation.js +17 -8
  20. package/src/og/bv/Box.js +7 -3
  21. package/src/og/bv/Sphere.js +17 -9
  22. package/src/og/camera/Camera.js +137 -86
  23. package/src/og/camera/Frustum.js +30 -19
  24. package/src/og/camera/PlanetCamera.js +30 -26
  25. package/src/og/control/CompassButton.js +8 -2
  26. package/src/og/control/Control.js +13 -11
  27. package/src/og/control/DebugInfo.js +4 -1
  28. package/src/og/control/EarthCoordinates.js +62 -41
  29. package/src/og/control/EarthNavigation.js +20 -22
  30. package/src/og/control/GeoImageDragControl.js +1 -1
  31. package/src/og/control/KeyboardNavigation.js +12 -12
  32. package/src/og/control/LayerSwitcher.js +24 -23
  33. package/src/og/control/Lighting.js +1 -1
  34. package/src/og/control/MouseNavigation.js +1 -1
  35. package/src/og/control/ScaleControl.js +1 -1
  36. package/src/og/control/SegmentBoundVisualization.js +8 -9
  37. package/src/og/control/ShowFps.js +15 -10
  38. package/src/og/control/SimpleNavigation.js +8 -10
  39. package/src/og/control/Sun.js +25 -15
  40. package/src/og/control/ToggleWireframe.js +5 -5
  41. package/src/og/control/TouchNavigation.js +58 -45
  42. package/src/og/control/ZoomControl.js +41 -25
  43. package/src/og/control/index.js +4 -0
  44. package/src/og/ellipsoid/Ellipsoid.js +181 -85
  45. package/src/og/ellipsoid/wgs84.js +4 -4
  46. package/src/og/entity/BaseBillboard.js +97 -44
  47. package/src/og/entity/Billboard.js +15 -11
  48. package/src/og/entity/BillboardHandler.js +314 -64
  49. package/src/og/entity/Entity.js +106 -74
  50. package/src/og/entity/EntityCollection.js +72 -49
  51. package/src/og/entity/GeoObject.js +228 -0
  52. package/src/og/entity/GeoObjectHandler.js +910 -0
  53. package/src/og/entity/Geometry.js +29 -26
  54. package/src/og/entity/GeometryHandler.js +598 -126
  55. package/src/og/entity/Label.js +74 -40
  56. package/src/og/entity/LabelHandler.js +47 -246
  57. package/src/og/entity/LabelWorker.js +213 -0
  58. package/src/og/entity/Object3d.js +504 -0
  59. package/src/og/entity/PointCloud.js +81 -33
  60. package/src/og/entity/PointCloudHandler.js +9 -9
  61. package/src/og/entity/Polyline.js +39 -39
  62. package/src/og/entity/Ray.js +61 -28
  63. package/src/og/entity/ShapeHandler.js +1 -1
  64. package/src/og/entity/Strip.js +77 -48
  65. package/src/og/entity/StripHandler.js +27 -27
  66. package/src/og/entity/index.js +8 -16
  67. package/src/og/input/KeyboardHandler.js +107 -104
  68. package/src/og/input/MouseHandler.js +81 -78
  69. package/src/og/input/TouchHandler.js +55 -51
  70. package/src/og/layer/BaseGeoImage.js +61 -30
  71. package/src/og/layer/CanvasTiles.js +26 -24
  72. package/src/og/layer/GeoImage.js +10 -10
  73. package/src/og/layer/GeoTexture2d.js +1 -1
  74. package/src/og/layer/GeoVideo.js +3 -3
  75. package/src/og/layer/KML.js +66 -40
  76. package/src/og/layer/Layer.js +27 -17
  77. package/src/og/layer/Material.js +93 -61
  78. package/src/og/layer/Vector.js +118 -72
  79. package/src/og/layer/WMS.js +36 -19
  80. package/src/og/layer/XYZ.js +55 -48
  81. package/src/og/light/LightSource.js +47 -40
  82. package/src/og/math/Line2.js +24 -24
  83. package/src/og/math/Line3.js +103 -102
  84. package/src/og/math/Mat3.js +134 -121
  85. package/src/og/math/Mat4.js +603 -459
  86. package/src/og/math/Plane.js +21 -20
  87. package/src/og/math/Quat.js +980 -927
  88. package/src/og/math/Ray.js +195 -187
  89. package/src/og/math/Vec2.js +127 -117
  90. package/src/og/math/Vec3.js +206 -176
  91. package/src/og/math/Vec4.js +49 -53
  92. package/src/og/math/coder.js +18 -18
  93. package/src/og/math.js +12 -12
  94. package/src/og/mercator.js +11 -11
  95. package/src/og/proj/EPSG3857.js +4 -4
  96. package/src/og/proj/EPSG4326.js +4 -4
  97. package/src/og/proj/Proj.js +31 -31
  98. package/src/og/quadTree/EntityCollectionNode.js +310 -300
  99. package/src/og/quadTree/Node.js +1008 -993
  100. package/src/og/renderer/Renderer.js +768 -747
  101. package/src/og/renderer/RendererEvents.js +9 -6
  102. package/src/og/scene/Axes.js +1 -1
  103. package/src/og/scene/BaseNode.js +8 -9
  104. package/src/og/scene/Planet.js +115 -87
  105. package/src/og/scene/RenderNode.js +29 -22
  106. package/src/og/scene/SkyBox.js +1 -1
  107. package/src/og/segment/Segment.js +1886 -1878
  108. package/src/og/segment/SegmentLonLat.js +298 -268
  109. package/src/og/segment/segmentHelper.js +11 -11
  110. package/src/og/shaders/bloom.js +1 -1
  111. package/src/og/shaders/blur.js +2 -2
  112. package/src/og/shaders/depth.js +1 -1
  113. package/src/og/shaders/geoObject.js +211 -0
  114. package/src/og/shaders/label.js +1 -1
  115. package/src/og/shaders/lumFilter.js +1 -1
  116. package/src/og/shaders/pointCloud.js +42 -42
  117. package/src/og/shaders/screenFrame.js +1 -1
  118. package/src/og/shaders/shape.js +15 -21
  119. package/src/og/shaders/skybox.js +37 -37
  120. package/src/og/shaders/toneMapping.js +1 -1
  121. package/src/og/shapes/BaseShape.js +129 -57
  122. package/src/og/shapes/Icosphere.js +30 -15
  123. package/src/og/shapes/Sphere.js +13 -16
  124. package/src/og/terrain/BilTerrain.js +2 -1
  125. package/src/og/terrain/EmptyTerrain.js +2 -2
  126. package/src/og/terrain/Geoid.js +2 -2
  127. package/src/og/terrain/GlobusTerrain.js +10 -10
  128. package/src/og/terrain/MapboxTerrain.js +1 -1
  129. package/src/og/utils/GeoImageCreator.js +9 -9
  130. package/src/og/utils/Loader.js +6 -6
  131. package/src/og/utils/NormalMapCreator.js +13 -13
  132. package/src/og/utils/TerrainWorker.js +1 -1
  133. package/src/og/utils/TextureAtlas.js +20 -22
  134. package/src/og/utils/VectorTileCreator.js +5 -5
  135. package/src/og/utils/earcut.js +1 -1
  136. package/src/og/utils/shared.js +15 -15
  137. package/src/og/webgl/Framebuffer.js +101 -53
  138. package/src/og/webgl/Handler.js +125 -85
  139. package/src/og/webgl/Multisample.js +55 -27
  140. package/src/og/webgl/Program.js +80 -35
  141. package/src/og/webgl/ProgramController.js +27 -23
  142. package/src/og/webgl/callbacks.js +8 -8
  143. package/types/Clock.d.ts +6 -2
  144. package/types/Deferred.d.ts +1 -1
  145. package/types/Events.d.ts +8 -4
  146. package/types/Extent.d.ts +37 -33
  147. package/types/Globe.d.ts +15 -13
  148. package/types/ImageCanvas.d.ts +5 -3
  149. package/types/LonLat.d.ts +24 -24
  150. package/types/Popup.d.ts +4 -0
  151. package/types/QueueArray.d.ts +6 -2
  152. package/types/Rectangle.d.ts +10 -4
  153. package/types/Stack.d.ts +4 -0
  154. package/types/ajax.d.ts +1 -1
  155. package/types/astro/earth.d.ts +3 -2
  156. package/types/bv/Box.d.ts +10 -5
  157. package/types/bv/Sphere.d.ts +13 -7
  158. package/types/camera/Camera.d.ts +90 -81
  159. package/types/camera/Frustum.d.ts +26 -22
  160. package/types/camera/PlanetCamera.d.ts +49 -53
  161. package/types/control/CompassButton.d.ts +4 -4
  162. package/types/control/Control.d.ts +7 -4
  163. package/types/control/DebugInfo.d.ts +3 -4
  164. package/types/control/EarthCoordinates.d.ts +6 -6
  165. package/types/control/EarthNavigation.d.ts +42 -0
  166. package/types/control/KeyboardNavigation.d.ts +3 -4
  167. package/types/control/LayerSwitcher.d.ts +3 -5
  168. package/types/control/Lighting.d.ts +3 -3
  169. package/types/control/MouseNavigation.d.ts +47 -0
  170. package/types/control/ScaleControl.d.ts +3 -3
  171. package/types/control/ShowFps.d.ts +3 -4
  172. package/types/control/SimpleNavigation.d.ts +3 -6
  173. package/types/control/Sun.d.ts +8 -10
  174. package/types/control/ToggleWireframe.d.ts +3 -3
  175. package/types/control/TouchNavigation.d.ts +48 -0
  176. package/types/control/ZoomControl.d.ts +3 -4
  177. package/types/control/index.d.ts +3 -1
  178. package/types/ellipsoid/Ellipsoid.d.ts +47 -43
  179. package/types/ellipsoid/wgs84.d.ts +3 -2
  180. package/types/entity/BaseBillboard.d.ts +41 -34
  181. package/types/entity/Billboard.d.ts +7 -7
  182. package/types/entity/BillboardHandler.d.ts +4 -0
  183. package/types/entity/Entity.d.ts +101 -83
  184. package/types/entity/EntityCollection.d.ts +57 -43
  185. package/types/entity/GeoObject.d.ts +111 -0
  186. package/types/entity/GeoObjectHandler.d.ts +77 -0
  187. package/types/entity/Geometry.d.ts +9 -7
  188. package/types/entity/GeometryHandler.d.ts +2 -2
  189. package/types/entity/Label.d.ts +24 -29
  190. package/types/entity/LabelHandler.d.ts +9 -2
  191. package/types/entity/LabelWorker.d.ts +9 -0
  192. package/types/entity/PointCloud.d.ts +8 -8
  193. package/types/entity/PointCloudHandler.d.ts +3 -3
  194. package/types/entity/Polyline.d.ts +58 -55
  195. package/types/entity/Ray.d.ts +19 -18
  196. package/types/entity/Strip.d.ts +8 -7
  197. package/types/entity/StripHandler.d.ts +3 -3
  198. package/types/entity/index.d.ts +7 -7
  199. package/types/input/KeyboardHandler.d.ts +10 -0
  200. package/types/input/MouseHandler.d.ts +5 -0
  201. package/types/input/TouchHandler.d.ts +5 -0
  202. package/types/layer/BaseGeoImage.d.ts +23 -35
  203. package/types/layer/CanvasTiles.d.ts +15 -22
  204. package/types/layer/GeoImage.d.ts +5 -18
  205. package/types/layer/GeoVideo.d.ts +5 -30
  206. package/types/layer/KML.d.ts +20 -15
  207. package/types/layer/Layer.d.ts +326 -0
  208. package/types/layer/Material.d.ts +45 -0
  209. package/types/layer/Vector.d.ts +208 -0
  210. package/types/layer/WMS.d.ts +4 -7
  211. package/types/layer/XYZ.d.ts +19 -25
  212. package/types/light/LightSource.d.ts +54 -53
  213. package/types/math/Line2.d.ts +11 -0
  214. package/types/math/Line3.d.ts +10 -0
  215. package/types/math/Mat3.d.ts +30 -18
  216. package/types/math/Mat4.d.ts +71 -52
  217. package/types/math/Plane.d.ts +5 -4
  218. package/types/math/Quat.d.ts +379 -0
  219. package/types/math/Ray.d.ts +82 -0
  220. package/types/math/Vec2.d.ts +102 -101
  221. package/types/math/Vec3.d.ts +143 -142
  222. package/types/math/Vec4.d.ts +40 -39
  223. package/types/math/coder.d.ts +12 -11
  224. package/types/math.d.ts +8 -8
  225. package/types/mercator.d.ts +3 -3
  226. package/types/proj/EPSG3857.d.ts +3 -2
  227. package/types/proj/EPSG4326.d.ts +3 -2
  228. package/types/proj/Proj.d.ts +42 -0
  229. package/types/quadTree/EntityCollectionNode.d.ts +34 -0
  230. package/types/quadTree/Node.d.ts +61 -0
  231. package/types/renderer/Renderer.d.ts +300 -0
  232. package/types/renderer/RendererEvents.d.ts +10 -7
  233. package/types/scene/BaseNode.d.ts +9 -9
  234. package/types/scene/Planet.d.ts +131 -126
  235. package/types/scene/RenderNode.d.ts +22 -23
  236. package/types/segment/Segment.d.ts +279 -0
  237. package/types/segment/SegmentLonLat.d.ts +16 -0
  238. package/types/shaders/geoObject.d.ts +3 -0
  239. package/types/shapes/BaseShape.d.ts +43 -40
  240. package/types/shapes/Sphere.d.ts +7 -7
  241. package/types/terrain/BilTerrain.d.ts +0 -1
  242. package/types/terrain/EmptyTerrain.d.ts +4 -4
  243. package/types/terrain/GlobusTerrain.d.ts +17 -54
  244. package/types/terrain/MapboxTerrain.d.ts +0 -1
  245. package/types/utils/GeoImageCreator.d.ts +3 -2
  246. package/types/utils/TextureAtlas.d.ts +8 -8
  247. package/types/utils/shared.d.ts +25 -24
  248. package/types/webgl/Framebuffer.d.ts +5 -5
  249. package/types/webgl/Handler.d.ts +68 -43
  250. package/types/webgl/Multisample.d.ts +5 -5
  251. package/types/webgl/Program.d.ts +8 -2
  252. package/types/webgl/ProgramController.d.ts +18 -13
  253. package/src/og/inherits.js +0 -8
  254. package/src/og/utils/polylabel.js +0 -176
  255. package/types/inherits.d.ts +0 -4
@@ -27,10 +27,9 @@ const vendorPrefixes = ["", "WEBKIT_", "MOZ_"];
27
27
  * @param {string} id - Canvas element id that WebGL handler assing with. If it's null
28
28
  * or undefined creates hidden canvas and handler bacomes hidden.
29
29
  * @param {Object} [params] - Handler options:
30
- * @param {number} [params.anisotropy] - Anisitropy filter degree. 8 is default.
30
+ * @param {number} [params.anisotropy] - Anisotropy filter degree. 8 is default.
31
31
  * @param {number} [params.width] - Hidden handler width. 256 is default.
32
32
  * @param {number} [params.height] - Hidden handler height. 256 is default.
33
- * @param {Object} [param.scontext] - Native WebGL context attributes. See https://www.khronos.org/registry/webgl/specs/latest/1.0/#WEBGLCONTEXTATTRIBUTES
34
33
  * @param {Array.<string>} [params.extensions] - Additional WebGL extension list. Available by default: EXT_texture_filter_anisotropic.
35
34
  */
36
35
  class Handler {
@@ -40,14 +39,14 @@ class Handler {
40
39
  /**
41
40
  * Application default timer.
42
41
  * @public
43
- * @type {og.Clock}
42
+ * @type {Clock}
44
43
  */
45
44
  this.defaultClock = new Clock();
46
45
 
47
46
  /**
48
47
  * Custom timers.
49
48
  * @protected
50
- * @type{og.Clock[]}
49
+ * @type{Clock[]}
51
50
  */
52
51
  this._clocks = [];
53
52
 
@@ -83,7 +82,7 @@ class Handler {
83
82
  /**
84
83
  * Current active shader program controller.
85
84
  * @public
86
- * @type {og.webgl.ProgramController}
85
+ * @type {ProgramController}
87
86
  */
88
87
  this.activeProgram = null;
89
88
 
@@ -100,7 +99,7 @@ class Handler {
100
99
  }
101
100
  this._params.width = w || 256;
102
101
 
103
- var h = this._params.height;
102
+ let h = this._params.height;
104
103
  if (h > MAX_SIZE) {
105
104
  h = MAX_SIZE;
106
105
  }
@@ -150,7 +149,7 @@ class Handler {
150
149
  * @returns {Object} -
151
150
  */
152
151
  static getExtension(gl, name) {
153
- var i, ext;
152
+ let i, ext;
154
153
  for (i in vendorPrefixes) {
155
154
  ext = gl.getExtension(vendorPrefixes[i] + name);
156
155
  if (ext) {
@@ -168,12 +167,13 @@ class Handler {
168
167
  */
169
168
  static getContext(canvas, contextAttributes) {
170
169
  const CONTEXT_TYPE = ["webgl2", "webgl"];
171
- var ctx = null;
170
+ let ctx = null;
172
171
 
173
172
  try {
174
173
  for (let i = 0; i < CONTEXT_TYPE.length; i++) {
175
174
  ctx = canvas.getContext(CONTEXT_TYPE[i], contextAttributes);
176
175
  if (ctx) {
176
+ console.log(CONTEXT_TYPE[i]);
177
177
  ctx.type = CONTEXT_TYPE[i];
178
178
  break;
179
179
  }
@@ -198,26 +198,6 @@ class Handler {
198
198
  callback && (this._frameCallback = callback);
199
199
  }
200
200
 
201
- /**
202
- * Creates NEAREST filter texture.
203
- * @public
204
- * @param {Object} image - Image or Canvas object.
205
- * @returns {Object} - WebGL texture object.
206
- */
207
- createTexture_n(image) {
208
- var gl = this.gl;
209
- var texture = gl.createTexture();
210
- gl.bindTexture(gl.TEXTURE_2D, texture);
211
- gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
212
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
213
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
214
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
215
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
216
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
217
- gl.bindTexture(gl.TEXTURE_2D, null);
218
- return texture;
219
- }
220
-
221
201
  /**
222
202
  * Creates empty texture.
223
203
  * @public
@@ -239,8 +219,8 @@ class Handler {
239
219
  type = "UNSIGNED_BYTE",
240
220
  level = 0
241
221
  ) {
242
- var gl = this.gl;
243
- var texture = gl.createTexture();
222
+ let gl = this.gl;
223
+ let texture = gl.createTexture();
244
224
  gl.bindTexture(gl.TEXTURE_2D, texture);
245
225
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
246
226
 
@@ -315,8 +295,8 @@ class Handler {
315
295
  * @returns {Object} - WebGL texture object.
316
296
  */
317
297
  createEmptyTexture_n(width, height) {
318
- var gl = this.gl;
319
- var texture = gl.createTexture();
298
+ let gl = this.gl;
299
+ let texture = gl.createTexture();
320
300
  gl.bindTexture(gl.TEXTURE_2D, texture);
321
301
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
322
302
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
@@ -336,8 +316,8 @@ class Handler {
336
316
  * @returns {Object} - WebGL texture object.
337
317
  */
338
318
  createEmptyTexture_l(width, height) {
339
- var gl = this.gl;
340
- var texture = gl.createTexture();
319
+ let gl = this.gl;
320
+ let texture = gl.createTexture();
341
321
  gl.bindTexture(gl.TEXTURE_2D, texture);
342
322
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
343
323
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
@@ -350,15 +330,35 @@ class Handler {
350
330
  }
351
331
 
352
332
  /**
353
- * Creates LINEAR filter texture.
333
+ * Creates NEAREST filter texture.
354
334
  * @public
355
335
  * @param {Object} image - Image or Canvas object.
356
336
  * @returns {Object} - WebGL texture object.
357
337
  */
358
- createTexture_l(image) {
359
- var gl = this.gl;
338
+ static createTexture_n(handler, image) {
339
+ var gl = handler.gl;
360
340
  var texture = gl.createTexture();
361
341
  gl.bindTexture(gl.TEXTURE_2D, texture);
342
+ gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
343
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
344
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
345
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
346
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
347
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
348
+ gl.bindTexture(gl.TEXTURE_2D, null);
349
+ return texture;
350
+ }
351
+
352
+ /**
353
+ * Creates LINEAR filter texture.
354
+ * @public
355
+ * @param {Object} image - Image or Canvas object.
356
+ * @returns {Object} - WebGL texture object.
357
+ */
358
+ static createTexture_l(handler, image) {
359
+ let gl = handler.gl;
360
+ let texture = gl.createTexture();
361
+ gl.bindTexture(gl.TEXTURE_2D, texture);
362
362
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
363
363
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
364
364
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
@@ -374,9 +374,9 @@ class Handler {
374
374
  * @param {Object} image - Image or Canvas object.
375
375
  * @returns {Object} - WebGL texture object.
376
376
  */
377
- createTexture_mm(image) {
378
- var gl = this.gl;
379
- var texture = gl.createTexture();
377
+ static createTexture_mm(handler, image) {
378
+ let gl = handler.gl;
379
+ let texture = gl.createTexture();
380
380
  gl.bindTexture(gl.TEXTURE_2D, texture);
381
381
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
382
382
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
@@ -394,9 +394,9 @@ class Handler {
394
394
  * @param {Object} image - Image or Canvas object.
395
395
  * @returns {Object} - WebGL texture object.
396
396
  */
397
- createTexture_a(image) {
398
- var gl = this.gl;
399
- var texture = gl.createTexture();
397
+ static createTexture_a(handler, image) {
398
+ let gl = handler.gl;
399
+ let texture = gl.createTexture();
400
400
  gl.bindTexture(gl.TEXTURE_2D, texture);
401
401
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
402
402
  gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
@@ -404,8 +404,8 @@ class Handler {
404
404
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
405
405
  gl.texParameterf(
406
406
  gl.TEXTURE_2D,
407
- this.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT,
408
- this._params.anisotropy
407
+ handler.extensions.EXT_texture_filter_anisotropic.TEXTURE_MAX_ANISOTROPY_EXT,
408
+ handler._params.anisotropy
409
409
  );
410
410
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
411
411
  gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
@@ -420,7 +420,23 @@ class Handler {
420
420
  * @returns {Object} - WebGL texture object.
421
421
  */
422
422
  createTexture(image) {
423
- return this.createTexture_a(image);
423
+ return Handler.createTexture_a(this, image);
424
+ }
425
+
426
+ createTexture_n(image) {
427
+ return Handler.createTexture_n(this, image);
428
+ }
429
+
430
+ createTexture_l(image) {
431
+ return Handler.createTexture_l(this, image);
432
+ }
433
+
434
+ createTexture_mm(image) {
435
+ return Handler.createTexture_mm(this, image);
436
+ }
437
+
438
+ createTexture_a(image) {
439
+ return Handler.createTexture_a(this, image);
424
440
  }
425
441
 
426
442
  /**
@@ -436,15 +452,15 @@ class Handler {
436
452
  * @returns {Object} - WebGL texture object.
437
453
  */
438
454
  loadCubeMapTexture(params) {
439
- var gl = this.gl;
440
- var texture = gl.createTexture();
455
+ let gl = this.gl;
456
+ let texture = gl.createTexture();
441
457
  gl.bindTexture(gl.TEXTURE_CUBE_MAP, texture);
442
458
  gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
443
459
  gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
444
460
  gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
445
461
  gl.texParameteri(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
446
462
 
447
- var faces = [
463
+ let faces = [
448
464
  [params.px, gl.TEXTURE_CUBE_MAP_POSITIVE_X],
449
465
  [params.nx, gl.TEXTURE_CUBE_MAP_NEGATIVE_X],
450
466
  [params.py, gl.TEXTURE_CUBE_MAP_POSITIVE_Y],
@@ -453,9 +469,9 @@ class Handler {
453
469
  [params.nz, gl.TEXTURE_CUBE_MAP_NEGATIVE_Z]
454
470
  ];
455
471
 
456
- var imageCanvas = new ImageCanvas();
472
+ let imageCanvas = new ImageCanvas();
457
473
  imageCanvas.fillEmpty();
458
- var emptyImage = imageCanvas.getImage();
474
+ let emptyImage = imageCanvas.getImage();
459
475
 
460
476
  for (let i = 0; i < faces.length; i++) {
461
477
  let face = faces[i][1];
@@ -483,13 +499,13 @@ class Handler {
483
499
  /**
484
500
  * Adds shader program to the handler.
485
501
  * @public
486
- * @param {og.webgl.Program} program - Shader program.
502
+ * @param {Program} program - Shader program.
487
503
  * @param {boolean} [notActivate] - If it's true program will not compile.
488
- * @return {og.webgl.Program} -
504
+ * @return {Program} -
489
505
  */
490
506
  addProgram(program, notActivate) {
491
507
  if (!this.programs[program.name]) {
492
- var sc = new ProgramController(this, program);
508
+ let sc = new ProgramController(this, program);
493
509
  this.programs[program.name] = sc;
494
510
  this._initProgramController(sc);
495
511
  if (notActivate) {
@@ -515,10 +531,10 @@ class Handler {
515
531
  /**
516
532
  * Adds shader programs to the handler.
517
533
  * @public
518
- * @param {Array.<og.webgl.Program>} programsArr - Shader program array.
534
+ * @param {Array.<Program>} programsArr - Shader program array.
519
535
  */
520
536
  addPrograms(programsArr) {
521
- for (var i = 0; i < programsArr.length; i++) {
537
+ for (let i = 0; i < programsArr.length; i++) {
522
538
  this.addProgram(programsArr[i]);
523
539
  }
524
540
  }
@@ -526,7 +542,7 @@ class Handler {
526
542
  /**
527
543
  * Used in addProgram
528
544
  * @private
529
- * @param {og.webgl.ProgramController} sc - Program controller
545
+ * @param {ProgramController} sc - Program controller
530
546
  */
531
547
  _initProgramController(sc) {
532
548
  if (this._initialized) {
@@ -547,7 +563,7 @@ class Handler {
547
563
  * @private
548
564
  */
549
565
  _initPrograms() {
550
- for (var p in this.programs) {
566
+ for (let p in this.programs) {
551
567
  this._initProgramController(this.programs[p]);
552
568
  }
553
569
  }
@@ -561,7 +577,7 @@ class Handler {
561
577
  */
562
578
  initializeExtension(extensionStr, showLog) {
563
579
  if (!(this.extensions && this.extensions[extensionStr])) {
564
- var ext = Handler.getExtension(this.gl, extensionStr);
580
+ let ext = Handler.getExtension(this.gl, extensionStr);
565
581
  if (ext) {
566
582
  this.extensions[extensionStr] = ext;
567
583
  } else if (showLog) {
@@ -578,7 +594,6 @@ class Handler {
578
594
  * @public
579
595
  */
580
596
  initialize() {
581
-
582
597
  if (this._id) {
583
598
  this.canvas = document.getElementById(this._id);
584
599
  } else {
@@ -603,7 +618,7 @@ class Handler {
603
618
  this._params.extensions.push("OES_texture_float_linear");
604
619
  }
605
620
 
606
- var i = this._params.extensions.length;
621
+ let i = this._params.extensions.length;
607
622
  while (i--) {
608
623
  this.initializeExtension(this._params.extensions[i], true);
609
624
  }
@@ -631,7 +646,7 @@ class Handler {
631
646
  this.gl.cullFace(this.gl.BACK);
632
647
  this.activateFaceCulling();
633
648
  this.deactivateBlending();
634
- var that = this;
649
+ let that = this;
635
650
  this.createDefaultTexture({ color: "rgba(0,0,0,0.0)" }, function (t) {
636
651
  that.transparentTexture = t;
637
652
  });
@@ -695,7 +710,7 @@ class Handler {
695
710
  * @return {Object} -
696
711
  */
697
712
  createStreamArrayBuffer(itemSize, numItems, usage, bites = 4) {
698
- var buffer = this.gl.createBuffer();
713
+ let buffer = this.gl.createBuffer();
699
714
  this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
700
715
  this.gl.bufferData(
701
716
  this.gl.ARRAY_BUFFER,
@@ -735,7 +750,7 @@ class Handler {
735
750
  * @return {Object} -
736
751
  */
737
752
  createArrayBuffer(array, itemSize, numItems, usage) {
738
- var buffer = this.gl.createBuffer();
753
+ let buffer = this.gl.createBuffer();
739
754
  this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
740
755
  this.gl.bufferData(this.gl.ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
741
756
  this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
@@ -744,6 +759,25 @@ class Handler {
744
759
  return buffer;
745
760
  }
746
761
 
762
+ /**
763
+ * Creates ARRAY buffer specific length.
764
+ * @public
765
+ * @param {Array.<number>} array - Input array.
766
+ * @param {number} itemSize - Array item size.
767
+ * @param {number} numItems - Items quantity.
768
+ * @param {number} [usage=STATIC_DRAW] - Parameter of the bufferData call can be one of STATIC_DRAW, DYNAMIC_DRAW, or STREAM_DRAW.
769
+ * @return {Object} -
770
+ */
771
+ createArrayBufferLength(size, usage) {
772
+ let buffer = this.gl.createBuffer();
773
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, buffer);
774
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, size, usage || this.gl.STATIC_DRAW);
775
+ this.gl.bindBuffer(this.gl.ARRAY_BUFFER, null);
776
+ buffer.itemSize = 1;
777
+ buffer.numItems = size;
778
+ return buffer;
779
+ }
780
+
747
781
  /**
748
782
  * Creates ELEMENT ARRAY buffer.
749
783
  * @public
@@ -754,7 +788,7 @@ class Handler {
754
788
  * @return {Object} -
755
789
  */
756
790
  createElementArrayBuffer(array, itemSize, numItems, usage) {
757
- var buffer = this.gl.createBuffer();
791
+ let buffer = this.gl.createBuffer();
758
792
  this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, buffer);
759
793
  this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER, array, usage || this.gl.STATIC_DRAW);
760
794
  this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER, null);
@@ -770,7 +804,6 @@ class Handler {
770
804
  * @param {number} h - Canvas height.
771
805
  */
772
806
  setSize(w, h) {
773
-
774
807
  if (w > MAX_SIZE) {
775
808
  w = MAX_SIZE;
776
809
  }
@@ -822,7 +855,7 @@ class Handler {
822
855
  * @returns {number} -
823
856
  */
824
857
  getCenter() {
825
- var c = this.canvas;
858
+ let c = this.canvas;
826
859
  return new Vec2(Math.round(c.width * 0.5), Math.round(c.height * 0.5));
827
860
  }
828
861
 
@@ -833,18 +866,18 @@ class Handler {
833
866
  */
834
867
  drawFrame() {
835
868
  /** Calculating frame time */
836
- var now = window.performance.now();
869
+ let now = window.performance.now();
837
870
  this.deltaTime = now - this._lastAnimationFrameTime;
838
871
  this._lastAnimationFrameTime = now;
839
872
 
840
873
  this.defaultClock._tick(this.deltaTime);
841
874
 
842
- for (var i = 0; i < this._clocks.length; i++) {
875
+ for (let i = 0; i < this._clocks.length; i++) {
843
876
  this._clocks[i]._tick(this.deltaTime);
844
877
  }
845
878
 
846
879
  /** Canvas resize checking */
847
- var canvas = this.canvas;
880
+ let canvas = this.canvas;
848
881
  if (canvas.clientWidth !== canvas.width || canvas.clientHeight !== canvas.height) {
849
882
  this.setSize(canvas.clientWidth, canvas.clientHeight);
850
883
  }
@@ -858,7 +891,7 @@ class Handler {
858
891
  * @public
859
892
  */
860
893
  clearFrame() {
861
- var gl = this.gl;
894
+ let gl = this.gl;
862
895
  this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
863
896
  gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
864
897
  }
@@ -900,17 +933,17 @@ class Handler {
900
933
  * @param {callback} [success] - Creation callback
901
934
  */
902
935
  createDefaultTexture(params, success) {
903
- var imgCnv;
904
- var texture;
936
+ let imgCnv;
937
+ let texture;
905
938
  if (params && params.color) {
906
939
  imgCnv = new ImageCanvas(2, 2);
907
940
  imgCnv.fillColor(params.color);
908
- texture = this.createTexture_n(imgCnv._canvas);
941
+ texture = Handler.createTexture_n(this, imgCnv._canvas);
909
942
  texture.default = true;
910
943
  success(texture);
911
944
  } else if (params && params.url) {
912
- var img = new Image();
913
- var that = this;
945
+ let img = new Image();
946
+ let that = this;
914
947
  img.onload = function () {
915
948
  texture = that.createTexture(this);
916
949
  texture.default = true;
@@ -920,7 +953,7 @@ class Handler {
920
953
  } else {
921
954
  imgCnv = new ImageCanvas(2, 2);
922
955
  imgCnv.fillColor("#C5C5C5");
923
- texture = this.createTexture_n(imgCnv._canvas);
956
+ texture = Handler.createTexture_n(this, imgCnv._canvas);
924
957
  texture.default = true;
925
958
  success(texture);
926
959
  }
@@ -930,11 +963,11 @@ class Handler {
930
963
  * @public
931
964
  */
932
965
  destroy() {
933
- var gl = this.gl;
966
+ let gl = this.gl;
934
967
 
935
968
  this.stop();
936
969
 
937
- for (var p in this.programs) {
970
+ for (let p in this.programs) {
938
971
  this.removeProgram(p);
939
972
  }
940
973
 
@@ -951,8 +984,8 @@ class Handler {
951
984
  this.canvas.height = 1;
952
985
  this.canvas = null;
953
986
 
954
- var numAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
955
- var tmp = gl.createBuffer();
987
+ let numAttribs = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);
988
+ let tmp = gl.createBuffer();
956
989
  gl.bindBuffer(gl.ARRAY_BUFFER, tmp);
957
990
  for (let ii = 0; ii < numAttribs; ++ii) {
958
991
  gl.disableVertexAttribArray(ii);
@@ -961,7 +994,7 @@ class Handler {
961
994
  }
962
995
  gl.deleteBuffer(tmp);
963
996
 
964
- var numTextureUnits = gl.getParameter(gl.MAX_TEXTlURE_IMAGE_UNITS);
997
+ let numTextureUnits = gl.getParameter(gl.MAX_TEXTlURE_IMAGE_UNITS);
965
998
  for (let ii = 0; ii < numTextureUnits; ++ii) {
966
999
  gl.activeTexture(gl.TEXTURE0 + ii);
967
1000
  gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);
@@ -999,15 +1032,15 @@ class Handler {
999
1032
  }
1000
1033
 
1001
1034
  addClocks(clockArr) {
1002
- for (var i = 0; i < clockArr.length; i++) {
1035
+ for (let i = 0; i < clockArr.length; i++) {
1003
1036
  this.addClock(clockArr[i]);
1004
1037
  }
1005
1038
  }
1006
1039
 
1007
1040
  removeClock(clock) {
1008
1041
  if (clock.__handler) {
1009
- var c = this._clocks;
1010
- var i = c.length;
1042
+ let c = this._clocks;
1043
+ let i = c.length;
1011
1044
  while (i--) {
1012
1045
  if (c[i].equal(clock)) {
1013
1046
  clock.__handler = null;
@@ -1019,4 +1052,11 @@ class Handler {
1019
1052
  }
1020
1053
  }
1021
1054
 
1055
+ export const createTexture = {
1056
+ NEAREST: Handler.createTexture_n,
1057
+ LINEAR: Handler.createTexture_l,
1058
+ MIPMAP: Handler.createTexture_mm,
1059
+ ANISOTROPIC: Handler.createTexture_a
1060
+ };
1061
+
1022
1062
  export { Handler };