@openglobus/og 0.22.2 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/css/og.css +137 -1
  2. package/lib/@openglobus/js/Globe.d.ts +0 -1
  3. package/lib/@openglobus/js/Object3d.d.ts +20 -10
  4. package/lib/@openglobus/js/camera/Camera.d.ts +57 -15
  5. package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
  6. package/lib/@openglobus/js/camera/PlanetCamera.d.ts +13 -0
  7. package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
  8. package/lib/@openglobus/js/control/MouseNavigation.d.ts +62 -51
  9. package/lib/@openglobus/js/control/OldMouseNavigation.d.ts +64 -0
  10. package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
  11. package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  12. package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  13. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  14. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  15. package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  16. package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  17. package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  18. package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  19. package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
  20. package/lib/@openglobus/js/control/index.d.ts +3 -2
  21. package/lib/@openglobus/js/entity/Entity.d.ts +282 -19
  22. package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
  23. package/lib/@openglobus/js/entity/GeoObject.d.ts +135 -39
  24. package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
  25. package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
  26. package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
  27. package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
  28. package/lib/@openglobus/js/index.d.ts +2 -1
  29. package/lib/@openglobus/js/input/MouseHandler.d.ts +1 -0
  30. package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
  31. package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
  32. package/lib/@openglobus/js/math/Mat3.d.ts +1 -1
  33. package/lib/@openglobus/js/math/Mat4.d.ts +10 -1
  34. package/lib/@openglobus/js/math/Plane.d.ts +3 -1
  35. package/lib/@openglobus/js/math/Quat.d.ts +47 -33
  36. package/lib/@openglobus/js/math/Ray.d.ts +10 -14
  37. package/lib/@openglobus/js/math/Vec2.d.ts +22 -0
  38. package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
  39. package/lib/@openglobus/js/math.d.ts +2 -2
  40. package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
  41. package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
  42. package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  43. package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  44. package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
  45. package/lib/@openglobus/js/renderer/RendererEvents.d.ts +2 -0
  46. package/lib/@openglobus/js/scene/Planet.d.ts +15 -7
  47. package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
  48. package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
  49. package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
  50. package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
  51. package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
  52. package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
  53. package/lib/@openglobus/js/ui/Input.d.ts +32 -0
  54. package/lib/@openglobus/js/ui/View.d.ts +3 -1
  55. package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
  56. package/lib/@openglobus/js/utils/shared.d.ts +22 -0
  57. package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
  58. package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
  59. package/lib/@openglobus/js/webgl/Handler.d.ts +22 -12
  60. package/lib/@openglobus/og.css +1 -1
  61. package/lib/@openglobus/og.esm.js +1 -1
  62. package/lib/@openglobus/og.esm.js.map +1 -1
  63. package/lib/@openglobus/og.umd.js +1 -1
  64. package/lib/@openglobus/og.umd.js.map +1 -1
  65. package/lib/js/Globe.d.ts +0 -1
  66. package/lib/js/Globe.js +4 -2
  67. package/lib/js/Object3d.d.ts +20 -10
  68. package/lib/js/Object3d.js +124 -48
  69. package/lib/js/Popup.js +1 -1
  70. package/lib/js/camera/Camera.d.ts +57 -15
  71. package/lib/js/camera/Camera.js +109 -29
  72. package/lib/js/camera/Frustum.d.ts +3 -0
  73. package/lib/js/camera/Frustum.js +7 -0
  74. package/lib/js/camera/PlanetCamera.d.ts +13 -0
  75. package/lib/js/camera/PlanetCamera.js +52 -5
  76. package/lib/js/control/Atmosphere.js +10 -6
  77. package/lib/js/control/CameraLock.d.ts +38 -0
  78. package/lib/js/control/CameraLock.js +216 -0
  79. package/lib/js/control/Control.js +1 -1
  80. package/lib/js/control/DebugInfo.js +38 -8
  81. package/lib/js/control/KeyboardNavigation.js +9 -9
  82. package/lib/js/control/MouseNavigation.d.ts +62 -51
  83. package/lib/js/control/MouseNavigation.js +361 -305
  84. package/lib/js/control/MouseWheelZoomControl.d.ts +0 -44
  85. package/lib/js/control/MouseWheelZoomControl.js +270 -181
  86. package/lib/js/control/OldMouseNavigation.d.ts +64 -0
  87. package/lib/js/control/OldMouseNavigation.js +368 -0
  88. package/lib/js/control/ScaleControl.js +11 -5
  89. package/lib/js/control/SimpleNavigation.d.ts +27 -10
  90. package/lib/js/control/SimpleNavigation.js +149 -49
  91. package/lib/js/control/Sun.js +6 -6
  92. package/lib/js/control/TouchNavigation.js +11 -8
  93. package/lib/js/control/elevationProfile/ElevationProfileScene.js +6 -5
  94. package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
  95. package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
  96. package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
  97. package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
  98. package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
  99. package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
  100. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
  101. package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +488 -0
  102. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
  103. package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
  104. package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
  105. package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +107 -0
  106. package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
  107. package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +31 -0
  108. package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
  109. package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
  110. package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
  111. package/lib/js/control/geoObjectEditor/colors.js +8 -0
  112. package/lib/js/control/index.d.ts +3 -2
  113. package/lib/js/control/index.js +3 -2
  114. package/lib/js/control/timeline/TimelineControl.js +2 -0
  115. package/lib/js/control/visibleExtent/Segment.js +4 -4
  116. package/lib/js/entity/Entity.d.ts +282 -19
  117. package/lib/js/entity/Entity.js +497 -62
  118. package/lib/js/entity/EntityCollection.d.ts +8 -9
  119. package/lib/js/entity/EntityCollection.js +48 -45
  120. package/lib/js/entity/GeoObject.d.ts +135 -39
  121. package/lib/js/entity/GeoObject.js +150 -90
  122. package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
  123. package/lib/js/entity/GeoObjectHandler.js +198 -295
  124. package/lib/js/entity/InstanceData.d.ts +76 -0
  125. package/lib/js/entity/InstanceData.js +347 -0
  126. package/lib/js/entity/Polyline.d.ts +19 -6
  127. package/lib/js/entity/Polyline.js +76 -36
  128. package/lib/js/entity/PolylineHandler.d.ts +7 -0
  129. package/lib/js/entity/PolylineHandler.js +26 -1
  130. package/lib/js/index.d.ts +2 -1
  131. package/lib/js/index.js +2 -1
  132. package/lib/js/input/MouseHandler.d.ts +1 -0
  133. package/lib/js/input/MouseHandler.js +12 -1
  134. package/lib/js/layer/Bing.js +2 -2
  135. package/lib/js/layer/Vector.d.ts +4 -0
  136. package/lib/js/layer/Vector.js +16 -0
  137. package/lib/js/light/LightSource.d.ts +1 -139
  138. package/lib/js/light/LightSource.js +21 -227
  139. package/lib/js/math/Mat3.d.ts +1 -1
  140. package/lib/js/math/Mat3.js +1 -1
  141. package/lib/js/math/Mat4.d.ts +10 -1
  142. package/lib/js/math/Mat4.js +17 -1
  143. package/lib/js/math/Plane.d.ts +3 -1
  144. package/lib/js/math/Plane.js +11 -1
  145. package/lib/js/math/Quat.d.ts +47 -33
  146. package/lib/js/math/Quat.js +92 -90
  147. package/lib/js/math/Ray.d.ts +10 -14
  148. package/lib/js/math/Ray.js +56 -33
  149. package/lib/js/math/Vec2.d.ts +22 -0
  150. package/lib/js/math/Vec2.js +32 -0
  151. package/lib/js/math/Vec3.d.ts +15 -0
  152. package/lib/js/math/Vec3.js +30 -1
  153. package/lib/js/math.d.ts +2 -2
  154. package/lib/js/math.js +3 -3
  155. package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
  156. package/lib/js/quadTree/EntityCollectionNode.js +8 -8
  157. package/lib/js/quadTree/Node.d.ts +1 -1
  158. package/lib/js/quadTree/Node.js +2 -2
  159. package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
  160. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
  161. package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
  162. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
  163. package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
  164. package/lib/js/renderer/Renderer.d.ts +63 -44
  165. package/lib/js/renderer/Renderer.js +267 -266
  166. package/lib/js/renderer/RendererEvents.d.ts +2 -0
  167. package/lib/js/renderer/RendererEvents.js +5 -2
  168. package/lib/js/scene/Planet.d.ts +15 -7
  169. package/lib/js/scene/Planet.js +133 -90
  170. package/lib/js/scene/RenderNode.d.ts +10 -25
  171. package/lib/js/scene/RenderNode.js +70 -58
  172. package/lib/js/segment/Segment.js +4 -4
  173. package/lib/js/shaders/depth.js +2 -5
  174. package/lib/js/shaders/drawnode.d.ts +1 -0
  175. package/lib/js/shaders/drawnode.js +51 -52
  176. package/lib/js/shaders/geoObject.d.ts +1 -0
  177. package/lib/js/shaders/geoObject.js +154 -91
  178. package/lib/js/shaders/polyline.js +68 -51
  179. package/lib/js/shaders/utils.d.ts +1 -1
  180. package/lib/js/shaders/utils.js +11 -0
  181. package/lib/js/terrain/GlobusTerrain.js +2 -2
  182. package/lib/js/ui/Checkbox.d.ts +31 -0
  183. package/lib/js/ui/Checkbox.js +110 -0
  184. package/lib/js/ui/Color.js +2 -1
  185. package/lib/js/ui/Dialog.d.ts +3 -0
  186. package/lib/js/ui/Dialog.js +20 -0
  187. package/lib/js/ui/Input.d.ts +32 -0
  188. package/lib/js/ui/Input.js +107 -0
  189. package/lib/js/ui/View.d.ts +3 -1
  190. package/lib/js/ui/View.js +6 -0
  191. package/lib/js/utils/objParser.d.ts +44 -12
  192. package/lib/js/utils/objParser.js +241 -149
  193. package/lib/js/utils/shared.d.ts +22 -0
  194. package/lib/js/utils/shared.js +34 -0
  195. package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
  196. package/lib/js/webgl/Framebuffer.d.ts +35 -8
  197. package/lib/js/webgl/Framebuffer.js +136 -29
  198. package/lib/js/webgl/Handler.d.ts +22 -12
  199. package/lib/js/webgl/Handler.js +53 -34
  200. package/lib/js/webgl/Program.js +0 -8
  201. package/package.json +5 -3
  202. package/lib/@openglobus/js/control/EarthNavigation.d.ts +0 -50
  203. package/lib/@openglobus/js/control/MouseWheelZoomControl.d.ts +0 -44
  204. package/lib/js/control/EarthNavigation.d.ts +0 -50
  205. package/lib/js/control/EarthNavigation.js +0 -202
