@realsee/dnalogel 0.1.0 → 0.1.4

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 (92) hide show
  1. package/data/8054djM0oR6ky3Ey8e.d.ts +55 -0
  2. package/data/8054djM0oR6ky3Ey8e.js +348 -0
  3. package/data/PrXel3aqGbp34JQn.js +10 -2
  4. package/data/XJ6NMLWnkAY3Rdx8.d.ts +843 -0
  5. package/data/XJ6NMLWnkAY3Rdx8.js +7987 -0
  6. package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.d.ts +85 -0
  7. package/data/jd6oMOzPxnQ3BvxY_B7yw51J9rXlhYhjhGTOgRVqu6WeEqjNX.js +509 -0
  8. package/data/vLykj3NWrllMrG06.d.ts +2 -0
  9. package/data/vLykj3NWrllMrG06.js +197 -2
  10. package/data/zxMawr9raSg8LYjG.d.ts +53 -0
  11. package/data/zxMawr9raSg8LYjG.js +588 -0
  12. package/package.json +3 -3
  13. package/plugins/AutoPreloadPlugin/index.d.ts +23 -0
  14. package/plugins/AutoPreloadPlugin/index.js +85 -0
  15. package/plugins/CSS3DRenderPlugin/index.d.ts +11 -11
  16. package/plugins/CSS3DRenderPlugin/index.js +170 -120
  17. package/plugins/ModelChassisCompassPlugin/index.d.ts +7 -3
  18. package/plugins/ModelChassisCompassPlugin/index.js +13 -26
  19. package/plugins/ModelEntryDoorGuidePlugin/index.d.ts +13 -1
  20. package/plugins/ModelEntryDoorGuidePlugin/index.js +212 -2
  21. package/plugins/ModelRoomLabelPlugin/Controller.d.ts +35 -0
  22. package/plugins/ModelRoomLabelPlugin/Controller.js +147 -0
  23. package/plugins/ModelRoomLabelPlugin/RoomLabelItem.d.ts +8 -0
  24. package/plugins/ModelRoomLabelPlugin/RoomLabelItem.js +48 -0
  25. package/plugins/ModelRoomLabelPlugin/RoomLabelItems.d.ts +7 -0
  26. package/plugins/ModelRoomLabelPlugin/RoomLabelItems.js +149 -0
  27. package/plugins/ModelRoomLabelPlugin/index.d.ts +8 -0
  28. package/plugins/ModelRoomLabelPlugin/index.js +16 -0
  29. package/plugins/ModelRoomLabelPlugin/typings.d.ts +35 -0
  30. package/plugins/ModelRoomLabelPlugin/typings.js +5 -0
  31. package/plugins/ModelRoomLabelPlugin/utils/parseData.d.ts +3 -0
  32. package/plugins/ModelRoomLabelPlugin/utils/parseData.js +29 -0
  33. package/plugins/PanoMaskSelectorPlugin/compare.d.ts +1 -0
  34. package/plugins/PanoMaskSelectorPlugin/compare.js +15 -0
  35. package/plugins/PanoMaskSelectorPlugin/createBox.d.ts +7 -0
  36. package/plugins/PanoMaskSelectorPlugin/createBox.js +61 -0
  37. package/plugins/PanoMaskSelectorPlugin/createTextures.d.ts +3 -0
  38. package/plugins/PanoMaskSelectorPlugin/createTextures.js +29 -0
  39. package/plugins/PanoMaskSelectorPlugin/fragmentShader.d.ts +1 -0
  40. package/plugins/PanoMaskSelectorPlugin/fragmentShader.js +8 -0
  41. package/plugins/PanoMaskSelectorPlugin/index.d.ts +49 -0
  42. package/plugins/PanoMaskSelectorPlugin/index.js +272 -0
  43. package/plugins/PanoMaskSelectorPlugin/vertexShader.d.ts +1 -0
  44. package/plugins/PanoMaskSelectorPlugin/vertexShader.js +8 -0
  45. package/plugins/TreasurePlugin/Controller.d.ts +53 -12
  46. package/plugins/TreasurePlugin/Controller.js +129 -60
  47. package/plugins/TreasurePlugin/TreasureFaceAnime.d.ts +8 -6
  48. package/plugins/TreasurePlugin/TreasureFaceAnime.js +4 -4
  49. package/plugins/TreasurePlugin/TreasureObject.d.ts +30 -12
  50. package/plugins/TreasurePlugin/TreasureObject.js +269 -53
  51. package/plugins/TreasurePlugin/TreasureOpenAnime.d.ts +4 -2
  52. package/plugins/TreasurePlugin/TreasureOpenAnime.js +10 -5
  53. package/plugins/TreasurePlugin/constants.d.ts +32 -11
  54. package/plugins/TreasurePlugin/constants.js +52 -17
  55. package/plugins/TreasurePlugin/index.d.ts +5 -5
  56. package/plugins/TreasurePlugin/index.js +8 -0
  57. package/plugins/floorplan/ModelFloorplanPlugin/components/Camera.js +4 -2
  58. package/plugins/floorplan/ModelFloorplanPlugin/components/Compass.js +2 -1
  59. package/plugins/floorplan/ModelFloorplanPlugin/components/NowFloor/RoomLabels.js +5 -2
  60. package/plugins/floorplan/ModelFloorplanPlugin/components/index.js +1 -1
  61. package/plugins/floorplan/typings/floorplanData.d.ts +5 -1
  62. package/plugins/floorplan/utils/formatData.js +1 -22
  63. package/plugins/floorplan/utils/formatPosition.d.ts +4 -4
  64. package/shared-utils/createCanvasTextTexture.d.ts +8 -0
  65. package/shared-utils/createCanvasTextTexture.js +29 -0
  66. package/shared-utils/isNil.d.ts +10 -0
  67. package/shared-utils/isNil.js +24 -0
  68. package/shared-utils/three/getExtraModelLoader.d.ts +6 -0
  69. package/shared-utils/three/getExtraModelLoader.js +31 -0
  70. package/shared-utils/three/getTextureLoader.d.ts +6 -0
  71. package/shared-utils/three/getTextureLoader.js +34 -0
  72. package/shared-utils/three/loadFbxObj.d.ts +1 -2
  73. package/shared-utils/three/loadFbxObj.js +6 -2
  74. package/shared-utils/three/transformPositionToVector3.d.ts +7 -0
  75. package/shared-utils/three/{vecror3.js → transformPositionToVector3.js} +2 -2
  76. package/shared-utils/three/transfromToMeshBasicMaterial.d.ts +2 -0
  77. package/shared-utils/three/transfromToMeshBasicMaterial.js +27 -0
  78. package/shared-utils/to.d.ts +0 -1
  79. package/shared-utils/to.js +45 -7
  80. package/typedoc/plugins.d.ts +3 -1
  81. package/typedoc/plugins.js +63 -13
  82. package/typedoc/typings.d.ts +1 -1
  83. package/typings/math.type.d.ts +2 -2
  84. package/data/wYnRjQ4KZoV1yPoG.d.ts +0 -114
  85. package/data/wYnRjQ4KZoV1yPoG.js +0 -512
  86. package/plugins/PanoCursorRaycasterPlugin/utils/vecror3.d.ts +0 -7
  87. package/plugins/PanoCursorRaycasterPlugin/utils/vecror3.js +0 -18
  88. package/plugins/TreasurePlugin/treasureDataMap.d.ts +0 -7
  89. package/plugins/TreasurePlugin/treasureDataMap.js +0 -20
  90. package/plugins/TreasurePlugin/utils/loadTreasureTextures.d.ts +0 -7
  91. package/plugins/TreasurePlugin/utils/loadTreasureTextures.js +0 -115
  92. package/shared-utils/three/vecror3.d.ts +0 -7
