@realsee/vreo 0.2.0-alpha.2 → 0.2.0-alpha.21-beta

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 (147) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +80 -5
  3. package/docs/assets/custom.css +2 -2
  4. package/docs/assets/highlight.css +1 -1
  5. package/docs/assets/main.js +2 -2
  6. package/docs/assets/search.js +1 -1
  7. package/docs/assets/style.css +28 -2
  8. package/docs/classes/Player.AudioLike.html +52 -0
  9. package/docs/classes/Player.Controller.html +13 -13
  10. package/docs/classes/Player.Player-1.html +11 -11
  11. package/docs/classes/Player.VideoAgentMesh.html +53 -53
  12. package/docs/classes/Player.VideoAgentScene.html +1 -1
  13. package/docs/demo/assets/AppReact.043b1cd2.js +1 -0
  14. package/docs/demo/assets/default.55c3f308.css +1 -0
  15. package/docs/demo/assets/default.9a6a32fc.js +3952 -0
  16. package/docs/demo/assets/dynamic.bdbbbafa.js +1 -0
  17. package/docs/demo/assets/examples.2aaa85e1.js +25 -0
  18. package/docs/demo/assets/examples.dac4a6fe.css +1 -0
  19. package/docs/demo/assets/index.9b5c1a3f.js +1 -0
  20. package/docs/demo/assets/index.a7bafdff.css +1 -0
  21. package/docs/demo/assets/main.0895bebe.js +1 -0
  22. package/docs/demo/assets/react.855b3d23.css +1 -0
  23. package/docs/demo/assets/react.959cff42.js +25 -0
  24. package/docs/demo/assets/znRoyv06SZQeqA7m.0057e8ae.js +1 -0
  25. package/docs/demo/examples.html +17 -0
  26. package/docs/demo/index-react-dynamic.html +20 -0
  27. package/docs/demo/index-react.html +20 -0
  28. package/docs/demo/index.html +19 -0
  29. package/docs/enums/Player.InfoPanelStyleEnum.html +1 -0
  30. package/docs/enums/Player.InfoPanelTypeEnum.html +2 -2
  31. package/docs/enums/Player.PanoEffectEnum.html +2 -2
  32. package/docs/enums/Player.PanoTagEnum.html +2 -2
  33. package/docs/enums/Player.PanoTagStyleEnum.html +7 -0
  34. package/docs/enums/Player.VreoKeyframeEnum.html +12 -12
  35. package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
  36. package/docs/enums/fivePlugins.Rotation.html +1 -1
  37. package/docs/index.html +37 -6
  38. package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -1
  39. package/docs/interfaces/Player.PlayerConfigs.html +3 -3
  40. package/docs/interfaces/Player.Vertex.html +2 -2
  41. package/docs/interfaces/Player.VideoAgentMeshOptions.html +8 -1
  42. package/docs/interfaces/Player.VreoKeyframe.html +2 -2
  43. package/docs/interfaces/Player.VreoUnit.html +2 -2
  44. package/docs/interfaces/Player.VreoVideo.html +2 -2
  45. package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +4 -0
  46. package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
  47. package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +2 -2
  48. package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
  49. package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
  50. package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
  51. package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
  52. package/docs/interfaces/fivePlugins.Vector3Position.html +3 -0
  53. package/docs/interfaces/react.VreoActionCallbacks.html +15 -7
  54. package/docs/interfaces/react.VreoProviderProps.html +1 -1
  55. package/docs/modules/Player.html +21 -15
  56. package/docs/modules/custom.html +1 -1
  57. package/docs/modules/fivePlugins.html +5 -2
  58. package/docs/modules/react.html +1 -1
  59. package/docs/modules.html +1 -1
  60. package/lib/PlayController/createHTMLAudioElement.d.ts +1 -0
  61. package/lib/PlayController/createHTMLAudioElement.js +47 -0
  62. package/lib/PlayController/index.d.ts +38 -0
  63. package/lib/PlayController/index.js +300 -0
  64. package/lib/Player/App.js +5 -4
  65. package/lib/Player/Controller.d.ts +5 -1
  66. package/lib/Player/Controller.js +38 -5
  67. package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
  68. package/lib/Player/custom/SpatialScenePanel/index.js +98 -26
  69. package/lib/Player/index.d.ts +3 -2
  70. package/lib/Player/index.js +116 -24
  71. package/lib/Player/modules/Drawer/index.js +1 -1
  72. package/lib/Player/modules/PopUp/index.d.ts +2 -0
  73. package/lib/Player/modules/PopUp/index.js +43 -0
  74. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +17 -2
  75. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +113 -37
  76. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +5 -1
  77. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +9 -4
  78. package/lib/Player/modules/VideoAgent/index.d.ts +2 -0
  79. package/lib/Player/modules/VideoAgent/index.js +2 -2
  80. package/lib/Player/modules/keyframes/BgMusic/index.js +1 -1
  81. package/lib/Player/modules/keyframes/CameraMovement/index.js +42 -6
  82. package/lib/Player/modules/keyframes/InfoPanel/index.js +74 -36
  83. package/lib/Player/modules/keyframes/ModelVideo/index.js +46 -9
  84. package/lib/Player/modules/keyframes/PanoEffect/index.js +1 -1
  85. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +1 -1
  86. package/lib/Player/modules/keyframes/PanoTag/index.js +20 -7
  87. package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +3 -0
  88. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +96 -51
  89. package/lib/Player/modules/keyframes/Prompter/index.js +5 -19
  90. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +31 -19
  91. package/lib/Player/modules/keyframes/VideoEffect/index.js +1 -1
  92. package/lib/Player/typings.d.ts +6 -0
  93. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -0
  94. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +12 -0
  95. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +7 -0
  96. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +32 -0
  97. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +3 -0
  98. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +11 -0
  99. package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +56 -0
  100. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +275 -0
  101. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +7 -0
  102. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +18 -0
  103. package/lib/fivePlugins/CameraMovementPlugin/index.js +109 -94
  104. package/lib/fivePlugins/CameraMovementPlugin/typings.d.ts +1 -0
  105. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +1 -1
  106. package/lib/react/index.d.ts +7 -3
  107. package/lib/react/index.js +3 -3
  108. package/lib/shared-utils/AduioLike.d.ts +37 -0
  109. package/lib/shared-utils/AduioLike.js +165 -0
  110. package/lib/shared-utils/animationFrame/BetterTween.js +7 -3
  111. package/lib/shared-utils/animationFrame/tween.js +1 -1
  112. package/lib/shared-utils/createTransMatrix.d.ts +1 -0
  113. package/lib/shared-utils/createTransMatrix.js +43 -0
  114. package/lib/typings/VreoUnit.d.ts +42 -5
  115. package/lib/typings/VreoUnit.js +26 -6
  116. package/package.json +8 -8
  117. package/resources/PlayController/createHTMLAudioElement.ts +53 -0
  118. package/resources/PlayController/index.ts +167 -0
  119. package/resources/Player/App.tsx +2 -0
  120. package/resources/Player/Controller.ts +155 -121
  121. package/resources/Player/custom/SpatialScenePanel/index.tsx +148 -45
  122. package/resources/Player/index.tsx +186 -110
  123. package/resources/Player/modules/PopUp/index.tsx +26 -0
  124. package/resources/Player/modules/VideoAgent/VideoAgentMesh.ts +67 -14
  125. package/resources/Player/modules/VideoAgent/VideoAgentScene.ts +3 -3
  126. package/resources/Player/modules/VideoAgent/index.tsx +3 -2
  127. package/resources/Player/modules/keyframes/CameraMovement/index.tsx +7 -3
  128. package/resources/Player/modules/keyframes/InfoPanel/index.tsx +79 -34
  129. package/resources/Player/modules/keyframes/ModelVideo/index.tsx +36 -3
  130. package/resources/Player/modules/keyframes/PanoTag/index.tsx +31 -12
  131. package/resources/Player/modules/keyframes/PanoTextLabel/index.tsx +87 -34
  132. package/resources/Player/modules/keyframes/Prompter/index.tsx +5 -15
  133. package/resources/Player/modules/keyframes/UpdateVRPanorama/index.tsx +25 -16
  134. package/resources/Player/typings.ts +5 -0
  135. package/resources/fivePlugins/CSS3DRenderPlugin/centerPoint.ts +5 -0
  136. package/resources/fivePlugins/CSS3DRenderPlugin/createResizeObserver.ts +17 -0
  137. package/resources/fivePlugins/CSS3DRenderPlugin/evenNumber.ts +4 -0
  138. package/resources/fivePlugins/CSS3DRenderPlugin/index.ts +254 -0
  139. package/resources/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.ts +5 -0
  140. package/resources/fivePlugins/CameraMovementPlugin/index.ts +66 -52
  141. package/resources/fivePlugins/CameraMovementPlugin/typings.ts +2 -1
  142. package/resources/react/index.tsx +7 -3
  143. package/resources/shared-utils/AduioLike.ts +108 -0
  144. package/resources/shared-utils/createTransMatrix.ts +12 -0
  145. package/resources/typings/VreoUnit.ts +46 -5
  146. package/stylesheets/custom/SpatialScenePanel.css +14 -8
  147. package/stylesheets/default.css +116 -12
