@realsee/dnalogel 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/data/PrXel3aqGbp34JQn.js +10 -2
  2. package/package.json +1 -1
  3. package/plugins/TreasurePlugin/Controller.d.ts +42 -9
  4. package/plugins/TreasurePlugin/Controller.js +88 -52
  5. package/plugins/TreasurePlugin/TreasureFaceAnime.d.ts +8 -6
  6. package/plugins/TreasurePlugin/TreasureFaceAnime.js +4 -4
  7. package/plugins/TreasurePlugin/TreasureObject.d.ts +19 -11
  8. package/plugins/TreasurePlugin/TreasureObject.js +145 -51
  9. package/plugins/TreasurePlugin/TreasureOpenAnime.d.ts +4 -2
  10. package/plugins/TreasurePlugin/TreasureOpenAnime.js +10 -5
  11. package/plugins/TreasurePlugin/constants.d.ts +32 -11
  12. package/plugins/TreasurePlugin/constants.js +52 -17
  13. package/plugins/TreasurePlugin/index.d.ts +5 -5
  14. package/plugins/TreasurePlugin/index.js +8 -0
  15. package/plugins/floorplan/typings/floorplanData.d.ts +5 -1
  16. package/plugins/floorplan/utils/formatData.js +1 -22
  17. package/shared-utils/isNil.d.ts +10 -0
  18. package/shared-utils/isNil.js +24 -0
  19. package/shared-utils/three/getExtraModelLoader.d.ts +6 -0
  20. package/shared-utils/three/getExtraModelLoader.js +31 -0
  21. package/shared-utils/three/getTextureLoader.d.ts +6 -0
  22. package/shared-utils/three/getTextureLoader.js +34 -0
  23. package/shared-utils/three/loadFbxObj.d.ts +1 -2
  24. package/shared-utils/three/loadFbxObj.js +6 -2
  25. package/shared-utils/to.d.ts +0 -1
  26. package/shared-utils/to.js +45 -7
  27. package/typedoc/plugins.d.ts +1 -1
  28. package/typedoc/plugins.js +24 -12
  29. package/plugins/TreasurePlugin/treasureDataMap.d.ts +0 -7
  30. package/plugins/TreasurePlugin/treasureDataMap.js +0 -20
  31. package/plugins/TreasurePlugin/utils/loadTreasureTextures.d.ts +0 -7
  32. package/plugins/TreasurePlugin/utils/loadTreasureTextures.js +0 -115
@@ -15,10 +15,30 @@ var _TreasureOpenAnime = require("./TreasureOpenAnime");
15
15
 
16
16
  var _BetterTween = require("../../shared-utils/animationFrame/BetterTween");
17
17
 
18
+ var _to = _interopRequireDefault(require("../../shared-utils/to"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
+
18
22
  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); }
19
23
 
20
24
  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; }
21
25
 
26
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
27
+
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."); }
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
35
+
36
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
+
38
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
39
+
40
+ 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); }); }; }
41
+
22
42
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
43
 
24
44
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -49,13 +69,6 @@ function copyMaterial(orginMatrial) {
49
69
  });
50
70
  return material;
51
71
  }
52
- /** 宝箱实例
53
- * @description
54
- * 点击宝箱可以打开宝箱
55
- * @description
56
- * 在宝箱未打开时,靠近宝箱或点击宝箱,宝箱会转动到朝向用户的方向
57
- */
58
-
59
72
 
60
73
  var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
61
74
  _inherits(TreasureObject, _THREE$Object3D);
@@ -74,12 +87,12 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
74
87
  _defineProperty(_assertThisInitialized(_this), "opened", false);
75
88
 
