@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.
@@ -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,13 @@
1
+ export declare function coordsMoveByOffset(coords: {
2
+ longitude: number;
3
+ latitude: number;
4
+ }, offset: {
5
+ x: number;
6
+ y: number;
7
+ }, layout: {
8
+ height: number;
9
+ width: number;
10
+ }): {
11
+ longitude: number;
12
+ latitude: number;
13
+ };
@@ -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
+ }
@@ -0,0 +1,5 @@
1
+ import * as THREE from "three";
2
+ export declare function coordsToDirection({ longitude, latitude }: {
3
+ longitude: number;
4
+ latitude: number;
5
+ }): THREE.Vector3;
@@ -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["default"] = void 0;
22
+ exports.coordsToDirection = coordsToDirection;
23
23
 
24
- var React = _interopRequireWildcard(require("react"));
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
- * 查看 **PBR**模型
32
- *
33
- * @TODO 待排期
34
- *
35
- * > RD 小哥哥 正在 加班研发中 ...
36
- */
37
- var PBRView = function PBRView() {
38
- return /*#__PURE__*/React.createElement("div", {
39
- className: "PBRViewer"
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 () {});