@realsee/dnalogel 0.1.0 → 0.1.4

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 (92) hide show
  1. package/data/8054djM0oR6ky3Ey8e.d.ts +55 -0
  2. package/data/8054djM0oR6ky3Ey8e.js +348 -0
  3. package/data/PrXel3aqGbp34JQn.js +10 -2
  4. package/data/XJ6NMLWnkAY3Rdx8.d.ts +843 -0
  5. package/data/XJ6NMLWnkAY3Rdx8.js +7987 -0
  6. package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.d.ts +85 -0
  7. package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.js +509 -0
  8. package/data/vLykj3NWrllMrG06.d.ts +2 -0
  9. package/data/vLykj3NWrllMrG06.js +197 -2
  10. package/data/zxMawr9raSg8LYjG.d.ts +53 -0
  11. package/data/zxMawr9raSg8LYjG.js +588 -0
  12. package/package.json +3 -3
  13. package/plugins/AutoPreloadPlugin/index.d.ts +23 -0
  14. package/plugins/AutoPreloadPlugin/index.js +85 -0
  15. package/plugins/CSS3DRenderPlugin/index.d.ts +11 -11
  16. package/plugins/CSS3DRenderPlugin/index.js +170 -120
  17. package/plugins/ModelChassisCompassPlugin/index.d.ts +7 -3
  18. package/plugins/ModelChassisCompassPlugin/index.js +13 -26
  19. package/plugins/ModelEntryDoorGuidePlugin/index.d.ts +13 -1
  20. package/plugins/ModelEntryDoorGuidePlugin/index.js +212 -2
  21. package/plugins/ModelRoomLabelPlugin/Controller.d.ts +35 -0
  22. package/plugins/ModelRoomLabelPlugin/Controller.js +147 -0
  23. package/plugins/ModelRoomLabelPlugin/RoomLabelItem.d.ts +8 -0
  24. package/plugins/ModelRoomLabelPlugin/RoomLabelItem.js +48 -0
  25. package/plugins/ModelRoomLabelPlugin/RoomLabelItems.d.ts +7 -0
  26. package/plugins/ModelRoomLabelPlugin/RoomLabelItems.js +149 -0
  27. package/plugins/ModelRoomLabelPlugin/index.d.ts +8 -0
  28. package/plugins/ModelRoomLabelPlugin/index.js +16 -0
  29. package/plugins/ModelRoomLabelPlugin/typings.d.ts +35 -0
  30. package/plugins/ModelRoomLabelPlugin/typings.js +5 -0
  31. package/plugins/ModelRoomLabelPlugin/utils/parseData.d.ts +3 -0
  32. package/plugins/ModelRoomLabelPlugin/utils/parseData.js +29 -0
  33. package/plugins/PanoMaskSelectorPlugin/compare.d.ts +1 -0
  34. package/plugins/PanoMaskSelectorPlugin/compare.js +15 -0
  35. package/plugins/PanoMaskSelectorPlugin/createBox.d.ts +7 -0
  36. package/plugins/PanoMaskSelectorPlugin/createBox.js +61 -0
  37. package/plugins/PanoMaskSelectorPlugin/createTextures.d.ts +3 -0
  38. package/plugins/PanoMaskSelectorPlugin/createTextures.js +29 -0
  39. package/plugins/PanoMaskSelectorPlugin/fragmentShader.d.ts +1 -0
  40. package/plugins/PanoMaskSelectorPlugin/fragmentShader.js +8 -0
  41. package/plugins/PanoMaskSelectorPlugin/index.d.ts +49 -0
  42. package/plugins/PanoMaskSelectorPlugin/index.js +272 -0
  43. package/plugins/PanoMaskSelectorPlugin/vertexShader.d.ts +1 -0
  44. package/plugins/PanoMaskSelectorPlugin/vertexShader.js +8 -0
  45. package/plugins/TreasurePlugin/Controller.d.ts +53 -12
  46. package/plugins/TreasurePlugin/Controller.js +129 -60
  47. package/plugins/TreasurePlugin/TreasureFaceAnime.d.ts +8 -6
  48. package/plugins/TreasurePlugin/TreasureFaceAnime.js +4 -4
  49. package/plugins/TreasurePlugin/TreasureObject.d.ts +30 -12
  50. package/plugins/TreasurePlugin/TreasureObject.js +269 -53
  51. package/plugins/TreasurePlugin/TreasureOpenAnime.d.ts +4 -2
  52. package/plugins/TreasurePlugin/TreasureOpenAnime.js +10 -5
  53. package/plugins/TreasurePlugin/constants.d.ts +32 -11
  54. package/plugins/TreasurePlugin/constants.js +52 -17
  55. package/plugins/TreasurePlugin/index.d.ts +5 -5
  56. package/plugins/TreasurePlugin/index.js +8 -0
  57. package/plugins/floorplan/ModelFloorplanPlugin/components/Camera.js +4 -2
  58. package/plugins/floorplan/ModelFloorplanPlugin/components/Compass.js +2 -1
  59. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomLabels.js +5 -2
  60. package/plugins/floorplan/ModelFloorplanPlugin/components/index.js +1 -1
  61. package/plugins/floorplan/typings/floorplanData.d.ts +5 -1
  62. package/plugins/floorplan/utils/formatData.js +1 -22
  63. package/plugins/floorplan/utils/formatPosition.d.ts +4 -4
  64. package/shared-utils/createCanvasTextTexture.d.ts +8 -0
  65. package/shared-utils/createCanvasTextTexture.js +29 -0
  66. package/shared-utils/isNil.d.ts +10 -0
  67. package/shared-utils/isNil.js +24 -0
  68. package/shared-utils/three/getExtraModelLoader.d.ts +6 -0
  69. package/shared-utils/three/getExtraModelLoader.js +31 -0
  70. package/shared-utils/three/getTextureLoader.d.ts +6 -0
  71. package/shared-utils/three/getTextureLoader.js +34 -0
  72. package/shared-utils/three/loadFbxObj.d.ts +1 -2
  73. package/shared-utils/three/loadFbxObj.js +6 -2
  74. package/shared-utils/three/transformPositionToVector3.d.ts +7 -0
  75. package/shared-utils/three/{vecror3.js → transformPositionToVector3.js} +2 -2
  76. package/shared-utils/three/transfromToMeshBasicMaterial.d.ts +2 -0
  77. package/shared-utils/three/transfromToMeshBasicMaterial.js +27 -0
  78. package/shared-utils/to.d.ts +0 -1
  79. package/shared-utils/to.js +45 -7
  80. package/typedoc/plugins.d.ts +3 -1
  81. package/typedoc/plugins.js +63 -13
  82. package/typedoc/typings.d.ts +1 -1
  83. package/typings/math.type.d.ts +2 -2
  84. package/data/wYnRjQ4KZoV1yPoG.d.ts +0 -114
  85. package/data/wYnRjQ4KZoV1yPoG.js +0 -512
  86. package/plugins/PanoCursorRaycasterPlugin/utils/vecror3.d.ts +0 -7
  87. package/plugins/PanoCursorRaycasterPlugin/utils/vecror3.js +0 -18
  88. package/plugins/TreasurePlugin/treasureDataMap.d.ts +0 -7
  89. package/plugins/TreasurePlugin/treasureDataMap.js +0 -20
  90. package/plugins/TreasurePlugin/utils/loadTreasureTextures.d.ts +0 -7
  91. package/plugins/TreasurePlugin/utils/loadTreasureTextures.js +0 -115
  92. package/shared-utils/three/vecror3.d.ts +0 -7
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _nextFrame = require("../../shared-utils/nextFrame");
9
+
10
+ /** 优化首点位加载的逻辑
11
+ *
12
+ * 1.进入 VR 时,如果 Five 默认的配置图片像素超过了 1024,先用 1024 加载
13
+ * 第一个点位加载完成之后,再使用业务上配置的图片像素重复加载一遍当前点位
14
+ *
15
+ * 2.在走点时,会预载距离当前点位最近的 preloadPanoIndexNumber 个数的点
16
+ * @description
17
+ * 预载周围的点时,不会一次性全部预载。而是每隔1s,预载其中的一个点
18
+ */
19
+ var AutoPreloadPlugin = function AutoPreloadPlugin(five, parameters) {
20
+ var _parameters$preloadIm, _parameters$preloadPa;
21
+
22
+ var preloadImageSize = (_parameters$preloadIm = parameters === null || parameters === void 0 ? void 0 : parameters.preloadImageSize) !== null && _parameters$preloadIm !== void 0 ? _parameters$preloadIm : 1024;
23
+ var preloadPanoIndexNumber = (_parameters$preloadPa = parameters === null || parameters === void 0 ? void 0 : parameters.preloadPanoIndexNumber) !== null && _parameters$preloadPa !== void 0 ? _parameters$preloadPa : 4;
24
+ var lastSize = five.imageOptions.size;
25
+ var timer = void 0;
26
+
27
+ var doPreload = function doPreload(quene) {
28
+ if (quene.length === 0) return;
29
+ five.preloadPano(quene[0]);
30
+ if (quene.length === 1) return;
31
+ timer = setTimeout(function () {
32
+ return doPreload(quene.splice(1));
33
+ }, 1000);
34
+ };
35
+
36
+ var onPanoArrived = function onPanoArrived(panoIndex) {
37
+ if (parameters !== null && parameters !== void 0 && parameters.shouldPreloadAroundPanoImage) {
38
+ var shouldPreload = parameters.shouldPreloadAroundPanoImage(panoIndex);
39
+ if (!shouldPreload) return;
40
+ }
41
+
42
+ if (timer) clearTimeout(timer);
43
+ var currentIndex = panoIndex;
44
+ var currentObserver = five.work.observers[currentIndex];
45
+ var preloadIndexArray = Array.from(new Set(five.work.observers.filter(function (observer) {
46
+ return observer.floorIndex === currentObserver.floorIndex;
47
+ }).map(function (observer) {
48
+ var distance = observer.standingPosition.clone().distanceTo(currentObserver.standingPosition);
49
+ return {
50
+ observer: observer,
51
+ distance: distance
52
+ };
53
+ }).sort(function (a, b) {
54
+ return a.distance - b.distance;
55
+ }).slice(0, preloadPanoIndexNumber).map(function (_ref) {
56
+ var observer = _ref.observer;
57
+ return observer.panoIndex;
58
+ })));
59
+ doPreload(preloadIndexArray);
60
+ };
61
+
62
+ var onFirstPanoArrived = function onFirstPanoArrived(panoIndex) {
63
+ // 在第一次点位加载之后再做周围点位的预载,防止第一个点位周围的点预载两次
64
+ // 同时也防止阻塞第一个点的低分辨率图快速加载
65
+ five.on('panoArrived', onPanoArrived);
66
+ var shouldPreloadFirstPanoImage = five.imageOptions.size !== lastSize;
67
+ if (!shouldPreloadFirstPanoImage) return;
68
+ (0, _nextFrame.nextFrame)(function () {
69
+ five.imageOptions.size = lastSize;
70
+ five.moveToPano(panoIndex);
71
+ }, 5);
72
+ };
73
+
74
+ five.imageOptions.size = lastSize && lastSize > preloadImageSize ? preloadImageSize : lastSize;
75
+ if (five.imageOptions.size !== lastSize) five.once('panoArrived', onFirstPanoArrived);
76
+ return {
77
+ dispose: function dispose() {
78
+ five.off('panoArrived', onFirstPanoArrived);
79
+ five.off('panoArrived', onPanoArrived);
80
+ }
81
+ };
82
+ };
83
+
84
+ var _default = AutoPreloadPlugin;
85
+ exports["default"] = _default;
@@ -1,36 +1,36 @@
1
1
  import { FivePlugin } from '@realsee/five';