@@ -0,0 +1,56 @@
1
+ import { FivePlugin } from '@realsee/five';
2
+ import { Vector3 } from 'three';
3
+ import { CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer';
4
+ /**
5
+ * 三维向量
6
+ */
7
+ export interface Vector3Position {
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ }
12
+ export declare type CSS3DRenderPluginParameterType = undefined;
13
+ export interface CSS3DRenderPluginExportType {
14
+ /**
15
+ * @description: 根据传入的四个点位创建一个3d dom容器,可以通过ReactDom.render()的方式将react组件放到容器中
16
+ * @param {Five} five
17
+ * @param {Vector3[] | Vector3Position[]} points: 矩形四个点坐标
18
+ * @param {number} config.ratio: 1px对应多少米,默认为 0.002,即1px对应2mm
19
+ * @param {number} config.dpr: dpr, 默认为1
20
+ * @param {HTMLElement} config.container: HTMLElement
21
+ * @param {number} config.autoRender: 默认为true,如果需要手动render则传false
22
+ * @param {'front' | 'behind'} config.mode: 两种模式
23
+ * @param {HTMLElement} config.behindFiveContainer: 如果config.mode为'behind',需要传入容器,并确保此容器位five下方,且中间没有其他dom元素遮挡
24
+ * @return {{ container: HTMLElement; dispose: () => void }}: container: dom容器, dispose: 清理函数
25
+ */
26
+ create3DDomContainer: (points: Vector3[] | Vector3Position[], config?: {
27
+ ratio?: number;
28
+ dpr?: number;
29
+ autoRender?: boolean;
30
+ container?: HTMLElement;
31
+ [key: string]: any;
32
+ } & ({
33
+ mode?: 'front';
34
+ } | {
35
+ mode: 'behind';
36
+ behindFiveContainer: HTMLElement;
37
+ })) => {
38
+ container: HTMLElement;
39
+ dispose: () => void;
40
+ css3DObject: CSS3DObject;
41
+ render?: () => void;
42
+ } | void;
43
+ /**
44
+ * @description: 销毁所有的渲染内容
45
+ * @return {void}
46
+ */
47
+ disposeAll: () => void;
48
+ }
49
+ /**
50
+ * **CSS3DRenderPlugin** 提供矩形区域(三维空间四个坐标点),你可以在此矩形区域中渲染 DOM 内容。
51
+ * 实现原理参考[CSS3DRenderer](https://threejs.org/docs/index.html?q=CSS3D#examples/en/renderers/CSS3DRenderer)。
52
+ *
53
+ * @returns
54
+ */
55
+ export declare const CSS3DRenderPlugin: FivePlugin<CSS3DRenderPluginParameterType, CSS3DRenderPluginExportType>;
56
+ export default CSS3DRenderPlugin;
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = exports.CSS3DRenderPlugin = void 0;
9
+
10
+ var THREE = _interopRequireWildcard(require("three"));
11
+
12
+ var _CSS3DRenderer = require("three/examples/jsm/renderers/CSS3DRenderer");
13
+
14
+ var _evenNumber = _interopRequireDefault(require("./evenNumber"));
15
+
16
+ var _centerPoint = _interopRequireDefault(require("./centerPoint"));
17
+
18
+ var _transformPositionToVector = _interopRequireDefault(require("./transformPositionToVector3"));
19
+
20
+ var _createResizeObserver = _interopRequireDefault(require("./createResizeObserver"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
28
+ /**
29
+ * **CSS3DRenderPlugin** 提供矩形区域(三维空间四个坐标点),你可以在此矩形区域中渲染 DOM 内容。
30
+ * 实现原理参考[CSS3DRenderer](https://threejs.org/docs/index.html?q=CSS3D#examples/en/renderers/CSS3DRenderer)。
31
+ *
32
+ * @returns
33
+ */
34
+ var CSS3DRenderPlugin = function CSS3DRenderPlugin(five) {
35
+ var state = {
36
+ disposeCallbacks: []
37
+ };
38
+
39
+ var create3DDomContainer = function create3DDomContainer() {
40
+ var _five$model, _five$model2, _config$autoRender;
41
+
42
+ for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
43
+ params[_key] = arguments[_key];
44
+ }
45
+
46
+ var points = params[0].map(function (point) {
47
+ return point instanceof THREE.Vector3 ? point : (0, _transformPositionToVector["default"])(point);
48
+ });
49
+ var config = params[1];
50
+ if ((points === null || points === void 0 ? void 0 : points.length) < 4) return console.error('points must be equal or greater than than 4');
51
+ 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);
52
+ var fiveElement = five.getElement();
53
+ if (!fiveElement) return console.error('five.getElement() is ' + fiveElement);
54
+ var disposers = [];
55
+ var ratio = (config === null || config === void 0 ? void 0 : config.ratio) || 0.00216;
56
+ if (ratio <= 0.00215) console.warn('if you need click css3DElement on safari, ratio must be greater than 0.00215');
57
+ var dpr = (config === null || config === void 0 ? void 0 : config.dpr) || 1;
58
+ var mode = (config === null || config === void 0 ? void 0 : config.mode) || 'front';
59
+ var autoRender = (_config$autoRender = config === null || config === void 0 ? void 0 : config.autoRender) !== null && _config$autoRender !== void 0 ? _config$autoRender : true;
60
+ var behindFiveContainer = (config === null || config === void 0 ? void 0 : config.behindFiveContainer) || fiveElement.parentElement || document.body;
61
+ var container = (config === null || config === void 0 ? void 0 : config.container) || document.createElement('div');
62
+ container.classList.add('__Dnalogel-plugin--CSS3DRenderPlugin'); // 获取css3DObject, 如果mode为behind的话,一起获取mesh
63
+
64
+ var _createObject = createObject(points, {
65
+ ratio: ratio,
66
+ dpr: dpr,
67
+ container: container,
68
+ mode: mode
69
+ }),
70
+ css3DObject = _createObject.css3DObject,
71
+ mesh = _createObject.mesh; // ======= INIT START =======
72
+
73
+
74
+ var resizeObserver;
75
+ var frontModeUnInited = mode === 'front' && !state.frontMode;
76
+ var behindModeUnInited = mode === 'behind' && !state.behindMode;
77
+ var inited = !(frontModeUnInited || behindModeUnInited);
78
+ var stopRenderFlag = false;
79
+ var requestAnimationFrameId = null;
80
+
81
+ if (behindModeUnInited) {
82
+ state.behindMode = {
83
+ scene: new THREE.Scene(),
84
+ css3DRenderer: new _CSS3DRenderer.CSS3DRenderer()
85
+ };
86
+ }
87
+
88
+ if (frontModeUnInited) {
89
+ state.frontMode = {
90
+ scene: new THREE.Scene(),
91
+ css3DRenderer: new _CSS3DRenderer.CSS3DRenderer()
92
+ };
93
+ }
94
+
95
+ var _ref = mode === 'behind' ? state.behindMode : state.frontMode,
96
+ scene = _ref.scene,
97
+ css3DRenderer = _ref.css3DRenderer;
98
+
99
+ var render = function () {
100
+ if (!inited) {
101
+ var css3DRendererSetSize = function css3DRendererSetSize() {
102
+ // 这里evenNumber策略是遇到奇数会加1,不知道为啥会触发滚动条显示,导致fiveElement变小,fiveElement变小又触发了这里的resize,宽高变小,滚动条消失,然后又触发resize。。。无限循环
103
+ // 为了规避上面这种情况,evenNumber设置了一个参数,遇到奇数可选择减一
104
+ var rendererWidth = (0, _evenNumber["default"])(fiveElement.clientWidth, {
105
+ smaller: true
106
+ });
107
+ var rendererHeight = (0, _evenNumber["default"])(fiveElement.clientHeight, {
108
+ smaller: true
109
+ });
110
+ css3DRenderer.setSize(rendererWidth, rendererHeight);
111
+ };
112
+
113
+ css3DRendererSetSize();
114
+ resizeObserver = (0, _createResizeObserver["default"])(css3DRendererSetSize, fiveElement);
115
+ css3DRenderer.domElement.style.position = 'absolute';
116
+ css3DRenderer.domElement.style.top = '0';
117
+ css3DRenderer.domElement.style.userSelect = 'none';
118
+ css3DRenderer.domElement.style.pointerEvents = 'none';
119
+
120
+ var renderEveryFrame = function renderEveryFrame() {
121
+ if (stopRenderFlag) return;
122
+ requestAnimationFrameId = requestAnimationFrame(renderEveryFrame);
123
+ css3DRenderer.render(scene, five.camera);
124
+ };
125
+
126
+ return function () {
127
+ var _resizeObserver, _resizeObserver$obser;
128
+
129
+ scene.add(css3DObject);
130
+ (_resizeObserver = resizeObserver) === null || _resizeObserver === void 0 ? void 0 : (_resizeObserver$obser = _resizeObserver.observe) === null || _resizeObserver$obser === void 0 ? void 0 : _resizeObserver$obser.call(_resizeObserver);
131
+ renderEveryFrame();
132
+
133
+ if (mode === 'behind' && mesh) {
134
+ five.scene.add(mesh);
135
+ disposers.push(function () {
136
+ return mesh && five.scene.remove(mesh);
137
+ });
138
+ }
139
+ };
140
+ } else {
141
+ return function () {
142
+ scene.add(css3DObject);
143
+ };
144
+ }
145
+ }();
146
+
147
+ if (frontModeUnInited) {
148
+ var wrapper = fiveElement.parentElement || document.body;
149
+ wrapper.appendChild(css3DRenderer.domElement);
150
+ }
151
+
152
+ if (behindModeUnInited) {
153
+ var _wrapper = behindFiveContainer;
154
+
155
+ _wrapper.appendChild(css3DRenderer.domElement);
156
+ } // ======= INIT END =======
157
+
158
+
159
+ var dispose = function dispose() {
160
+ stopRenderFlag = true;
161
+ disposers.forEach(function (d) {
162
+ return d === null || d === void 0 ? void 0 : d();
163
+ });
164
+ scene.remove(css3DObject);
165
+ if (typeof requestAnimationFrameId === 'number') cancelAnimationFrame(requestAnimationFrameId);
166
+
167
+ if (scene.children.length === 0) {
168
+ css3DRenderer.domElement.remove();
169
+ if (mode === 'front') state.frontMode = undefined;
170
+ if (mode === 'behind') state.behindMode = undefined;
171
+
172
+ if (!state.behindMode && !state.frontMode) {
173
+ var _resizeObserver2, _resizeObserver2$unob;
174
+
175
+ (_resizeObserver2 = resizeObserver) === null || _resizeObserver2 === void 0 ? void 0 : (_resizeObserver2$unob = _resizeObserver2.unobserve) === null || _resizeObserver2$unob === void 0 ? void 0 : _resizeObserver2$unob.call(_resizeObserver2);
176
+ }
177
+ }
178
+
179
+ return true;
180
+ };
181
+
182
+ var idx = state.disposeCallbacks.findIndex(function (item) {
183
+ return item === dispose;
184
+ });
185
+
186
+ if (idx !== -1) {
187
+ state.disposeCallbacks.splice(idx, 1);
188
+ } else {
189
+ state.disposeCallbacks.push(dispose);
190
+ }
191
+
192
+ if (autoRender) render();
193
+ return {
194
+ container: container,
195
+ dispose: dispose,
196
+ css3DObject: css3DObject,
197
+ render: autoRender ? undefined : render
198
+ };
199
+ };
200
+
201
+ var createObject = function createObject(points, config) {
202
+ var ratio = config.ratio,
203
+ dpr = config.dpr,
204
+ element = config.container,
205
+ mode = config.mode;
206
+ var planeWidth = points[0].distanceTo(points[1]);
207
+ var planeHeight = points[1].distanceTo(points[2]);
208
+ var domWidthPx = (0, _evenNumber["default"])(planeWidth / ratio * dpr);
209
+ var domHeightPx = (0, _evenNumber["default"])(planeHeight / ratio * dpr);
210
+ var css3DObject = new _CSS3DRenderer.CSS3DObject(element);
211
+ css3DObject.scale.set(ratio, ratio, ratio);
212
+ element.style.width = domWidthPx + 'px';
213
+ element.style.height = domHeightPx + 'px';
214
+ element.style.pointerEvents = 'none';
215
+ var centerPosition = (0, _centerPoint["default"])(points[0], points[2]);
216
+ var vector01 = points[1].clone().sub(points[0]); // 点0 -> 点1 的向量
217
+
218
+ var vector12 = points[2].clone().sub(points[1]); // 点1 -> 点2 的向量
219
+ // 旋转
220
+
221
+ var rotateXAngle = new THREE.Vector3(0, 1, 0).angleTo(new THREE.Vector3(0, vector12.y, vector12.z));
222
+ var rotateYAngle = new THREE.Vector3(1, 0, 0).angleTo(new THREE.Vector3(vector01.x, 0, vector01.z));
223
+ var rotateZAngle = vector01.angleTo(new THREE.Vector3(vector01.x, 0, vector01.z));
224
+ /**
225
+ * [0,1,0] => [0,0,1] 为rolate Worldx正方向
226
+ * [0,0,1] => [0,1,0] 为rolate Worldy正方向
227
+ * [0,1,1] => [-1,0,0] 为rolate Worldz正方向
228
+ */
229
+
230
+ var rotateX = (vector12.z > 0 ? -1 : 1) * rotateXAngle;
231
+ var rotateY = (vector01.z < 0 ? 1 : -1) * rotateYAngle;
232
+ var rotateZ = (vector01.x > 0 && vector01.y < 0 || vector01.x < 0 && vector01.y > 0 ? -1 : 1) * rotateZAngle;
233
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(1, 0, 0), rotateX); // x
234
+
235
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(0, 1, 0), rotateY); // y
236
+
237
+ css3DObject.rotateOnWorldAxis(new THREE.Vector3(0, 0, 1), rotateZ); // z
238
+
239
+ css3DObject.position.set(centerPosition.x, centerPosition.y, centerPosition.z);
240
+ var mesh;
241
+
242
+ if (mode === 'behind') {
243
+ var material = new THREE.MeshBasicMaterial({
244
+ opacity: 0,
245
+ transparent: false,
246
+ side: THREE.DoubleSide
247
+ });
248
+ var geometry = new THREE.PlaneGeometry(domWidthPx, domHeightPx);
249
+ mesh = new THREE.Mesh(geometry, material);
250
+ mesh.name = 'CSS3DRenderPlugin-mesh';
251
+ mesh.position.copy(css3DObject.position);
252
+ mesh.rotation.copy(css3DObject.rotation);
253
+ mesh.scale.copy(css3DObject.scale);
254
+ }
255
+
256
+ return {
257
+ css3DObject: css3DObject,
258
+ mesh: mesh
259
+ };
260
+ };
261
+
262
+ return {
263
+ create3DDomContainer: create3DDomContainer,
264
+ disposeAll: function disposeAll() {
265
+ state.disposeCallbacks.forEach(function (d) {
266
+ return d === null || d === void 0 ? void 0 : d();
267
+ });
268
+ state.disposeCallbacks = [];
269
+ }
270
+ };
271
+ };
272
+
273
+ exports.CSS3DRenderPlugin = CSS3DRenderPlugin;
274
+ var _default = CSS3DRenderPlugin;
275
+ exports["default"] = _default;
@@ -0,0 +1,7 @@
1
+ import { Vector3 } from 'three';
2
+ declare const transformPositionToVector3: ({ x, y, z }: {
3
+ x: number;
4
+ y: number;
5
+ z: number;
6
+ }) => Vector3;
7
+ export default transformPositionToVector3;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _three = require("three");
9
+
10
+ var transformPositionToVector3 = function transformPositionToVector3(_ref) {
11
+ var x = _ref.x,
12
+ y = _ref.y,
13
+ z = _ref.z;
14
+ return new _three.Vector3(x, y, z);
15
+ };
16
+
17
+ var _default = transformPositionToVector3;
18
+ exports["default"] = _default;
@@ -22,7 +22,8 @@ function formatLatitude(rad) {
22
22
  }
