@realsee/dnalogel 2.0.0-alpha.21 → 2.0.0-alpha.24

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 (46) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/PanoMeasurePlugin/index.js +6 -1
  3. package/dist/PanoRulerPlugin/index.js +5 -3
  4. package/dist/floorplan/PanoFloorplanRadarPlugin/Controller.d.ts +1 -2
  5. package/dist/floorplan/PanoFloorplanRadarPlugin/index.js +47 -41
  6. package/dist/index.es.js +58 -45
  7. package/dist/index.js +58 -45
  8. package/dist/index.umd.js +58 -45
  9. package/docs/classes/ModelRoomLabelController.html +6 -6
  10. package/docs/enums/FLOOR_PLAN_ATTACHED_TO.html +1 -1
  11. package/docs/enums/ModelFloorplanErrorType.html +1 -1
  12. package/docs/interfaces/LineJson.html +1 -1
  13. package/docs/interfaces/ModelChassisCompassPluginData.html +1 -1
  14. package/docs/interfaces/ModelChassisCompassPluginExportType.html +1 -1
  15. package/docs/interfaces/ModelChassisCompassPluginParameterType.html +1 -1
  16. package/docs/interfaces/ModelEntryDoorGuidePluginData.html +1 -1
  17. package/docs/interfaces/ModelEntryDoorGuidePluginExportType.html +1 -1
  18. package/docs/interfaces/ModelFloorplanParameterType.html +1 -1
  19. package/docs/interfaces/ModelFloorplanViewEvent.html +2 -2
  20. package/docs/interfaces/ModelItemLabelPluginData.html +1 -1
  21. package/docs/interfaces/ModelItemLabelPluginExportReturnsType.html +1 -1
  22. package/docs/interfaces/ModelItemLabelPluginParametersType.html +1 -1
  23. package/docs/interfaces/ModelRoomLabelPluginData.html +1 -1
  24. package/docs/interfaces/ModelTVVideoPluginData.html +1 -1
  25. package/docs/interfaces/ModelTVVideoPluginExportType.html +1 -1
  26. package/docs/interfaces/ModelTVVideoPluginParameterType.html +1 -1
  27. package/docs/interfaces/PanoCompassPluginData.html +1 -1
  28. package/docs/interfaces/PanoCompassPluginParameterType.html +1 -1
  29. package/docs/interfaces/PanoCursorRaycasterPluginExportType.html +6 -6
  30. package/docs/interfaces/PanoRulerPluginExportType.html +1 -1
  31. package/docs/interfaces/PanoRulerPluginOptions.html +1 -1
  32. package/docs/interfaces/PanoRulerPluginParameterType.html +1 -1
  33. package/docs/interfaces/PanoSpatialTagPluginData.html +1 -1
  34. package/docs/interfaces/PanoSpatialTagPluginExportType.html +1 -1
  35. package/docs/interfaces/PanoSpatialTagPluginParameterType.html +1 -1
  36. package/docs/interfaces/PointJson.html +1 -1
  37. package/docs/interfaces/RoomLabel.html +7 -7
  38. package/docs/interfaces/TopviewFloorplanPluginParameterType.html +8 -8
  39. package/docs/modules.html +12 -12
  40. package/libs/PanoMeasurePlugin/Controller/index.js +5 -0
  41. package/libs/PanoMeasurePlugin/index.js +1 -1
  42. package/libs/PanoRulerPlugin/index.js +5 -3
  43. package/libs/floorplan/PanoFloorplanRadarPlugin/Components/Camera.js +46 -30
  44. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.d.ts +1 -2
  45. package/libs/floorplan/PanoFloorplanRadarPlugin/Controller.js +1 -11
  46. package/package.json +1 -1