@@ -9,16 +9,38 @@ exports.TreasureObject = void 0;
9
9
 
10
10
  var THREE = _interopRequireWildcard(require("three"));
11
11
 
12
+ var TWEEN = _interopRequireWildcard(require("@tweenjs/tween.js"));
13
+
12
14
  var _TreasureFaceAnime = require("./TreasureFaceAnime");
13
15
 
14
16
  var _TreasureOpenAnime = require("./TreasureOpenAnime");
15
17
 
16
18
  var _BetterTween = require("../../shared-utils/animationFrame/BetterTween");
17
19
 
20
+ var _to = _interopRequireDefault(require("../../shared-utils/to"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
18
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
25
 
20
26
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
27
 
28
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
29
+
30
+ 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."); }
31
+
32
+ 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); }
33
+
34
+ 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; }
35
+
36
+ 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; }
37
+
38
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
+
40
+ 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); } }
41
+
42
+ 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); }); }; }
43
+
22
44
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23
45
 
24
46
  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 +71,6 @@ function copyMaterial(orginMatrial) {
49
71
  });
50
72
  return material;
51
73
  }
52
- /** 宝箱实例
53
- * @description
54
- * 点击宝箱可以打开宝箱
55
- * @description
56
- * 在宝箱未打开时,靠近宝箱或点击宝箱,宝箱会转动到朝向用户的方向
57
- */
58
-
59
74
 