2
2
  import { Vector3 } from 'three';
3
3
  import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer';
4
- export interface CSS3DRenderPluginParameterType {
5
- }
4
+ import { Vector3Position } from '../../typings/math.type';
5
+ export declare type CSS3DRenderPluginParameterType = undefined;
6
6
  export interface CSS3DRenderPluginExportType {
7
7
  /**
8
8
  * @description: 根据传入的四个点位创建一个3d dom容器,可以通过ReactDom.render()的方式将react组件放到容器中
9
9
  * @param {Five} five
10
- * @param {Vector3[]} points: 矩形四个点坐标
11
- * @param {HTMLElement} container: HTMLElement
10
+ * @param {Vector3[] | Vector3Position[]} points: 矩形四个点坐标
12
11
  * @param {number} config.ratio: 1px对应多少米,默认为 0.002,即1px对应2mm
13
12
  * @param {number} config.dpr: dpr, 默认为1
13
+ * @param {HTMLElement} config.container: HTMLElement
14
14
  * @param {number} config.autoRender: 默认为true,如果需要手动render则传false
15
15
  * @param {'front' | 'behind'} config.mode: 两种模式
16
- * @param {HTMLElement} config.behindFiveContainer: 如果config.mode为'behind',需要传入容器,并确保此容器的层级小于five层级
16
+ * @param {HTMLElement} config.behindFiveContainer: 如果config.mode为'behind',需要传入容器,并确保此容器位five下方,且中间没有其他dom元素遮挡
17
17
  * @return {{ container: HTMLElement; dispose: () => void }}: container: dom容器, dispose: 清理函数
18
18
  */
19
- create3DDomContainer: (points: [Vector3, Vector3, Vector3, Vector3], container?: HTMLElement, config?: {
19
+ create3DDomContainer: (points: Vector3[] | Vector3Position[], config?: {
20
20
  ratio?: number;
21
21
  dpr?: number;
22
22
  autoRender?: boolean;
23
+ container?: HTMLElement;
24
+ [key: string]: any;
25
+ } & ({
23
26
  mode?: 'front';
24
27
  } | {
25
- ratio?: number;
26
- dpr?: number;
27
- autoRender?: boolean;
28
28
  mode: 'behind';
29
29
  behindFiveContainer: HTMLElement;
30
- }) => {
30
+ })) => {
31
31
  container: HTMLElement;
32
32
  dispose: () => void;
33
- object: CSS3DObject;
33
+ css3DObject: CSS3DObject;
34
34
  render?: () => void;
35
35
  } | void;
36
36
  /**
@@ -15,61 +15,195 @@ var _evenNumber = _interopRequireDefault(require("../../shared-utils/math/evenNu
15
15
 
16
16
  var _centerPoint = _interopRequireDefault(require("../../shared-utils/three/centerPoint"));
17
17
 
18
+ var _transformPositionToVector = _interopRequireDefault(require("../../shared-utils/three/transformPositionToVector3"));
19
+
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
21
 
20
22
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
23
 
22
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
25
 
24
- function _objectDestructuringEmpty(obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }
25
-
26
26
  /**
27
27
  * **CSS3DRenderPlugin** 提供矩形区域(三维空间四个坐标点),你可以在此矩形区域中渲染 DOM 内容。
28
28
  * 实现原理参考[CSS3DRenderer](https://threejs.org/docs/index.html?q=CSS3D#examples/en/renderers/CSS3DRenderer)。
29
29
  *
30
30
  * @returns
31
31
  */
32
- var CSS3DRenderPlugin = function CSS3DRenderPlugin(five, _ref) {
33
- _objectDestructuringEmpty(_ref);
34
-
32
+ var CSS3DRenderPlugin = function CSS3DRenderPlugin(five) {
35
33
  var state = {
36
34
  disposeCallbacks: []
37
35
  };
38
36
 
39
- var create3DDomContainer = function create3DDomContainer(points, container, config) {
40
- var _five$model;
37
+ var create3DDomContainer = function create3DDomContainer() {
38
+ var _five$model, _five$model2, _config$autoRender;
41
39
 
42
- if ((points === null || points === void 0 ? void 0 : points.length) < 3) {
43
- return console.error('points must be equal or greater than than 3');
40
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
41
+ params[_key] = arguments[_key];
44
42
  }
45
43
 
46
- if (!(five !== null && five !== void 0 && (_five$model = five.model) !== null && _five$model !== void 0 && _five$model.loaded)) {
47
- var _five$model2;
44
+ var points = params[0].map(function (point) {
45
+ return point instanceof THREE.Vector3 ? point : (0, _transformPositionToVector["default"])(point);
46
+ });
47
+ var config = params[1];
48
+ if ((points === null || points === void 0 ? void 0 : points.length) < 4) return console.error('points must be equal or greater than than 4');
49
+ if (!(five !== null && five !== void 0 && (_five$model = five.model) !== null && _five$model !== void 0 && _five$model.loaded)) return console.error('five.model.loaded is: ', five === null || five === void 0 ? void 0 : (_five$model2 = five.model) === null || _five$model2 === void 0 ? void 0 : _five$model2.loaded);
50
+ var fiveElement = five.getElement();
51
+ if (!fiveElement) return console.error('five.getElement() is ' + fiveElement);
52
+ var disposers = [];
53
+ var ratio = (config === null || config === void 0 ? void 0 : config.ratio) || 0.00216;
54
+ if (ratio <= 0.00215) console.warn('if you need click css3DElement on safari, ratio must be greater than 0.00215');
55
+ var dpr = (config === null || config === void 0 ? void 0 : config.dpr) || 1;
56
+ var mode = (config === null || config === void 0 ? void 0 : config.mode) || 'front';
57
+ var autoRender = (_config$autoRender = config === null || config === void 0 ? void 0 : config.autoRender) !== null && _config$autoRender !== void 0 ? _config$autoRender : true;
58
+ var behindFiveContainer = (config === null || config === void 0 ? void 0 : config.behindFiveContainer) || fiveElement.parentElement || document.body;
59
+ var container = (config === null || config === void 0 ? void 0 : config.container) || document.createElement('div');
60
+ container.classList.add('__Dnalogel-plugin--CSS3DRenderPlugin'); // 获取css3DObject, 如果mode为behind的话,一起获取mesh
61
+
62
+ var _createObject = createObject(points, {
63
+ ratio: ratio,
64
+ dpr: dpr,
65
+ container: container,
66
+ mode: mode
67
+ }),
68
+ css3DObject = _createObject.css3DObject,
69
+ mesh = _createObject.mesh; // ======= INIT START =======
70
+
71
+
72
+ var resizeObserver;
73
+ var frontModeUnInited = mode === 'front' && !state.frontMode;
74
+ var behindModeUnInited = mode === 'behind' && !state.behindMode;
75
+ var inited = !(frontModeUnInited || behindModeUnInited);
76
+ var stopRenderFlag = false;
77
+ var requestAnimationFrameId = null;
48
78
 
49
- return console.error('five.model.loaded is: ', five === null || five === void 0 ? void 0 : (_five$model2 = five.model) === null || _five$model2 === void 0 ? void 0 : _five$model2.loaded);
79
+ if (behindModeUnInited) {
80
+ state.behindMode = {
81
+ scene: new THREE.Scene(),
82
+ css3DRenderer: new _CSS3DRenderer.CSS3DRenderer()
83
+ };
50
84
  }
51
85
 
52
- var fiveElement = five.getElement();
86
+ if (frontModeUnInited) {
87
+ state.frontMode = {
88
+ scene: new THREE.Scene(),
89
+ css3DRenderer: new _CSS3DRenderer.CSS3DRenderer()
90
+ };
91
+ }
53
92
 
54
- if (!fiveElement) {
55
- return console.error('five.getElement() is ' + fiveElement);
93
+ var _ref = mode === 'behind' ? state.behindMode : state.frontMode,
94
+ scene = _ref.scene,
95
+ css3DRenderer = _ref.css3DRenderer;
96
+
97
+ var render = function () {
98
+ if (!inited) {
99
+ var css3DRendererSetSize = function css3DRendererSetSize() {
100
+ var rendererWidth = (0, _evenNumber["default"])(fiveElement.clientWidth);
101
+ var rendererHeight = (0, _evenNumber["default"])(fiveElement.clientHeight);
102
+ css3DRenderer.setSize(rendererWidth, rendererHeight);
103
+ };
104
+
105
+ css3DRendererSetSize();
106
+ resizeObserver = new ResizeObserver(css3DRendererSetSize);
107
+ css3DRenderer.domElement.style.position = 'absolute';
108
+ css3DRenderer.domElement.style.top = '0';
109
+ css3DRenderer.domElement.style.userSelect = 'none';
110
+ css3DRenderer.domElement.style.pointerEvents = 'none';
111
+
112
+ var renderEveryFrame = function renderEveryFrame() {
113
+ if (stopRenderFlag) return;
114
+ requestAnimationFrameId = requestAnimationFrame(renderEveryFrame);
115
+ css3DRenderer.render(scene, five.camera);
116
+ };
117
+
118
+ return function () {
119
+ var _resizeObserver;
120
+
121
+ scene.add(css3DObject);
122
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : _resizeObserver.observe(fiveElement);
123
+ renderEveryFrame();
124
+
125
+ if (mode === 'behind' && mesh) {
126
+ five.scene.add(mesh);
127
+ disposers.push(function () {
128
+ return mesh && five.scene.remove(mesh);
129
+ });
130
+ }
131
+ };
132
+ } else {
133
+ return function () {
134
+ scene.add(css3DObject);
135
+ };
136
+ }
137
+ }();
138
+
139
+ if (frontModeUnInited) {
140
+ var wrapper = fiveElement.parentElement || document.body;
141
+ wrapper.appendChild(css3DRenderer.domElement);
56
142
  }
57
143
 
58
- var disposers = [];
59
- var ratio = (config === null || config === void 0 ? void 0 : config.ratio) || 0.002; // 0.72 / 354 0.72m宽的窗户,UI稿上是354像素
144
+ if (behindModeUnInited) {
145
+ var _wrapper = behindFiveContainer;
60
146
 
61
- var dpr = (config === null || config === void 0 ? void 0 : config.dpr) || 1;
62
- var mode = (config === null || config === void 0 ? void 0 : config.mode) || 'front';
63
- var autoRender = (config === null || config === void 0 ? void 0 : config.autoRender) || true;
64
- var behindFiveContainer = (config === null || config === void 0 ? void 0 : config.behindFiveContainer) || fiveElement.parentElement || document.body;
147
+ _wrapper.appendChild(css3DRenderer.domElement);
148
+ } // ======= INIT END =======
149
+
150
+
151
+ var dispose = function dispose() {
152
+ stopRenderFlag = true;
153
+ disposers.forEach(function (d) {
154
+ return d === null || d === void 0 ? void 0 : d();
155
+ });
156
+ scene.remove(css3DObject);
157
+ if (typeof requestAnimationFrameId === 'number') cancelAnimationFrame(requestAnimationFrameId);
158
+
159
+ if (scene.children.length === 0) {
160
+ css3DRenderer.domElement.remove();
161
+ if (mode === 'front') state.frontMode = undefined;
162
+ if (mode === 'behind') state.behindMode = undefined;
163
+
164
+ if (!state.behindMode && !state.frontMode) {
165
+ var _resizeObserver2;
166
+
167
+ (_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : _resizeObserver2.unobserve(fiveElement);
168
+ }
169
+ }
170
+
171
+ return true;
172
+ };
173
+
174
+ var idx = state.disposeCallbacks.findIndex(function (item) {
175
+ return item === dispose;
176
+ });
177
+
178
+ if (idx !== -1) {
179
+ state.disposeCallbacks.splice(idx, 1);
180
+ } else {
181
+ state.disposeCallbacks.push(dispose);
182
+ }
183
+
184
+ console.log({
185
+ autoRender: autoRender
186
+ });
187
+ if (autoRender) render();
188
+ return {
189
+ container: container,
190
+ dispose: dispose,
191
+ css3DObject: css3DObject,
192
+ render: autoRender ? undefined : render
193
+ };
194
+ };
195
+
196
+ var createObject = function createObject(points, config) {
197
+ var ratio = config.ratio,
198
+ dpr = config.dpr,
199
+ element = config.container,
200
+ mode = config.mode;
65
201
  var planeWidth = points[0].distanceTo(points[1]);
66
202
  var planeHeight = points[1].distanceTo(points[2]);
67
203
  var domWidthPx = (0, _evenNumber["default"])(planeWidth / ratio * dpr);
68
204
  var domHeightPx = (0, _evenNumber["default"])(planeHeight / ratio * dpr);
69
- var css3DScene = new THREE.Scene();
70
- var element = container || document.createElement('div');
71
- var object = new _CSS3DRenderer.CSS3DObject(element);
72
- object.scale.set(ratio, ratio, ratio);
205
+ var css3DObject = new _CSS3DRenderer.CSS3DObject(element);
206
+ css3DObject.scale.set(ratio, ratio, ratio);
73
207
  element.style.width = domWidthPx + 'px';
74
208
  element.style.height = domHeightPx + 'px';
75
209
  element.style.pointerEvents = 'none';
@@ -91,14 +225,13 @@ var CSS3DRenderPlugin = function CSS3DRenderPlugin(five, _ref) {
91
225
  var rolateX = (vector12.z > 0 ? 1 : -1) * rotateXAngle;
92
226
  var rolateY = (vector01.z < 0 ? 1 : -1) * rotateYAngle;
93
227
  var rolateZ = (vector01.x > 0 && vector01.y < 0 || vector01.x < 0 && vector01.y > 0 ? -1 : 1) * rotateZAngle;
94
- object.rotateOnWorldAxis(new THREE.Vector3(1, 0, 0), rolateX); // x
228
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(1, 0, 0), rolateX); // x
95
229
 
96
- object.rotateOnWorldAxis(new THREE.Vector3(0, 1, 0), rolateY); // y
230
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(0, 1, 0), rolateY); // y
97
231
 
98
- object.rotateOnWorldAxis(new THREE.Vector3(0, 0, 1), rolateZ); // z
232
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(0, 0, 1), rolateZ); // z
99
233
 
100
- object.position.set(centerPosition.x, centerPosition.y, centerPosition.z);
101
- css3DScene.add(object);
234
+ css3DObject.position.set(centerPosition.x, centerPosition.y, centerPosition.z);
102
235
  var mesh;
103
236
 
104
237
  if (mode === 'behind') {
@@ -110,105 +243,22 @@ var CSS3DRenderPlugin = function CSS3DRenderPlugin(five, _ref) {
110
243
  var geometry = new THREE.PlaneGeometry(domWidthPx, domHeightPx);
111
244
  mesh = new THREE.Mesh(geometry, material);
112
245
  mesh.name = 'CSS3DRenderPlugin-mesh';
113
- mesh.position.copy(object.position);
114
- mesh.rotation.copy(object.rotation);
115
- mesh.scale.copy(object.scale);
116
- }
117
-
118
- var css3DRenderer = new _CSS3DRenderer.CSS3DRenderer();
119
-
120
- var css3DRendererSetSize = function css3DRendererSetSize() {
121
- var rendererWidth = (0, _evenNumber["default"])(fiveElement.clientWidth);
122
- var rendererHeight = (0, _evenNumber["default"])(fiveElement.clientHeight);
123
- css3DRenderer.setSize(rendererWidth, rendererHeight);
124
- };
125
-
126
- css3DRendererSetSize();
127
- var resizeObserver = new ResizeObserver(css3DRendererSetSize);
128
- css3DRenderer.domElement.style.position = 'absolute';
129
- css3DRenderer.domElement.style.top = '0';
130
- css3DRenderer.domElement.style.userSelect = 'none';
131
- css3DRenderer.domElement.style.pointerEvents = 'none';
132
-
133
- if (mode === 'front') {
134
- var wrapper = fiveElement.parentElement || document.body;
135
- wrapper.appendChild(css3DRenderer.domElement);
136
- } else {
137
- var _wrapper = behindFiveContainer;
138
-
139
- _wrapper.appendChild(css3DRenderer.domElement);
140
- }
141
-
142
- var stopRenderFlag = false;
143
- var requestAnimationFrameId = null;
144
-
145
- var dispose = function dispose() {
146
- stopRenderFlag = true;
147
-
148
- try {
149
- disposers.forEach(function (d) {
150
- return d === null || d === void 0 ? void 0 : d();
151
- });
152
- element.remove();
153
-
154
- if (typeof requestAnimationFrameId === 'number') {
155
- cancelAnimationFrame(requestAnimationFrameId);
156
- }
157
-
158
- css3DScene.remove(object);
159
- css3DScene.dispose();
160
- css3DRenderer.domElement.remove();
161
- resizeObserver.unobserve(fiveElement);
162
- return true;
163
- } catch (e) {
164
- console.warn('error:', e);
165
- }
166
-
167
- return false;
168
- };
169
-
170
- var idx = state.disposeCallbacks.findIndex(function (item) {
171
- return item === dispose;
172
- });
173
-
174
- if (idx !== -1) {
175
- state.disposeCallbacks.splice(idx, 1);
176
- } else {
177
- state.disposeCallbacks.push(dispose);
246
+ mesh.position.copy(css3DObject.position);
247
+ mesh.rotation.copy(css3DObject.rotation);
248
+ mesh.scale.copy(css3DObject.scale);
178
249
  }
179
250
 
180
- var renderEveryFrame = function renderEveryFrame() {
181
- if (stopRenderFlag) return;
182
- requestAnimationFrameId = requestAnimationFrame(renderEveryFrame);
183
- css3DRenderer.render(css3DScene, five.camera);
184
- };
185
-
186
- var render = function render() {
187
- resizeObserver.observe(fiveElement);
188
- renderEveryFrame();
189
-
190
- if (mode === 'behind' && mesh) {
191
- five.scene.add(mesh);
192
- disposers.push(function () {
193
- return mesh && five.scene.remove(mesh);
194
- });
195
- }
196
- };
197
-
198
- if (autoRender) render();
199
251
  return {
200
- container: element,
201
- dispose: dispose,
202
- object: object,
203
- render: autoRender ? undefined : render
252
+ css3DObject: css3DObject,
253
+ mesh: mesh
204
254
  };
205
255
  };
206
256
 
207
257
  return {
208
258
  create3DDomContainer: create3DDomContainer,
209
259
  disposeAll: function disposeAll() {
210
- state.disposeCallbacks.forEach(function (dispose) {
211
- return dispose === null || dispose === void 0 ? void 0 : dispose();
260
+ state.disposeCallbacks.forEach(function (d) {
261
+ return d === null || d === void 0 ? void 0 : d();
212
262
  });
213
263
  state.disposeCallbacks = [];
214
264
  }
@@ -1,12 +1,16 @@
1
1
  import type { FivePlugin } from '@realsee/five';
2
2
  export interface ModelChassisCompassPluginParameterType {
3
- northRad?: number;
4
- fbxUrl?: string;
3
+ north_rad?: number;
4
+ fbx_url?: string;
5
+ }
6
+ export interface ModelChassisCompassPluginData {
7
+ north_rad?: number;
8
+ fbx_url?: string;
5
9
  }
6
10
  export interface ModelChassisCompassPluginExportType {
7
11
  enable: () => void;
8
12
  disable: () => void;
9
- load: (northRad?: number, fbxUrl?: string) => Promise<boolean>;
13
+ load: (data?: ModelChassisCompassPluginData) => Promise<boolean>;
10
14
  }
11
15
  /**
12
16
  * 模型底盘指南针插件
@@ -13,6 +13,8 @@ var _FBXLoader = require("three/examples/jsm/loaders/FBXLoader");
13
13
 
14
14
  var _object3d2LocalMatrix = _interopRequireDefault(require("../../shared-utils/object3d2LocalMatrix"));
15
15
 
16
+ var _transfromToMeshBasicMaterial = _interopRequireDefault(require("../../shared-utils/three/transfromToMeshBasicMaterial"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
19
 
18
20
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -27,21 +29,21 @@ function _asyncToGenerator(fn) { return function () { var self = this, args = ar
27
29
  * 模型底盘指南针插件
28
30
  */
29
31
  var ModelChassisCompassPlugin = function ModelChassisCompassPlugin(five, params) {
30
- var defaultFbxUrl = params.fbxUrl || '//vrlab-static.ljcdn.com/release/web/v3/dipan3/dipan.FBX';
31
- var defaultNorthRad = params.northRad || undefined; // 局部状态
32
+ var defaultFbxUrl = params.fbx_url || '//vrlab-static.ljcdn.com/release/web/v3/dipan3/dipan.FBX';
33
+ var defaultNorthRad = params.north_rad || undefined; // 局部状态
32
34
 
33
35
  var state = {};
34
36
 
35
37
  var load = /*#__PURE__*/function () {
36
- var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(northRad, fbxUrl) {
37
- var bounding, xOffset, zOffset, maxOffset, fbxLoader, object, rotation, _five$model$bounding, _five$model$bounding$, xMax, zMax, _five$model$bounding$2, xMin, yMin, zMin, position, scale;
38
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(data) {
39
+ var fbxUrl, northRad, bounding, xOffset, zOffset, maxOffset, fbxLoader, object, rotation, _five$model$bounding, _five$model$bounding$, xMax, zMax, _five$model$bounding$2, xMin, yMin, zMin, position, scale;
38
40
 
39
41
  return regeneratorRuntime.wrap(function _callee$(_context) {
40
42
  while (1) {
41
43
  switch (_context.prev = _context.next) {
42
44
  case 0:
43
- fbxUrl = fbxUrl || defaultFbxUrl;
44
- northRad = northRad || defaultNorthRad;
45
+ fbxUrl = (data === null || data === void 0 ? void 0 : data.fbx_url) || defaultFbxUrl;
46
+ northRad = (data === null || data === void 0 ? void 0 : data.north_rad) || defaultNorthRad;
45
47
 
46
48
  if (northRad) {
47
49
  _context.next = 4;
@@ -61,25 +63,10 @@ var ModelChassisCompassPlugin = function ModelChassisCompassPlugin(five, params)
61
63
 
62
64
  case 11:
63
65
  object = _context.sent;
64
- object.traverse(function (ele) {
65
- if (ele.type === 'Mesh') {
66
- var _ele$parent;
67
-
68
- var mesh = ele;
69
- var materialConf = Object.assign({
70
- map: mesh.material.map || {}
71
- }, {
72
- transparent: true,
73
- side: THREE.DoubleSide,
74
- blending: THREE.AdditiveBlending
75
- });
76
- mesh.material = new THREE.MeshBasicMaterial(materialConf);
77
- mesh.renderOrder = 1;
78
-
79
- if (((_ele$parent = ele.parent) === null || _ele$parent === void 0 ? void 0 : _ele$parent.type) === 'Mesh') {
80
- ele.renderOrder = ele.parent.renderOrder + 1;
81
- }
82
- }
66
+ (0, _transfromToMeshBasicMaterial["default"])(object, {
67
+ transparent: true,
68
+ side: THREE.DoubleSide,
69
+ blending: THREE.AdditiveBlending
83
70
  });
84
71
  rotation = [0, northRad - Math.PI / 2, 0];
85
72
  _five$model$bounding = five.model.bounding, _five$model$bounding$ = _five$model$bounding.max, xMax = _five$model$bounding$.x, zMax = _five$model$bounding$.z, _five$model$bounding$2 = _five$model$bounding.min, xMin = _five$model$bounding$2.x, yMin = _five$model$bounding$2.y, zMin = _five$model$bounding$2.z;
@@ -106,7 +93,7 @@ var ModelChassisCompassPlugin = function ModelChassisCompassPlugin(five, params)
106
93
  }, _callee);
107
94
  }));
108
95
 
109
- return function load(_x, _x2) {
96
+ return function load(_x) {
110
97
  return _ref.apply(this, arguments);
111
98
  };
112
99
  }();
@@ -1,7 +1,19 @@
1
1
  import type { FivePlugin } from '@realsee/five';
2
- export interface ModelEntryDoorGuidePluginParameterType {
2
+ import { Vector3Position } from '../../typings/math.type';
3
+ export interface ModelEntryDoorGuidePluginData {
4
+ position: Vector3Position;
5
+ rad: number;
6
+ fbx_url?: string;
3
7
  }
8
+ export declare type ModelEntryDoorGuidePluginParameterType = {
9
+ animationEnabled?: boolean;
10
+ } & ModelEntryDoorGuidePluginData;
4
11
  export interface ModelEntryDoorGuidePluginExportType {
12
+ enable: (config?: {
13
+ animationEnable?: boolean;
14
+ }) => boolean;
15
+ disable: () => boolean;
16
+ load: (data?: Partial<ModelEntryDoorGuidePluginData>) => Promise<boolean>;
5
17
  }
6
18
  /**
7
19
  * 模型入户门引导插件