@@ -0,0 +1,488 @@
1
+ import { Dialog } from "../../ui/Dialog";
2
+ import { Input } from "../../ui/Input";
3
+ import { Checkbox } from "../../ui/Checkbox";
4
+ import { Button } from "../../ui/Button";
5
+ import { Vec3 } from "../../math/Vec3";
6
+ import { ToggleButton } from "../../ui/ToggleButton";
7
+ import { DEGREES, RADIANS } from "../../math";
8
+ const ICON_LOCK_BUTTON_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" id="filter-center-focus">
9
+ <path d="M5 15H3v4c0 1.1.9 2 2 2h4v-2H5v-4zM5 5h4V3H5c-1.1 0-2 .9-2 2v4h2V5zm14-2h-4v2h4v4h2V5c0-1.1-.9-2-2-2zm0 16h-4v2h4c1.1 0 2-.9 2-2v-4h-2v4zM12 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/>
10
+ </svg>`;
11
+ export class GeoObjectPropertiesDialog extends Dialog {
12
+ constructor(params) {
13
+ super({
14
+ title: "GeoObject Properties",
15
+ visible: false,
16
+ resizable: true,
17
+ useHide: true,
18
+ top: 25,
19
+ right: 85,
20
+ width: 252,
21
+ height: 480,
22
+ minHeight: 100,
23
+ minWidth: 100,
24
+ model: params.model
25
+ });
26
+ this._onVisibility = (vis) => {
27
+ this.model.setVisibility(vis);
28
+ };
29
+ this._onSelect = (entity) => {
30
+ this.show();
31
+ this._refresh(entity);
32
+ };
33
+ this._onUnselect = (entity) => {
34
+ this.hide();
35
+ };
36
+ this._onChangeRelativePosition = (checked) => {
37
+ let entity = this.model.getSelectedEntity();
38
+ if (entity) {
39
+ entity.relativePosition = checked;
40
+ this._refresh(entity);
41
+ }
42
+ };
43
+ this._onPosition = (pos, entity) => {
44
+ this._refresh(entity);
45
+ };
46
+ this._onPitch = (a, entity) => {
47
+ this._pitchView.stopPropagation();
48
+ this._pitchView.value = entity.getPitch() * DEGREES;
49
+ this._absolutePitchView.stopPropagation();
50
+ this._absolutePitchView.value = entity.getAbsolutePitch() * DEGREES;
51
+ };
52
+ this._onYaw = (a, entity) => {
53
+ this._yawView.stopPropagation();
54
+ this._yawView.value = entity.getYaw() * DEGREES;
55
+ this._absoluteYawView.stopPropagation();
56
+ this._absoluteYawView.value = entity.getAbsoluteYaw() * DEGREES;
57
+ };
58
+ this._onRoll = (a, entity) => {
59
+ this._rollView.stopPropagation();
60
+ this._rollView.value = entity.getRoll() * DEGREES;
61
+ this._absoluteRollView.stopPropagation();
62
+ this._absoluteRollView.value = entity.getAbsoluteRoll() * DEGREES;
63
+ };
64
+ this._onChangeLon = (val) => {
65
+ let entity = this.model.getSelectedEntity();
66
+ if (entity) {
67
+ let ll = entity.getLonLat();
68
+ entity.setLonLat2(parseFloat(val), ll.lat, ll.height);
69
+ this._refresh(entity);
70
+ }
71
+ };
72
+ this._onChangeLat = (val) => {
73
+ let entity = this.model.getSelectedEntity();
74
+ if (entity) {
75
+ let ll = entity.getLonLat();
76
+ entity.setLonLat2(ll.lon, parseFloat(val), ll.height);
77
+ this._refresh(entity);
78
+ }
79
+ };
80
+ this._onChangeHeight = (val) => {
81
+ let entity = this.model.getSelectedEntity();
82
+ if (entity) {
83
+ let ll = entity.getLonLat();
84
+ entity.setLonLat2(ll.lon, ll.lat, parseFloat(val));
85
+ this._refresh(entity);
86
+ }
87
+ };
88
+ this._onChangeX = (val) => {
89
+ let entity = this.model.getSelectedEntity();
90
+ if (entity) {
91
+ let cart = entity.getCartesian();
92
+ entity.setCartesian(parseFloat(val), cart.y, cart.z);
93
+ this._refresh(entity);
94
+ }
95
+ };
96
+ this._onChangeY = (val) => {
97
+ let entity = this.model.getSelectedEntity();
98
+ if (entity) {
99
+ let cart = entity.getCartesian();
100
+ entity.setCartesian(cart.x, parseFloat(val), cart.z);
101
+ this._refresh(entity);
102
+ }
103
+ };
104
+ this._onChangeZ = (val) => {
105
+ let entity = this.model.getSelectedEntity();
106
+ if (entity) {
107
+ let cart = entity.getCartesian();
108
+ entity.setCartesian(cart.x, cart.y, parseFloat(val));
109
+ this._refresh(entity);
110
+ }
111
+ };
112
+ this._onChangeAbsoluteX = (val) => {
113
+ let entity = this.model.getSelectedEntity();
114
+ if (entity) {
115
+ let cart = entity.getAbsoluteCartesian();
116
+ entity.setAbsoluteCartesian(parseFloat(val), cart.y, cart.z);
117
+ this._refresh(entity);
118
+ }
119
+ };
120
+ this._onChangeAbsoluteY = (val) => {
121
+ let entity = this.model.getSelectedEntity();
122
+ if (entity) {
123
+ let cart = entity.getAbsoluteCartesian();
124
+ entity.setAbsoluteCartesian(cart.x, parseFloat(val), cart.z);
125
+ this._refresh(entity);
126
+ }
127
+ };
128
+ this._onChangeAbsoluteZ = (val) => {
129
+ let entity = this.model.getSelectedEntity();
130
+ if (entity) {
131
+ let cart = entity.getAbsoluteCartesian();
132
+ entity.setAbsoluteCartesian(cart.x, cart.y, parseFloat(val));
133
+ this._refresh(entity);
134
+ }
135
+ };
136
+ this._onChangePitch = (val) => {
137
+ let entity = this.model.getSelectedEntity();
138
+ if (entity) {
139
+ entity.setPitch(parseFloat(val) * RADIANS);
140
+ this._refresh(entity);
141
+ }
142
+ };
143
+ this._onChangeYaw = (val) => {
144
+ let entity = this.model.getSelectedEntity();
145
+ if (entity) {
146
+ entity.setYaw(parseFloat(val) * RADIANS);
147
+ this._refresh(entity);
148
+ }
149
+ };
150
+ this._onChangeRoll = (val) => {
151
+ let entity = this.model.getSelectedEntity();
152
+ if (entity) {
153
+ entity.setRoll(parseFloat(val) * RADIANS);
154
+ this._refresh(entity);
155
+ }
156
+ };
157
+ this._onChangeAbsolutePitch = (val) => {
158
+ let entity = this.model.getSelectedEntity();
159
+ if (entity) {
160
+ entity.setAbsolutePitch(parseFloat(val) * RADIANS);
161
+ this._refresh(entity);
162
+ }
163
+ };
164
+ this._onChangeAbsoluteYaw = (val) => {
165
+ let entity = this.model.getSelectedEntity();
166
+ if (entity) {
167
+ entity.setAbsoluteYaw(parseFloat(val) * RADIANS);
168
+ this._refresh(entity);
169
+ }
170
+ };
171
+ this._onChangeAbsoluteRoll = (val) => {
172
+ let entity = this.model.getSelectedEntity();
173
+ if (entity) {
174
+ entity.setAbsoluteRoll(parseFloat(val) * RADIANS);
175
+ this._refresh(entity);
176
+ }
177
+ };
178
+ this._onChangeScale = (val) => {
179
+ let entity = this.model.getSelectedEntity();
180
+ if (entity) {
181
+ let s = parseFloat(val);
182
+ entity.setScale(s);
183
+ this._scaleXView.stopPropagation();
184
+ this._scaleYView.stopPropagation();
185
+ this._scaleZView.stopPropagation();
186
+ this._scaleXView.value = s;
187
+ this._scaleYView.value = s;
188
+ this._scaleZView.value = s;
189
+ }
190
+ };
191
+ this._onChangeScaleX = (val) => {
192
+ let entity = this.model.getSelectedEntity();
193
+ if (entity) {
194
+ let s = entity.getScale();
195
+ entity.setScale3v(new Vec3(parseFloat(val), s.y, s.z));
196
+ }
197
+ };
198
+ this._onChangeScaleY = (val) => {
199
+ let entity = this.model.getSelectedEntity();
200
+ if (entity) {
201
+ let s = entity.getScale();
202
+ entity.setScale3v(new Vec3(s.x, parseFloat(val), s.z));
203
+ }
204
+ };
205
+ this._onChangeScaleZ = (val) => {
206
+ let entity = this.model.getSelectedEntity();
207
+ if (entity) {
208
+ let s = entity.getScale();
209
+ entity.setScale3v(new Vec3(s.x, s.y, parseFloat(val)));
210
+ }
211
+ };
212
+ this._onGround = () => {
213
+ let entity = this.model.getSelectedEntity();
214
+ if (entity && this.model.planet) {
215
+ if (this.model.planet.terrain) {
216
+ this.model.planet.terrain.getHeightAsync(entity.getLonLat(), (height) => {
217
+ this._heightView.value = height;
218
+ });
219
+ }
220
+ else {
221
+ this._heightView.value = 0;
222
+ }
223
+ }
224
+ };
225
+ this._relativePositionView = new Checkbox({
226
+ label: "Relative position"
227
+ });
228
+ this._lonView = new Input({
229
+ label: "Lon",
230
+ type: "number",
231
+ min: -180,
232
+ max: 180,
233
+ maxFixed: 10
234
+ });
235
+ this._latView = new Input({
236
+ label: "Lat",
237
+ type: "number",
238
+ min: -90,
239
+ max: 90,
240
+ maxFixed: 10
241
+ });
242
+ this._heightView = new Input({
243
+ label: "Height",
244
+ type: "number",
245
+ maxFixed: 4
246
+ });
247
+ this._xView = new Input({
248
+ label: "X",
249
+ type: "number",
250
+ maxFixed: 10
251
+ });
252
+ this._yView = new Input({
253
+ label: "Y",
254
+ type: "number",
255
+ });
256
+ this._zView = new Input({
257
+ label: "Z",
258
+ type: "number",
259
+ });
260
+ this._absXView = new Input({
261
+ label: "Absolute X",
262
+ type: "number",
263
+ maxFixed: 10
264
+ });
265
+ this._absYView = new Input({
266
+ label: "Absolute Y",
267
+ type: "number",
268
+ });
269
+ this._absZView = new Input({
270
+ label: "Absolute Z",
271
+ type: "number",
272
+ });
273
+ this._pitchView = new Input({
274
+ label: "Pitch",
275
+ type: "number",
276
+ maxFixed: 2
277
+ });
278
+ this._yawView = new Input({
279
+ label: "Yaw",
280
+ type: "number",
281
+ maxFixed: 2
282
+ });
283
+ this._rollView = new Input({
284
+ label: "Roll",
285
+ type: "number",
286
+ maxFixed: 2
287
+ });
288
+ this._absolutePitchView = new Input({
289
+ label: "Absolute pitch",
290
+ type: "number",
291
+ maxFixed: 2
292
+ });
293
+ this._absoluteYawView = new Input({
294
+ label: "Absolute yaw",
295
+ type: "number",
296
+ maxFixed: 2
297
+ });
298
+ this._absoluteRollView = new Input({
299
+ label: "Absolute roll",
300
+ type: "number",
301
+ maxFixed: 2
302
+ });
303
+ this._scaleView = new Input({
304
+ label: "Scale",
305
+ type: "number",
306
+ maxFixed: 2
307
+ });
308
+ this._scaleXView = new Input({
309
+ label: "Scale X",
310
+ type: "number",
311
+ maxFixed: 2
312
+ });
313
+ this._scaleYView = new Input({
314
+ label: "Scale Y",
315
+ type: "number",
316
+ maxFixed: 2
317
+ });
318
+ this._scaleZView = new Input({
319
+ label: "Scale Z",
320
+ type: "number",
321
+ maxFixed: 2
322
+ });
323
+ this._groundBtn = new Button({
324
+ text: "Ground",
325
+ title: "Put on the ground",
326
+ name: "ground",
327
+ classList: ["og-editor-ground_button"]
328
+ });
329
+ }
330
+ render(params) {
331
+ super.render(params);
332
+ this._initSceneEvents();
333
+ let $toolbar = document.createElement("div");
334
+ $toolbar.classList.add("og-editor_toolbar");
335
+ this.container?.appendChild($toolbar);
336
+ let cameraLockBtn = new ToggleButton({
337
+ classList: ["og-editor_toolbar-button"],
338
+ icon: ICON_LOCK_BUTTON_SVG,
339
+ title: "Lock/Unlock camera view"
340
+ });
341
+ cameraLockBtn.appendTo($toolbar);
342
+ cameraLockBtn.events.on("change", (isActive) => {
343
+ if (isActive) {
344
+ this.model.lockView();
345
+ }
346
+ else {
347
+ this.model.unlockView();
348
+ }
349
+ });
350
+ this.events.on("visibility", (vis) => {
351
+ if (!vis) {
352
+ cameraLockBtn.events.stopPropagation();
353
+ cameraLockBtn.setActive(false);
354
+ }
355
+ });
356
+ this.events.on("visibility", this._onVisibility);
357
+ this._relativePositionView.appendTo(this.container);
358
+ if (this.model.planet) {
359
+ this._lonView.appendTo(this.container);
360
+ this._latView.appendTo(this.container);
361
+ this._heightView.appendTo(this.container);
362
+ }
363
+ this._xView.appendTo(this.container);
364
+ this._yView.appendTo(this.container);
365
+ this._zView.appendTo(this.container);
366
+ this._absXView.appendTo(this.container);
367
+ this._absYView.appendTo(this.container);
368
+ this._absZView.appendTo(this.container);
369
+ this._pitchView.appendTo(this.container);
370
+ this._yawView.appendTo(this.container);
371
+ this._rollView.appendTo(this.container);
372
+ this._absolutePitchView.appendTo(this.container);
373
+ this._absoluteYawView.appendTo(this.container);
374
+ this._absoluteRollView.appendTo(this.container);
375
+ this._scaleView.appendTo(this.container);
376
+ this._scaleXView.appendTo(this.container);
377
+ this._scaleYView.appendTo(this.container);
378
+ this._scaleZView.appendTo(this.container);
379
+ if (this.model.planet) {
380
+ this._groundBtn.appendTo(this.container);
381
+ }
382
+ this._relativePositionView.events.on("change", this._onChangeRelativePosition);
383
+ this._lonView.events.on("change", this._onChangeLon);
384
+ this._latView.events.on("change", this._onChangeLat);
385
+ this._heightView.events.on("change", this._onChangeHeight);
386
+ this._xView.events.on("change", this._onChangeX);
387
+ this._yView.events.on("change", this._onChangeY);
388
+ this._zView.events.on("change", this._onChangeZ);
389
+ this._absXView.events.on("change", this._onChangeAbsoluteX);
390
+ this._absYView.events.on("change", this._onChangeAbsoluteY);
391
+ this._absZView.events.on("change", this._onChangeAbsoluteZ);
392
+ this._pitchView.events.on("change", this._onChangePitch);
393
+ this._yawView.events.on("change", this._onChangeYaw);
394
+ this._rollView.events.on("change", this._onChangeRoll);
395
+ this._absolutePitchView.events.on("change", this._onChangeAbsolutePitch);
396
+ this._absoluteYawView.events.on("change", this._onChangeAbsoluteYaw);
397
+ this._absoluteRollView.events.on("change", this._onChangeAbsoluteRoll);
398
+ this._scaleView.events.on("change", this._onChangeScale);
399
+ this._scaleXView.events.on("change", this._onChangeScaleX);
400
+ this._scaleYView.events.on("change", this._onChangeScaleY);
401
+ this._scaleZView.events.on("change", this._onChangeScaleZ);
402
+ this._groundBtn.appendTo(this.container);
403
+ this._groundBtn.events.on("click", this._onGround);
404
+ return this;
405
+ }
406
+ remove() {
407
+ super.remove();
408
+ this._clearSceneEvents();
409
+ }
410
+ _initSceneEvents() {
411
+ this.model.events.on("select", this._onSelect);
412
+ this.model.events.on("unselect", this._onUnselect);
413
+ this.model.events.on("position", this._onPosition);
414
+ this.model.events.on("pitch", this._onPitch);
415
+ this.model.events.on("yaw", this._onYaw);
416
+ this.model.events.on("roll", this._onRoll);
417
+ }
418
+ _clearSceneEvents() {
419
+ this.model.events.off("select", this._onSelect);
420
+ this.model.events.off("unselect", this._onUnselect);
421
+ this.model.events.off("position", this._onPosition);
422
+ this.model.events.off("pitch", this._onPitch);
423
+ this.model.events.off("yaw", this._onYaw);
424
+ this.model.events.off("roll", this._onRoll);
425
+ }
426
+ _refresh(entity) {
427
+ if (!entity.parent) {
428
+ this._relativePositionView.disabled = true;
429
+ }
430
+ else {
431
+ this._relativePositionView.disabled = false;
432
+ }
433
+ //this._relativePositionView.stopPropagation();
434
+ this._relativePositionView.checked = entity.relativePosition;
435
+ let ll = entity.getLonLat();
436
+ this._lonView.stopPropagation();
437
+ this._latView.stopPropagation();
438
+ this._heightView.stopPropagation();
439
+ this._lonView.value = ll.lon;
440
+ this._latView.value = ll.lat;
441
+ this._heightView.value = ll.height;
442
+ let cart = entity.getCartesian();
443
+ this._xView.stopPropagation();
444
+ this._yView.stopPropagation();
445
+ this._zView.stopPropagation();
446
+ this._xView.value = cart.x;
447
+ this._yView.value = cart.y;
448
+ this._zView.value = cart.z;
449
+ cart = entity.getAbsoluteCartesian();
450
+ this._absXView.stopPropagation();
451
+ this._absYView.stopPropagation();
452
+ this._absZView.stopPropagation();
453
+ this._absXView.value = cart.x;
454
+ this._absYView.value = cart.y;
455
+ this._absZView.value = cart.z;
456
+ this._pitchView.stopPropagation();
457
+ this._yawView.stopPropagation();
458
+ this._rollView.stopPropagation();
459
+ this._pitchView.value = entity.getPitch() * DEGREES;
460
+ this._yawView.value = entity.getYaw() * DEGREES;
461
+ this._rollView.value = entity.getRoll() * DEGREES;
462
+ this._absolutePitchView.stopPropagation();
463
+ this._absoluteYawView.stopPropagation();
464
+ this._absoluteRollView.stopPropagation();
465
+ this._absolutePitchView.value = entity.getAbsolutePitch() * DEGREES;
466
+ this._absoluteYawView.value = entity.getAbsoluteYaw() * DEGREES;
467
+ this._absoluteRollView.value = entity.getAbsoluteRoll() * DEGREES;
468
+ this._scaleView.stopPropagation();
469
+ let scl = entity.getScale();
470
+ if ((scl.x === scl.y) && (scl.y === scl.z)) {
471
+ this._scaleView.value = scl.x;
472
+ }
473
+ else {
474
+ this._scaleView.value = 1;
475
+ }
476
+ this._scaleXView.stopPropagation();
477
+ this._scaleYView.stopPropagation();
478
+ this._scaleZView.stopPropagation();
479
+ this._scaleXView.value = scl.x;
480
+ this._scaleYView.value = scl.y;
481
+ this._scaleZView.value = scl.z;
482
+ }
483
+ hide() {
484
+ super.hide();
485
+ this.model.events.stopPropagation();
486
+ this.model.unselect();
487
+ }
488
+ }
@@ -1,12 +1,20 @@
1
1
  import { EventsHandler } from '../../Events';
2
2
  import { Planet } from "../../scene/Planet";
3
3
  import { RenderNode } from '../../scene/RenderNode';
4
- import { Vector } from '../../layer/Vector';
5
4
  import { Vec2 } from '../../math/Vec2';
5
+ import { Vec3 } from '../../math/Vec3';
6
+ import { Quat } from '../../math/Quat';
6
7
  import { IMouseState } from "../../renderer/RendererEvents";
7
8
  import { Ellipsoid } from "../../ellipsoid/Ellipsoid";
9
+ import { Entity } from "../../entity/Entity";
10
+ import { MoveAxisEntity } from "./MoveAxisEntity";
11
+ import { MovePlaneEntity } from "./MovePlaneEntity";
12
+ import { RotateEntity } from "./RotateEntity";
13
+ import { AxisTrackEntity } from "./AxisTrackEntity";
14
+ import { EntityCollection } from "../../entity/EntityCollection";
8
15
  export interface IGeoObjectEditorSceneParams {
9
16
  planet?: Planet;
17
+ name?: string;
10
18
  }
11
19
  type GeoObjectSceneEventsList = [
12
20
  "mousemove",
@@ -33,26 +41,87 @@ type GeoObjectSceneEventsList = [
33
41
  "touchend",
34
42
  "doubletouch",
35
43
  "touchleave",
36
- "touchenter"
44
+ "touchenter",
45
+ "select",
46
+ "unselect",
47
+ "change",
48
+ "position",
49
+ "pitch",
50
+ "yaw",
51
+ "roll",
52
+ "scale"
37
53
  ];
38
54
  declare class GeoObjectEditorScene extends RenderNode {
39
55
  events: EventsHandler<GeoObjectSceneEventsList>;
40
56
  protected _planet: Planet | null;
41
57
  protected _startPos: Vec2 | null;
42
58
  protected _startClick: Vec2;
43
- protected _axisLayer: Vector;
44
- protected _rotLayer: Vector;
59
+ protected _moveLayer: EntityCollection;
60
+ protected _planeLayer: EntityCollection;
61
+ protected _rotateLayer: EntityCollection;
62
+ protected _axisTrackLayer: EntityCollection;
63
+ protected _selectedEntity: Entity | null;
64
+ protected _selectedEntityCart: Vec3;
65
+ protected _selectedEntityPitch: number;
66
+ protected _selectedEntityYaw: number;
67
+ protected _selectedEntityRoll: number;
68
+ protected _clickPos: Vec2;
69
+ protected _axisEntity: MoveAxisEntity;
70
+ protected _planeEntity: MovePlaneEntity;
71
+ protected _rotateEntity: RotateEntity;
72
+ protected _axisTrackEntity: AxisTrackEntity;
73
+ protected _selectedMove: string | null;
74
+ protected _ops: Record<string, (mouseState: IMouseState) => void>;
75
+ protected _axisTrackVisibility: boolean;
45
76
  constructor(options?: IGeoObjectEditorSceneParams);
77
+ get planet(): Planet | null;
78
+ bindPlanet(planet: Planet): void;
46
79
  init(): void;
47
80
  onremove(): void;
48
- _activate(): void;
49
- protected _deactivate(): void;
50
- protected _onLUp: () => void;
81
+ protected _addAxisLayers(): void;
82
+ protected _onAxisLayerMouseEnter: (e: IMouseState) => void;
83
+ protected _onAxisLayerMouseLeave: (e: IMouseState) => void;
84
+ protected _navActivate(): void;
85
+ protected _navDeactivate(): void;
86
+ protected _onAxisLayerLUp: (e: IMouseState) => void;
87
+ protected _onAxisLayerLDown: (e: IMouseState) => void;
88
+ protected _onPlaneLayerMouseEnter: (e: IMouseState) => void;
89
+ protected _onPlaneLayerMouseLeave: (e: IMouseState) => void;
90
+ protected _onPlaneLayerLUp: (e: IMouseState) => void;
91
+ protected _onPlaneLayerLDown: (e: IMouseState) => void;
92
+ protected _onRotateLayerMouseEnter: (e: IMouseState) => void;
93
+ protected _onRotateLayerMouseLeave: (e: IMouseState) => void;
94
+ protected _onRotateLayerLUp: (e: IMouseState) => void;
95
+ protected _onRotateLayerLDown: (e: IMouseState) => void;
96
+ protected _onMouseMove: (e: IMouseState) => void;
97
+ protected _removeAxisLayers(): void;
98
+ activate(): void;
99
+ protected deactivate(): void;
100
+ protected _setAxisTrackVisibility(visibility: boolean): void;
51
101
  setVisibility(visibility: boolean): void;
102
+ readyToEdit(entity: Entity): boolean;
103
+ select(entity: Entity): void;
104
+ unselect(): void;
52
105
  protected _onLclick: (e: IMouseState) => void;
53
- protected _onMouseMove: (e: IMouseState) => void;
54
106
  clear(): void;
55
107
  frame(): void;
56
- get ellipsoid(): Ellipsoid | null;
108
+ protected get _ellipsoid(): Ellipsoid | null;
109
+ protected _moveX: (e: IMouseState) => void;
110
+ protected _moveY: (e: IMouseState) => void;
111
+ protected _moveZ: (e: IMouseState) => void;
112
+ protected _moveXZ: (e: IMouseState) => void;
113
+ protected _moveXY: (e: IMouseState) => void;
114
+ protected _moveZY: (e: IMouseState) => void;
115
+ getFrameRotation(cartesian: Vec3): Quat;
116
+ protected _rotatePitch: (e: IMouseState) => void;
117
+ protected _rotateYaw: (e: IMouseState) => void;
118
+ protected _rotateRoll: (e: IMouseState) => void;
119
+ protected _scale: (e: IMouseState) => void;
120
+ protected _scaleX: (e: IMouseState) => void;
121
+ protected _scaleY: (e: IMouseState) => void;
122
+ protected _scaleZ: (e: IMouseState) => void;
123
+ getSelectedEntity(): Entity | null;
124
+ lockView(): void;
125
+ unlockView(): void;
57
126
  }
58
127
  export { GeoObjectEditorScene };