deeptwins-engine-3d 0.1.10 → 0.1.12

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.
package/dist/esm/index.js CHANGED
@@ -48,7 +48,7 @@ loadCss(Cesium.buildModuleUrl('Widgets/widgets.css'));
48
48
  export var DeepTwinsEngine3D = /*#__PURE__*/_createClass(function DeepTwinsEngine3D() {
49
49
  _classCallCheck(this, DeepTwinsEngine3D);
50
50
  });
51
- _defineProperty(DeepTwinsEngine3D, "Version", "0.1.10");
51
+ _defineProperty(DeepTwinsEngine3D, "Version", "0.1.12");
52
52
  _defineProperty(DeepTwinsEngine3D, "Map", Map);
53
53
  _defineProperty(DeepTwinsEngine3D, "GroundSkyBox", GroundSkyBox);
54
54
  _defineProperty(DeepTwinsEngine3D, "RasterLayer", RasterLayer);
@@ -8,10 +8,18 @@ export default class Event {
8
8
  private _getPickedObject;
9
9
  private _notifySubscribers;
10
10
  private _subscribe;
11
- listenToMap(type: any, event: any): any;
11
+ listenToMap(type: any, event: any): {
12
+ off: () => void;
13
+ };
12
14
  listenToCamera(type: any, event: any): any;
13
15
  listenToScene(type: any, event: any): any;
14
- listenToLayer(type: any, event: any, layer: any): any;
15
- listenToPointCluster(type: any, event: any, cluster: any): any;
16
- listenToModelRoam(type: any, event: any, modelRoam: any): any;
16
+ listenToLayer(type: any, event: any, layer: any): {
17
+ off: () => void;
18
+ };
19
+ listenToPointCluster(type: any, event: any, cluster: any): {
20
+ off: () => void;
21
+ };
22
+ listenToModelRoam(type: any, event: any, modelRoam: any): {
23
+ off: () => void;
24
+ };
17
25
  }
@@ -8,6 +8,9 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
8
8
  import * as Cesium from 'deeptwins-cesium';
9
9
  import * as utils from "../tool/utils";
10
10
 
11
+ // 单机延迟
12
+ var CLICK_DELAY = 200;
13
+
11
14
  // 根据事件类型进行处理
12
15
  function dealWithMapType(type, event) {
13
16
  var _obj;
@@ -114,40 +117,59 @@ var Event = /*#__PURE__*/function () {
114
117
  value: function _subscribe(type, callback) {
115
118
  var _this = this;
116
119
  var self = this;
120
+ // 订阅器
121
+ var subscriber;
117
122
  // 如果没有注册过该类型的事件处理器,则创建一个
118
123
  if (!this._eventSubscriptions.has(type)) {
119
124
  // 注册事件
120
125
  var handler = new Cesium.ScreenSpaceEventHandler(this.getMap().scene.canvas);
121
- handler.setInputAction(function (e) {
122
- // 发布订阅
123
- _this._notifySubscribers(type, e);
124
- }, type);
125
- handler.__proto__.off = function () {
126
- handler.removeInputAction(type);
127
- };
126
+ // 单击特殊处理
127
+ if (type === Cesium.ScreenSpaceEventType.LEFT_CLICK) {
128
+ var lastClickTime = 0;
129
+ handler.setInputAction(function (e) {
130
+ var now = performance.now();
131
+ if (now - lastClickTime >= CLICK_DELAY) {
132
+ _this._notifySubscribers(type, e);
133
+ lastClickTime = now;
134
+ }
135
+ }, type);
136
+ } else if (type === Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK) {
137
+ // 移除 Cesium Viewer 默认的双击缩放
138
+ this.getMap().cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
139
+ handler.setInputAction(function (e) {
140
+ // 发布订阅
141
+ _this._notifySubscribers(type, e);
142
+ }, type);
143
+ } else {
144
+ handler.setInputAction(function (e) {
145
+ // 发布订阅
146
+ _this._notifySubscribers(type, e);
147
+ }, type);
148
+ }
128
149
  // 订阅器
129
- var subscriber = {
150
+ subscriber = {
130
151
  handler: handler,
131
152
  callbacks: new Set([callback])
132
153
  };
133
- subscriber.off = function () {
134
- subscriber.callbacks.delete(callback);
135
- // 如果没有订阅者了,移除处理器
136
- if (subscriber.callbacks.size === 0) {
137
- var _subscriber$handler;
138
- (_subscriber$handler = subscriber.handler) === null || _subscriber$handler === void 0 || _subscriber$handler.off();
139
- self._eventSubscriptions.delete(type);
140
- }
141
- };
142
154
  this._eventSubscriptions.set(type, subscriber);
143
- return subscriber;
144
155
  } else {
145
156
  // 订阅器
146
- var _subscriber = this._eventSubscriptions.get(type);
157
+ subscriber = this._eventSubscriptions.get(type);
147
158
  // 订阅列表
148
- _subscriber.callbacks.add(callback);
149
- return _subscriber;
159
+ subscriber.callbacks.add(callback);
150
160
  }
161
+ var off = function off() {
162
+ subscriber.callbacks.delete(callback);
163
+ if (subscriber.callbacks.size === 0) {
164
+ var _subscriber$handler;
165
+ // 如果没有订阅者了,移除处理器
166
+ (_subscriber$handler = subscriber.handler) === null || _subscriber$handler === void 0 || _subscriber$handler.removeInputAction(type);
167
+ self._eventSubscriptions.delete(type);
168
+ }
169
+ };
170
+ return {
171
+ off: off
172
+ };
151
173
  }
152
174
 
153
175
  // 监听地图事件