@anov/3d-ability 0.0.110 → 0.0.112

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.
@@ -34,7 +34,15 @@ interface MaterialSwitchUniforms {
34
34
  isApi: {
35
35
  value: boolean;
36
36
  };
37
+ height: {
38
+ value: number;
39
+ };
37
40
  }
41
+ type RuleItem = {
42
+ type: string;
43
+ keys: string[];
44
+ material: string;
45
+ };
38
46
  /**
39
47
  * 材质切换系统
40
48
  */
@@ -52,6 +60,7 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
52
60
  private rules;
53
61
  constructor(options?: MaterialSwitchOption);
54
62
  private initializeUniforms;
63
+ private initializeBuiltInShader;
55
64
  private hideAllObjects;
56
65
  private showObjectsByType;
57
66
  switchType(type: MaterialSwitchType, option?: {
@@ -59,6 +68,7 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
59
68
  duration?: number;
60
69
  center?: number[];
61
70
  genPlane?: boolean;
71
+ rules?: RuleItem[];
62
72
  }): void;
63
73
  private handleApiOption;
64
74
  private cleanupAnimations;
@@ -70,6 +80,9 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
70
80
  private getObjectUuid;
71
81
  private handleGroundObject;
72
82
  private handleGroundMatching;
83
+ private getMaterialByName;
84
+ private replaceMaterial;
85
+ private resetMaterial;
73
86
  private handleNameMatching;
74
87
  private handleSizeMatching;
75
88
  private matchingStrategy;
@@ -82,7 +95,7 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
82
95
  private getMaxSize;
83
96
  private getBoxVertices;
84
97
  private calculateMaxDistance;
85
- private generateFinalObject;
98
+ private generateFresnelObject;
86
99
  private generateRealObject;
87
100
  private generatePureObject;
88
101
  private generateFrameObject;
@@ -1,4 +1,13 @@
1
1
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
3
+ 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); } }
4
+ 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); }); }; }
5
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
6
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ 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); }
8
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
9
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
+ 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; }
2
11
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
12
  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, _toPropertyKey(descriptor.key), descriptor); } }