60
75
  var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
61
76
  _inherits(TreasureObject, _THREE$Object3D);
@@ -73,13 +88,18 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
73
88
 
74
89
  _defineProperty(_assertThisInitialized(_this), "opened", false);
75
90
 
91
+ _defineProperty(_assertThisInitialized(_this), "modelGroupPromise", Promise.resolve({
92
+ modelGroup: new THREE.Group(),
93
+ originGroup: new THREE.Group()
94
+ }));
95
+
76
96
  _defineProperty(_assertThisInitialized(_this), "onFiveWantsTapGesture", function (raycaster) {
77
- var _this$clickCallback, _this2;
97
+ var _this$params$clickCal, _this$params;
78
98
 
79
- var intersects = raycaster.intersectObject(_this.modelGroup, true);
99
+ var intersects = raycaster.intersectObject(_assertThisInitialized(_this), true);
80
100
  var isClickTreasure = !!intersects && intersects.length > 0;
81
101
  if (!isClickTreasure) return;
82
- (_this$clickCallback = (_this2 = _this).clickCallback) === null || _this$clickCallback === void 0 ? void 0 : _this$clickCallback.call(_this2, _this.treasureID);
102
+ (_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
103
 
84
104
  _this.rotateToCamera();
85
105
 
@@ -92,48 +112,185 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
92
112
  if (_this.position.distanceTo(_this.five.camera.position) < 3) _this.rotateToCamera();
93
113
  });
94
114
 
115
+ _this.params = params;
95
116
  _this.five = params.five;
96
117
  _this.treasureID = params.id;
97
118
 
98
119
  _this.position.copy(params.position);
99
120
 
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();
117
-
118
- _this.five.on('panoArrived', _this.onFivePanoArrived);
121
+ var scale = 0.008 * params.config.scale;
119
122
 
120
- _this.five.on('wantsTapGesture', _this.onFiveWantsTapGesture);
123
+ _this.scale.fromArray([scale, scale, scale]);
121
124
 
122
125
  return _this;
123
126
  }
124
127
 
