@openglobus/og 0.16.2 → 0.17.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 (181) hide show
  1. package/README.md +1 -1
  2. package/css/og.css +24 -2
  3. package/dist/@openglobus/og.css +1 -1
  4. package/dist/@openglobus/og.esm.js +2 -2
  5. package/dist/@openglobus/og.esm.js.map +1 -1
  6. package/dist/@openglobus/og.umd.js +2 -2
  7. package/dist/@openglobus/og.umd.js.map +1 -1
  8. package/package.json +1 -1
  9. package/src/og/Clock.js +1 -5
  10. package/src/og/Events.js +0 -4
  11. package/src/og/Extent.js +5 -9
  12. package/src/og/Globe.js +92 -55
  13. package/src/og/ImageCanvas.js +12 -5
  14. package/src/og/Lock.js +44 -48
  15. package/src/og/LonLat.js +0 -4
  16. package/src/og/Object3d.js +1 -1
  17. package/src/og/Stack.js +49 -53
  18. package/src/og/astro/earth.js +112 -116
  19. package/src/og/astro/jd.js +514 -518
  20. package/src/og/astro/orbit.js +119 -123
  21. package/src/og/astro/rotation.js +36 -40
  22. package/src/og/bv/Box.js +77 -81
  23. package/src/og/bv/Sphere.js +57 -61
  24. package/src/og/camera/Camera.js +20 -7
  25. package/src/og/camera/PlanetCamera.js +8 -15
  26. package/src/og/control/Atmosphere.js +0 -4
  27. package/src/og/control/Control.js +9 -8
  28. package/src/og/control/DebugInfo.js +0 -4
  29. package/src/og/control/DrawingSwitcher.js +117 -0
  30. package/src/og/control/EarthCoordinates.js +214 -214
  31. package/src/og/control/GeoImageDragControl.js +0 -4
  32. package/src/og/control/KeyboardNavigation.js +0 -4
  33. package/src/og/control/LayerAnimation.js +0 -4
  34. package/src/og/control/LayerSwitcher.js +2 -4
  35. package/src/og/control/Lighting.js +11 -15
  36. package/src/og/control/MouseNavigation.js +0 -4
  37. package/src/og/control/MouseWheelZoomControl.js +0 -4
  38. package/src/og/control/RulerSwitcher.js +0 -4
  39. package/src/og/control/ScaleControl.js +2 -6
  40. package/src/og/control/ShowFps.js +40 -44
  41. package/src/og/control/SimpleNavigation.js +10 -10
  42. package/src/og/control/SimpleSkyBackground.js +0 -4
  43. package/src/og/control/Sun.js +0 -4
  44. package/src/og/control/ToggleWireframe.js +35 -39
  45. package/src/og/control/ZoomControl.js +0 -4
  46. package/src/og/control/drawing/DrawingControl.js +51 -0
  47. package/src/og/control/drawing/LineStringDrawingScene.js +203 -0
  48. package/src/og/control/drawing/PolygonDrawingScene.js +785 -0
  49. package/src/og/control/elevationProfile/ElevationProfile.js +275 -0
  50. package/src/og/control/index.js +5 -1
  51. package/src/og/control/ruler/Ruler.js +0 -4
  52. package/src/og/control/ruler/RulerScene.js +3 -2
  53. package/src/og/control/selection/Selection.js +0 -4
  54. package/src/og/control/selection/SelectionScene.js +2 -4
  55. package/src/og/control/timeline/TimelineControl.js +4 -4
  56. package/src/og/control/timeline/TimelineModel.js +2 -2
  57. package/src/og/control/timeline/TimelineView.js +1 -0
  58. package/src/og/control/visibleExtent/Segment.js +5 -5
  59. package/src/og/control/visibleExtent/drawnode.js +0 -4
  60. package/src/og/ellipsoid/Ellipsoid.js +205 -275
  61. package/src/og/ellipsoid/wgs84.js +0 -4
  62. package/src/og/entity/BaseBillboard.js +375 -379
  63. package/src/og/entity/Billboard.js +0 -4
  64. package/src/og/entity/BillboardHandler.js +0 -4
  65. package/src/og/entity/Entity.js +22 -22
  66. package/src/og/entity/EntityCollection.js +7 -11
  67. package/src/og/entity/GeoObject.js +0 -4
  68. package/src/og/entity/GeoObjectHandler.js +0 -4
  69. package/src/og/entity/Geometry.js +5 -4
  70. package/src/og/entity/GeometryHandler.js +3 -4
  71. package/src/og/entity/Label.js +0 -4
  72. package/src/og/entity/LabelHandler.js +0 -4
  73. package/src/og/entity/PointCloud.js +0 -4
  74. package/src/og/entity/PointCloudHandler.js +122 -126
  75. package/src/og/entity/Polyline.js +4 -6
  76. package/src/og/entity/PolylineHandler.js +104 -108
  77. package/src/og/entity/Ray.js +29 -29
  78. package/src/og/entity/Strip.js +1 -1
  79. package/src/og/index.js +3 -1
  80. package/src/og/input/KeyboardHandler.js +128 -132
  81. package/src/og/input/MouseHandler.js +94 -98
  82. package/src/og/input/TouchHandler.js +59 -63
  83. package/src/og/input/input.js +44 -48
  84. package/src/og/layer/BaseGeoImage.js +5 -8
  85. package/src/og/layer/CanvasTiles.js +0 -4
  86. package/src/og/layer/GeoImage.js +0 -4
  87. package/src/og/layer/GeoTexture2d.js +0 -4
  88. package/src/og/layer/GeoVideo.js +0 -4
  89. package/src/og/layer/KML.js +2 -3
  90. package/src/og/layer/Layer.js +22 -26
  91. package/src/og/layer/Material.js +0 -4
  92. package/src/og/layer/Vector.js +23 -20
  93. package/src/og/layer/WMS.js +182 -186
  94. package/src/og/layer/XYZ.js +0 -4
  95. package/src/og/light/LightSource.js +0 -4
  96. package/src/og/math/Line2.js +28 -32
  97. package/src/og/math/Mat3.js +152 -156
  98. package/src/og/math/Ray.js +0 -4
  99. package/src/og/math/Vec2.js +0 -4
  100. package/src/og/math/Vec3.js +0 -4
  101. package/src/og/math/Vec4.js +0 -4
  102. package/src/og/math/coder.js +104 -104
  103. package/src/og/math.js +39 -7
  104. package/src/og/proj/EPSG3857.js +13 -13
  105. package/src/og/proj/Proj.js +59 -63
  106. package/src/og/quadTree/EPSG4326QuadTreeStrategy.js +1 -0
  107. package/src/og/quadTree/EarthQuadTreeStrategy.js +1 -0
  108. package/src/og/quadTree/EntityCollectionNode.js +12 -16
  109. package/src/og/quadTree/MarsQuadTreeStrategy.js +1 -0
  110. package/src/og/quadTree/QuadTreeStrategy.js +1 -0
  111. package/src/og/quadTree/Wgs84QuadTreeStrategy.js +1 -0
  112. package/src/og/renderer/Renderer.js +109 -22
  113. package/src/og/renderer/RendererEvents.js +0 -4
  114. package/src/og/scene/Axes.js +74 -78
  115. package/src/og/scene/BaseNode.js +0 -4
  116. package/src/og/scene/Planet.js +114 -112
  117. package/src/og/scene/RenderNode.js +11 -3
  118. package/src/og/scene/SkyBox.js +104 -108
  119. package/src/og/segment/Segment.js +8 -4
  120. package/src/og/segment/SegmentLonLat.js +2 -6
  121. package/src/og/segment/segmentHelper.js +229 -225
  122. package/src/og/shaders/billboard.js +0 -4
  123. package/src/og/shaders/drawnode.js +5 -9
  124. package/src/og/shaders/geoObject.js +0 -4
  125. package/src/og/shaders/label.js +0 -4
  126. package/src/og/shaders/pickingMask.js +0 -4
  127. package/src/og/shaders/pointCloud.js +0 -4
  128. package/src/og/shaders/polyline.js +0 -4
  129. package/src/og/shaders/ray.js +0 -4
  130. package/src/og/shaders/skybox.js +0 -4
  131. package/src/og/terrain/EmptyTerrain.js +0 -4
  132. package/src/og/utils/FontAtlas.js +0 -4
  133. package/src/og/utils/GeoImageCreator.js +1 -2
  134. package/src/og/utils/NormalMapCreator.js +8 -9
  135. package/src/og/utils/VectorTileCreator.js +3 -9
  136. package/src/og/utils/shared.js +20 -1
  137. package/src/og/webgl/Framebuffer.js +0 -4
  138. package/src/og/webgl/Handler.js +45 -19
  139. package/src/og/webgl/Multisample.js +0 -4
  140. package/src/og/webgl/Program.js +0 -4
  141. package/src/og/webgl/ProgramController.js +2 -2
  142. package/types/Clock.d.ts +1 -1
  143. package/types/Extent.d.ts +5 -5
  144. package/types/Globe.d.ts +15 -1
  145. package/types/ImageCanvas.d.ts +5 -0
  146. package/types/bv/Box.d.ts +1 -1
  147. package/types/bv/Sphere.d.ts +3 -3
  148. package/types/camera/Camera.d.ts +3 -2
  149. package/types/camera/PlanetCamera.d.ts +4 -4
  150. package/types/control/DrawingSwitcher.d.ts +13 -0
  151. package/types/control/EarthCoordinates.d.ts +1 -1
  152. package/types/control/Lighting.d.ts +8 -8
  153. package/types/control/drawing/DrawingControl.d.ts +14 -0
  154. package/types/control/drawing/LineStringDrawingScene.d.ts +5 -0
  155. package/types/control/drawing/PolygonDrawingScene.d.ts +99 -0
  156. package/types/control/index.d.ts +3 -1
  157. package/types/control/ruler/RulerScene.d.ts +0 -1
  158. package/types/control/selection/SelectionScene.d.ts +0 -1
  159. package/types/ellipsoid/Ellipsoid.d.ts +50 -63
  160. package/types/entity/Entity.d.ts +3 -2
  161. package/types/entity/Geometry.d.ts +5 -0
  162. package/types/entity/Polyline.d.ts +1 -1
  163. package/types/entity/Ray.d.ts +1 -0
  164. package/types/index.d.ts +1 -0
  165. package/types/layer/BaseGeoImage.d.ts +1 -1
  166. package/types/layer/CanvasTiles.d.ts +1 -1
  167. package/types/layer/Layer.d.ts +1 -1
  168. package/types/layer/Vector.d.ts +1 -0
  169. package/types/math.d.ts +7 -0
  170. package/types/renderer/Renderer.d.ts +7 -1
  171. package/types/scene/Axes.d.ts +0 -1
  172. package/types/scene/Planet.d.ts +26 -24
  173. package/types/scene/RenderNode.d.ts +2 -0
  174. package/types/scene/SkyBox.d.ts +0 -1
  175. package/types/segment/Segment.d.ts +3 -2
  176. package/types/segment/SegmentLonLat.d.ts +0 -1
  177. package/types/utils/GeoImageCreator.d.ts +1 -1
  178. package/types/utils/NormalMapCreator.d.ts +1 -1
  179. package/types/utils/VectorTileCreator.d.ts +2 -2
  180. package/types/utils/shared.d.ts +2 -0
  181. package/types/webgl/Handler.d.ts +6 -4