@@ -147,6 +147,7 @@ export default class MeasureController {
147
147
  this.container.style.pointerEvents = 'none';
148
148
  this.container.style.width = '100%';
149
149
  this.container.style.height = '100%';
150
+ this.container.style.opacity = '0';
150
151
  this.container.style.background = 'rgba(0, 0, 0, 0.15)';
151
152
  this.controllerParams = {
152
153
  five: this.five,
@@ -192,6 +193,8 @@ export default class MeasureController {
192
193
  return;
193
194
  this.hasOpen = true;
194
195
  this.five.scene.add(this.group);
196
+ // 修改透明度
197
+ this.container.style.opacity = '1';
195
198
  // 隐藏点位和鼠标聚焦环
196
199
  this.five.helperVisible = false;
197
200
  this.controller = new WatchController(this.controllerParams);
@@ -207,6 +210,8 @@ export default class MeasureController {
207
210
  disable() {
208
211
  var _a, _b, _c, _d;
209
212
  this.hasOpen = false;
213
+ // 修改透明度
214
+ this.container.style.opacity = '0';
210
215
  // 展示点位和鼠标聚焦环
211
216
  (_a = this.controller) === null || _a === void 0 ? void 0 : _a.dispose();
212
217
  (_b = this.useUIController) === null || _b === void 0 ? void 0 : _b.hide();
@@ -1,5 +1,5 @@
1
1
  import MeasureController from './Controller';
2
- const PanoMeasurePlugin = function MeasurePlugin(five, params) {
2
+ const PanoMeasurePlugin = function PanoMeasurePlugin(five, params) {
3
3
  return new MeasureController(five, params);
4
4
  };
5
5
  export default PanoMeasurePlugin;
@@ -81,9 +81,9 @@ export const PanoRulerPlugin = (five, params) => {
81
81
  $rule.appendChild(style);
82
82
  const __rule = {};
83
83
  const _load = (roomInfo, roomRules) => {
84
- if (state.loaded) {
85
- throw new Error('标尺被重复初始化!');
86
- }
84
+ // if (state.loaded) {
85
+ // throw new Error('标尺被重复初始化!')
86
+ // }
87
87
  const roomHeightInfo = getRoomHeightInfo(roomInfo, five);
88
88
  const work = five.work;
89
89
  if (!work)
@@ -159,6 +159,7 @@ export const PanoRulerPlugin = (five, params) => {
159
159
  }
160
160
  }
161
161
  state.loaded = true;
162
+ freshRule();
162
163
  return true;
163
164
  };
164
165
  const load = async (_roomInfo, _roomRules, options) => {
@@ -167,6 +168,7 @@ export const PanoRulerPlugin = (five, params) => {
167
168
  if (!roomInfo || !roomRules) {
168
169
  throw new Error('标尺数据依赖不齐全!');
169
170
  }
171
+ state.loaded = false;
170
172
  state.options = Object.assign({}, state.options, options || {});
171
173
  if (five.model.loaded) {
172
174
  return _load(roomInfo, roomRules);
@@ -64,58 +64,54 @@ function create_fragment(ctx) {
64
64
  };
65
65
  }
66
66
 
67
+ function getCameraRotateTransform(longitude) {
68
+ // 为什么要加 45 ==> 因为 UI 给的图初始角度是 -45
69
+ const rotate = Math.floor(longitude / Math.PI * 180) * -1 + 45;
70
+
71
+ return `rotate(${rotate}deg)`;
72
+ }
73
+
67
74
  function instance($$self, $$props, $$invalidate) {
75
+ let positionTransform;
76
+ let rotateTransform;
68
77
  let { five } = $$props;
69
78
  let { pxmm } = $$props;
70
79
  let { floorplanData } = $$props;
71
80
  let { cameraImageUrl } = $$props;
81
+ let panoIndex = five.getCurrentState().panoIndex;
82
+ let longitude = five.getCurrentState().longitude;
72
83
 
73
84
  /** 获取相机在当前 Five 状态下的位移 */
74
- function getCameraPositionTransform(panoIndex) {
75
- const observer = floorplanData.observers[panoIndex];
85
+ function getCameraPositionTransform(floorplanData, panoIndex) {
76
86
  const bounding = floorplanData.bounding;
87
+ const floorplanObserver = floorplanData.observers[panoIndex];
88
+ if (!floorplanObserver) return '';
77
89
  const clientWidth = (bounding.max.x - bounding.min.x) * pxmm;
78
90
  const clientHeight = (bounding.max.y - bounding.min.y) * pxmm;
79
- if (!observer) return '';
80
- const left = Math.floor(observer.positionInImage.x * clientWidth);
81
- const top = Math.floor(observer.positionInImage.y * clientHeight);
91
+ const left = Math.floor(floorplanObserver.positionInImage.x * clientWidth);
92
+ const top = Math.floor(floorplanObserver.positionInImage.y * clientHeight);
82
93
  return `translate(${left}px, ${top}px)`;
83
94
  }
84
95
 
85
- /** 获取相机在当前 Five 状态下的旋转 */
86
- function getCameraRotationTransform() {
87
- const { longitude } = five.getCurrentState();
88
-
89
- // 为什么要加 45 ==> 因为 UI 给的图初始角度是 -45
90
- const rotate = Math.floor(longitude / Math.PI * 180) * -1 + 45;
91
-
92
- return `rotate(${rotate}deg)`;
96
+ function onFivePanoWillArrive(_panoIndex) {
97
+ $$invalidate(6, panoIndex = _panoIndex);
93
98
  }
94
99
 
95
- const changePosition = panoIndex => {
96
- $$invalidate(2, positionTransform = getCameraPositionTransform(panoIndex));
97
- };
98
-
99
- const changeRotate = throttle(
100
- () => {
101
- $$invalidate(1, rotateTransform = getCameraRotationTransform());
100
+ const onFiveCameraDirectionUpdate = throttle(
101
+ pose => {
102
+ $$invalidate(7, longitude = pose.longitude);
102
103
  },
103
104
  1000 / 60
104
105
  );
105
106
 
106
- // 初始状态,不能等 mount 之后再计算,那样第一次 camera 展示的时候也会有动画
107
- let rotateTransform = getCameraRotationTransform();
108
-
109
- let positionTransform = getCameraPositionTransform(five.getCurrentState().panoIndex);
110
-
111
107
  onMount(() => {
112
- five.on('panoWillArrive', changePosition);
113
- five.on('cameraDirectionUpdate', changeRotate);
108
+ five.on('panoWillArrive', onFivePanoWillArrive);
109
+ five.on('cameraDirectionUpdate', onFiveCameraDirectionUpdate);
114
110
  });
115
111
 
116
112
  onDestroy(() => {
117
- five.off('panoWillArrive', changePosition);
118
- five.off('cameraDirectionUpdate', changeRotate);
113
+ five.off('panoWillArrive', onFivePanoWillArrive);
114
+ five.off('cameraDirectionUpdate', onFiveCameraDirectionUpdate);
119
115
  });
120
116
 
121
117
  $$self.$$set = $$props => {
@@ -125,7 +121,27 @@ function instance($$self, $$props, $$invalidate) {
125
121
  if ('cameraImageUrl' in $$props) $$invalidate(0, cameraImageUrl = $$props.cameraImageUrl);
126
122
  };
127
123
 
128
- return [cameraImageUrl, rotateTransform, positionTransform, five, pxmm, floorplanData];
124
+ $$self.$$.update = () => {
125
+ if ($$self.$$.dirty & /*floorplanData, panoIndex*/ 96) {
126
+ // 初始状态,不能等 mount 之后再计算,那样第一次 camera 展示的时候也会有动画
127
+ $: $$invalidate(2, positionTransform = getCameraPositionTransform(floorplanData, panoIndex));
128
+ }
129
+
130
+ if ($$self.$$.dirty & /*longitude*/ 128) {
131
+ $: $$invalidate(1, rotateTransform = getCameraRotateTransform(longitude));
132
+ }
133
+ };
134
+
135
+ return [
136
+ cameraImageUrl,
137
+ rotateTransform,
138
+ positionTransform,
139
+ five,
140
+ pxmm,
141
+ floorplanData,
142
+ panoIndex,
143
+ longitude
144
+ ];
129
145
  }
130
146
 
131
147
  class Component extends SvelteComponent {
@@ -14,8 +14,7 @@ export default class PanoFloorplanRadarPluginController {
14
14
  private wrapperSelector;
15
15
  private data?;
16
16
  private wrapper;
17
- private extraObjects?;
18
- private originExtraObjects?;
17
+ private extraObjects;
19
18
  private configs;
20
19
  constructor(five: Five, params?: PanoFloorplanRadarPluginControllerParameter);
21
20
  dispose: () => void;
@@ -36,13 +36,7 @@ export default class PanoFloorplanRadarPluginController {
36
36
  enumerable: true,
37
37
  configurable: true,
38
38
  writable: true,
39
- value: void 0
40
- });
41
- Object.defineProperty(this, "originExtraObjects", {
42
- enumerable: true,
43
- configurable: true,
44
- writable: true,
45
- value: void 0
39
+ value: []
46
40
  });
47
41
  Object.defineProperty(this, "configs", {
48
42
  enumerable: true,
@@ -103,7 +97,6 @@ export default class PanoFloorplanRadarPluginController {
103
97
  this.render();
104
98
  }
105
99
  setExtraObjectsWith3DPositions(data) {
106
- this.originExtraObjects = data;
107
100
  if (!this.data)
108
101
  return;
109
102
  this.extraObjects = formatExtraObjects(data, this.five, this.data);
@@ -118,9 +111,6 @@ export default class PanoFloorplanRadarPluginController {
118
111
  }
119
112
  if (!this.data || !this.wrapper)
120
113
  return;
121
- if (!this.extraObjects && this.originExtraObjects) {
122
- this.extraObjects = formatExtraObjects(this.originExtraObjects, this.five, this.data);
123
- }
124
114
  const props = {
125
115
  five: this.five,
126
116
  floorplanData: this.data,
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "repository": "https://github.com/realsee-developer/dnalogel.git",
8
8
  "description": "如视 VR 看房插件合集",
9
9
  "private": false,
10
- "version": "2.0.0-alpha.21",
10
+ "version": "2.0.0-alpha.24",
11
11
  "license": "SEE LICENSE IN TERMS.txt",
12
12
  "scripts": {
13
13
  "build": "yarn run tsb && yarn run build:rollup && yarn build:docs",