@realsee/vreo 0.2.0-alpha.9 → 1.0.0-alpha.2
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/CHANGELOG.md +30 -0
- package/README.md +16 -5
- package/docs/assets/highlight.css +1 -1
- package/docs/assets/main.js +2 -2
- package/docs/assets/search.js +1 -1
- package/docs/assets/style.css +28 -2
- package/docs/classes/Player.AudioLike.html +52 -0
- package/docs/classes/Player.Controller.html +13 -13
- package/docs/classes/Player.Player-1.html +11 -11
- package/docs/classes/Player.VideoAgentMesh.html +53 -53
- package/docs/classes/Player.VideoAgentScene.html +1 -1
- package/docs/demo/assets/AppReact.d0ee843a.js +1 -0
- package/docs/demo/assets/default.63925584.js +3984 -0
- package/docs/demo/assets/default.f3f3ca8c.css +1 -0
- package/docs/demo/assets/dynamic.76506c2c.js +1 -0
- package/docs/demo/assets/examples.3d8323db.js +25 -0
- package/docs/demo/assets/examples.dac4a6fe.css +1 -0
- package/docs/demo/assets/index.7e31122c.js +1 -0
- package/docs/demo/assets/index.9331038f.css +1 -0
- package/docs/demo/assets/main.79b11b9d.js +1 -0
- package/docs/demo/assets/react.2ee8565f.css +1 -0
- package/docs/demo/assets/react.c1c07c14.js +25 -0
- package/docs/demo/assets/znRoyv06SZQeqA7m.0057e8ae.js +1 -0
- package/docs/demo/examples.html +17 -0
- package/docs/demo/index-react-dynamic.html +20 -0
- package/docs/demo/index-react.html +20 -0
- package/docs/demo/index.html +19 -0
- package/docs/enums/Player.InfoPanelStyleEnum.html +1 -1
- package/docs/enums/Player.InfoPanelTypeEnum.html +2 -2
- package/docs/enums/Player.PanoEffectEnum.html +2 -2
- package/docs/enums/Player.PanoTagEnum.html +2 -2
- package/docs/enums/Player.PanoTagStyleEnum.html +7 -0
- package/docs/enums/Player.VreoKeyframeEnum.html +12 -12
- package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
- package/docs/enums/fivePlugins.Rotation.html +1 -1
- package/docs/index.html +13 -6
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -1
- package/docs/interfaces/Player.PlayerConfigs.html +4 -3
- package/docs/interfaces/Player.Vertex.html +2 -2
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +8 -1
- package/docs/interfaces/Player.VreoKeyframe.html +2 -2
- package/docs/interfaces/Player.VreoUnit.html +2 -2
- package/docs/interfaces/Player.VreoVideo.html +2 -2
- package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +4 -0
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +2 -2
- package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
- package/docs/interfaces/fivePlugins.Vector3Position.html +3 -0
- package/docs/interfaces/react.VreoActionCallbacks.html +15 -7
- package/docs/interfaces/react.VreoProviderProps.html +1 -1
- package/docs/modules/Player.html +21 -15
- package/docs/modules/custom.html +1 -1
- package/docs/modules/fivePlugins.html +5 -2
- package/docs/modules/react.html +1 -1
- package/docs/modules.html +1 -1
- package/lib/PlayController/index.js +4 -5
- package/lib/Player/App.js +9 -7
- package/lib/Player/Controller.d.ts +29 -8
- package/lib/Player/Controller.js +193 -27
- package/lib/Player/custom/SpatialScenePanel/index.js +5 -4
- package/lib/Player/hooks.js +2 -2
- package/lib/Player/index.d.ts +5 -3
- package/lib/Player/index.js +97 -53
- package/lib/Player/modules/Drawer/index.js +1 -1
- package/lib/Player/modules/PopUp/index.js +1 -1
- package/lib/Player/modules/ResizeObserver/index.d.ts +2 -0
- package/lib/Player/modules/ResizeObserver/index.js +37 -0
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +16 -2
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +132 -59
- package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +3 -6
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +31 -36
- package/lib/Player/modules/VideoAgent/index.js +53 -12
- package/lib/Player/modules/Wave/index.d.ts +5 -0
- package/lib/Player/modules/Wave/index.js +51 -0
- package/lib/Player/modules/keyframes/BgMusic/index.js +1 -1
- package/lib/Player/modules/keyframes/CameraMovement/index.js +1 -1
- package/lib/Player/modules/keyframes/InfoPanel/index.js +22 -10
- package/lib/Player/modules/keyframes/ModelVideo/index.js +46 -9
- package/lib/Player/modules/keyframes/PanoEffect/index.js +1 -1
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +1 -1
- package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -2
- package/lib/Player/modules/keyframes/PanoTag/index.js +79 -119
- package/lib/Player/modules/keyframes/PanoTextLabel/index.d.ts +3 -0
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +96 -44
- package/lib/Player/modules/keyframes/Prompter/index.js +10 -23
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +10 -6
- package/lib/Player/modules/keyframes/VideoEffect/index.js +1 -1
- package/lib/Player/typings.d.ts +12 -1
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.d.ts +2 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +12 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.d.ts +7 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +32 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.d.ts +3 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +11 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +56 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +275 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.d.ts +7 -0
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +18 -0
- package/lib/fivePlugins/CameraMovementPlugin/index.js +13 -12
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +1 -1
- package/lib/react/index.d.ts +8 -4
- package/lib/react/index.js +3 -3
- package/lib/shared-utils/AduioLike.d.ts +37 -0
- package/lib/shared-utils/AduioLike.js +166 -0
- package/lib/shared-utils/addResizeListener.d.ts +4 -0
- package/lib/shared-utils/addResizeListener.js +51 -0
- package/lib/shared-utils/animationFrame/BetterTween.js +7 -3
- package/lib/shared-utils/animationFrame/tween.js +1 -1
- package/lib/shared-utils/createTransMatrix.d.ts +1 -0
- package/lib/shared-utils/createTransMatrix.js +43 -0
- package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
- package/lib/shared-utils/getFileExpandedName.js +13 -0
- package/lib/shared-utils/getMediaInfo.d.ts +9 -0
- package/lib/shared-utils/getMediaInfo.js +75 -0
- package/lib/shared-utils/setElementDataset.d.ts +1 -0
- package/lib/shared-utils/setElementDataset.js +24 -0
- package/lib/typings/VreoUnit.d.ts +37 -2
- package/lib/typings/VreoUnit.js +13 -1
- package/package.json +10 -10
- package/resources/PlayController/index.ts +0 -13
- package/resources/Player/App.tsx +5 -4
- package/resources/Player/Controller.ts +277 -146
- package/resources/Player/custom/SpatialScenePanel/index.tsx +5 -5
- package/resources/Player/hooks.ts +3 -5
- package/resources/Player/index.tsx +189 -141
- package/resources/Player/modules/ResizeObserver/index.tsx +23 -0
- package/resources/Player/modules/VideoAgent/VideoAgentMesh.ts +87 -31
- package/resources/Player/modules/VideoAgent/VideoAgentScene.ts +27 -24
- package/resources/Player/modules/VideoAgent/index.tsx +28 -12
- package/resources/Player/modules/Wave/index.tsx +18 -0
- package/resources/Player/modules/keyframes/InfoPanel/index.tsx +26 -11
- package/resources/Player/modules/keyframes/ModelVideo/index.tsx +36 -3
- package/resources/Player/modules/keyframes/PanoTag/index.tsx +53 -97
- package/resources/Player/modules/keyframes/PanoTextLabel/index.tsx +86 -34
- package/resources/Player/modules/keyframes/Prompter/index.tsx +6 -16
- package/resources/Player/modules/keyframes/UpdateVRPanorama/index.tsx +6 -2
- package/resources/Player/typings.ts +15 -1
- package/resources/fivePlugins/CSS3DRenderPlugin/centerPoint.ts +5 -0
- package/resources/fivePlugins/CSS3DRenderPlugin/createResizeObserver.ts +17 -0
- package/resources/fivePlugins/CSS3DRenderPlugin/evenNumber.ts +4 -0
- package/resources/fivePlugins/CSS3DRenderPlugin/index.ts +254 -0
- package/resources/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.ts +5 -0
- package/resources/fivePlugins/CameraMovementPlugin/index.ts +19 -12
- package/resources/react/index.tsx +7 -3
- package/resources/shared-utils/AduioLike.ts +109 -0
- package/resources/shared-utils/addResizeListener.ts +46 -0
- package/resources/shared-utils/createTransMatrix.ts +12 -0
- package/resources/shared-utils/getFileExpandedName.ts +6 -0
- package/resources/shared-utils/getMediaInfo.ts +52 -0
- package/resources/shared-utils/setElementDataset.ts +18 -0
- package/resources/typings/VreoUnit.ts +41 -3
- package/stylesheets/custom/SpatialScenePanel.css +2 -1
- package/stylesheets/default.css +348 -84
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
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
|
|
@@ -13,8 +13,6 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
|
13
13
|
|
|
14
14
|
var _hooks = require("../../../hooks");
|
|
15
15
|
|
|
16
|
-
var _reactTransitionGroup = require("react-transition-group");
|
|
17
|
-
|
|
18
16
|
var _VreoUnit = require("../../../../typings/VreoUnit");
|
|
19
17
|
|
|
20
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -23,6 +21,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
23
21
|
|
|
24
22
|
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; }
|
|
25
23
|
|
|
24
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
25
|
+
|
|
26
26
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
27
27
|
|
|
28
28
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -69,9 +69,8 @@ function Prompter() {
|
|
|
69
69
|
|
|
70
70
|
ref.current = setTimeout(function () {
|
|
71
71
|
setHidden(true);
|
|
72
|
-
setTimeout(
|
|
73
|
-
|
|
74
|
-
}, 500);
|
|
72
|
+
setText(''); // setTimeout(() => setText(''), 500)
|
|
73
|
+
|
|
75
74
|
if (ref.current) clearTimeout(ref.current);
|
|
76
75
|
ref.current = null;
|
|
77
76
|
}, end - start);
|
|
@@ -83,24 +82,12 @@ function Prompter() {
|
|
|
83
82
|
};
|
|
84
83
|
}, [controller]);
|
|
85
84
|
return /*#__PURE__*/React.createElement("div", {
|
|
86
|
-
className: (0, _classnames["default"])('vreo-prompter', {
|
|
87
|
-
'vreo-prompter--hidden': hidden
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}, text ?
|
|
91
|
-
/*#__PURE__*/
|
|
92
|
-
|
|
93
|
-
/* @warning "index.js:1 Warning: findDOMNode is deprecated in StrictMode." */
|
|
94
|
-
React.createElement(_reactTransitionGroup.TransitionGroup, {
|
|
85
|
+
className: (0, _classnames["default"])('vreo-prompter', _defineProperty({
|
|
86
|
+
'vreo-prompter--hidden': hidden
|
|
87
|
+
}, "vreo-prompter-left--".concat(controller.agentType), true))
|
|
88
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
95
89
|
className: "vreo-prompter-text"
|
|
96
|
-
}, /*#__PURE__*/React.createElement(_reactTransitionGroup.CSSTransition, {
|
|
97
|
-
key: text,
|
|
98
|
-
classNames: "vreo-prompter-text-transition",
|
|
99
|
-
timeout: 500,
|
|
100
|
-
addEndListener: function addEndListener(node, done) {
|
|
101
|
-
return node.addEventListener('transitionend', done, false);
|
|
102
|
-
}
|
|
103
90
|
}, /*#__PURE__*/React.createElement("div", {
|
|
104
91
|
className: "vreo-prompter-innerText"
|
|
105
|
-
}, text)))
|
|
92
|
+
}, text)));
|
|
106
93
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
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
|
|
@@ -23,15 +23,18 @@ function UpdateVRPanorama() {
|
|
|
23
23
|
var controller = (0, _hooks.useController)();
|
|
24
24
|
var five = (0, _hooks.useFiveInstance)();
|
|
25
25
|
var deafultWorkRef = React.useRef(null);
|
|
26
|
-
var updateWorkRef = React.useRef(null);
|
|
26
|
+
var updateWorkRef = React.useRef(null); // 恢复默认 VR
|
|
27
|
+
|
|
27
28
|
var restoreCallback = React.useCallback(function () {
|
|
29
|
+
// 先清理掉 之前的 VR 数据备份
|
|
30
|
+
updateWorkRef.current = null;
|
|
31
|
+
|
|
28
32
|
if (deafultWorkRef.current) {
|
|
29
33
|
var work = (0, _five.parseWork)(deafultWorkRef.current);
|
|
30
34
|
five.load(work);
|
|
31
35
|
}
|
|
36
|
+
}, []); // 暂停时: 恢复默认 VR
|
|
32
37
|
|
|
33
|
-
updateWorkRef.current = null;
|
|
34
|
-
}, []);
|
|
35
38
|
var pausedCallback = React.useCallback(function () {
|
|
36
39
|
if (deafultWorkRef.current) {
|
|
37
40
|
var work = (0, _five.parseWork)(deafultWorkRef.current);
|
|
@@ -40,7 +43,8 @@ function UpdateVRPanorama() {
|
|
|
40
43
|
});
|
|
41
44
|
five.load(work);
|
|
42
45
|
}
|
|
43
|
-
}, []);
|
|
46
|
+
}, []); // 播放时:如果暂停前有更新 VR 需要还原
|
|
47
|
+
|
|
44
48
|
var playingCallback = React.useCallback(function () {
|
|
45
49
|
if (!updateWorkRef.current) {
|
|
46
50
|
return;
|
|
@@ -101,6 +105,6 @@ function UpdateVRPanorama() {
|
|
|
101
105
|
controller.off('paused', pausedCallback);
|
|
102
106
|
controller.off('playing', playingCallback);
|
|
103
107
|
};
|
|
104
|
-
}, [
|
|
108
|
+
}, []);
|
|
105
109
|
return /*#__PURE__*/React.createElement(React.Fragment, null);
|
|
106
110
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
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
|
package/lib/Player/typings.d.ts
CHANGED
|
@@ -3,7 +3,11 @@ import { Subscribe, Five } from '@realsee/five';
|
|
|
3
3
|
import { VreoKeyframeConfigMap, VreoKeyframeEvent } from '../typings/VreoUnit';
|
|
4
4
|
import { VideoAgentMeshOptions } from './modules/VideoAgent/VideoAgentMesh';
|
|
5
5
|
export interface PlayerConfigs {
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* @deprecated rename to container
|
|
8
|
+
*/
|
|
9
|
+
containter?: Element;
|
|
10
|
+
container?: Element;
|
|
7
11
|
keyframeMap: VreoKeyframeConfigMap;
|
|
8
12
|
/**
|
|
9
13
|
* 微信端自动播放功能实现需要提前初始化 Video 实例。
|
|
@@ -24,6 +28,13 @@ export interface PlayerConfigs {
|
|
|
24
28
|
size: number;
|
|
25
29
|
};
|
|
26
30
|
autoPreload?: boolean;
|
|
31
|
+
appSize?: AppSize;
|
|
32
|
+
appearance?: Appearance;
|
|
33
|
+
}
|
|
34
|
+
export declare type AppSize = 'S' | 'M' | 'L' | 'XL';
|
|
35
|
+
export declare type WaveAppearance = 'single' | 'double' | 'solid' | 'swap' | 'expand';
|
|
36
|
+
export interface Appearance {
|
|
37
|
+
waveStyle?: 'wave' | 'solid';
|
|
27
38
|
}
|
|
28
39
|
export declare type VreoSubscribe = Pick<Subscribe<VreoKeyframeEvent>, 'on' | 'once' | 'off'>;
|
|
29
40
|
export interface CustomVreoKeyframeProps {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = centerPoint;
|
|
7
|
+
|
|
8
|
+
var _three = require("three");
|
|
9
|
+
|
|
10
|
+
function centerPoint(point1, point2) {
|
|
11
|
+
return new _three.Vector3((point1.x + point2.x) / 2, (point1.y + point2.y) / 2, (point1.z + point2.z) / 2);
|
|
12
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = createResizeObserver;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @description: 简陋的 ResizeObserver polyfill
|
|
10
|
+
*/
|
|
11
|
+
function createResizeObserver(func, element) {
|
|
12
|
+
if (!element || typeof ResizeObserver === 'undefined') {
|
|
13
|
+
return {
|
|
14
|
+
observe: function observe() {
|
|
15
|
+
return window.addEventListener('resize', func);
|
|
16
|
+
},
|
|
17
|
+
unobserve: function unobserve() {
|
|
18
|
+
return window.removeEventListener('resize', func);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
} else {
|
|
22
|
+
var observer = new ResizeObserver(func);
|
|
23
|
+
return {
|
|
24
|
+
observe: function observe() {
|
|
25
|
+
return observer.observe(element);
|
|
26
|
+
},
|
|
27
|
+
unobserve: function unobserve() {
|
|
28
|
+
return observer.unobserve(element);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = evenNumber;
|
|
7
|
+
|
|
8
|
+
function evenNumber(num, config) {
|
|
9
|
+
var roundNum = Math.round(num);
|
|
10
|
+
return roundNum % 2 === 0 ? roundNum : roundNum + Number(config !== null && config !== void 0 && config.smaller ? -1 : 1);
|
|
11
|
+
}
|
|
@@ -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('__Vreo-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,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;
|
|
@@ -15,30 +15,26 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
|
|
|
15
15
|
|
|
16
16
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var PI = Math.PI;
|
|
19
|
+
var PI_2 = PI * 2;
|
|
19
20
|
|
|
20
21
|
function formatLatitude(rad) {
|
|
21
22
|
return rad % PI_2;
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
function formatLongitude(rad) {
|
|
25
|
-
return
|
|
26
|
+
return rad % PI_2;
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
var getLongitudeParams = function getLongitudeParams(from, to, rotation) {
|
|
29
|
-
var PI = Math.PI;
|
|
30
|
-
var PI_2 = PI * 2;
|
|
31
30
|
from = formatLongitude(from);
|
|
32
31
|
to = formatLongitude(to); // 逆时针旋转,初始值必须是较大的值
|
|
33
32
|
|
|
34
|
-
if (rotation === _typings.Rotation.Anticlockwise && from
|
|
35
|
-
|
|
36
|
-
if (rotation === _typings.Rotation.Clockwise && to < from) to += PI_2; // Loop 旋转,找锐角旋转
|
|
33
|
+
if (rotation === _typings.Rotation.Anticlockwise && from > to) to += PI_2; // 顺时针旋转,结束值必须是较大值
|
|
34
|
+
else if (rotation === _typings.Rotation.Clockwise && to > from) from += PI_2; // Loop 旋转,找锐角旋转
|
|
37
35
|
// 如果 to 比 from 大 180°,逆时针转
|
|
38
36
|
// 如果 from 比 to 大 180°,顺时针转
|
|
39
|
-
|
|
40
|
-
if (rotation === _typings.Rotation.Loop && to - from > PI) return getLongitudeParams(from, to, _typings.Rotation.Anticlockwise);
|
|
41
|
-
if (rotation === _typings.Rotation.Loop && from - to > PI) return getLongitudeParams(from, to, _typings.Rotation.Clockwise);
|
|
37
|
+
else if (rotation !== _typings.Rotation.Anticlockwise && rotation !== _typings.Rotation.Clockwise && to - from > PI) return getLongitudeParams(from, to, _typings.Rotation.Clockwise);else if (rotation !== _typings.Rotation.Anticlockwise && rotation !== _typings.Rotation.Clockwise && from - to > PI) return getLongitudeParams(from, to, _typings.Rotation.Anticlockwise);
|
|
42
38
|
return {
|
|
43
39
|
from: from,
|
|
44
40
|
to: to
|
|
@@ -269,7 +265,7 @@ var CameraMovementPlugin = function CameraMovementPlugin(five) {
|
|
|
269
265
|
var onUpdate = function onUpdate(_ref3) {
|
|
270
266
|
var progress = _ref3.progress;
|
|
271
267
|
var state = {};
|
|
272
|
-
state.longitude = progressNumber(from.longitude, to.longitude, progress);
|
|
268
|
+
state.longitude = progressNumber(from.longitude, to.longitude, progress) % PI_2;
|
|
273
269
|
state.latitude = progressNumber(from.latitude, to.latitude, progress);
|
|
274
270
|
state.fov = progressNumber(from.fov, to.fov, progress);
|
|
275
271
|
five.setState(state, true);
|
|
@@ -283,7 +279,12 @@ var CameraMovementPlugin = function CameraMovementPlugin(five) {
|
|
|
283
279
|
resolve(false);
|
|
284
280
|
};
|
|
285
281
|
|
|
286
|
-
var animeDuration =
|
|
282
|
+
var animeDuration = duration;
|
|
283
|
+
|
|
284
|
+
if (args.rotation === _typings.Rotation.Loop) {
|
|
285
|
+
animeDuration = args.rotateSpeed ? Math.ceil(Math.abs(to.longitude - from.longitude) / args.rotateSpeed * 1000) : duration;
|
|
286
|
+
}
|
|
287
|
+
|
|
287
288
|
var tween = (0, _tween.tweenProgress)(animeDuration, _tween.Easing.Linear.None).onUpdate(onUpdate).onComplete(onComplete).onDestroy(onDestroy);
|
|
288
289
|
|
|
289
290
|
if (args.rotation === _typings.Rotation.Loop) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
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
|