@@ -1,109 +1,105 @@
1
- /**
2
- * @module og/entity/PolylineHandler
3
- */
4
-
5
- 'use strict';
6
-
7
- import * as shaders from '../shaders/polyline.js';
8
-
9
- class PolylineHandler {
10
- constructor(entityCollection) {
11
-
12
- this._entityCollection = entityCollection;
13
-
14
- this._renderer = null;
15
-
16
- this._polylines = [];
17
-
18
- this.__staticId = PolylineHandler._staticCounter++;
19
-
20
- this.pickingEnabled = true;
21
- }
22
-
23
- static get _staticCounter() {
24
- if (!this._counter && this._counter !== 0) {
25
- this._counter = 0;
26
- }
27
- return this._counter;
28
- }
29
-
30
- static set _staticCounter(n) {
31
- this._counter = n;
32
- }
33
-
34
- _initProgram() {
35
- if (this._renderer.handler) {
36
- if (!this._renderer.handler.programs.polyline_screen) {
37
- this._renderer.handler.addProgram(shaders.polyline_screen());
38
- }
39
- if (!this._renderer.handler.programs.polyline_picking) {
40
- this._renderer.handler.addProgram(shaders.polyline_picking());
41
- }
42
- }
43
- }
44
-
45
- setRenderNode(renderNode) {
46
- this._renderer = renderNode.renderer;
47
- this._initProgram();
48
- for (var i = 0; i < this._polylines.length; i++) {
49
- this._polylines[i].setRenderNode(renderNode);
50
- }
51
- }
52
-
53
- add(polyline) {
54
- if (polyline._handlerIndex === -1) {
55
- polyline._handler = this;
56
- polyline._handlerIndex = this._polylines.length;
57
- this._polylines.push(polyline);
58
- this._entityCollection && this._entityCollection.renderNode &&
59
- polyline.setRenderNode(this._entityCollection.renderNode);
60
- }
61
- }
62
-
63
- remove(polyline) {
64
- var index = polyline._handlerIndex;
65
- if (index !== -1) {
66
- polyline._deleteBuffers();
67
- polyline._handlerIndex = -1;
68
- polyline._handler = null;
69
- this._polylines.splice(index, 1);
70
- this.reindexPolylineArray(index);
71
- }
72
- }
73
-
74
- reindexPolylineArray(startIndex) {
75
- var ls = this._polylines;
76
- for (var i = startIndex; i < ls.length; i++) {
77
- ls[i]._handlerIndex = i;
78
- }
79
- }
80
-
81
- draw() {
82
- let i = this._polylines.length;
83
- while (i--) {
84
- this._polylines[i].draw();
85
- }
86
- }
87
-
88
- drawPicking() {
89
- if (this.pickingEnabled) {
90
- let i = this._polylines.length;
91
- while (i--) {
92
- this._polylines[i].drawPicking();
93
- }
94
- }
95
- }
96
-
97
- clear() {
98
- var i = this._polylines.length;
99
- while (i--) {
100
- this._polylines[i]._deleteBuffers();
101
- this._polylines[i]._handler = null;
102
- this._polylines[i]._handlerIndex = -1;
103
- }
104
- this._polylines.length = 0;
105
- this._polylines = [];
106
- }
107
- }
108
-
1
+ 'use strict';
2
+
3
+ import * as shaders from '../shaders/polyline.js';
4
+
5
+ class PolylineHandler {
6
+ constructor(entityCollection) {
7
+
8
+ this._entityCollection = entityCollection;
9
+
10
+ this._renderer = null;
11
+
12
+ this._polylines = [];
13
+
14
+ this.__staticId = PolylineHandler._staticCounter++;
15
+
16
+ this.pickingEnabled = true;
17
+ }
18
+
19
+ static get _staticCounter() {
20
+ if (!this._counter && this._counter !== 0) {
21
+ this._counter = 0;
22
+ }
23
+ return this._counter;
24
+ }
25
+
26
+ static set _staticCounter(n) {
27
+ this._counter = n;
28
+ }
29
+
30
+ _initProgram() {
31
+ if (this._renderer.handler) {
32
+ if (!this._renderer.handler.programs.polyline_screen) {
33
+ this._renderer.handler.addProgram(shaders.polyline_screen());
34
+ }
35
+ if (!this._renderer.handler.programs.polyline_picking) {
36
+ this._renderer.handler.addProgram(shaders.polyline_picking());
37
+ }
38
+ }
39
+ }
40
+
41
+ setRenderNode(renderNode) {
42
+ this._renderer = renderNode.renderer;
43
+ this._initProgram();
44
+ for (var i = 0; i < this._polylines.length; i++) {
45
+ this._polylines[i].setRenderNode(renderNode);
46
+ }
47
+ }
48
+
49
+ add(polyline) {
50
+ if (polyline._handlerIndex === -1) {
51
+ polyline._handler = this;
52
+ polyline._handlerIndex = this._polylines.length;
53
+ this._polylines.push(polyline);
54
+ this._entityCollection && this._entityCollection.renderNode &&
55
+ polyline.setRenderNode(this._entityCollection.renderNode);
56
+ }
57
+ }
58
+
59
+ remove(polyline) {
60
+ var index = polyline._handlerIndex;
61
+ if (index !== -1) {
62
+ polyline._deleteBuffers();
63
+ polyline._handlerIndex = -1;
64
+ polyline._handler = null;
65
+ this._polylines.splice(index, 1);
66
+ this.reindexPolylineArray(index);
67
+ }
68
+ }
69
+
70
+ reindexPolylineArray(startIndex) {
71
+ var ls = this._polylines;
72
+ for (var i = startIndex; i < ls.length; i++) {
73
+ ls[i]._handlerIndex = i;
74
+ }
75
+ }
76
+
77
+ draw() {
78
+ let i = this._polylines.length;
79
+ while (i--) {
80
+ this._polylines[i].draw();
81
+ }
82
+ }
83
+
84
+ drawPicking() {
85
+ if (this.pickingEnabled) {
86
+ let i = this._polylines.length;
87
+ while (i--) {
88
+ this._polylines[i].drawPicking();
89
+ }
90
+ }
91
+ }
92
+
93
+ clear() {
94
+ var i = this._polylines.length;
95
+ while (i--) {
96
+ this._polylines[i]._deleteBuffers();
97
+ this._polylines[i]._handler = null;
98
+ this._polylines[i]._handlerIndex = -1;
99
+ }
100
+ this._polylines.length = 0;
101
+ this._polylines = [];
102
+ }
103
+ }
104
+
109
105
  export { PolylineHandler };
