@realsee/dnalogel 0.1.5 → 0.1.7
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/components/GLTFView/index.d.ts +72 -0
- package/components/GLTFView/index.js +149 -0
- package/libs/gltf-viewer/Subscribe.d.ts +76 -0
- package/libs/gltf-viewer/Subscribe.js +231 -0
- package/libs/gltf-viewer/coordsMoveByOffset.d.ts +13 -0
- package/libs/gltf-viewer/coordsMoveByOffset.js +22 -0
- package/libs/gltf-viewer/coordsToDirection.d.ts +5 -0
- package/{components/PBRView/index.js → libs/gltf-viewer/coordsToDirection.js} +14 -18
- package/libs/gltf-viewer/formatRad.d.ts +1 -0
- package/libs/gltf-viewer/formatRad.js +13 -0
- package/libs/gltf-viewer/getFrameTime.d.ts +1 -0
- package/libs/gltf-viewer/getFrameTime.js +28 -0
- package/libs/gltf-viewer/index.d.ts +55 -0
- package/libs/gltf-viewer/index.js +650 -0
- package/libs/gltf-viewer/mouseWheel.d.ts +2 -0
- package/libs/gltf-viewer/mouseWheel.js +59 -0
- package/libs/gltf-viewer/requestAnimationFrame.d.ts +1 -0
- package/libs/gltf-viewer/requestAnimationFrame.js +18 -0
- package/libs/gltf-viewer/requestAnimationFrameInterval.d.ts +1 -0
- package/libs/gltf-viewer/requestAnimationFrameInterval.js +31 -0
- package/libs/gltf-viewer/uuid.d.ts +4 -0
- package/libs/gltf-viewer/uuid.js +28 -0
- package/package.json +3 -2
- package/plugins/ModelEntryDoorGuidePlugin/index.d.ts +2 -2
- package/plugins/ModelEntryDoorGuidePlugin/index.js +16 -13
- package/plugins/PanoTVVideoPlugin/index.d.ts +2 -0
- package/plugins/PanoTVVideoPlugin/index.js +20 -14
- package/components/PBRView/index.d.ts +0 -14
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { GLTFViewer, GLTFViewerConfig } from '../../libs/gltf-viewer';
|
|
3
|
+
export declare type GLTFViewPropTypes = {
|
|
4
|
+
url: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
ref?: (gltfViewer: GLTFViewer) => void;
|
|
7
|
+
} & GLTFViewerConfig;
|
|
8
|
+
/**
|
|
9
|
+
* **GLTFViewer** 预览 `glTF` 模型文件(支持.gltf和.glb格式),附带光照等效果。
|
|
10
|
+
*
|
|
11
|
+
* ### Usage
|
|
12
|
+
*
|
|
13
|
+
* 基础用法:
|
|
14
|
+
*
|
|
15
|
+
* ```jsx
|
|
16
|
+
* import { GLTFViewer } from '@realsee/dnalogel/libs/gltf-viewer'
|
|
17
|
+
*
|
|
18
|
+
* // 创建实例
|
|
19
|
+
* const gltfViewer = new GLTFViewer({
|
|
20
|
+
* pixelRatio: 1,
|
|
21
|
+
* })
|
|
22
|
+
*
|
|
23
|
+
* // 挂载至 DOM 节点
|
|
24
|
+
* gltfViewer.appendTo(ref.current)
|
|
25
|
+
*
|
|
26
|
+
* // 加载模型文件
|
|
27
|
+
* await gltfViewer.load(glbCDNUrl)
|
|
28
|
+
*
|
|
29
|
+
* // 输出当前模型状态数据
|
|
30
|
+
* console.log(gltfViewer.state)
|
|
31
|
+
* // { longitude: 0, latitude: -0.3, fov: 35 }
|
|
32
|
+
*
|
|
33
|
+
* // 设置当前模型状态:直接给状态对象赋值(立即生效)
|
|
34
|
+
* gltfViewer.state = { longitude: 0, latitude: -0.3, fov: 35 }
|
|
35
|
+
*
|
|
36
|
+
* // 设置当前模型状态:直接给状态对象单个属性赋值(立即生效)
|
|
37
|
+
* gltfViewer.state.fov = 50
|
|
38
|
+
*
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* 事件监听:
|
|
42
|
+
*
|
|
43
|
+
* ```jsx
|
|
44
|
+
* gltfViewer.on('stateChange', (state: GLTFViewerState) => {
|
|
45
|
+
* // 事件:模型状态变化
|
|
46
|
+
* })
|
|
47
|
+
* gltfViewer.on('willLoad', () => {
|
|
48
|
+
* // 即将加载
|
|
49
|
+
* })
|
|
50
|
+
* gltfViewer.on('progressing', (progressing: number) => {
|
|
51
|
+
* // 加载进度
|
|
52
|
+
* })
|
|
53
|
+
* gltfViewer.on('loaded', (gltf: GLTF) => {
|
|
54
|
+
* // 加载完成
|
|
55
|
+
* })
|
|
56
|
+
* gltfViewer.on('loadError', (error) => {
|
|
57
|
+
* // 加载异常
|
|
58
|
+
* })
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* React 组件:
|
|
62
|
+
*
|
|
63
|
+
* ```jsx
|
|
64
|
+
* import { GLTFView } from '@realsee/dnalogel/components/GLTFView'
|
|
65
|
+
*
|
|
66
|
+
* <GLTFView
|
|
67
|
+
* url="//vrlab-static.ljcdn.com/release/web/demo.435f5fa2.glb"
|
|
68
|
+
* ref={(gltfViewer) => gltfViewer.on('stateChange', (state) => console.log(state))} />
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const GLTFView: React.FC<GLTFViewPropTypes>;
|
|
72
|
+
export default GLTFView;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.array.iterator.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.object.to-string.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.string.iterator.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.weak-map.js");
|
|
10
|
+
|
|
11
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
12
|
+
|
|
13
|
+
require("core-js/modules/es.object.define-property.js");
|
|
14
|
+
|
|
15
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
16
|
+
|
|
17
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
18
|
+
|
|
19
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(exports, "__esModule", {
|
|
22
|
+
value: true
|
|
23
|
+
});
|
|
24
|
+
exports["default"] = exports.GLTFView = void 0;
|
|
25
|
+
|
|
26
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
27
|
+
|
|
28
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
29
|
+
|
|
30
|
+
var React = _interopRequireWildcard(require("react"));
|
|
31
|
+
|
|
32
|
+
var _gltfViewer = require("../../libs/gltf-viewer");
|
|
33
|
+
|
|
34
|
+
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); }
|
|
35
|
+
|
|
36
|
+
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; }
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* **GLTFViewer** 预览 `glTF` 模型文件(支持.gltf和.glb格式),附带光照等效果。
|
|
40
|
+
*
|
|
41
|
+
* ### Usage
|
|
42
|
+
*
|
|
43
|
+
* 基础用法:
|
|
44
|
+
*
|
|
45
|
+
* ```jsx
|
|
46
|
+
* import { GLTFViewer } from '@realsee/dnalogel/libs/gltf-viewer'
|
|
47
|
+
*
|
|
48
|
+
* // 创建实例
|
|
49
|
+
* const gltfViewer = new GLTFViewer({
|
|
50
|
+
* pixelRatio: 1,
|
|
51
|
+
* })
|
|
52
|
+
*
|
|
53
|
+
* // 挂载至 DOM 节点
|
|
54
|
+
* gltfViewer.appendTo(ref.current)
|
|
55
|
+
*
|
|
56
|
+
* // 加载模型文件
|
|
57
|
+
* await gltfViewer.load(glbCDNUrl)
|
|
58
|
+
*
|
|
59
|
+
* // 输出当前模型状态数据
|
|
60
|
+
* console.log(gltfViewer.state)
|
|
61
|
+
* // { longitude: 0, latitude: -0.3, fov: 35 }
|
|
62
|
+
*
|
|
63
|
+
* // 设置当前模型状态:直接给状态对象赋值(立即生效)
|
|
64
|
+
* gltfViewer.state = { longitude: 0, latitude: -0.3, fov: 35 }
|
|
65
|
+
*
|
|
66
|
+
* // 设置当前模型状态:直接给状态对象单个属性赋值(立即生效)
|
|
67
|
+
* gltfViewer.state.fov = 50
|
|
68
|
+
*
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* 事件监听:
|
|
72
|
+
*
|
|
73
|
+
* ```jsx
|
|
74
|
+
* gltfViewer.on('stateChange', (state: GLTFViewerState) => {
|
|
75
|
+
* // 事件:模型状态变化
|
|
76
|
+
* })
|
|
77
|
+
* gltfViewer.on('willLoad', () => {
|
|
78
|
+
* // 即将加载
|
|
79
|
+
* })
|
|
80
|
+
* gltfViewer.on('progressing', (progressing: number) => {
|
|
81
|
+
* // 加载进度
|
|
82
|
+
* })
|
|
83
|
+
* gltfViewer.on('loaded', (gltf: GLTF) => {
|
|
84
|
+
* // 加载完成
|
|
85
|
+
* })
|
|
86
|
+
* gltfViewer.on('loadError', (error) => {
|
|
87
|
+
* // 加载异常
|
|
88
|
+
* })
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* React 组件:
|
|
92
|
+
*
|
|
93
|
+
* ```jsx
|
|
94
|
+
* import { GLTFView } from '@realsee/dnalogel/components/GLTFView'
|
|
95
|
+
*
|
|
96
|
+
* <GLTFView
|
|
97
|
+
* url="//vrlab-static.ljcdn.com/release/web/demo.435f5fa2.glb"
|
|
98
|
+
* ref={(gltfViewer) => gltfViewer.on('stateChange', (state) => console.log(state))} />
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
var GLTFView = function GLTFView(props) {
|
|
102
|
+
var ref = React.useRef(null);
|
|
103
|
+
React.useEffect(function () {
|
|
104
|
+
if (!ref.current) return;
|
|
105
|
+
var gltfViewer = new _gltfViewer.GLTFViewer(props);
|
|
106
|
+
gltfViewer.appendTo(ref.current);
|
|
107
|
+
|
|
108
|
+
var callback = /*#__PURE__*/function () {
|
|
109
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
110
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
111
|
+
while (1) {
|
|
112
|
+
switch (_context.prev = _context.next) {
|
|
113
|
+
case 0:
|
|
114
|
+
_context.next = 2;
|
|
115
|
+
return gltfViewer.load(props.url);
|
|
116
|
+
|
|
117
|
+
case 2:
|
|
118
|
+
case "end":
|
|
119
|
+
return _context.stop();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}, _callee);
|
|
123
|
+
}));
|
|
124
|
+
|
|
125
|
+
return function callback() {
|
|
126
|
+
return _ref.apply(this, arguments);
|
|
127
|
+
};
|
|
128
|
+
}();
|
|
129
|
+
|
|
130
|
+
callback(); // 实例
|
|
131
|
+
|
|
132
|
+
if (props.ref) {
|
|
133
|
+
props.ref(ref.current);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return function () {
|
|
137
|
+
gltfViewer.dispose();
|
|
138
|
+
};
|
|
139
|
+
}, []);
|
|
140
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
141
|
+
className: 'GLTFView ' + (props.className || ''),
|
|
142
|
+
ref: ref
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
exports.GLTFView = GLTFView;
|
|
147
|
+
GLTFView.defaultProps = {};
|
|
148
|
+
var _default = GLTFView;
|
|
149
|
+
exports["default"] = _default;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export declare type EventMap = {
|
|
2
|
+
[name: string]: (...args: any[]) => void | boolean;
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* 监听者模式
|
|
6
|
+
* @template T 预设的监听回调类型
|
|
7
|
+
* @example
|
|
8
|
+
* ```
|
|
9
|
+
* new Subscribe<{
|
|
10
|
+
* "foo": [arg1: number, arg2: string],
|
|
11
|
+
* "bar": [arg: boolean],
|
|
12
|
+
* }>()
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare class Subscribe<T extends EventMap> {
|
|
16
|
+
/**
|
|
17
|
+
* 判断是否注册了事件
|
|
18
|
+
* @param name 事件类型
|
|
19
|
+
*/
|
|
20
|
+
hasListener(name: keyof T): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 注册事件
|
|
23
|
+
* @param name 事件类型
|
|
24
|
+
* @param callback 事件回调函数
|
|
25
|
+
* @param once 是否只执行一次
|
|
26
|
+
* @returns 解除事件
|
|
27
|
+
* @template K 预设的监听事件名称
|
|
28
|
+
* @template C 回调函数函数上下文
|
|
29
|
+
*/
|
|
30
|
+
on<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* 注册事件(是否只执行一次)
|
|
33
|
+
* @param name 事件类型
|
|
34
|
+
* @param callback 事件回调函数
|
|
35
|
+
* @returns 解除事件
|
|
36
|
+
* @template K 预设的监听事件名称
|
|
37
|
+
* @template C 回调函数函数上下文
|
|
38
|
+
*/
|
|
39
|
+
once<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void;
|
|
40
|
+
/**
|
|
41
|
+
* 解除事件
|
|
42
|
+
*
|
|
43
|
+
* 如果 name 不传的话解除对应所有事件
|
|
44
|
+
* 如果 name, callback 不传的话解除所有name的所有事件
|
|
45
|
+
* @param name 事件类型
|
|
46
|
+
* @param callback 事件回调函数
|
|
47
|
+
* @template K 预设的监听事件名称
|
|
48
|
+
*/
|
|
49
|
+
off<K extends keyof T>(name?: K, callback?: (...args: Parameters<T[K]>) => ReturnType<T[K]>): void;
|
|
50
|
+
/**
|
|
51
|
+
* 触发事件
|
|
52
|
+
* @param name 事件类型
|
|
53
|
+
* @param data 触发事件的数据
|
|
54
|
+
* @returns canceled 是否被触发取消
|
|
55
|
+
* @template K 预设的监听事件名称
|
|
56
|
+
*/
|
|
57
|
+
emit<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;
|
|
58
|
+
}
|
|
59
|
+
export declare namespace SubscribeMixinType {
|
|
60
|
+
interface hasListener<T extends EventMap> {
|
|
61
|
+
(name: keyof T): boolean;
|
|
62
|
+
}
|
|
63
|
+
interface on<T extends EventMap> {
|
|
64
|
+
<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>, once?: boolean): () => void;
|
|
65
|
+
}
|
|
66
|
+
interface once<T extends EventMap> {
|
|
67
|
+
<K extends keyof T>(name: K, callback: (...args: Parameters<T[K]>) => ReturnType<T[K]>): () => void;
|
|
68
|
+
}
|
|
69
|
+
interface off<T extends EventMap> {
|
|
70
|
+
<K extends keyof T>(names?: K | K[], callback?: (...args: any[]) => any): void;
|
|
71
|
+
}
|
|
72
|
+
interface emit<T extends EventMap> {
|
|
73
|
+
<K extends keyof T>(name: K, ...data: Parameters<T[K]>): boolean;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export { Subscribe };
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.function.name.js");
|
|
4
|
+
|
|
5
|
+
require("core-js/modules/es.array.from.js");
|
|
6
|
+
|
|
7
|
+
require("core-js/modules/es.string.iterator.js");
|
|
8
|
+
|
|
9
|
+
require("core-js/modules/es.symbol.iterator.js");
|
|
10
|
+
|
|
11
|
+
require("core-js/modules/es.array.iterator.js");
|
|
12
|
+
|
|
13
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
14
|
+
|
|
15
|
+
require("core-js/modules/es.array.is-array.js");
|
|
16
|
+
|
|
17
|
+
require("core-js/modules/es.object.define-property.js");
|
|
18
|
+
|
|
19
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
20
|
+
|
|
21
|
+
Object.defineProperty(exports, "__esModule", {
|
|
22
|
+
value: true
|
|
23
|
+
});
|
|
24
|
+
exports.SubscribeMixinType = exports.Subscribe = void 0;
|
|
25
|
+
|
|
26
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
27
|
+
|
|
28
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
29
|
+
|
|
30
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
31
|
+
|
|
32
|
+
require("core-js/modules/es.symbol.js");
|
|
33
|
+
|
|
34
|
+
require("core-js/modules/es.symbol.description.js");
|
|
35
|
+
|
|
36
|
+
require("core-js/modules/es.object.to-string.js");
|
|
37
|
+
|
|
38
|
+
require("core-js/modules/es.array.splice.js");
|
|
39
|
+
|
|
40
|
+
require("core-js/modules/es.array.slice.js");
|
|
41
|
+
|
|
42
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
43
|
+
|
|
44
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
45
|
+
|
|
46
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
47
|
+
|
|
48
|
+
// type UniqueSymbol = ReturnType<(a: string) => { readonly 0: unique symbol }[0]>;
|
|
49
|
+
//
|
|
50
|
+
// function createSymbol(description: string): UniqueSymbol {
|
|
51
|
+
// // TODO 解决提示
|
|
52
|
+
// // @ts-ignore
|
|
53
|
+
// return typeof Symbol === "undefined" ? `$Symbol<${description}>$` : Symbol(description);
|
|
54
|
+
// }
|
|
55
|
+
//
|
|
56
|
+
// const EVENT_SYMBOL = createSymbol("$$LIVE_EVENT$$")
|
|
57
|
+
var EVENT_SYMBOL = Symbol("$$LIVE_EVENT$$");
|
|
58
|
+
|
|
59
|
+
function __generateEventIfNotExisted(instance) {
|
|
60
|
+
if (!instance[EVENT_SYMBOL]) {
|
|
61
|
+
instance[EVENT_SYMBOL] = {};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return instance[EVENT_SYMBOL];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function __removeEventIfNotExisted(instance) {
|
|
68
|
+
if (!instance[EVENT_SYMBOL]) {
|
|
69
|
+
delete instance[EVENT_SYMBOL];
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* 监听者模式
|
|
74
|
+
* @template T 预设的监听回调类型
|
|
75
|
+
* @example
|
|
76
|
+
* ```
|
|
77
|
+
* new Subscribe<{
|
|
78
|
+
* "foo": [arg1: number, arg2: string],
|
|
79
|
+
* "bar": [arg: boolean],
|
|
80
|
+
* }>()
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
var Subscribe = /*#__PURE__*/function () {
|
|
86
|
+
function Subscribe() {
|
|
87
|
+
(0, _classCallCheck2["default"])(this, Subscribe);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
(0, _createClass2["default"])(Subscribe, [{
|
|
91
|
+
key: "hasListener",
|
|
92
|
+
value:
|
|
93
|
+
/**
|
|
94
|
+
* 判断是否注册了事件
|
|
95
|
+
* @param name 事件类型
|
|
96
|
+
*/
|
|
97
|
+
function hasListener(name) {
|
|
98
|
+
var events = __generateEventIfNotExisted(this);
|
|
99
|
+
|
|
100
|
+
return events && events[name] && events[name].length > 0;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 注册事件
|
|
104
|
+
* @param name 事件类型
|
|
105
|
+
* @param callback 事件回调函数
|
|
106
|
+
* @param once 是否只执行一次
|
|
107
|
+
* @returns 解除事件
|
|
108
|
+
* @template K 预设的监听事件名称
|
|
109
|
+
* @template C 回调函数函数上下文
|
|
110
|
+
*/
|
|
111
|
+
|
|
112
|
+
}, {
|
|
113
|
+
key: "on",
|
|
114
|
+
value: function on(name, callback, once) {
|
|
115
|
+
var _this = this;
|
|
116
|
+
|
|
117
|
+
var events = __generateEventIfNotExisted(this);
|
|
118
|
+
|
|
119
|
+
if (!events[name]) events[name] = [];
|
|
120
|
+
events[name].push([callback, once || false]);
|
|
121
|
+
return function () {
|
|
122
|
+
return _this.off(name, callback);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* 注册事件(是否只执行一次)
|
|
127
|
+
* @param name 事件类型
|
|
128
|
+
* @param callback 事件回调函数
|
|
129
|
+
* @returns 解除事件
|
|
130
|
+
* @template K 预设的监听事件名称
|
|
131
|
+
* @template C 回调函数函数上下文
|
|
132
|
+
*/
|
|
133
|
+
|
|
134
|
+
}, {
|
|
135
|
+
key: "once",
|
|
136
|
+
value: function once(name, callback) {
|
|
137
|
+
return this.on(name, callback, true);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 解除事件
|
|
141
|
+
*
|
|
142
|
+
* 如果 name 不传的话解除对应所有事件
|
|
143
|
+
* 如果 name, callback 不传的话解除所有name的所有事件
|
|
144
|
+
* @param name 事件类型
|
|
145
|
+
* @param callback 事件回调函数
|
|
146
|
+
* @template K 预设的监听事件名称
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
}, {
|
|
150
|
+
key: "off",
|
|
151
|
+
value: function off(name, callback) {
|
|
152
|
+
if (name === undefined) {
|
|
153
|
+
__removeEventIfNotExisted(this);
|
|
154
|
+
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
var events = __generateEventIfNotExisted(this);
|
|
159
|
+
|
|
160
|
+
if (!events[name]) events[name] = [];
|
|
161
|
+
|
|
162
|
+
if (callback === undefined) {
|
|
163
|
+
events[name].length = 0;
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
var index = 0;
|
|
168
|
+
|
|
169
|
+
for (; index < events[name].length; index++) {
|
|
170
|
+
if (events[name][index][0] === callback) break;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (index < events[name].length) {
|
|
174
|
+
events[name].splice(index, 1);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* 触发事件
|
|
179
|
+
* @param name 事件类型
|
|
180
|
+
* @param data 触发事件的数据
|
|
181
|
+
* @returns canceled 是否被触发取消
|
|
182
|
+
* @template K 预设的监听事件名称
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
}, {
|
|
186
|
+
key: "emit",
|
|
187
|
+
value: function emit(name) {
|
|
188
|
+
var canceled = false;
|
|
189
|
+
|
|
190
|
+
var events = __generateEventIfNotExisted(this);
|
|
191
|
+
|
|
192
|
+
var event = events[name] || [];
|
|
193
|
+
|
|
194
|
+
for (var _len = arguments.length, data = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
195
|
+
data[_key - 1] = arguments[_key];
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
var _iterator = _createForOfIteratorHelper(event.slice()),
|
|
199
|
+
_step;
|
|
200
|
+
|
|
201
|
+
try {
|
|
202
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
203
|
+
var one = _step.value;
|
|
204
|
+
|
|
205
|
+
var _one = (0, _slicedToArray2["default"])(one, 2),
|
|
206
|
+
_callback = _one[0],
|
|
207
|
+
_one$ = _one[1],
|
|
208
|
+
_once = _one$ === void 0 ? false : _one$;
|
|
209
|
+
|
|
210
|
+
var result = _callback.apply(void 0, data);
|
|
211
|
+
|
|
212
|
+
if (_once) this.off(name, _callback);
|
|
213
|
+
if (result === false) canceled = true;
|
|
214
|
+
}
|
|
215
|
+
} catch (err) {
|
|
216
|
+
_iterator.e(err);
|
|
217
|
+
} finally {
|
|
218
|
+
_iterator.f();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return canceled;
|
|
222
|
+
}
|
|
223
|
+
}]);
|
|
224
|
+
return Subscribe;
|
|
225
|
+
}();
|
|
226
|
+
|
|
227
|
+
exports.Subscribe = Subscribe;
|
|
228
|
+
var SubscribeMixinType;
|
|
229
|
+
exports.SubscribeMixinType = SubscribeMixinType;
|
|
230
|
+
|
|
231
|
+
(function (_SubscribeMixinType) {})(SubscribeMixinType || (exports.SubscribeMixinType = SubscribeMixinType = {}));
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.coordsMoveByOffset = coordsMoveByOffset;
|
|
9
|
+
|
|
10
|
+
var _formatRad = require("./formatRad");
|
|
11
|
+
|
|
12
|
+
function coordsMoveByOffset(coords, offset, layout) {
|
|
13
|
+
var longitude = coords.longitude,
|
|
14
|
+
latitude = coords.latitude;
|
|
15
|
+
longitude = longitude - offset.x / layout.width * 3;
|
|
16
|
+
latitude = latitude - offset.y / layout.height * 3;
|
|
17
|
+
longitude = (0, _formatRad.formatRad)(longitude);
|
|
18
|
+
return {
|
|
19
|
+
longitude: longitude,
|
|
20
|
+
latitude: latitude
|
|
21
|
+
};
|
|
22
|
+
}
|
|
@@ -19,27 +19,23 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
19
19
|
Object.defineProperty(exports, "__esModule", {
|
|
20
20
|
value: true
|
|
21
21
|
});
|
|
22
|
-
exports
|
|
22
|
+
exports.coordsToDirection = coordsToDirection;
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var THREE = _interopRequireWildcard(require("three"));
|
|
25
25
|
|
|
26
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
27
|
|
|
28
28
|
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; }
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
PBRView.defaultProps = {};
|
|
44
|
-
var _default = PBRView;
|
|
45
|
-
exports["default"] = _default;
|
|
30
|
+
function coordsToDirection(_ref) {
|
|
31
|
+
var longitude = _ref.longitude,
|
|
32
|
+
latitude = _ref.latitude;
|
|
33
|
+
var distance = Math.abs(Math.cos(latitude));
|
|
34
|
+
return new THREE.Vector3(
|
|
35
|
+
/* x */
|
|
36
|
+
-Math.sin(longitude) * distance,
|
|
37
|
+
/* y */
|
|
38
|
+
-Math.sin(latitude),
|
|
39
|
+
/* z */
|
|
40
|
+
-Math.cos(longitude) * distance);
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatRad(rad: number): number;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.formatRad = formatRad;
|
|
9
|
+
var PI_2 = Math.PI * 2;
|
|
10
|
+
|
|
11
|
+
function formatRad(rad) {
|
|
12
|
+
return (rad % PI_2 + PI_2) % PI_2;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getFrameTime(callback: (duration: number) => void): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.getFrameTime = getFrameTime;
|
|
9
|
+
|
|
10
|
+
require("core-js/modules/es.date.now.js");
|
|
11
|
+
|
|
12
|
+
require("core-js/modules/es.date.to-string.js");
|
|
13
|
+
|
|
14
|
+
var _requestAnimationFrame = require("./requestAnimationFrame");
|
|
15
|
+
|
|
16
|
+
var cache = {
|
|
17
|
+
duration: 0
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
function getFrameTime(callback) {
|
|
21
|
+
if (cache.duration) callback(cache.duration);
|
|
22
|
+
var start = Date.now();
|
|
23
|
+
(0, _requestAnimationFrame.requestAnimationFrame)(function () {
|
|
24
|
+
callback(cache.duration = Date.now() - start);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getFrameTime(function () {});
|