23
23
 
24
24
  function formatLongitude(rad) {
25
- return (rad % PI_2 + PI_2) % PI_2;
25
+ // return ((rad % PI_2) + PI_2) % PI_2
26
+ return rad % PI_2;
26
27
  }
27
28
 
28
29
  var getLongitudeParams = function getLongitudeParams(from, to, rotation) {
@@ -31,9 +32,9 @@ var getLongitudeParams = function getLongitudeParams(from, to, rotation) {
31
32
  from = formatLongitude(from);
32
33
  to = formatLongitude(to); // 逆时针旋转,初始值必须是较大的值
33
34
 
34
- if (rotation === _typings.Rotation.Anticlockwise && from < to) from += PI_2; // 顺时针旋转,结束值必须是较大值
35
+ if (rotation === _typings.Rotation.Anticlockwise && from > to) from += PI_2; // 顺时针旋转,结束值必须是较大值
35
36
 
36
- if (rotation === _typings.Rotation.Clockwise && to < from) to += PI_2; // Loop 旋转,找锐角旋转
37
+ if (rotation === _typings.Rotation.Clockwise && to > from) to += PI_2; // Loop 旋转,找锐角旋转
37
38
  // 如果 to 比 from 大 180°,逆时针转
38
39
  // 如果 from 比 to 大 180°,顺时针转
39
40
 
@@ -54,112 +55,125 @@ function progressNumber(from, to, pst) {
54
55
 
55
56
 
56
57
  var CameraMovementPlugin = function CameraMovementPlugin(five) {
57
- var move = /*#__PURE__*/function () {
58
- var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(args, duration) {
59
- var opts,
60
- _args = arguments;
61
- return regeneratorRuntime.wrap(function _callee$(_context) {
62
- while (1) {
63
- switch (_context.prev = _context.next) {
64
- case 0:
65
- opts = _args.length > 2 && _args[2] !== undefined ? _args[2] : {
66
- preload: true
67
- };
58
+ var move = function move(args, duration) {
59
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
60
+ preload: true
61
+ };
62
+ return new Promise( /*#__PURE__*/function () {
63
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(resolve, reject) {
64
+ var panoIndex, movePanoOptions;
65
+ return regeneratorRuntime.wrap(function _callee$(_context) {
66
+ while (1) {
67
+ switch (_context.prev = _context.next) {
68
+ case 0:
69
+ if (opts.asyncStartCallback) {
70
+ opts.asyncStartCallback();
71
+ }
68
72
 
69
- if (opts.asyncStartCallback) {
70
- opts.asyncStartCallback();
71
- }
73
+ if (!(five.panoIndex === undefined)) {
74
+ _context.next = 3;
75
+ break;
76
+ }
72
77
 
73
- if (!(args.mode && args.mode !== five.currentMode)) {
74
- _context.next = 5;
75
- break;
76
- }
78
+ return _context.abrupt("return", reject(false));
77
79
 
78
- _context.next = 5;
79
- return new Promise(function (resolve) {
80
- if (!args.mode) return;
81
- five.once('modeChange', function (mode) {
82
- five.once('initAnimationEnded', function () {
83
- if (mode === args.mode) {
84
- resolve(true);
85
- }
80
+ case 3:
81
+ if (!(args.mode && args.mode !== five.currentMode)) {
82
+ _context.next = 6;
83
+ break;
84
+ }
85
+
86
+ _context.next = 6;
87
+ return new Promise(function (resolve) {
88
+ if (!args.mode) return;
89
+ five.once('modeChange', function (mode) {
90
+ five.once('initAnimationEnded', function () {
91
+ if (mode === args.mode) {
92
+ resolve(true);
93
+ }
94
+ });
95
+ });
96
+ five.changeMode(args.mode, {
97
+ fov: args.fov || undefined,
98
+ latitude: args.latitude || undefined,
99
+ longitude: args.longitude || undefined,
100
+ panoIndex: args.panoIndex || undefined
86
101
  });
87
102
  });
88
- five.changeMode(args.mode, {
89
- fov: args.fov || undefined,
90
- latitude: args.latitude || undefined,
91
- longitude: args.longitude || undefined,
92
- panoIndex: args.panoIndex || undefined
93
- });
94
- });
95
103
 
96
- case 5:
97
- if (!(args.mode === _five.Five.Mode.Floorplan)) {
98
- _context.next = 7;
99
- break;
100
- }
104
+ case 6:
105
+ if (!(args.mode === _five.Five.Mode.Floorplan)) {
106
+ _context.next = 8;
107
+ break;
108
+ }
101
109
 
102
- return _context.abrupt("return", true);
110
+ return _context.abrupt("return", resolve(true));
103
111
 
104
- case 7:
105
- if (!(opts.preload && args.panoIndex !== undefined && args.panoIndex !== five.panoIndex)) {
106
- _context.next = 10;
107
- break;
108
- }
112
+ case 8:
113
+ if (!(opts.preload && args.panoIndex !== undefined && args.panoIndex !== five.panoIndex)) {
114
+ _context.next = 11;
115
+ break;
116
+ }
109
117
 
110
- _context.next = 10;
111
- return five.preloadPano(args.panoIndex);
118
+ _context.next = 11;
119
+ return five.preloadPano(args.panoIndex);
112
120
 
113
- case 10:
114
- if (opts.asyncEndCallback) {
115
- opts.asyncEndCallback();
116
- }
121
+ case 11:
122
+ if (opts.asyncEndCallback) {
123
+ opts.asyncEndCallback();
124
+ }
117
125
 
118
- if (!(args.panoIndex === undefined && args.fov === undefined && args.latitude === undefined && args.longitude === undefined)) {
119
- _context.next = 13;
120
- break;
121
- }
126
+ if (!(args.panoIndex === undefined && args.fov === undefined && args.latitude === undefined && args.longitude === undefined)) {
127
+ _context.next = 14;
128
+ break;
129
+ }
122
130
 
123
- return _context.abrupt("return", true);
131
+ return _context.abrupt("return", resolve(true));
124
132
 
125
- case 13:
126
- _context.next = 15;
127
- return new Promise(function (resolve, reject) {
128
- var panoIndex = args.panoIndex !== undefined ? args.panoIndex : five.panoIndex;
129
-
130
- if (panoIndex !== undefined) {
131
- five.moveToPano(panoIndex, Object.assign({
132
- duration: duration,
133
- // 移动耗时
134
- moveEndCallback: function moveEndCallback() {
135
- return resolve(true);
136
- },
137
- // 移动结束
138
- moveCancelCallback: function moveCancelCallback() {
139
- return reject(false);
140
- } // 移动开始
141
-
142
- }, args));
143
- } else {
144
- reject(false);
133
+ case 14:
134
+ panoIndex = args.panoIndex !== undefined ? args.panoIndex : five.panoIndex;
135
+
136
+ if (!(panoIndex !== undefined)) {
137
+ _context.next = 21;
138
+ break;
145
139
  }
146
- });
147
140
 
148
- case 15:
149
- return _context.abrupt("return", _context.sent);
141
+ movePanoOptions = Object.assign(args, {
142
+ duration: duration,
143
+ // 移动耗时
144
+ moveEndCallback: function moveEndCallback() {
145
+ return resolve(true);
146
+ },
147
+ // 移动结束
148
+ moveCancelCallback: function moveCancelCallback() {
149
+ resolve(true);
150
+ } // 移动开始
151
+ // effect: args.transEffect || 'fade',
150
152
 
151
- case 16:
152
- case "end":
153
- return _context.stop();
153
+ });
154
+ _context.next = 19;
155
+ return five.moveToPano(panoIndex, movePanoOptions);
156
+
157
+ case 19:
158
+ _context.next = 22;
159
+ break;
160
+
161
+ case 21:
162
+ reject(false);
163
+
164
+ case 22:
165
+ case "end":
166
+ return _context.stop();
167
+ }
154
168
  }
155
- }
156
- }, _callee);
157
- }));
169
+ }, _callee);
170
+ }));
158
171
 
159
- return function move(_x, _x2) {
160
- return _ref.apply(this, arguments);
161
- };
162
- }();
172
+ return function (_x, _x2) {
173
+ return _ref.apply(this, arguments);
174
+ };
175
+ }());
176
+ };
163
177
 
164
178
  var getAnimeParams = function getAnimeParams(args) {
165
179
  var currentFiveState = five.state; // latitude
@@ -239,8 +253,9 @@ var CameraMovementPlugin = function CameraMovementPlugin(five) {
239
253
  // 移动结束
240
254
  moveCancelCallback: function moveCancelCallback() {
241
255
  return reject(false);
242
- } // 移动开始
243
-
256
+ },
257
+ // 移动开始
258
+ effect: 'fade'
244
259
  });
245
260
  });
246
261
 
@@ -255,7 +270,7 @@ var CameraMovementPlugin = function CameraMovementPlugin(five) {
255
270
  var onUpdate = function onUpdate(_ref3) {
256
271
  var progress = _ref3.progress;
257
272
  var state = {};
258
- state.longitude = progressNumber(from.longitude, to.longitude, progress);
273
+ state.longitude = progressNumber(from.longitude, to.longitude, progress) % PI_2;
259
274
  state.latitude = progressNumber(from.latitude, to.latitude, progress);
260
275
  state.fov = progressNumber(from.fov, to.fov, progress);
261
276
  five.setState(state, true);
@@ -33,6 +33,7 @@ export interface CameraMovementOptsCallback {
33
33
  export declare type MoveArgs = {
34
34
  mode: Mode;
35
35
  panoIndex: number;
36
+ transEffect?: "fly" | "fade" | "instant";
36
37
  } & Pose;
37
38
  export declare type MoveOpts = {
38
39
  preload?: boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
@@ -11,12 +11,16 @@ export declare const VreoProvider: React.FC<VreoProviderProps>;
11
11
  export interface VreoActionCallbacks {
12
12
  /**
13
13
  * 载入剧本数据。
14
+ * @param vreoUnit 剧本数据
15
+ * @param currentTime 开始时间戳
16
+ * @param preload 是否开启预载
17
+ * @param force 是否强制载入
14
18
  */
15
- load: (vreoUnit: VreoUnit, currentTime?: number) => Promise<boolean>;
19
+ load: (vreoUnit: VreoUnit, currentTime?: number, preload?: boolean, force?: boolean) => Promise<boolean>;
16
20
  /**
17
21
  * 播放。
18
22
  */
19
- play: () => void;
23
+ play: (currentTime?: number) => void;
20
24
  /**
21
25
  * 暂停。
22
26
  */
@@ -38,7 +42,7 @@ export declare function useVreoAction(): {
38
42
  load: (vreoUnit: VreoUnit, currentTime?: number | undefined) => Promise<boolean>;
39
43
  pause: () => void;
40
44
  show: () => void;
41
- play: () => boolean;
45
+ play: (currentTime?: number | undefined) => boolean;
42
46
  hide: () => void;
43
47
  dispose: () => void;
44
48
  };