@@ -1,12 +1,8 @@
1
- /**
2
- * @module og/entity/BaseBillboard
3
- */
4
-
5
1
  "use strict";
6
2
 
7
- import { Vec3 } from "../math/Vec3.js";
3
+ import {Vec3} from "../math/Vec3.js";
8
4
  import * as utils from "../utils/shared.js";
9
- import { Entity } from "./Entity.js";
5
+ import {Entity} from "./Entity.js";
10
6
 
11
7
  /**
12
8
  * Ray class.
@@ -99,11 +95,15 @@ class Ray {
99
95
  this._startPositionLow
100
96
  );
101
97
  this._handler &&
102
- this._handler.setStartPositionArr(
103
- this._handlerIndex,
104
- this._startPositionHigh,
105
- this._startPositionLow
106
- );
98
+ this._handler.setStartPositionArr(
99
+ this._handlerIndex,
100
+ this._startPositionHigh,
101
+ this._startPositionLow
102
+ );
103
+ }
104
+
105
+ getLength() {
106
+ return this._startPosition.distance(this._endPosition);
107
107
  }
108
108
 
109
109
  /**
@@ -121,11 +121,11 @@ class Ray {
121
121
  this._startPositionLow
122
122
  );
123
123
  this._handler &&
124
- this._handler.setStartPositionArr(
125
- this._handlerIndex,
126
- this._startPositionHigh,
127
- this._startPositionLow
128
- );
124
+ this._handler.setStartPositionArr(
125
+ this._handlerIndex,
126
+ this._startPositionHigh,
127
+ this._startPositionLow
128
+ );
129
129
  }
130
130
 
131
131
  /**
@@ -141,11 +141,11 @@ class Ray {
141
141
  this._endPosition.z = z;
142
142
  Vec3.doubleToTwoFloats(this._endPosition, this._endPositionHigh, this._endPositionLow);
143
143
  this._handler &&
144
- this._handler.setEndPositionArr(
145
- this._handlerIndex,
146
- this._endPositionHigh,
147
- this._endPositionLow
148
- );
144
+ this._handler.setEndPositionArr(
145
+ this._handlerIndex,
146
+ this._endPositionHigh,
147
+ this._endPositionLow
148
+ );
149
149
  }
150
150
 
151
151
  /**
@@ -159,11 +159,11 @@ class Ray {
159
159
  this._endPosition.z = position.z;
160
160
  Vec3.doubleToTwoFloats(this._endPosition, this._endPositionHigh, this._endPositionLow);
161
161
  this._handler &&
162
- this._handler.setEndPositionArr(
163
- this._handlerIndex,
164
- this._endPositionHigh,
165
- this._endPositionLow
166
- );
162
+ this._handler.setEndPositionArr(
163
+ this._handlerIndex,
164
+ this._endPositionHigh,
165
+ this._endPositionLow
166
+ );
167
167
  }
168
168
 
169
169
  setThickness(thickness) {
@@ -187,7 +187,7 @@ class Ray {
187
187
  }
188
188
 
189
189
  this._handler &&
190
- this._handler.setRgbaArr(this._handlerIndex, this._startColor, this._endColor);
190
+ this._handler.setRgbaArr(this._handlerIndex, this._startColor, this._endColor);
191
191
  }
192
192
 
193
193
  setColorsHTML(startColor, endColor) {
@@ -200,7 +200,7 @@ class Ray {
200
200
  }
201
201
 
202
202
  this._handler &&
203
- this._handler.setRgbaArr(this._handlerIndex, this._startColor, this._endColor);
203
+ this._handler.setRgbaArr(this._handlerIndex, this._startColor, this._endColor);
204
204
  }
205
205
 
206
206
  /**
@@ -259,4 +259,4 @@ class Ray {
259
259
  }
260
260
  }
261
261
 
262
- export { Ray };
262
+ export {Ray};
@@ -316,7 +316,7 @@ class Strip {
316
316
  }
317
317
 
318
318
  _createBuffers() {
319
- if (this._renderNode && this._renderNode.renderer) {
319
+ if (this._renderNode && this._renderNode.renderer && this._renderNode.renderer.isInitialized()) {
320
320
  var gl = this._renderNode.renderer.handler.gl;
321
321
 
322
322
  gl.deleteBuffer(this._indexBuffer);
package/src/og/index.js CHANGED
@@ -51,8 +51,9 @@ import { Object3d } from './Object3d.js';
51
51
  const { Handler } = webgl, { Control } = control;
52
52
  const { Layer, Vector, XYZ, CanvasTiles} = layer;
53
53
  const {
54
+ Polyline,
54
55
  EntityCollection,
55
- Entity
56
+ Entity,
56
57
  } = entity;
57
58
 
58
59
  export {
@@ -78,6 +79,7 @@ export {
78
79
  PlanetCamera,
79
80
  Globe,
80
81
  LightSource,
82
+ Polyline,
81
83
  EntityCollection,
82
84
  Handler,
83
85
  Renderer,
@@ -1,132 +1,128 @@
1
- /**
2
- * @module og/input/KeyboardHandler
3
- */
4
-
5
- 'use strict';
6
-
7
- import { input } from './input.js';
8
-
9
- class KeyboardHandler {
10
-
11
- constructor() {
12
- var _currentlyPressedKeys = {};
13
- var _pressedKeysCallbacks = {};
14
- var _unpressedKeysCallbacks = {};
15
- var _charkeysCallbacks = {};
16
- var _that = this;
17
- var _anykeyCallback = null;
18
- var _event = null;
19
-
20
- var _active = true;
21
-
22
- if (KeyboardHandler.prototype._instance) {
23
- return KeyboardHandler.prototype._instance;
24
- } else {
25
- KeyboardHandler.prototype._instance = this;
26
-
27
- document.onkeydown = function (event) { _event = event; _active && _that.handleKeyDown(); };
28
- document.onkeyup = function (event) { _event = event; _active && _that.handleKeyUp(); };
29
- }
30
-
31
- var _sortByPriority = function (a, b) {
32
- return a.priority < b.priority;
33
- };
34
-
35
- this.removeEvent = function (events, callback) {
36
- //
37
- // TODO:...
38
- //
39
- };
40
-
41
- this.setActivity = function (activity) {
42
- _active = activity;
43
- };
44
-
45
- this.releaseKeys = function () {
46
- _currentlyPressedKeys = {};
47
- }
48
-
49
- this.addEvent = function (event, sender, callback, keyCode, priority) {
50
- if (priority === undefined) {
51
- priority = 1600;
52
- }
53
- switch (event) {
54
- case "keyfree":
55
- if (!_unpressedKeysCallbacks[keyCode]) {
56
- _unpressedKeysCallbacks[keyCode] = [];
57
- }
58
- _unpressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
59
- _unpressedKeysCallbacks[keyCode].sort(_sortByPriority);
60
- break;
61
-
62
- case "keypress":
63
- if (keyCode == null) {
64
- _anykeyCallback = { callback: callback, sender: sender || _that };
65
- } else {
66
- if (!_pressedKeysCallbacks[keyCode]) {
67
- _pressedKeysCallbacks[keyCode] = [];
68
- }
69
- _pressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
70
- _pressedKeysCallbacks[keyCode].sort(_sortByPriority);
71
- }
72
- break;
73
-
74
- case "charkeypress":
75
- if (!_charkeysCallbacks[keyCode]) {
76
- _charkeysCallbacks[keyCode] = [];
77
- }
78
- _charkeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
79
- _charkeysCallbacks[keyCode].sort(_sortByPriority);
80
- break;
81
- }
82
- };
83
-
84
- this.isKeyPressed = function (keyCode) {
85
- return _currentlyPressedKeys[keyCode];
86
- };
87
-
88
- this.handleKeyDown = function () {
89
- _anykeyCallback && _anykeyCallback.callback.call(_anykeyCallback.sender, _event);
90
- _currentlyPressedKeys[_event.keyCode] = true;
91
- for (var ch in _charkeysCallbacks) {
92
- if (String.fromCharCode(_event.keyCode) == String.fromCharCode(ch)) {
93
- var ccl = _charkeysCallbacks[ch];
94
- for (var i = 0; i < ccl.length; i++) {
95
- ccl[i].callback.call(ccl[i].sender, _event);
96
- }
97
- }
98
- }
99
-
100
- if (_event.keyCode == input.KEY_ALT || _event.keyCode == input.KEY_SHIFT) {
101
- _event.preventDefault();
102
- }
103
- };
104
-
105
- this.handleKeyUp = function () {
106
- if (_currentlyPressedKeys[_event.keyCode] || _event.keyCode === input.KEY_PRINTSCREEN) {
107
- for (var pk in _unpressedKeysCallbacks) {
108
- if (_currentlyPressedKeys[pk] || _event.keyCode === input.KEY_PRINTSCREEN && pk == input.KEY_PRINTSCREEN) {
109
- var cpk = _unpressedKeysCallbacks[pk];
110
- for (var i = 0; i < cpk.length; i++) {
111
- cpk[i].callback.call(cpk[i].sender, _event);
112
- }
113
- }
114
- }
115
- }
116
- _currentlyPressedKeys[_event.keyCode] = false;
117
- };
118
-
119
- this.handleEvents = function () {
120
- for (var pk in _pressedKeysCallbacks) {
121
- if (_currentlyPressedKeys[pk]) {
122
- var cpk = _pressedKeysCallbacks[pk];
123
- for (var i = 0; i < cpk.length; i++) {
124
- cpk[i].callback.call(cpk[i].sender, _event);
125
- }
126
- }
127
- }
128
- };
129
- }
130
- }
131
-
132
- export { KeyboardHandler };
1
+ 'use strict';
2
+
3
+ import { input } from './input.js';
4
+
5
+ class KeyboardHandler {
6
+
7
+ constructor() {
8
+ var _currentlyPressedKeys = {};
9
+ var _pressedKeysCallbacks = {};
10
+ var _unpressedKeysCallbacks = {};
11
+ var _charkeysCallbacks = {};
12
+ var _that = this;
13
+ var _anykeyCallback = null;
14
+ var _event = null;
15
+
16
+ var _active = true;
17
+
18
+ if (KeyboardHandler.prototype._instance) {
19
+ return KeyboardHandler.prototype._instance;
20
+ } else {
21
+ KeyboardHandler.prototype._instance = this;
22
+
23
+ document.onkeydown = function (event) { _event = event; _active && _that.handleKeyDown(); };
24
+ document.onkeyup = function (event) { _event = event; _active && _that.handleKeyUp(); };
25
+ }
26
+
27
+ var _sortByPriority = function (a, b) {
28
+ return a.priority < b.priority;
29
+ };
30
+
31
+ this.removeEvent = function (events, callback) {
32
+ //
33
+ // TODO:...
34
+ //
35
+ };
36
+
37
+ this.setActivity = function (activity) {
38
+ _active = activity;
39
+ };
40
+
41
+ this.releaseKeys = function () {
42
+ _currentlyPressedKeys = {};
43
+ }
44
+
45
+ this.addEvent = function (event, sender, callback, keyCode, priority) {
46
+ if (priority === undefined) {
47
+ priority = 1600;
48
+ }
49
+ switch (event) {
50
+ case "keyfree":
51
+ if (!_unpressedKeysCallbacks[keyCode]) {
52
+ _unpressedKeysCallbacks[keyCode] = [];
53
+ }
54
+ _unpressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
55
+ _unpressedKeysCallbacks[keyCode].sort(_sortByPriority);
56
+ break;
57
+
58
+ case "keypress":
59
+ if (keyCode == null) {
60
+ _anykeyCallback = { callback: callback, sender: sender || _that };
61
+ } else {
62
+ if (!_pressedKeysCallbacks[keyCode]) {
63
+ _pressedKeysCallbacks[keyCode] = [];
64
+ }
65
+ _pressedKeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
66
+ _pressedKeysCallbacks[keyCode].sort(_sortByPriority);
67
+ }
68
+ break;
69
+
70
+ case "charkeypress":
71
+ if (!_charkeysCallbacks[keyCode]) {
72
+ _charkeysCallbacks[keyCode] = [];
73
+ }
74
+ _charkeysCallbacks[keyCode].push({ callback: callback, sender: sender, priority: priority });
75
+ _charkeysCallbacks[keyCode].sort(_sortByPriority);
76
+ break;
77
+ }
78
+ };
79
+
80
+ this.isKeyPressed = function (keyCode) {
81
+ return _currentlyPressedKeys[keyCode];
82
+ };
83
+
84
+ this.handleKeyDown = function () {
85
+ _anykeyCallback && _anykeyCallback.callback.call(_anykeyCallback.sender, _event);
86
+ _currentlyPressedKeys[_event.keyCode] = true;
87
+ for (var ch in _charkeysCallbacks) {
88
+ if (String.fromCharCode(_event.keyCode) == String.fromCharCode(ch)) {
89
+ var ccl = _charkeysCallbacks[ch];
90
+ for (var i = 0; i < ccl.length; i++) {
91
+ ccl[i].callback.call(ccl[i].sender, _event);
92
+ }
93
+ }
94
+ }
95
+
96
+ if (_event.keyCode == input.KEY_ALT || _event.keyCode == input.KEY_SHIFT) {
97
+ _event.preventDefault();
98
+ }
99
+ };
100
+
101
+ this.handleKeyUp = function () {
102
+ if (_currentlyPressedKeys[_event.keyCode] || _event.keyCode === input.KEY_PRINTSCREEN) {
103
+ for (var pk in _unpressedKeysCallbacks) {
104
+ if (_currentlyPressedKeys[pk] || _event.keyCode === input.KEY_PRINTSCREEN && pk == input.KEY_PRINTSCREEN) {
105
+ var cpk = _unpressedKeysCallbacks[pk];
106
+ for (var i = 0; i < cpk.length; i++) {
107
+ cpk[i].callback.call(cpk[i].sender, _event);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ _currentlyPressedKeys[_event.keyCode] = false;
113
+ };
114
+
115
+ this.handleEvents = function () {
116
+ for (var pk in _pressedKeysCallbacks) {
117
+ if (_currentlyPressedKeys[pk]) {
118
+ var cpk = _pressedKeysCallbacks[pk];
119
+ for (var i = 0; i < cpk.length; i++) {
120
+ cpk[i].callback.call(cpk[i].sender, _event);
121
+ }
122
+ }
123
+ }
124
+ };
125
+ }
126
+ }
127
+
128
+ export { KeyboardHandler };