@realsee/vreo 2.4.7 → 2.5.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/README.md +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/Player.AudioLike.html +2 -2
- package/docs/classes/Player.Controller.html +52 -4
- package/docs/classes/Player.Player.html +43 -2
- package/docs/classes/Player.VideoAgentMesh.html +61 -4
- package/docs/classes/Player.VideoAgentScene.html +2 -2
- package/docs/demo/assets/{examples-5qw3pq5z.js → examples-DfiAz2fR.js} +1 -1
- package/docs/demo/assets/react-BnzBLum3.css +1 -0
- package/docs/demo/examples.html +1 -1
- package/docs/demo/index-react.html +2 -2
- package/docs/demo/index.html +1 -1
- package/docs/enums/Player.InfoPanelStyleEnum.html +2 -2
- 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 +3 -3
- package/docs/enums/Player.VreoKeyframeEnum.html +13 -13
- package/docs/enums/fivePlugins.CameraMovementEffect.html +2 -2
- package/docs/enums/fivePlugins.Rotation.html +2 -2
- package/docs/functions/custom.SpatialScenePanel.html +1 -1
- package/docs/functions/react.useVreoAction.html +8 -1
- package/docs/functions/react.useVreoEventCallback.html +10 -1
- package/docs/functions/react.useVreoPausedState.html +8 -1
- package/docs/index.html +1 -1
- package/docs/interfaces/Player.Appearance.html +2 -0
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +2 -2
- package/docs/interfaces/Player.PlayerConfigs.html +6 -6
- package/docs/interfaces/Player.Vertex.html +2 -2
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +5 -4
- 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 +7 -5
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +2 -2
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +3 -3
- package/docs/interfaces/fivePlugins.CameraMovementPluginParameterType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +2 -2
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +2 -2
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +2 -2
- package/docs/interfaces/fivePlugins.Vector3Position.html +2 -2
- package/docs/interfaces/react.VreoActionCallbacks.html +7 -7
- package/docs/interfaces/react.VreoProviderProps.html +5 -2
- package/docs/modules/Player.html +1 -1
- package/docs/modules/fivePlugins.html +1 -1
- package/docs/types/Player.AppSize.html +1 -0
- package/docs/types/Player.AudioLikeEvent.html +2 -2
- package/docs/types/Player.CameraMovementData.html +1 -1
- package/docs/types/Player.CustomData.html +1 -1
- package/docs/types/Player.InfoPanelData.html +2 -2
- package/docs/types/Player.ModelVideoData.html +5 -5
- package/docs/types/Player.PanoEffectData.html +2 -2
- package/docs/types/Player.PanoTagData.html +2 -2
- package/docs/types/Player.PanoTextLabelData.html +2 -2
- package/docs/types/Player.PrompterData.html +2 -2
- package/docs/types/Player.QuadrangleVertexs.html +1 -1
- package/docs/types/Player.Quaternion.html +2 -2
- package/docs/types/Player.UpdateVRPanoramaData.html +2 -2
- package/docs/types/Player.Vertexs.html +1 -1
- package/docs/types/Player.VideoEffectData.html +2 -2
- package/docs/types/Player.VreoKeyframeEvent.html +1 -1
- package/docs/types/Player.VreoKeyframeMap.html +2 -2
- package/docs/types/Player.VreoSubscribe.html +1 -1
- package/docs/types/Player.WaveAppearance.html +1 -0
- package/docs/types/fivePlugins.CSS3DRenderPluginParameterType.html +1 -0
- package/docs/types/fivePlugins.MoveArgs.html +1 -1
- package/docs/types/fivePlugins.MoveOpts.html +1 -1
- package/docs/types/fivePlugins.RotateArgs.html +1 -1
- package/docs/types/fivePlugins.RotateOpts.html +1 -1
- package/docs/variables/fivePlugins.CSS3DRenderPlugin.html +2 -2
- package/docs/variables/fivePlugins.CameraMovementPlugin.html +1 -1
- package/docs/variables/fivePlugins.ModelTVVideoPlugin.html +1 -1
- package/docs/variables/react.VreoProvider.html +9 -1
- package/lib/PlayController/createHTMLAudioElement.js +5 -12
- package/lib/PlayController/index.js +27 -34
- package/lib/Player/App.js +25 -34
- package/lib/Player/Controller.d.ts +106 -2
- package/lib/Player/Controller.js +190 -78
- package/lib/Player/custom/SpatialScenePanel/index.js +20 -31
- package/lib/Player/hooks.js +6 -15
- package/lib/Player/index.d.ts +103 -0
- package/lib/Player/index.js +153 -45
- package/lib/Player/modules/Drawer/index.js +8 -17
- package/lib/Player/modules/PopUp/index.js +8 -17
- package/lib/Player/modules/ResizeObserver/index.js +10 -17
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +108 -7
- package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +157 -52
- package/lib/Player/modules/VideoAgent/VideoAgentScene.js +16 -25
- package/lib/Player/modules/VideoAgent/index.js +8 -17
- package/lib/Player/modules/Wave/index.js +24 -33
- package/lib/Player/modules/keyframes/BgMusic/index.js +13 -22
- package/lib/Player/modules/keyframes/CameraMovement/index.js +17 -26
- package/lib/Player/modules/keyframes/InfoPanel/index.js +13 -21
- package/lib/Player/modules/keyframes/ModelVideo/index.js +17 -26
- package/lib/Player/modules/keyframes/PanoEffect/index.js +21 -30
- package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +6 -14
- package/lib/Player/modules/keyframes/PanoTag/index.js +10 -18
- package/lib/Player/modules/keyframes/PanoTextLabel/index.js +19 -28
- package/lib/Player/modules/keyframes/Prompter/index.js +13 -22
- package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +16 -24
- package/lib/Player/modules/keyframes/VideoEffect/index.js +18 -28
- package/lib/Player/typings.js +1 -5
- package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +3 -9
- package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +1 -7
- package/lib/fivePlugins/CSS3DRenderPlugin/index.d.ts +6 -12
- package/lib/fivePlugins/CSS3DRenderPlugin/index.js +27 -37
- package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +3 -9
- package/lib/fivePlugins/CameraMovementPlugin/index.js +15 -22
- package/lib/fivePlugins/CameraMovementPlugin/typings.js +6 -10
- package/lib/fivePlugins/ModelTVVideoPlugin/index.js +9 -18
- package/lib/index.js +1 -12
- package/lib/react/index.d.ts +111 -0
- package/lib/react/index.js +148 -24
- package/lib/shared-utils/Audio.js +27 -37
- package/lib/shared-utils/AudioLike.js +22 -29
- package/lib/shared-utils/Preloader.js +1 -7
- package/lib/shared-utils/addResizeListener.js +4 -11
- package/lib/shared-utils/animationFrame/BetterTween.js +23 -33
- package/lib/shared-utils/animationFrame/index.js +4 -13
- package/lib/shared-utils/animationFrame/tween.js +9 -17
- package/lib/shared-utils/createTransMatrix.js +5 -14
- package/lib/shared-utils/getFileExpandedName.js +1 -7
- package/lib/shared-utils/getMediaInfo.js +8 -19
- package/lib/shared-utils/setElementDataset.js +1 -7
- package/lib/typings/VreoUnit.js +15 -17
- package/package.json +58 -5
- package/stylesheets/custom/SpatialScenePanel.css +7 -7
- package/stylesheets/default.css +1 -1
- package/docs/demo/assets/react-dPVEotm3.css +0 -1
- /package/docs/demo/assets/{react-BLZb_LNZ.js → react-C4h9qndP.js} +0 -0
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
-
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _three = _interopRequireWildcard(require("three"));
|
|
12
|
-
var THREE = _three;
|
|
13
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
14
|
-
var _hooks = require("../../../hooks");
|
|
15
|
-
var _CSS3DRenderPlugin = require("../../../../fivePlugins/CSS3DRenderPlugin");
|
|
16
|
-
var _VreoUnit = require("../../../../typings/VreoUnit");
|
|
17
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
import ReactDOM from 'react-dom';
|
|
5
|
+
import { Vector3, Quaternion } from 'three';
|
|
6
|
+
import { useController, useFiveInstance } from "../../../hooks.js";
|
|
7
|
+
import { CSS3DRenderPlugin } from "../../../../fivePlugins/CSS3DRenderPlugin/index.js";
|
|
8
|
+
import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js";
|
|
18
9
|
/**
|
|
19
10
|
* 通过传入中心点确定矩形框架容器的四个点:
|
|
20
11
|
* 1. 已知矩形长宽和中心点
|
|
@@ -48,7 +39,7 @@ var calcPoints = function calcPoints(centerPoint, normal, wrapperLength, wrapper
|
|
|
48
39
|
plane.position.copy(v0);
|
|
49
40
|
|
|
50
41
|
// 计算传入的四个点的坐标
|
|
51
|
-
var _plane$geometry$verti = (
|
|
42
|
+
var _plane$geometry$verti = _slicedToArray(plane.geometry.vertices, 4),
|
|
52
43
|
v1 = _plane$geometry$verti[0],
|
|
53
44
|
v2 = _plane$geometry$verti[1],
|
|
54
45
|
v3 = _plane$geometry$verti[2],
|
|
@@ -65,10 +56,10 @@ var calcPoints = function calcPoints(centerPoint, normal, wrapperLength, wrapper
|
|
|
65
56
|
/**
|
|
66
57
|
* 空间文本标签。
|
|
67
58
|
*/
|
|
68
|
-
function PanoTextLabel() {
|
|
59
|
+
export function PanoTextLabel() {
|
|
69
60
|
var timeoutRef = React.useRef();
|
|
70
|
-
var controller =
|
|
71
|
-
var five =
|
|
61
|
+
var controller = useController();
|
|
62
|
+
var five = useFiveInstance();
|
|
72
63
|
var ref = React.useRef();
|
|
73
64
|
React.useEffect(function () {
|
|
74
65
|
var _controller$configs;
|
|
@@ -87,21 +78,21 @@ function PanoTextLabel() {
|
|
|
87
78
|
x = _panoTextLabelData$ve.x,
|
|
88
79
|
y = _panoTextLabelData$ve.y,
|
|
89
80
|
z = _panoTextLabelData$ve.z;
|
|
90
|
-
var centerPoint = new
|
|
91
|
-
var normal = new
|
|
81
|
+
var centerPoint = new Vector3(x, y, z);
|
|
82
|
+
var normal = new Vector3((_panoTextLabelData$no = panoTextLabelData.normal) === null || _panoTextLabelData$no === void 0 ? void 0 : _panoTextLabelData$no.x, (_panoTextLabelData$no2 = panoTextLabelData.normal) === null || _panoTextLabelData$no2 === void 0 ? void 0 : _panoTextLabelData$no2.y, (_panoTextLabelData$no3 = panoTextLabelData.normal) === null || _panoTextLabelData$no3 === void 0 ? void 0 : _panoTextLabelData$no3.z);
|
|
92
83
|
// 生成传入的四个点,将文本框最大宽度定在200px,最高高度在30px
|
|
93
84
|
var wrapperLength = 200;
|
|
94
85
|
var wrapperWidth = 30;
|
|
95
86
|
var points = calcPoints(centerPoint, panoTextLabelData.normal && normal, wrapperLength, wrapperWidth);
|
|
96
|
-
if (!ref.current) ref.current =
|
|
87
|
+
if (!ref.current) ref.current = CSS3DRenderPlugin(five);
|
|
97
88
|
var container = ref.current.create3DDomContainer(points);
|
|
98
89
|
var css3DObject = container === null || container === void 0 ? void 0 : container.css3DObject;
|
|
99
90
|
// 将获取的mesh进行旋转操作,根据欧拉角去进行mesh的变换
|
|
100
91
|
if (data.quaternion) {
|
|
101
|
-
var quaternion = new
|
|
92
|
+
var quaternion = new Quaternion(data.quaternion.x, data.quaternion.y, data.quaternion.z, data.quaternion.w);
|
|
102
93
|
css3DObject === null || css3DObject === void 0 ? void 0 : css3DObject.quaternion.copy(quaternion);
|
|
103
94
|
}
|
|
104
|
-
if (container !== null && container !== void 0 && container.container)
|
|
95
|
+
if (container !== null && container !== void 0 && container.container) ReactDOM.render(/*#__PURE__*/React.createElement("div", {
|
|
105
96
|
className: "PanoTextLabel PanoTextLabel--notHidden"
|
|
106
97
|
}, /*#__PURE__*/React.createElement("div", {
|
|
107
98
|
className: "PanoTextLabel-wrapper"
|
|
@@ -116,9 +107,9 @@ function PanoTextLabel() {
|
|
|
116
107
|
(_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.disposeAll();
|
|
117
108
|
}, end - start);
|
|
118
109
|
};
|
|
119
|
-
controller.on(
|
|
110
|
+
controller.on(VreoKeyframeEnum.PanoTextLabel, callback);
|
|
120
111
|
return function () {
|
|
121
|
-
controller.off(
|
|
112
|
+
controller.off(VreoKeyframeEnum.PanoTextLabel, callback);
|
|
122
113
|
if (timeoutRef.current) {
|
|
123
114
|
clearTimeout(timeoutRef.current);
|
|
124
115
|
}
|
|
@@ -1,29 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.Prompter = Prompter;
|
|
9
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
-
var _hooks = require("../../../hooks");
|
|
14
|
-
var _VreoUnit = require("../../../../typings/VreoUnit");
|
|
15
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
16
|
-
function Prompter() {
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import { useController } from "../../../hooks.js";
|
|
6
|
+
import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js";
|
|
7
|
+
export function Prompter() {
|
|
17
8
|
var _React$useState = React.useState(''),
|
|
18
|
-
_React$useState2 = (
|
|
9
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
19
10
|
text = _React$useState2[0],
|
|
20
11
|
setText = _React$useState2[1];
|
|
21
12
|
var _React$useState3 = React.useState(true),
|
|
22
|
-
_React$useState4 = (
|
|
13
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
23
14
|
hidden = _React$useState4[0],
|
|
24
15
|
setHidden = _React$useState4[1];
|
|
25
16
|
var ref = React.useRef(null);
|
|
26
|
-
var controller =
|
|
17
|
+
var controller = useController();
|
|
27
18
|
React.useEffect(function () {
|
|
28
19
|
var _controller$configs;
|
|
29
20
|
if (((_controller$configs = controller.configs) === null || _controller$configs === void 0 ? void 0 : _controller$configs.keyframeMap.Prompter) === false) {
|
|
@@ -48,13 +39,13 @@ function Prompter() {
|
|
|
48
39
|
ref.current = null;
|
|
49
40
|
}, end - start);
|
|
50
41
|
};
|
|
51
|
-
controller.on(
|
|
42
|
+
controller.on(VreoKeyframeEnum.Prompter, callback);
|
|
52
43
|
return function () {
|
|
53
|
-
controller.off(
|
|
44
|
+
controller.off(VreoKeyframeEnum.Prompter, callback);
|
|
54
45
|
};
|
|
55
46
|
}, [controller]);
|
|
56
47
|
return /*#__PURE__*/React.createElement("div", {
|
|
57
|
-
className: (
|
|
48
|
+
className: classNames('vreo-prompter', _defineProperty({
|
|
58
49
|
'vreo-prompter--hidden': hidden
|
|
59
50
|
}, "vreo-prompter-left--".concat(controller.agentType), true))
|
|
60
51
|
}, /*#__PURE__*/React.createElement("div", {
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
var React = _interopRequireWildcard(require("react"));
|
|
9
|
-
var _five = require("@realsee/five");
|
|
10
|
-
var _hooks = require("../../../hooks");
|
|
11
|
-
var _VreoUnit = require("../../../../typings/VreoUnit");
|
|
12
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
13
|
-
function UpdateVRPanorama() {
|
|
14
|
-
var controller = (0, _hooks.useController)();
|
|
15
|
-
var five = (0, _hooks.useFiveInstance)();
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { parseWork } from '@realsee/five';
|
|
3
|
+
import { useController, useFiveInstance } from "../../../hooks.js";
|
|
4
|
+
import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js";
|
|
5
|
+
export function UpdateVRPanorama() {
|
|
6
|
+
var controller = useController();
|
|
7
|
+
var five = useFiveInstance();
|
|
16
8
|
var deafultWorkRef = React.useRef(null);
|
|
17
9
|
var updateWorkRef = React.useRef(null);
|
|
18
10
|
|
|
@@ -21,7 +13,7 @@ function UpdateVRPanorama() {
|
|
|
21
13
|
// 先清理掉 之前的 VR 数据备份
|
|
22
14
|
updateWorkRef.current = null;
|
|
23
15
|
if (deafultWorkRef.current) {
|
|
24
|
-
var work =
|
|
16
|
+
var work = parseWork(deafultWorkRef.current);
|
|
25
17
|
five.load(work);
|
|
26
18
|
}
|
|
27
19
|
}, []);
|
|
@@ -29,7 +21,7 @@ function UpdateVRPanorama() {
|
|
|
29
21
|
// 暂停时: 恢复默认 VR
|
|
30
22
|
var pausedCallback = React.useCallback(function () {
|
|
31
23
|
if (deafultWorkRef.current) {
|
|
32
|
-
var work =
|
|
24
|
+
var work = parseWork(deafultWorkRef.current);
|
|
33
25
|
Object.assign(window, {
|
|
34
26
|
$rawWork: work
|
|
35
27
|
});
|
|
@@ -54,7 +46,7 @@ function UpdateVRPanorama() {
|
|
|
54
46
|
|
|
55
47
|
// 如果数据中有新 work 数据,则直接载入
|
|
56
48
|
if (data.work) {
|
|
57
|
-
updateWorkRef.current =
|
|
49
|
+
updateWorkRef.current = parseWork(data.work);
|
|
58
50
|
five.load(updateWorkRef.current);
|
|
59
51
|
return;
|
|
60
52
|
}
|
|
@@ -76,15 +68,15 @@ function UpdateVRPanorama() {
|
|
|
76
68
|
Object.assign(window, {
|
|
77
69
|
$work1: JSON.parse(lastRawWork),
|
|
78
70
|
$work2: data,
|
|
79
|
-
parseWork:
|
|
71
|
+
parseWork: parseWork
|
|
80
72
|
});
|
|
81
|
-
updateWorkRef.current =
|
|
73
|
+
updateWorkRef.current = parseWork([lastRawWork, data]);
|
|
82
74
|
five.load(updateWorkRef.current);
|
|
83
75
|
};
|
|
84
|
-
controller.on(
|
|
76
|
+
controller.on(VreoKeyframeEnum.UpdateVRPanorama, callback);
|
|
85
77
|
|
|
86
78
|
// 离开 将之前的内容清空
|
|
87
|
-
controller.on(
|
|
79
|
+
controller.on(VreoKeyframeEnum.Exit, restoreCallback);
|
|
88
80
|
|
|
89
81
|
// 新载入数据 将之前的内容清空
|
|
90
82
|
controller.on('loaded', restoreCallback);
|
|
@@ -95,8 +87,8 @@ function UpdateVRPanorama() {
|
|
|
95
87
|
controller.on('playing', playingCallback);
|
|
96
88
|
return function () {
|
|
97
89
|
// 清理事件监听
|
|
98
|
-
controller.off(
|
|
99
|
-
controller.off(
|
|
90
|
+
controller.off(VreoKeyframeEnum.UpdateVRPanorama, callback);
|
|
91
|
+
controller.off(VreoKeyframeEnum.Exit, restoreCallback);
|
|
100
92
|
controller.off('loaded', restoreCallback);
|
|
101
93
|
controller.off('paused', pausedCallback);
|
|
102
94
|
controller.off('playing', playingCallback);
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.VideoEffect = VideoEffect;
|
|
9
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
-
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
-
var React = _interopRequireWildcard(require("react"));
|
|
14
|
-
var _VreoUnit = require("../../../../typings/VreoUnit");
|
|
15
|
-
var _hooks = require("../../../hooks");
|
|
16
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import * as React from 'react';
|
|
17
6
|
// import { Preloader } from '../../../../shared-utils/Preloader'
|
|
18
|
-
|
|
7
|
+
import { VreoKeyframeEnum } from "../../../../typings/VreoUnit.js";
|
|
8
|
+
import { useController, useFiveInstance } from "../../../hooks.js";
|
|
19
9
|
var inlinePlay = function inlinePlay(videoInstance) {
|
|
20
10
|
if (!videoInstance) return;
|
|
21
11
|
var canplaythrough = function canplaythrough() {
|
|
@@ -28,28 +18,28 @@ var inlinePlay = function inlinePlay(videoInstance) {
|
|
|
28
18
|
videoInstance.load();
|
|
29
19
|
};
|
|
30
20
|
|
|
31
|
-
// const emptyVideo = '//
|
|
21
|
+
// const emptyVideo = '//vr-static.realsee-cdn.cn/release/web/leisure.69fd3522.mov'
|
|
32
22
|
var PI = Math.PI;
|
|
33
23
|
var PI_2 = PI * 2;
|
|
34
|
-
function VideoEffect() {
|
|
24
|
+
export function VideoEffect() {
|
|
35
25
|
var ref = React.useRef(null);
|
|
36
26
|
var videoRef = React.useRef();
|
|
37
|
-
var controller =
|
|
27
|
+
var controller = useController();
|
|
38
28
|
var timeoutRef = React.useRef();
|
|
39
29
|
var _React$useState = React.useState(false),
|
|
40
|
-
_React$useState2 = (
|
|
30
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
41
31
|
visible = _React$useState2[0],
|
|
42
32
|
setVisible = _React$useState2[1];
|
|
43
|
-
var five =
|
|
33
|
+
var five = useFiveInstance();
|
|
44
34
|
var setBlobSrc = function setBlobSrc(blob) {
|
|
45
35
|
if (!videoRef.current) return;
|
|
46
36
|
videoRef.current.src = blob;
|
|
47
37
|
};
|
|
48
38
|
React.useEffect(function () {
|
|
49
39
|
var callback = /*#__PURE__*/function () {
|
|
50
|
-
var _ref = (
|
|
40
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(keyframe) {
|
|
51
41
|
var start, end, _ref2, videoSrc, fov, direction, panoIndex, vector, _ref3, _ref4, longitude, latitude;
|
|
52
|
-
return
|
|
42
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
53
43
|
while (1) {
|
|
54
44
|
switch (_context.prev = _context.next) {
|
|
55
45
|
case 0:
|
|
@@ -66,7 +56,7 @@ function VideoEffect() {
|
|
|
66
56
|
longitude = (longitude % PI_2 + PI_2) % PI_2;
|
|
67
57
|
var latitude = -Math.asin(direction.y / 1);
|
|
68
58
|
return [longitude, latitude];
|
|
69
|
-
}(), _ref4 = (
|
|
59
|
+
}(), _ref4 = _slicedToArray(_ref3, 2), longitude = _ref4[0], latitude = _ref4[1];
|
|
70
60
|
five.setState({
|
|
71
61
|
fov: fov,
|
|
72
62
|
panoIndex: panoIndex,
|
|
@@ -93,7 +83,7 @@ function VideoEffect() {
|
|
|
93
83
|
return _ref.apply(this, arguments);
|
|
94
84
|
};
|
|
95
85
|
}();
|
|
96
|
-
controller.on(
|
|
86
|
+
controller.on(VreoKeyframeEnum.VideoEffect, callback);
|
|
97
87
|
var destroy = function destroy() {
|
|
98
88
|
var _videoRef$current2;
|
|
99
89
|
if (timeoutRef.current) {
|
|
@@ -110,7 +100,7 @@ function VideoEffect() {
|
|
|
110
100
|
return destroy();
|
|
111
101
|
});
|
|
112
102
|
return function () {
|
|
113
|
-
controller.off(
|
|
103
|
+
controller.off(VreoKeyframeEnum.VideoEffect, callback);
|
|
114
104
|
if (timeoutRef.current) {
|
|
115
105
|
clearTimeout(timeoutRef.current);
|
|
116
106
|
}
|
|
@@ -141,7 +131,7 @@ function VideoEffect() {
|
|
|
141
131
|
}, []);
|
|
142
132
|
return /*#__PURE__*/React.createElement("div", {
|
|
143
133
|
ref: ref,
|
|
144
|
-
className: (
|
|
134
|
+
className: classNames('VideoEffect', {
|
|
145
135
|
'VideoEffect--visible': visible
|
|
146
136
|
})
|
|
147
137
|
});
|
package/lib/Player/typings.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = centerPoint;
|
|
7
|
-
var _three = require("three");
|
|
8
|
-
function centerPoint(point1, point2) {
|
|
9
|
-
return new _three.Vector3((point1.x + point2.x) / 2, (point1.y + point2.y) / 2, (point1.z + point2.z) / 2);
|
|
1
|
+
import { Vector3 } from 'three';
|
|
2
|
+
export default function centerPoint(point1, point2) {
|
|
3
|
+
return new Vector3((point1.x + point2.x) / 2, (point1.y + point2.y) / 2, (point1.z + point2.z) / 2);
|
|
10
4
|
}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = createResizeObserver;
|
|
7
1
|
/**
|
|
8
2
|
* @description: 简陋的 ResizeObserver polyfill
|
|
9
3
|
*/
|
|
10
|
-
function createResizeObserver(func, element) {
|
|
4
|
+
export default function createResizeObserver(func, element) {
|
|
11
5
|
if (!element || typeof ResizeObserver === 'undefined') {
|
|
12
6
|
return {
|
|
13
7
|
observe: function observe() {
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = evenNumber;
|
|
7
|
-
function evenNumber(num, config) {
|
|
1
|
+
export default function evenNumber(num, config) {
|
|
8
2
|
var roundNum = Math.round(num);
|
|
9
3
|
return roundNum % 2 === 0 ? roundNum : roundNum + Number(config !== null && config !== void 0 && config.smaller ? -1 : 1);
|
|
10
4
|
}
|
|
@@ -12,16 +12,11 @@ export interface Vector3Position {
|
|
|
12
12
|
export type CSS3DRenderPluginParameterType = undefined;
|
|
13
13
|
export interface CSS3DRenderPluginExportType {
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* @param
|
|
18
|
-
* @param
|
|
19
|
-
* @
|
|
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: 清理函数
|
|
15
|
+
* 根据传入的四个点位创建一个3d dom容器,可以通过ReactDom.render()的方式将react组件放到容器中
|
|
16
|
+
*
|
|
17
|
+
* @param points - 矩形四个点坐标
|
|
18
|
+
* @param config - 配置项,包含ratio(像素比例)、dpr(设备像素比)、container(容器)、autoRender(自动渲染)、mode(渲染模式)等
|
|
19
|
+
* @returns 返回包含容器、销毁函数、CSS3D对象和可选渲染函数的对象
|
|
25
20
|
*/
|
|
26
21
|
create3DDomContainer: (points: Vector3[] | Vector3Position[], config?: {
|
|
27
22
|
ratio?: number;
|
|
@@ -41,8 +36,7 @@ export interface CSS3DRenderPluginExportType {
|
|
|
41
36
|
render?: () => void;
|
|
42
37
|
} | void;
|
|
43
38
|
/**
|
|
44
|
-
*
|
|
45
|
-
* @return {void}
|
|
39
|
+
* 销毁所有的渲染内容
|
|
46
40
|
*/
|
|
47
41
|
disposeAll: () => void;
|
|
48
42
|
}
|
|
@@ -1,30 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports["default"] = exports.CSS3DRenderPlugin = void 0;
|
|
9
|
-
var _three = _interopRequireWildcard(require("three"));
|
|
10
|
-
var THREE = _three;
|
|
11
|
-
var _CSS3DRenderer = require("three/examples/jsm/renderers/CSS3DRenderer");
|
|
12
|
-
var _evenNumber = _interopRequireDefault(require("./evenNumber"));
|
|
13
|
-
var _centerPoint = _interopRequireDefault(require("./centerPoint"));
|
|
14
|
-
var _transformPositionToVector = _interopRequireDefault(require("./transformPositionToVector3"));
|
|
15
|
-
var _createResizeObserver = _interopRequireDefault(require("./createResizeObserver"));
|
|
16
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) { "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); } return f; })(e, t); }
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { Scene, Vector3 } from 'three';
|
|
3
|
+
import { CSS3DObject, CSS3DRenderer } from 'three/examples/jsm/renderers/CSS3DRenderer';
|
|
4
|
+
import evenNumber from "./evenNumber.js";
|
|
5
|
+
import centerPoint from "./centerPoint.js";
|
|
6
|
+
import transformPositionToVector3 from "./transformPositionToVector3.js";
|
|
7
|
+
import createResizeObserver from "./createResizeObserver.js";
|
|
17
8
|
/**
|
|
18
9
|
* 三维向量
|
|
19
10
|
*/
|
|
20
|
-
|
|
21
11
|
/**
|
|
22
12
|
* **CSS3DRenderPlugin** 提供矩形区域(三维空间四个坐标点),你可以在此矩形区域中渲染 DOM 内容。
|
|
23
13
|
* 实现原理参考[CSS3DRenderer](https://threejs.org/docs/index.html?q=CSS3D#examples/en/renderers/CSS3DRenderer)。
|
|
24
14
|
*
|
|
25
15
|
* @returns
|
|
26
16
|
*/
|
|
27
|
-
var CSS3DRenderPlugin =
|
|
17
|
+
export var CSS3DRenderPlugin = function CSS3DRenderPlugin(five) {
|
|
28
18
|
var state = {
|
|
29
19
|
disposeCallbacks: []
|
|
30
20
|
};
|
|
@@ -34,7 +24,7 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
34
24
|
params[_key] = arguments[_key];
|
|
35
25
|
}
|
|
36
26
|
var points = params[0].map(function (point) {
|
|
37
|
-
return point instanceof
|
|
27
|
+
return point instanceof Vector3 ? point : transformPositionToVector3(point);
|
|
38
28
|
});
|
|
39
29
|
var config = params[1];
|
|
40
30
|
if ((points === null || points === void 0 ? void 0 : points.length) < 4) return console.error('points must be equal or greater than than 4');
|
|
@@ -70,14 +60,14 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
70
60
|
var requestAnimationFrameId = null;
|
|
71
61
|
if (behindModeUnInited) {
|
|
72
62
|
state.behindMode = {
|
|
73
|
-
scene: new
|
|
74
|
-
css3DRenderer: new
|
|
63
|
+
scene: new Scene(),
|
|
64
|
+
css3DRenderer: new CSS3DRenderer()
|
|
75
65
|
};
|
|
76
66
|
}
|
|
77
67
|
if (frontModeUnInited) {
|
|
78
68
|
state.frontMode = {
|
|
79
|
-
scene: new
|
|
80
|
-
css3DRenderer: new
|
|
69
|
+
scene: new Scene(),
|
|
70
|
+
css3DRenderer: new CSS3DRenderer()
|
|
81
71
|
};
|
|
82
72
|
}
|
|
83
73
|
var _ref = mode === 'behind' ? state.behindMode : state.frontMode,
|
|
@@ -88,16 +78,16 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
88
78
|
var css3DRendererSetSize = function css3DRendererSetSize() {
|
|
89
79
|
// 这里evenNumber策略是遇到奇数会加1,不知道为啥会触发滚动条显示,导致fiveElement变小,fiveElement变小又触发了这里的resize,宽高变小,滚动条消失,然后又触发resize。。。无限循环
|
|
90
80
|
// 为了规避上面这种情况,evenNumber设置了一个参数,遇到奇数可选择减一
|
|
91
|
-
var rendererWidth = (
|
|
81
|
+
var rendererWidth = evenNumber(fiveElement.clientWidth, {
|
|
92
82
|
smaller: true
|
|
93
83
|
});
|
|
94
|
-
var rendererHeight = (
|
|
84
|
+
var rendererHeight = evenNumber(fiveElement.clientHeight, {
|
|
95
85
|
smaller: true
|
|
96
86
|
});
|
|
97
87
|
css3DRenderer.setSize(rendererWidth, rendererHeight);
|
|
98
88
|
};
|
|
99
89
|
css3DRendererSetSize();
|
|
100
|
-
resizeObserver = (
|
|
90
|
+
resizeObserver = createResizeObserver(css3DRendererSetSize, fiveElement);
|
|
101
91
|
css3DRenderer.domElement.style.position = 'absolute';
|
|
102
92
|
css3DRenderer.domElement.style.top = '0';
|
|
103
93
|
css3DRenderer.domElement.style.userSelect = 'none';
|
|
@@ -176,21 +166,21 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
176
166
|
mode = config.mode;
|
|
177
167
|
var planeWidth = points[0].distanceTo(points[1]);
|
|
178
168
|
var planeHeight = points[1].distanceTo(points[2]);
|
|
179
|
-
var domWidthPx = (
|
|
180
|
-
var domHeightPx = (
|
|
181
|
-
var css3DObject = new
|
|
169
|
+
var domWidthPx = evenNumber(planeWidth / ratio * dpr);
|
|
170
|
+
var domHeightPx = evenNumber(planeHeight / ratio * dpr);
|
|
171
|
+
var css3DObject = new CSS3DObject(element);
|
|
182
172
|
css3DObject.scale.set(ratio, ratio, ratio);
|
|
183
173
|
element.style.width = domWidthPx + 'px';
|
|
184
174
|
element.style.height = domHeightPx + 'px';
|
|
185
175
|
element.style.pointerEvents = 'none';
|
|
186
|
-
var centerPosition = (
|
|
176
|
+
var centerPosition = centerPoint(points[0], points[2]);
|
|
187
177
|
var vector01 = points[1].clone().sub(points[0]); // 点0 -> 点1 的向量
|
|
188
178
|
var vector12 = points[2].clone().sub(points[1]); // 点1 -> 点2 的向量
|
|
189
179
|
|
|
190
180
|
// 旋转
|
|
191
|
-
var rotateXAngle = new
|
|
192
|
-
var rotateYAngle = new
|
|
193
|
-
var rotateZAngle = vector01.angleTo(new
|
|
181
|
+
var rotateXAngle = new Vector3(0, 1, 0).angleTo(new Vector3(0, vector12.y, vector12.z));
|
|
182
|
+
var rotateYAngle = new Vector3(1, 0, 0).angleTo(new Vector3(vector01.x, 0, vector01.z));
|
|
183
|
+
var rotateZAngle = vector01.angleTo(new Vector3(vector01.x, 0, vector01.z));
|
|
194
184
|
/**
|
|
195
185
|
* [0,1,0] => [0,0,1] 为rolate Worldx正方向
|
|
196
186
|
* [0,0,1] => [0,1,0] 为rolate Worldy正方向
|
|
@@ -199,9 +189,9 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
199
189
|
var rotateX = (vector12.z > 0 ? -1 : 1) * rotateXAngle;
|
|
200
190
|
var rotateY = (vector01.z < 0 ? 1 : -1) * rotateYAngle;
|
|
201
191
|
var rotateZ = (vector01.x > 0 && vector01.y < 0 || vector01.x < 0 && vector01.y > 0 ? -1 : 1) * rotateZAngle;
|
|
202
|
-
css3DObject.rotateOnWorldAxis(new
|
|
203
|
-
css3DObject.rotateOnWorldAxis(new
|
|
204
|
-
css3DObject.rotateOnWorldAxis(new
|
|
192
|
+
css3DObject.rotateOnWorldAxis(new Vector3(1, 0, 0), rotateX); // x
|
|
193
|
+
css3DObject.rotateOnWorldAxis(new Vector3(0, 1, 0), rotateY); // y
|
|
194
|
+
css3DObject.rotateOnWorldAxis(new Vector3(0, 0, 1), rotateZ); // z
|
|
205
195
|
|
|
206
196
|
css3DObject.position.set(centerPosition.x, centerPosition.y, centerPosition.z);
|
|
207
197
|
var mesh;
|
|
@@ -233,4 +223,4 @@ var CSS3DRenderPlugin = exports.CSS3DRenderPlugin = function CSS3DRenderPlugin(f
|
|
|
233
223
|
}
|
|
234
224
|
};
|
|
235
225
|
};
|
|
236
|
-
|
|
226
|
+
export default CSS3DRenderPlugin;
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
var _three = require("three");
|
|
1
|
+
import { Vector3 } from 'three';
|
|
8
2
|
var transformPositionToVector3 = function transformPositionToVector3(_ref) {
|
|
9
3
|
var x = _ref.x,
|
|
10
4
|
y = _ref.y,
|
|
11
5
|
z = _ref.z;
|
|
12
|
-
return new
|
|
6
|
+
return new Vector3(x, y, z);
|
|
13
7
|
};
|
|
14
|
-
|
|
8
|
+
export default transformPositionToVector3;
|