76
89
  _defineProperty(_assertThisInitialized(_this), "onFiveWantsTapGesture", function (raycaster) {
77
- var _this$clickCallback, _this2;
90
+ var _this$params$clickCal, _this$params;
78
91
 
79
- var intersects = raycaster.intersectObject(_this.modelGroup, true);
92
+ var intersects = raycaster.intersectObject(_assertThisInitialized(_this), true);
80
93
  var isClickTreasure = !!intersects && intersects.length > 0;
81
94
  if (!isClickTreasure) return;
82
- (_this$clickCallback = (_this2 = _this).clickCallback) === null || _this$clickCallback === void 0 ? void 0 : _this$clickCallback.call(_this2, _this.treasureID);
95
+ (_this$params$clickCal = (_this$params = _this.params).clickCallback) === null || _this$params$clickCal === void 0 ? void 0 : _this$params$clickCal.call(_this$params, _this.treasureID);
83
96
 
84
97
  _this.rotateToCamera();
85
98
 
@@ -92,48 +105,37 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
92
105
  if (_this.position.distanceTo(_this.five.camera.position) < 3) _this.rotateToCamera();
93
106
  });
94
107
 
108
+ _this.params = params;
95
109
  _this.five = params.five;
96
110
  _this.treasureID = params.id;
97
111
 
98
112
  _this.position.copy(params.position);
99
113
 
100
- _this.texture = params.baseTexture;
101
- _this.modelGroup = params.fbxGroup.clone();
102
- _this.clickCallback = params.clickCallback;
103
- _this.faceAnime = new _TreasureFaceAnime.TreasureFaceAnime({
104
- five: params.five,
105
- faceTexturesPromise: params.faceTexturesPromise,
106
- treasureGroup: _this.modelGroup
107
- });
108
- _this.openAnime = new _TreasureOpenAnime.TreasurePluginOpenAnime({
109
- five: params.five,
110
- treasureGroup: _this.modelGroup,
111
- animationClip: params.fbxGroup.animations[0]
112
- });
113
-
114
- _this.init();
115
-
116
- _this.faceAnime.play();
114
+ var scale = 0.008 * params.config.scale;
117
115
 
118
- _this.five.on('panoArrived', _this.onFivePanoArrived);
119
-
120
- _this.five.on('wantsTapGesture', _this.onFiveWantsTapGesture);
116
+ _this.scale.fromArray([scale, scale, scale]);
121
117
 
122
118
  return _this;
123
119
  }
120
+ /** 销毁当前宝箱实例
121
+ * @description 注意 dispose 并不会销毁所使用的贴图,因为贴图会有共用关系,需要在最外层销毁
122
+ */
123
+
124
124
 