125
128
  _createClass(TreasureObject, [{
129
+ key: "load",
130
+ value: function () {
131
+ var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
132
+ var _this2 = this;
133
+
134
+ var _yield$this$modelGrou, modelGroup, originGroup;
135
+
136
+ return regeneratorRuntime.wrap(function _callee$(_context) {
137
+ while (1) {
138
+ switch (_context.prev = _context.next) {
139
+ case 0:
140
+ this.modelGroupPromise = this.getModelPromise();
141
+ _context.next = 3;
142
+ return this.modelGroupPromise;
143
+
144
+ case 3:
145
+ _yield$this$modelGrou = _context.sent;
146
+ modelGroup = _yield$this$modelGrou.modelGroup;
147
+ originGroup = _yield$this$modelGrou.originGroup;
148
+ this.add(modelGroup); // ========== openAnime ==========
149
+
150
+ this.openAnime = new _TreasureOpenAnime.TreasurePluginOpenAnime({
151
+ five: this.five,
152
+ treasureGroup: modelGroup,
153
+ onComplete: function onComplete() {
154
+ var _this2$params$onOpenA, _this2$params;
155
+
156
+ return (_this2$params$onOpenA = (_this2$params = _this2.params).onOpenAnimationEnded) === null || _this2$params$onOpenA === void 0 ? void 0 : _this2$params$onOpenA.call(_this2$params, _this2.treasureID);
157
+ },
158
+ animationClip: originGroup.animations[0]
159
+ }); // ========== faceAnime ==========
160
+
161
+ this.faceAnime = new _TreasureFaceAnime.TreasureFaceAnime({
162
+ five: this.five,
163
+ treasureGroup: modelGroup,
164
+ loadTexture: this.params.loadTexture,
165
+ textureUrls: this.params.config.faceAnimeTextureUrls
166
+ });
167
+ this.faceAnime.play(); // ========== addEventListener ==========
168
+
169
+ this.five.on('panoArrived', this.onFivePanoArrived);
170
+ this.five.on('wantsTapGesture', this.onFiveWantsTapGesture);
171
+ this.five.needsRender = true;
172
+ return _context.abrupt("return", this);
173
+
174
+ case 14:
175
+ case "end":
176
+ return _context.stop();
177
+ }
178
+ }
179
+ }, _callee, this);
180
+ }));
181
+
182
+ function load() {
183
+ return _load.apply(this, arguments);
184
+ }
185
+
186
+ return load;
187
+ }()
188
+ }, {
189
+ key: "show",
190
+ value: function () {
191
+ var _show = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(params) {
192
+ var _params$duration,
193
+ _this3 = this;
194
+
195
+ var _yield$this$modelGrou2, modelGroup;
196
+
197
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
198
+ while (1) {
199
+ switch (_context2.prev = _context2.next) {
200
+ case 0:
201
+ _context2.next = 2;
202
+ return this.modelGroupPromise;
203
+
204
+ case 2:
205
+ _yield$this$modelGrou2 = _context2.sent;
206
+ modelGroup = _yield$this$modelGrou2.modelGroup;
207
+ (0, _BetterTween.tweenProgress)().duration((_params$duration = params === null || params === void 0 ? void 0 : params.duration) !== null && _params$duration !== void 0 ? _params$duration : 300).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref) {
208
+ var progress = _ref.progress;
209
+ modelGroup.children.forEach(function (child) {
210
+ var obj = child;
211
+ obj.material && (obj.material.opacity = progress);
212
+ _this3.five.needsRender = true;
213
+ });
214
+ }).play();
215
+ return _context2.abrupt("return", true);
216
+
217
+ case 6:
218
+ case "end":
219
+ return _context2.stop();
220
+ }
221
+ }
222
+ }, _callee2, this);
223
+ }));
224
+
225
+ function show(_x) {
226
+ return _show.apply(this, arguments);
227
+ }
228
+
229
+ return show;
230
+ }()
231
+ }, {
232
+ key: "hide",
233
+ value: function () {
234
+ var _hide = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(params) {
235
+ var _params$duration2,
236
+ _this4 = this;
237
+
238
+ var _yield$this$modelGrou3, modelGroup;
239
+
240
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
241
+ while (1) {
242
+ switch (_context3.prev = _context3.next) {
243
+ case 0:
244
+ _context3.next = 2;
245
+ return this.modelGroupPromise;
246
+
247
+ case 2:
248
+ _yield$this$modelGrou3 = _context3.sent;
249
+ modelGroup = _yield$this$modelGrou3.modelGroup;
250
+ (0, _BetterTween.tweenProgress)().duration((_params$duration2 = params === null || params === void 0 ? void 0 : params.duration) !== null && _params$duration2 !== void 0 ? _params$duration2 : 300).easing(TWEEN.Easing.Quadratic.InOut).onUpdate(function (_ref2) {
251
+ var progress = _ref2.progress;
252
+ modelGroup.children.forEach(function (child) {
253
+ var obj = child;
254
+ obj.material && (obj.material.opacity = 1 - progress);
255
+ _this4.five.needsRender = true;
256
+ });
257
+ }).play();
258
+ return _context3.abrupt("return", true);
259
+
260
+ case 6:
261
+ case "end":
262
+ return _context3.stop();
263
+ }
264
+ }
265
+ }, _callee3, this);
266
+ }));
267
+
268
+ function hide(_x2) {
269
+ return _hide.apply(this, arguments);
270
+ }
271
+
272
+ return hide;
273
+ }()
274
+ /** 销毁当前宝箱实例
275
+ * @description 注意 dispose 并不会销毁所使用的贴图,因为贴图会有共用关系,需要在最外层销毁
276
+ */
277
+
278
+ }, {
126
279
  key: "dispose",
127
280
  value: function dispose() {
128
- this.faceAnime.dispose();
129
- this.openAnime.dispose();
281
+ var _this$faceAnime, _this$openAnime;
282
+
283
+ (_this$faceAnime = this.faceAnime) === null || _this$faceAnime === void 0 ? void 0 : _this$faceAnime.dispose();
284
+ (_this$openAnime = this.openAnime) === null || _this$openAnime === void 0 ? void 0 : _this$openAnime.dispose();
130
285
  this.five.off('panoArrived', this.onFivePanoArrived);
131
286
  this.five.off('wantsTapGesture', this.onFiveWantsTapGesture);
132
287
  }
288
+ /** 旋转宝箱朝向用户 */
289
+
133
290
  }, {
134
291
  key: "rotateToCamera",
135
292
  value: function rotateToCamera() {
136
- var _this3 = this;
293
+ var _this5 = this;
137
294
 
138
295
  if (this.opened) return; // 宝箱朝向
139
296
 
@@ -148,36 +305,95 @@ var TreasureObject = /*#__PURE__*/function (_THREE$Object3D) {
148
305
  var speed = 8;
149
306
  var duration = Math.ceil(deltaRadY / speed * 1000);
150
307
  var rotationStartY = this.rotation.y;
151
- (0, _BetterTween.tweenProgress)(duration).onUpdate(function (_ref) {
152
- var progress = _ref.progress;
153
- _this3.rotation.y = rotationStartY + progress * deltaRadY * rotateDirection;
308
+ (0, _BetterTween.tweenProgress)(duration).onUpdate(function (_ref3) {
309
+ var progress = _ref3.progress;
310
+ _this5.rotation.y = rotationStartY + progress * deltaRadY * rotateDirection;
154
311
  }).play();
155
312
  }
313
+ /** 打开宝箱 */
314
+
156
315
  }, {
157
316
  key: "open",
158
317
  value: function open() {
318
+ var _this$faceAnime2, _this$faceAnime3, _this$openAnime2;
319
+
320
+ if (!this.openAnime) return false;
159
321
  if (this.opened) return false;
160
322
  this.opened = true;
161
- this.faceAnime.pause();
162
- this.faceAnime.setToInitialState();
163
- this.openAnime.play();
323
+ (_this$faceAnime2 = this.faceAnime) === null || _this$faceAnime2 === void 0 ? void 0 : _this$faceAnime2.pause();
324
+ (_this$faceAnime3 = this.faceAnime) === null || _this$faceAnime3 === void 0 ? void 0 : _this$faceAnime3.setToInitialState();
325
+ (_this$openAnime2 = this.openAnime) === null || _this$openAnime2 === void 0 ? void 0 : _this$openAnime2.play();
164
326
  return true;
165
327
  }
166
328
  }, {
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
- }
329
+ key: "getModelPromise",
330
+ value: function () {
331
+ var _getModelPromise = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
332
+ var originGroup, modelGroup, _yield$to, _yield$to2, boxTextureError, boxTexture;
333
+
334
+ return regeneratorRuntime.wrap(function _callee4$(_context4) {
335
+ while (1) {
336
+ switch (_context4.prev = _context4.next) {
337
+ case 0:
338
+ _context4.next = 2;
339
+ return this.params.loadModelGroup(this.params.config.objectUrl);
340
+
341
+ case 2:
342
+ originGroup = _context4.sent;
343
+ modelGroup = originGroup.clone();
344
+ modelGroup.traverse(function (obj) {
345
+ if (!(obj instanceof THREE.Mesh)) return;
346
+ obj.material = copyMaterial(obj.material);
347
+ if (obj.material.map) obj.material.map.encoding = THREE.sRGBEncoding;
348
+ obj.renderOrder = 2;
349
+ });
350
+
351
+ if (!this.params.config.boxTextureUrl) {
352
+ _context4.next = 17;
353
+ break;
354
+ }
355
+
356
+ _context4.next = 8;
357
+ return (0, _to["default"])(this.params.loadTexture(this.params.config.boxTextureUrl));
358
+
359
+ case 8:
360
+ _yield$to = _context4.sent;
361
+ _yield$to2 = _slicedToArray(_yield$to, 2);
362
+ boxTextureError = _yield$to2[0];
363
+ boxTexture = _yield$to2[1];
364
+
365
+ if (!(boxTextureError || !boxTexture)) {
366
+ _context4.next = 14;
367
+ break;
368
+ }
369
+
370
+ throw new Error('加载盒子贴图失败');
371
+
372
+ case 14:
373
+ boxTexture.encoding = THREE.sRGBEncoding;
374
+ modelGroup.getObjectByName('box').material.map = boxTexture;
375
+ modelGroup.getObjectByName('box2').material.map = boxTexture;
376
+
377
+ case 17:
378
+ return _context4.abrupt("return", {
379
+ modelGroup: modelGroup,
380
+ originGroup: originGroup
381
+ });
382
+
383
+ case 18:
384
+ case "end":
385
+ return _context4.stop();
386
+ }
387
+ }
388
+ }, _callee4, this);
389
+ }));
390
+
391
+ function getModelPromise() {
392
+ return _getModelPromise.apply(this, arguments);
393
+ }
394
+
395
+ return getModelPromise;
396
+ }()
181
397
  }]);