4
13
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
@@ -12,8 +21,9 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
12
21
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
22
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
14
23
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
15
- import { Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
16
- import { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
24
+ import { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
25
+ import { SurfaceMaterial } from "../../";
26
+ import { finirheightTransitionEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
17
27
  var DEFAULT_CENTER = new Vector3();
18
28
  var GROUND_Y_OFFSET = -0.1;
19
29
  var SIZE_SCALE_FACTOR = 1.2;
@@ -46,11 +56,11 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
46
56
  _defineProperty(_assertThisInitialized(_this), "isGenPlane", false);
47
57
  _defineProperty(_assertThisInitialized(_this), "rules", []);
48
58
  _defineProperty(_assertThisInitialized(_this), "matchingStrategy", {
49
- matchSize: function matchSize(rule) {
50
- return _this.handleSizeMatching(rule);
59
+ matchSize: function matchSize(rule, type) {
60
+ return _this.handleSizeMatching(rule, type);
51
61
  },
52
- matchName: function matchName(rule) {
53
- return _this.handleNameMatching(rule);
62
+ matchName: function matchName(rule, type) {
63
+ return _this.handleNameMatching(rule, type);
54
64
  }
55
65
  });
56
66
  var _ref = options !== null && options !== void 0 ? options : {},
@@ -63,8 +73,10 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
63
73
  _this.center = center;
64
74
  _this.uniforms = _this.initializeUniforms();
65
75
  _this.uniforms.isApi.value = isApi;
76
+ _this.initializeBuiltInShader();
66
77
  use.useframe(function () {
67
78
  _this.uniforms.time.value += 0.00018;
79
+ _this.uniforms.height.value -= 1;
68
80
  });
69
81
  return _this;
70
82
  }
@@ -96,11 +108,19 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
96
108
  time: {
97
109
  value: 0
98
110
  },
111
+ height: {
112
+ value: 0
113
+ },
99
114
  isApi: {
100
115
  value: false
101
116
  }
102
117
  };
103
118
  }
119
+ }, {
120
+ key: "initializeBuiltInShader",
121
+ value: function initializeBuiltInShader() {
122
+ SurfaceMaterial.getMaterialAll();
123
+ }
104
124
  }, {
105
125
  key: "hideAllObjects",
106
126
  value: function hideAllObjects() {
@@ -120,7 +140,25 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
120
140
  }, {
121
141
  key: "switchType",
122
142
  value: function switchType(type, option) {
143
+ var _option$rules;
123
144
  if (this.type === type) return;
145
+ if (type === 'Fresnel') {
146
+ var light = new AmbientLight(0xFFFFFF, 1.5);
147
+ light.name = 'FresnelLight';
148
+ use.useScene().scene.add(light);
149
+ } else {
150
+ var _light = use.useScene().scene.getObjectByName('FresnelLight');
151
+ if (_light) _light.removeFromParent();
152
+ }
153
+ this.rules = [{
154
+ type: 'matchName',
155
+ keys: ['Tall'],
156
+ material: 'MfresnelGlow'
157
+ }, {
158
+ type: 'matchName',
159
+ keys: ['Fence'],
160
+ material: 'Moriginal'
161
+ }].concat(_toConsumableArray((_option$rules = option === null || option === void 0 ? void 0 : option.rules) !== null && _option$rules !== void 0 ? _option$rules : []));
124
162
  this.handleApiOption(option);
125
163
  this.handleMatch(type);
126
164
  this.cleanupAnimations();
@@ -240,7 +278,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
240
278
  Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
241
279
  objectMap.forEach(function (object) {
242
280
  if (GROUND_MATCHING.some(function (matching) {
243
- return object.name.includes(matching);
281
+ return object.name.toLowerCase().startsWith(matching);
244
282
  })) {
245
283
  isMatch = true;
246
284
  object.removeFromParent();
@@ -250,39 +288,121 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
250
288
  });
251
289
  if (isMatch && type !== 'Real') this.handleGroundObject(type);
252
290
  }
291
+ }, {
292
+ key: "getMaterialByName",
293
+ value: function () {
294
+ var _getMaterialByName = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(name) {
295
+ var material;
296
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
297
+ while (1) switch (_context.prev = _context.next) {
298
+ case 0:
299
+ _context.next = 2;
300
+ return SurfaceMaterial.getMaterial(name);
301
+ case 2:
302
+ material = _context.sent;
303
+ return _context.abrupt("return", material);
304
+ case 4:
305
+ case "end":
306
+ return _context.stop();
307
+ }
308
+ }, _callee);
309
+ }));
310
+ function getMaterialByName(_x) {
311
+ return _getMaterialByName.apply(this, arguments);
312
+ }
313
+ return getMaterialByName;
314
+ }()
315
+ }, {
316
+ key: "replaceMaterial",
317
+ value: function () {
318
+ var _replaceMaterial = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(object, materialName, type) {
319
+ var material;
320
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
321
+ while (1) switch (_context2.prev = _context2.next) {
322
+ case 0:
323
+ if (!object.userData.isMatched) {
324
+ _context2.next = 2;
325
+ break;
326
+ }
327
+ return _context2.abrupt("return");
328
+ case 2:
329
+ if (!(materialName === 'MfresnelGlow')) {
330
+ _context2.next = 6;
331
+ break;
332
+ }
333
+ object.material = finirheightTransitionEffect(object.material, this.uniforms);
334
+ _context2.next = 14;
335
+ break;
336
+ case 6:
337
+ if (!(materialName === 'Moriginal')) {
338
+ _context2.next = 10;
339
+ break;
340
+ }
341
+ object.material = object.userData.originalMaterial;
342
+ _context2.next = 14;
343
+ break;
344
+ case 10:
345
+ _context2.next = 12;
346
+ return this.getMaterialByName(materialName);
347
+ case 12:
348
+ material = _context2.sent;
349
+ object.material = inject(material, type, this.uniforms);
350
+ case 14:
351
+ object.userData.isMatched = true;
352
+ case 15:
353
+ case "end":
354
+ return _context2.stop();
355
+ }
356
+ }, _callee2, this);
357
+ }));
358
+ function replaceMaterial(_x2, _x3, _x4) {
359
+ return _replaceMaterial.apply(this, arguments);
360
+ }
361
+ return replaceMaterial;
362
+ }()
363
+ }, {
364
+ key: "resetMaterial",
365
+ value: function resetMaterial(object, type) {
366
+ this["generate".concat(type, "Object")](object);
367
+ }
253
368
  }, {
254
369
  key: "handleNameMatching",
255
- value: function handleNameMatching(rule) {
370
+ value: function handleNameMatching(rule, type) {
371
+ var _this4 = this;
256
372
  var keys = rule.keys,
257
373
  material = rule.material;
258
- var objects = [];
259
- var isMatch = false;
260
- Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
261
- objectMap.forEach(function (object) {
262
- if (GROUND_MATCHING.some(function (matching) {
263
- return object.name.includes(matching);
264
- })) {
265
- isMatch = true;
266
- object.removeFromParent();
267
- objectMap.delete(object.uuid);
374
+ this.objectsMap[type].forEach(function (object) {
375
+ object.traverse(function (child) {
376
+ if (child.type === 'Mesh') {
377
+ var mesh = child;
378
+ if (keys.some(function (matching) {
379
+ var _mesh$parent;
380
+ return mesh.name.includes(matching) || (mesh === null || mesh === void 0 || (_mesh$parent = mesh.parent) === null || _mesh$parent === void 0 ? void 0 : _mesh$parent.name.includes(matching));
381
+ })) _this4.replaceMaterial(mesh, material, type);
268
382
  }
269
383
  });
270
384
  });
271
- if (isMatch) {
272
- // handle object to other material
273
- }
274
385
  }
275
386
  }, {
276
387
  key: "handleSizeMatching",
277
- value: function handleSizeMatching(rule) {}
388
+ value: function handleSizeMatching(rule, type) {}
278
389
  }, {
279
390
  key: "handleMatch",
280
391
  value: function handleMatch(type) {
281
- var _this4 = this;
392
+ var _this5 = this;
282
393
  if (this.isGenPlane) this.handleGroundMatching(type);
394
+ if (type === 'Real') return;
395
+ this.objectsMap[type].forEach(function (object) {
396
+ object.traverse(function (child) {
397
+ if (child.type === 'Mesh') {
398
+ if (child.userData.isMatched) _this5.resetMaterial(child, type);
399
+ }
400
+ child.userData.isMatched = false;
401
+ });
402
+ });
283
403
  if (this.rules.length > 0) {
284
404
  this.rules.forEach(function (rule) {
285
- _this4.matchingStrategy[rule.type](rule);
405
+ _this5.matchingStrategy[rule.type](rule, type);
286
406
  });
287
407
  }
288
408
  }
@@ -294,7 +414,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
294
414
  this.objectsMap.Real.set(uuid, realObject);
295
415
  this.add(realObject);
296
416
  var fresnelObject = object.clone();
297
- this.generateFinalObject(fresnelObject);
417
+ this.generateFresnelObject(fresnelObject);
298
418
  this.objectsMap.Fresnel.set(uuid, fresnelObject);
299
419
  this.add(fresnelObject);
300
420
  var pureObject = object.clone();
@@ -372,15 +492,15 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
372
492
  }, {
373
493
  key: "calculateMaxDistance",
374
494
  value: function calculateMaxDistance(vertices) {
375
- var _this5 = this;
495
+ var _this6 = this;
376
496
  return vertices.reduce(function (max, vertex) {
377
- var distance = _this5.center.distanceTo(vertex);
497
+ var distance = _this6.center.distanceTo(vertex);
378
498
  return Math.max(max, distance);
379
499
  }, 0);
380
500
  }
381
501
  }, {
382
- key: "generateFinalObject",
383
- value: function generateFinalObject(object) {
502
+ key: "generateFresnelObject",
503
+ value: function generateFresnelObject(object) {
384
504
  injectToFinirMaterial(object, this.uniforms);
385
505
  }
386
506
  }, {
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","Real","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","value","useframe","time","_createClass","key","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","hideAllObjects","Object","values","objectsMap","forEach","objectMap","object","visible","showObjectsByType","type","switchType","option","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","undefined","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","concat","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","add","handleGroundMatching","isMatch","slice","some","matching","name","includes","removeFromParent","delete","keys","material","_this4","rules","length","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFinalObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","obj","get","box","box3","getSize","getCenter","plane","x","z","color","mesh","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","y","max","_this5","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n if (this.type === type)\n return\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private handleNameMatching(rule: RuleItem) {\n const { keys, material } = rule\n const objects = []\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch) {\n // handle object to other material\n }\n }\n\n private handleSizeMatching(rule: RuleItem) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem) => this.handleSizeMatching(rule),\n matchName: (rule: RuleItem) => this.handleNameMatching(rule),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFinalObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFinalObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","minLen","_arrayLikeToArray","toString","Array","from","test","iter","isArray","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AmbientLight","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","finirheightTransitionEffect","inject","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_super","options","_this","Map","Real","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","initializeBuiltInShader","useframe","time","height","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","light","useScene","scene","add","getObjectByName","removeFromParent","rules","material","concat","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","handleGroundMatching","isMatch","some","matching","toLowerCase","startsWith","delete","_getMaterialByName","_callee","_callee$","_context","getMaterial","getMaterialByName","_x","_replaceMaterial","_callee2","materialName","_callee2$","_context2","userData","isMatched","originalMaterial","replaceMaterial","_x2","_x3","_x4","resetMaterial","_this4","traverse","child","mesh","_mesh$parent","includes","parent","_this5","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFresnelObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","get","box","box3","getSize","getCenter","plane","x","z","color","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","max","_this6","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import type { Material, MeshPhysicalMaterial, ShaderMaterial } from '@anov/3d-core'\nimport { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\nimport { finirheightTransitionEffect, frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n height: { value: number }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n this.initializeBuiltInShader()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n this.uniforms.height.value -= 1\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n height: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private initializeBuiltInShader() {\n SurfaceMaterial.getMaterialAll()\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n rules?: RuleItem[]\n }): void {\n if (this.type === type)\n return\n\n if (type === 'Fresnel') {\n const light = new AmbientLight(0xFFFFFF, 1.5)\n light.name = 'FresnelLight'\n use.useScene().scene.add(light)\n }\n else {\n const light = use.useScene().scene.getObjectByName('FresnelLight')\n if (light)\n light.removeFromParent()\n }\n\n this.rules = [{\n type: 'matchName',\n keys: [\n 'Tall',\n ],\n material: 'MfresnelGlow',\n },\n {\n type: 'matchName',\n keys: [\n 'Fence',\n ],\n material: 'Moriginal',\n }, ...option?.rules ?? []]\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.toLowerCase().startsWith(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private async getMaterialByName(name: string) {\n const material = await SurfaceMaterial.getMaterial(name)\n\n return material\n }\n\n private async replaceMaterial(object: Mesh, materialName: string, type: string) {\n if (object.userData.isMatched)\n return\n\n if (materialName === 'MfresnelGlow') {\n object.material = finirheightTransitionEffect(object.material as Material, this.uniforms)\n }\n else if (materialName === 'Moriginal') {\n object.material = object.userData.originalMaterial\n }\n else {\n const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\n }\n\n object.userData.isMatched = true\n }\n\n private resetMaterial(object: Mesh, type: MaterialSwitchType) {\n this[`generate${type}Object`](object)\n }\n\n private handleNameMatching(rule: RuleItem, type: MaterialSwitchType) {\n const { keys, material } = rule\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n const mesh = child as Mesh\n\n if (keys.some(matching => mesh.name.includes(matching) || mesh?.parent?.name.includes(matching)))\n this.replaceMaterial(mesh, material, type)\n }\n })\n })\n }\n\n private handleSizeMatching(rule: RuleItem, type: MaterialSwitchType) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem, type: MaterialSwitchType) => this.handleSizeMatching(rule, type),\n matchName: (rule: RuleItem, type: MaterialSwitchType) => this.handleNameMatching(rule, type),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (type === 'Real')\n return\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n if (child.userData.isMatched)\n this.resetMaterial(child as Mesh, type)\n }\n\n child.userData.isMatched = false\n })\n })\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule, type)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFresnelObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFresnelObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Mesh, Object3D, Vector3 } from '@anov/3d-core';
1
+ import type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core';
2
2
  export declare const frameMaterialCache: any[];
3
3
  export declare const realMaterialCache: any[];
4
4
  export declare const pureMaterialCache: any[];
@@ -82,7 +82,7 @@ export declare const injectToFinirMaterial: (object: Object3D, uniforms: {
82
82
  value: boolean;
83
83
  };
84
84
  }) => void;
85
- export declare const inject: (object: Object3D, type: 'Real' | 'Fresnel' | 'Frame' | 'Pure', uniforms: {
85
+ export declare const injectToGround: (object: Mesh, type: 'Real' | 'Fresnel' | 'Frame' | 'Pure', uniforms: {
86
86
  maxSize: {
87
87
  value: number;
88
88
  };
@@ -92,8 +92,14 @@ export declare const inject: (object: Object3D, type: 'Real' | 'Fresnel' | 'Fram
92
92
  progress: {
93
93
  value: number;
94
94
  };
95
+ time: {
96
+ value: number;
97
+ };
98
+ isApi: {
99
+ value: boolean;
100
+ };
95
101
  }) => void;
96
- export declare const injectToGround: (object: Mesh, type: 'Real' | 'Fresnel' | 'Frame' | 'Pure', uniforms: {
102
+ export declare const inject: (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: {
97
103
  maxSize: {
98
104
  value: number;
99
105
  };
@@ -103,10 +109,24 @@ export declare const injectToGround: (object: Mesh, type: 'Real' | 'Fresnel' | '
103
109
  progress: {
104
110
  value: number;
105
111
  };
106
- time: {
112
+ height: {
107
113
  value: number;
108
114
  };
109
- isApi: {
115
+ }, isSweepAway?: boolean) => Material;
116
+ export declare const finirheightTransitionEffect: (material: Material, uniforms: {
117
+ height: {
118
+ value: number;
119
+ };
120
+ maxSize: {
121
+ value: number;
122
+ };
123
+ center: {
124
+ value: Vector3;
125
+ };
126
+ progress: {
127
+ value: number;
128
+ };
129
+ isFresnelFadeIn: {
110
130
  value: boolean;
111
131
  };
112
- }) => void;
132
+ }) => Material;