125
125
  _createClass(TreasureObject, [{
126
126
  key: "dispose",
127
127
  value: function dispose() {
128
- this.faceAnime.dispose();
129
- this.openAnime.dispose();
128
+ var _this$faceAnime, _this$openAnime;
129
+
130
+ (_this$faceAnime = this.faceAnime) === null || _this$faceAnime === void 0 ? void 0 : _this$faceAnime.dispose();
131
+ (_this$openAnime = this.openAnime) === null || _this$openAnime === void 0 ? void 0 : _this$openAnime.dispose();
130
132
  this.five.off('panoArrived', this.onFivePanoArrived);
131
133
  this.five.off('wantsTapGesture', this.onFiveWantsTapGesture);
132
134
  }
133
135
  }, {
134
136
  key: "rotateToCamera",
135
137
  value: function rotateToCamera() {
136
- var _this3 = this;
138
+ var _this2 = this;
137
139
 
138
140
  if (this.opened) return; // 宝箱朝向
139
141
 
@@ -150,34 +152,126 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
150
152
  var rotationStartY = this.rotation.y;
151
153
  (0, _BetterTween.tweenProgress)(duration).onUpdate(function (_ref) {
152
154
  var progress = _ref.progress;
153
- _this3.rotation.y = rotationStartY + progress * deltaRadY * rotateDirection;
155
+ _this2.rotation.y = rotationStartY + progress * deltaRadY * rotateDirection;
154
156
  }).play();
155
157
  }
156
158
  }, {
157
159
  key: "open",
158
160
  value: function open() {
161
+ var _this$faceAnime2, _this$faceAnime3, _this$openAnime2;
162
+
163
+ if (!this.openAnime) return false;
159
164
  if (this.opened) return false;
160
165
  this.opened = true;
161
- this.faceAnime.pause();
162
- this.faceAnime.setToInitialState();
163
- this.openAnime.play();
166
+ (_this$faceAnime2 = this.faceAnime) === null || _this$faceAnime2 === void 0 ? void 0 : _this$faceAnime2.pause();
167
+ (_this$faceAnime3 = this.faceAnime) === null || _this$faceAnime3 === void 0 ? void 0 : _this$faceAnime3.setToInitialState();
168
+ (_this$openAnime2 = this.openAnime) === null || _this$openAnime2 === void 0 ? void 0 : _this$openAnime2.play();
164
169
  return true;
165
170
  }
166
171
  }, {
167
- key: "init",
168
- value: function init() {
169
- var group = this.modelGroup;
170
- group.traverse(function (obj) {
171
- if (!(obj instanceof THREE.Mesh)) return;
172
- obj.material = copyMaterial(obj.material);
173
- if (obj.material.map) obj.material.map.encoding = THREE.sRGBEncoding;
174
- obj.renderOrder = 2;
175
- });
176
- this.texture.encoding = THREE.sRGBEncoding;
177
- group.getObjectByName('box').material.map = this.texture;
178
- group.getObjectByName('box2').material.map = this.texture;
179
- this.add(group);
180
- }
172
+ key: "load",
173
+ value: function () {
174
+ var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
175
+ var _this3 = this;
176
+
177
+ var _yield$to, _yield$to2, loadError, orginModelGroup, group, _yield$to3, _yield$to4, boxTextureError, boxTexture;
178
+
179
+ return regeneratorRuntime.wrap(function _callee$(_context) {
180
+ while (1) {
181
+ switch (_context.prev = _context.next) {
182
+ case 0:
183
+ _context.next = 2;
184
+ return (0, _to["default"])(this.params.loadModelGroup(this.params.config.objectUrl));
185
+
186
+ case 2:
187
+ _yield$to = _context.sent;
188
+ _yield$to2 = _slicedToArray(_yield$to, 2);
189
+ loadError = _yield$to2[0];
190
+ orginModelGroup = _yield$to2[1];
191
+
192
+ if (!(loadError || !orginModelGroup)) {
193
+ _context.next = 8;
194
+ break;
195
+ }
196
+
197
+ throw loadError;
198
+
199
+ case 8:
200
+ group = orginModelGroup.clone();
201
+ group.traverse(function (obj) {
202
+ if (!(obj instanceof THREE.Mesh)) return;
203
+ obj.material = copyMaterial(obj.material);
204
+ if (obj.material.map) obj.material.map.encoding = THREE.sRGBEncoding;
205
+ obj.renderOrder = 2;
206
+ });
207
+
208
+ if (!this.params.config.boxTextureUrl) {
209
+ _context.next = 22;
210
+ break;
211
+ }
212
+
213
+ _context.next = 13;
214
+ return (0, _to["default"])(this.params.loadTexture(this.params.config.boxTextureUrl));
215
+
216
+ case 13:
217
+ _yield$to3 = _context.sent;
218
+ _yield$to4 = _slicedToArray(_yield$to3, 2);
219
+ boxTextureError = _yield$to4[0];
220
+ boxTexture = _yield$to4[1];
221
+
222
+ if (!(boxTextureError || !boxTexture)) {
223
+ _context.next = 19;
224
+ break;
225
+ }
226
+
227
+ throw new Error('加载盒子贴图失败');
228
+
229
+ case 19:
230
+ boxTexture.encoding = THREE.sRGBEncoding;
231
+ group.getObjectByName('box').material.map = boxTexture;
232
+ group.getObjectByName('box2').material.map = boxTexture;
233
+
234
+ case 22:
235
+ this.add(group); // ========== openAnime ==========
236
+
237
+ this.openAnime = new _TreasureOpenAnime.TreasurePluginOpenAnime({
238
+ five: this.five,
239
+ treasureGroup: group,
240
+ onComplete: function onComplete() {
241
+ var _this3$params$onOpenA, _this3$params;
242
+
243
+ return (_this3$params$onOpenA = (_this3$params = _this3.params).onOpenAnimationEnded) === null || _this3$params$onOpenA === void 0 ? void 0 : _this3$params$onOpenA.call(_this3$params, _this3.treasureID);
244
+ },
245
+ animationClip: orginModelGroup.animations[0]
246
+ }); // ========== faceAnime ==========
247
+
248
+ this.faceAnime = new _TreasureFaceAnime.TreasureFaceAnime({
249
+ five: this.five,
250
+ treasureGroup: group,
251
+ loadTexture: this.params.loadTexture,
252
+ textureUrls: this.params.config.faceAnimeTextureUrls
253
+ });
254
+ this.faceAnime.play(); // ========== addEventListener ==========
255
+
256
+ this.five.on('panoArrived', this.onFivePanoArrived);
257
+ this.five.on('wantsTapGesture', this.onFiveWantsTapGesture);
258
+ this.five.needsRender = true;
259
+ return _context.abrupt("return", this);
260
+
261
+ case 30:
262
+ case "end":
263
+ return _context.stop();
264
+ }
265
+ }
266
+ }, _callee, this);
267
+ }));
268
+
269
+ function load() {
270
+ return _load.apply(this, arguments);
271
+ }
272
+
273
+ return load;
274
+ }()
181
275
  }]);