182
398
 
183
399
  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
  };
@@ -32,9 +32,11 @@ function Camera(props) {
32
32
  top: topRatio * 100 + '%'
33
33
  };
34
34
  var lng = props.lastPanoramaLongitude;
35
- var rotate = -(0, _rad2Deg["default"])(lng) + 45;
35
+ var rotate = -(0, _rad2Deg["default"])(lng) + 45; // TODO: 统一这里的判断条件,目前写了多处
36
+
36
37
  var bodyWidth = document.body.clientWidth;
37
- var size = bodyWidth < 500 ? 24 : 37;
38
+ var bodyHeight = document.body.clientHeight;
39
+ var size = bodyWidth < 500 || bodyHeight < 500 ? 17 : 37;
38
40
  var rotateBaseStyle = {
39
41
  position: 'absolute',
40
42
  left: "".concat((0, _px2rem["default"])(-15)),
@@ -29,8 +29,9 @@ function Compass(props) {
29
29
  position: 'absolute',
30
30
  left: '50%',
31
31
  top: "".concat((0, _px2rem["default"])(-46)),
32
+ willChange: 'opacity',
32
33
  transformOrigin: "center ".concat((0, _px2rem["default"])(184)),
33
- transform: "translateX(-50%) rotate(".concat(-rotate + 90, "deg)")
34
+ transform: "translateX(-50%) translateZ(10px) rotate(".concat(-rotate + 90, "deg)")
34
35
  };
35
36
  var imageStyle = {
36
37
  width: '100%',
@@ -61,12 +61,15 @@ function RoomLabel(props) {
61
61
  flexFlow: 'column',
62
62
  alignItems: 'center',
63
63
  fontSize: "".concat((0, _px2rem["default"])(10)),
64
+ lineHeight: "".concat((0, _px2rem["default"])(15)),
64
65
  color: '#fff',
65
66
  transform: 'translate(-50%, -50%)',
66
67
  whiteSpace: 'nowrap'
67
- };
68
+ }; // TODO: 统一这里的判断条件,目前写了多处
69
+
68
70
  var bodyWidth = document.body.clientWidth;
69
- var fontSize = bodyWidth < 500 ? 10 : 14;
71
+ var bodyHeight = document.body.clientHeight;
72
+ var fontSize = bodyWidth < 500 || bodyHeight < 500 ? 10 : 14;
70
73
  var roomNameStyle = {
71
74
  fontSize: "".concat((0, _px2rem["default"])(fontSize))
72
75
  };