182
276
 
183
277
  return TreasureObject;
@@ -1,7 +1,8 @@
1
1
  import * as THREE from 'three';
2
2
  import { Five } from '@realsee/five';
3
- export interface TreasureOpenAnimeParam {
3
+ export interface TreasureOpenAnimeParams {
4
4
  five: Five;
5
+ onComplete?: () => unknown;
5
6
  treasureGroup: THREE.Group;
6
7
  animationClip: THREE.AnimationClip;
7
8
  }
@@ -14,9 +15,10 @@ export declare class TreasurePluginOpenAnime {
14
15
  private hasPlayed;
15
16
  private clock;
16
17
  private treasureGroup;
18
+ private params;
17
19
  private animationDispose?;
18
20
  private action;
19
- constructor(param: TreasureOpenAnimeParam);
21
+ constructor(params: TreasureOpenAnimeParams);
20
22
  dispose(): void;
21
23
  play(): boolean;
22
24
  private onPlayFinished;
@@ -30,7 +30,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
30
30
  * 因为宝箱没有关闭的场景,对于一个宝箱来讲,打开后,要么销毁,要么保留当时的状态。所以不做关闭方面的兼容处理
31
31
  */
32
32
  var TreasurePluginOpenAnime = /*#__PURE__*/function () {
33
- function TreasurePluginOpenAnime(param) {
33
+ function TreasurePluginOpenAnime(params) {
34
34
  var _this = this;
35
35
 
36
36
  _classCallCheck(this, TreasurePluginOpenAnime);
@@ -57,13 +57,18 @@ var TreasurePluginOpenAnime = /*#__PURE__*/function () {
57
57
  obj.material.opacity = opacity;
58
58
  });
59
59
  _this.five.needsRender = true;
60
- }).play();
60
+ }).play().onComplete(function () {
61
+ var _this$params$onComple, _this$params;
62
+
63
+ return (_this$params$onComple = (_this$params = _this.params).onComplete) === null || _this$params$onComple === void 0 ? void 0 : _this$params$onComple.call(_this$params);
64
+ });
61
65
  });
62
66
 
63
- this.five = param.five;
64
- this.treasureGroup = param.treasureGroup;
67
+ this.five = params.five;
68
+ this.params = params;
69
+ this.treasureGroup = params.treasureGroup;
65
70
  var mixer = new THREE.AnimationMixer(this.treasureGroup);
66
- this.action = mixer.clipAction(param.animationClip);
71
+ this.action = mixer.clipAction(params.animationClip);
67
72
  this.action.setLoop(THREE.LoopOnce, 1);
68
73
  this.action.clampWhenFinished = true;
69
74
  }
@@ -1,12 +1,33 @@
1
- /** CDN 资源 Base URL */
2
- export declare const TREASURE_BASE_URL = "//vrlab-public.ljcdn.com/release/static/image/release/baoxiang_xiaobei/1/";
3
- /** FBX 文件地址,注意 FBX 文件中写入了默认贴图地址 */
4
- export declare const TREASURE_FBX_URL: string;
5
- /** 宝箱脸部的动画贴图 */
6
- export declare const TREASURE_FACE_ANIMATION_URLS: string[];
7
- /** 宝箱类型 */
8
- export declare enum TreasureType {
9
- TreasureType1 = 0,
10
- TreasureType2 = 1
1
+ import { TreasureObjectConfig } from './TreasureObject';
2
+ /** 默认的宝箱对象类型:FBX */
3
+ export declare const DEFAULT_TREASURE_OBJECT_TYPE = "FBX";
4
+ /** 默认的宝箱对象地址 */
5
+ export declare const DEFAULT_TREASURE_OBJECT_URL: string;
6
+ /** 默认的宝箱对象 */
7
+ export declare const DEFAULT_TREASURE_OBJECT: {
8
+ url: string;
9
+ type: string;
10
+ };
11
+ /** 默认宝箱脸部动画贴图资源 */
12
+ export declare const DEFAULT_TREASURE_FACE_ANIMATION_URLS: string[];
13
+ /** 黄色宝箱盒子贴图地址 */
14
+ export declare const TREASURE_BOX_TEXTURE_YELLOW_URL: string;
15
+ /** 红色宝箱盒子贴图地址 */
16
+ export declare const TREASURE_BOX_TEXTURE_RED_URL: string;
17
+ export declare enum TREASURE_TYPE {
18
+ YELLOW = 0,
19
+ RED = 1
11
20
  }
12
- export declare const DEFAULT_TREASURE_TYPE: TreasureType;
21
+ export declare const DEFAULT_TREASURE_CONFIG: TreasureObjectConfig;
22
+ /** 内置宝箱类型于宝箱资源的映射关系 */
23
+ export declare const DEFAULT_TREASURE_CONFIGS: ({
24
+ type: TREASURE_TYPE;
25
+ config: TreasureObjectConfig;
26
+ } | {
27
+ type: TREASURE_TYPE;
28
+ config: {
29
+ objectUrl: string;
30
+ boxTextureUrl: string;
31
+ faceAnimeTextureUrls: string[];
32
+ };
33
+ })[];
@@ -3,28 +3,63 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TreasureType = exports.TREASURE_FBX_URL = exports.TREASURE_FACE_ANIMATION_URLS = exports.TREASURE_BASE_URL = exports.DEFAULT_TREASURE_TYPE = void 0;
6
+ exports.TREASURE_TYPE = exports.TREASURE_BOX_TEXTURE_YELLOW_URL = exports.TREASURE_BOX_TEXTURE_RED_URL = exports.DEFAULT_TREASURE_OBJECT_URL = exports.DEFAULT_TREASURE_OBJECT_TYPE = exports.DEFAULT_TREASURE_OBJECT = exports.DEFAULT_TREASURE_FACE_ANIMATION_URLS = exports.DEFAULT_TREASURE_CONFIGS = exports.DEFAULT_TREASURE_CONFIG = void 0;
7
7
 
8
8
  /** CDN 资源 Base URL */
9
9
  var TREASURE_BASE_URL = '//vrlab-public.ljcdn.com/release/static/image/release/baoxiang_xiaobei/1/';
10
- /** FBX 文件地址,注意 FBX 文件中写入了默认贴图地址 */
10
+ /** 默认的宝箱对象类型:FBX */
11
11
 
12
- exports.TREASURE_BASE_URL = TREASURE_BASE_URL;
13
- var TREASURE_FBX_URL = TREASURE_BASE_URL + 'baoxiang_xiaobei.fbx';
14
- /** 宝箱脸部的动画贴图 */
12
+ var DEFAULT_TREASURE_OBJECT_TYPE = 'FBX';
13
+ /** 默认的宝箱对象地址 */
15
14
 
16
- exports.TREASURE_FBX_URL = TREASURE_FBX_URL;
17
- var TREASURE_FACE_ANIMATION_URLS = [TREASURE_BASE_URL + 'faces/1.png', TREASURE_BASE_URL + 'faces/2.png', TREASURE_BASE_URL + 'faces/3.png', TREASURE_BASE_URL + 'faces/4.png', TREASURE_BASE_URL + 'faces/5.png'];
18
- /** 宝箱类型 */
15
+ exports.DEFAULT_TREASURE_OBJECT_TYPE = DEFAULT_TREASURE_OBJECT_TYPE;
16
+ var DEFAULT_TREASURE_OBJECT_URL = TREASURE_BASE_URL + 'baoxiang_xiaobei.fbx';
17
+ /** 默认的宝箱对象 */
19
18
 
20
- exports.TREASURE_FACE_ANIMATION_URLS = TREASURE_FACE_ANIMATION_URLS;
21
- var TreasureType;
22
- exports.TreasureType = TreasureType;
19
+ exports.DEFAULT_TREASURE_OBJECT_URL = DEFAULT_TREASURE_OBJECT_URL;
20
+ var DEFAULT_TREASURE_OBJECT = {
21
+ url: DEFAULT_TREASURE_OBJECT_URL,
22
+ type: DEFAULT_TREASURE_OBJECT_TYPE
23
+ };
24
+ /** 默认宝箱脸部动画贴图资源 */
23
25
 
24
- (function (TreasureType) {
25
- TreasureType[TreasureType["TreasureType1"] = 0] = "TreasureType1";
26
- TreasureType[TreasureType["TreasureType2"] = 1] = "TreasureType2";
27
- })(TreasureType || (exports.TreasureType = TreasureType = {}));
26
+ exports.DEFAULT_TREASURE_OBJECT = DEFAULT_TREASURE_OBJECT;
27
+ var DEFAULT_TREASURE_FACE_ANIMATION_URLS = [TREASURE_BASE_URL + 'faces/1.png', TREASURE_BASE_URL + 'faces/2.png', TREASURE_BASE_URL + 'faces/3.png', TREASURE_BASE_URL + 'faces/4.png', TREASURE_BASE_URL + 'faces/5.png'];
28
+ /** 黄色宝箱盒子贴图地址 */
28
29
 
29
- var DEFAULT_TREASURE_TYPE = TreasureType.TreasureType1;
30
- exports.DEFAULT_TREASURE_TYPE = DEFAULT_TREASURE_TYPE;
30
+ exports.DEFAULT_TREASURE_FACE_ANIMATION_URLS = DEFAULT_TREASURE_FACE_ANIMATION_URLS;
31
+ var TREASURE_BOX_TEXTURE_YELLOW_URL = TREASURE_BASE_URL + 'box_Base_Color.png';
32
+ /** 红色宝箱盒子贴图地址 */
33
+
34
+ exports.TREASURE_BOX_TEXTURE_YELLOW_URL = TREASURE_BOX_TEXTURE_YELLOW_URL;
35
+ var TREASURE_BOX_TEXTURE_RED_URL = TREASURE_BASE_URL + 'box_Base_Color_red.png';
36
+ exports.TREASURE_BOX_TEXTURE_RED_URL = TREASURE_BOX_TEXTURE_RED_URL;
37
+ var TREASURE_TYPE;
38
+ exports.TREASURE_TYPE = TREASURE_TYPE;
39
+
40
+ (function (TREASURE_TYPE) {
41
+ TREASURE_TYPE[TREASURE_TYPE["YELLOW"] = 0] = "YELLOW";
42
+ TREASURE_TYPE[TREASURE_TYPE["RED"] = 1] = "RED";
43
+ })(TREASURE_TYPE || (exports.TREASURE_TYPE = TREASURE_TYPE = {}));
44
+
45
+ var DEFAULT_TREASURE_CONFIG = {
46
+ scale: 1,
47
+ boxTextureUrl: undefined,
48
+ objectUrl: DEFAULT_TREASURE_OBJECT_URL,
49
+ faceAnimeTextureUrls: DEFAULT_TREASURE_FACE_ANIMATION_URLS
50
+ };
51
+ /** 内置宝箱类型于宝箱资源的映射关系 */
52
+
53
+ exports.DEFAULT_TREASURE_CONFIG = DEFAULT_TREASURE_CONFIG;
54
+ var DEFAULT_TREASURE_CONFIGS = [{
55
+ type: TREASURE_TYPE.YELLOW,
56
+ config: DEFAULT_TREASURE_CONFIG
57
+ }, {
58
+ type: TREASURE_TYPE.RED,
59
+ config: {
60
+ objectUrl: DEFAULT_TREASURE_OBJECT_URL,
61
+ boxTextureUrl: TREASURE_BOX_TEXTURE_RED_URL,
62
+ faceAnimeTextureUrls: DEFAULT_TREASURE_FACE_ANIMATION_URLS
63
+ }
64
+ }];
65
+ exports.DEFAULT_TREASURE_CONFIGS = DEFAULT_TREASURE_CONFIGS;
@@ -2,10 +2,10 @@ import { FivePlugin } from '@realsee/five';
2
2
  import { TreasurePluginController, TreasurePluginParameterType } from './Controller';
3
3
  export declare const TreasurePlugin: FivePlugin<TreasurePluginParameterType, TreasurePluginReturnType>;
4
4
  export default TreasurePlugin;
5
+ export { TREASURE_TYPE } from './constants';
5
6
  export declare type TreasurePluginReturnType = TreasurePluginController;
6
- export type { TreasureType } from './constants';
7
- export type { TreasurePluginItemData, TreasurePluginData } from './Controller';
7
+ export type { TreasurePluginItemData, TreasurePluginData, TreasurePluginItemConfigData } from './Controller';
8
8
  export type { TreasurePluginController, TreasurePluginParameterType, TreasurePluginEvents } from './Controller';
9
- export type { TreasureObject, TreasureObjectParam } from './TreasureObject';
10
- export type { TreasureFaceAnime, TreasureFaceAnimeParam } from './TreasureFaceAnime';
11
- export type { TreasurePluginOpenAnime, TreasureOpenAnimeParam } from './TreasureOpenAnime';
9
+ export type { TreasureObject, TreasureObjectConfig, TreasureObjectParams } from './TreasureObject';
10
+ export type { TreasureFaceAnime, TreasureFaceAnimeParams } from './TreasureFaceAnime';
11
+ export type { TreasurePluginOpenAnime, TreasureOpenAnimeParams } from './TreasureOpenAnime';
@@ -3,10 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "TREASURE_TYPE", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _constants.TREASURE_TYPE;
10
+ }
11
+ });
6
12
  exports["default"] = exports.TreasurePlugin = void 0;
7
13
 
8
14
  var _Controller = require("./Controller");
9
15
 
16
+ var _constants = require("./constants");
17
+
10
18
  var TreasurePlugin = function TreasurePlugin(five) {
11
19
  return new _Controller.TreasurePluginController(five);
12
20
  };
@@ -104,7 +104,11 @@ export interface FloorplanData {
104
104
  /** 能够映射到雷达图上的三维物体 */
105
105
  export interface FloorplanExtraObject3D {
106
106
  id: string;
107
- position: number[];
107
+ position: {
108
+ x: number;
109
+ y: number;
110
+ z: number;
111
+ };
108
112
  icon?: {
109
113
  url: string;
110
114
  width: number;
@@ -10,18 +10,6 @@ var _floorplanExtraObject = require("../Assets/floorplanExtraObject");
10
10
 
11
11
  var _formatPosition = require("./formatPosition");
12
12
 
13
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
14
-
15
- 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."); }
16
-
17
- 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); }
18
-
19
- 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; }
20
-
21
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
22
-
23
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
-
25
13
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
26
14
 
27
15
  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); }); }; }
@@ -190,16 +178,7 @@ function _formatData() {
190
178
 
191
179
  function formatExtraObjects(data, five, floorplanData) {
192
180
  var extraObjects = data.map(function (object) {
193
- var _object$position = _slicedToArray(object.position, 3),
194
- x = _object$position[0],
195
- y = _object$position[1],
196
- z = _object$position[2];
197
-
198
- var position = {
199
- x: x,
200
- y: y,
201
- z: z
202
- };
181
+ var position = object.position;
203
182
  var icon = object.icon ? object.icon : {
204
183
  url: _floorplanExtraObject.FLOORPLANE_EXTRA_OBJECT_IMAGE,
205
184
  width: 45,
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 判断对象是否为`null`或`undefined`。
3
+ * @param
4
+ * @return
5
+ */
6
+ export declare function isNil<T>(value: T): value is Extract<T, undefined | null>;
7
+ /**
8
+ * 判断对象不为`null`或`undefined`。
9
+ */
10
+ export declare function notNil<T>(value: T | null | undefined): value is T;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isNil = isNil;
7
+ exports.notNil = notNil;
8
+
9
+ /**
10
+ * 判断对象是否为`null`或`undefined`。
11
+ * @param
12
+ * @return
13
+ */
14
+ function isNil(value) {
15
+ return !notNil(value);
16
+ }
17
+ /**
18
+ * 判断对象不为`null`或`undefined`。
19
+ */
20
+
21
+
22
+ function notNil(value) {
23
+ return value !== null && value !== undefined;
24
+ }
@@ -0,0 +1,6 @@
1
+ import * as THREE from 'three';
2
+ /** 模型资源加载器,用于满足资源共用 */
3
+ export declare function getExtraModelLoader(): {
4
+ load: (url: string, type?: string) => Promise<THREE.Group>;
5
+ dispose: () => void;
6
+ };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getExtraModelLoader = getExtraModelLoader;
7
+
8
+ var _loadFbxObj = require("./loadFbxObj");
9
+
10
+ /** 模型资源加载器,用于满足资源共用 */
11
+ function getExtraModelLoader() {
12
+ var cache = new Map();
13
+
14
+ var load = function load(url) {
15
+ var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'FBX';
16
+ if (type !== 'FBX') return Promise.reject(new Error('不支持的类型'));
17
+ if (cache.has(url)) return cache.get(url);
18
+ var groupPromise = (0, _loadFbxObj.loadFbxObj)(url);
19
+ cache.set(url, groupPromise);
20
+ return groupPromise;
21
+ };
22
+
23
+ var dispose = function dispose() {
24
+ cache.clear();
25
+ };
26
+
27
+ return {
28
+ load: load,
29
+ dispose: dispose
30
+ };
31
+ }
@@ -0,0 +1,6 @@
1
+ import * as THREE from 'three';
2
+ /** 贴图加载器,用于满足资源共用 */
3
+ export declare function getTextureLoader(): {
4
+ load: (url: string) => Promise<THREE.Texture>;
5
+ dispose: () => void;
6
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getTextureLoader = getTextureLoader;
7
+
8
+ var _loadTexture = require("./loadTexture");
9
+
10
+ /** 贴图加载器,用于满足资源共用 */
11
+ function getTextureLoader() {
12
+ var cache = new Map();
13
+
14
+ var load = function load(url) {
15
+ if (cache.has(url)) return cache.get(url);
16
+ var texturePromise = (0, _loadTexture.loadTexture)(url);
17
+ cache.set(url, texturePromise);
18
+ return texturePromise;
19
+ };
20
+
21
+ var dispose = function dispose() {
22
+ cache.forEach(function (texturePromise) {
23
+ return texturePromise.then(function (texture) {
24
+ return texture.dispose();
25
+ });
26
+ });
27
+ cache.clear();
28
+ };
29
+
30
+ return {
31
+ load: load,
32
+ dispose: dispose
33
+ };
34
+ }