@anov/3d-ability 0.0.111 → 0.0.113
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +3 -0
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +51 -7
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.d.ts +20 -0
- package/dist/business/MaterialSwitch/inject.js +79 -8
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.d.ts +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +1 -3
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,12 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
|
|
|
2
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
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
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; }
|
|
5
11
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
6
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); } }
|
|
7
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; }
|
|
@@ -15,9 +21,9 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
15
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; }
|
|
16
22
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
17
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); }
|
|
18
|
-
import { Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
|
|
24
|
+
import { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
|
|
19
25
|
import { SurfaceMaterial } from "../../";
|
|
20
|
-
import { inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
|
|
26
|
+
import { finirheightTransitionEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
|
|
21
27
|
var DEFAULT_CENTER = new Vector3();
|
|
22
28
|
var GROUND_Y_OFFSET = -0.1;
|
|
23
29
|
var SIZE_SCALE_FACTOR = 1.2;
|
|
@@ -70,6 +76,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
70
76
|
_this.initializeBuiltInShader();
|
|
71
77
|
use.useframe(function () {
|
|
72
78
|
_this.uniforms.time.value += 0.00018;
|
|
79
|
+
_this.uniforms.height.value -= 1;
|
|
73
80
|
});
|
|
74
81
|
return _this;
|
|
75
82
|
}
|
|
@@ -101,6 +108,9 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
101
108
|
time: {
|
|
102
109
|
value: 0
|
|
103
110
|
},
|
|
111
|
+
height: {
|
|
112
|
+
value: 0
|
|
113
|
+
},
|
|
104
114
|
isApi: {
|
|
105
115
|
value: false
|
|
106
116
|
}
|
|
@@ -132,7 +142,23 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
132
142
|
value: function switchType(type, option) {
|
|
133
143
|
var _option$rules;
|
|
134
144
|
if (this.type === type) return;
|
|
135
|
-
|
|
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 : []));
|
|
136
162
|
this.handleApiOption(option);
|
|
137
163
|
this.handleMatch(type);
|
|
138
164
|
this.cleanupAnimations();
|
|
@@ -300,13 +326,30 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
300
326
|
}
|
|
301
327
|
return _context2.abrupt("return");
|
|
302
328
|
case 2:
|
|
303
|
-
|
|
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;
|
|
304
346
|
return this.getMaterialByName(materialName);
|
|
305
|
-
case
|
|
347
|
+
case 12:
|
|
306
348
|
material = _context2.sent;
|
|
307
349
|
object.material = inject(material, type, this.uniforms);
|
|
350
|
+
case 14:
|
|
308
351
|
object.userData.isMatched = true;
|
|
309
|
-
case
|
|
352
|
+
case 15:
|
|
310
353
|
case "end":
|
|
311
354
|
return _context2.stop();
|
|
312
355
|
}
|
|
@@ -333,7 +376,8 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
|
333
376
|
if (child.type === 'Mesh') {
|
|
334
377
|
var mesh = child;
|
|
335
378
|
if (keys.some(function (matching) {
|
|
336
|
-
|
|
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));
|
|
337
381
|
})) _this4.replaceMaterial(mesh, material, type);
|
|
338
382
|
}
|
|
339
383
|
});
|
|
@@ -1 +1 @@
|
|
|
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","_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","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","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","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","rules","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","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","some","matching","toLowerCase","startsWith","removeFromParent","delete","_getMaterialByName","_callee","material","_callee$","_context","getMaterial","getMaterialByName","_x","_replaceMaterial","_callee2","materialName","_callee2$","_context2","userData","isMatched","replaceMaterial","_x2","_x3","_x4","resetMaterial","_this4","traverse","child","mesh","includes","_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 { MeshPhysicalMaterial } from '@anov/3d-core'\nimport { Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\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 this.initializeBuiltInShader()\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 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 this.rules = 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 const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\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 if (keys.some(matching => mesh.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":";+CACA,qJAAAA,mBAAA,YAAAA,oBAAA,WAAAC,CAAA,SAAAC,CAAA,EAAAD,CAAA,OAAAE,CAAA,GAAAC,MAAA,CAAAC,SAAA,EAAAC,CAAA,GAAAH,CAAA,CAAAI,cAAA,EAAAC,CAAA,GAAAJ,MAAA,CAAAK,cAAA,cAAAP,CAAA,EAAAD,CAAA,EAAAE,CAAA,IAAAD,CAAA,CAAAD,CAAA,IAAAE,CAAA,CAAAO,KAAA,KAAAC,CAAA,wBAAAC,MAAA,GAAAA,MAAA,OAAAC,CAAA,GAAAF,CAAA,CAAAG,QAAA,kBAAAC,CAAA,GAAAJ,CAAA,CAAAK,aAAA,uBAAAC,CAAA,GAAAN,CAAA,CAAAO,WAAA,8BAAAC,OAAAjB,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAC,MAAA,CAAAK,cAAA,CAAAP,CAAA,EAAAD,CAAA,IAAAS,KAAA,EAAAP,CAAA,EAAAiB,UAAA,MAAAC,YAAA,MAAAC,QAAA,SAAApB,CAAA,CAAAD,CAAA,WAAAkB,MAAA,mBAAAjB,CAAA,IAAAiB,MAAA,YAAAA,OAAAjB,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAD,CAAA,CAAAD,CAAA,IAAAE,CAAA,gBAAAoB,KAAArB,CAAA,EAAAD,CAAA,EAAAE,CAAA,EAAAG,CAAA,QAAAK,CAAA,GAAAV,CAAA,IAAAA,CAAA,CAAAI,SAAA,YAAAmB,SAAA,GAAAvB,CAAA,GAAAuB,SAAA,EAAAX,CAAA,GAAAT,MAAA,CAAAqB,MAAA,CAAAd,CAAA,CAAAN,SAAA,GAAAU,CAAA,OAAAW,OAAA,CAAApB,CAAA,gBAAAE,CAAA,CAAAK,CAAA,eAAAH,KAAA,EAAAiB,gBAAA,CAAAzB,CAAA,EAAAC,CAAA,EAAAY,CAAA,MAAAF,CAAA,aAAAe,SAAA1B,CAAA,EAAAD,CAAA,EAAAE,CAAA,mBAAA0B,IAAA,YAAAC,GAAA,EAAA5B,CAAA,CAAA6B,IAAA,CAAA9B,CAAA,EAAAE,CAAA,cAAAD,CAAA,aAAA2B,IAAA,WAAAC,GAAA,EAAA5B,CAAA,QAAAD,CAAA,CAAAsB,IAAA,GAAAA,IAAA,MAAAS,CAAA,qBAAAC,CAAA,qBAAAC,CAAA,gBAAAC,CAAA,gBAAAC,CAAA,gBAAAZ,UAAA,cAAAa,kBAAA,cAAAC,2BAAA,SAAAC,CAAA,OAAApB,MAAA,CAAAoB,CAAA,EAAA1B,CAAA,qCAAA2B,CAAA,GAAApC,MAAA,CAAAqC,cAAA,EAAAC,CAAA,GAAAF,CAAA,IAAAA,CAAA,CAAAA,CAAA,CAAAG,MAAA,QAAAD,CAAA,IAAAA,CAAA,KAAAvC,CAAA,IAAAG,CAAA,CAAAyB,IAAA,CAAAW,CAAA,EAAA7B,CAAA,MAAA0B,CAAA,GAAAG,CAAA,OAAAE,CAAA,GAAAN,0BAAA,CAAAjC,SAAA,GAAAmB,SAAA,CAAAnB,SAAA,GAAAD,MAAA,CAAAqB,MAAA,CAAAc,CAAA,YAAAM,sBAAA3C,CAAA,gCAAA4C,OAAA,WAAA7C,CAAA,IAAAkB,MAAA,CAAAjB,CAAA,EAAAD,CAAA,YAAAC,CAAA,gBAAA6C,OAAA,CAAA9C,CAAA,EAAAC,CAAA,sBAAA8C,cAAA9C,CAAA,EAAAD,CAAA,aAAAgD,OAAA9C,CAAA,EAAAK,CAAA,EAAAG,CAAA,EAAAE,CAAA,QAAAE,CAAA,GAAAa,QAAA,CAAA1B,CAAA,CAAAC,CAAA,GAAAD,CAAA,EAAAM,CAAA,mBAAAO,CAAA,CAAAc,IAAA,QAAAZ,CAAA,GAAAF,CAAA,CAAAe,GAAA,EAAAE,CAAA,GAAAf,CAAA,CAAAP,KAAA,SAAAsB,CAAA,gBAAAkB,OAAA,CAAAlB,CAAA,KAAA1B,CAAA,CAAAyB,IAAA,CAAAC,CAAA,eAAA/B,CAAA,CAAAkD,OAAA,CAAAnB,CAAA,CAAAoB,OAAA,EAAAC,IAAA,WAAAnD,CAAA,IAAA+C,MAAA,SAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,gBAAAX,CAAA,IAAA+C,MAAA,UAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,QAAAZ,CAAA,CAAAkD,OAAA,CAAAnB,CAAA,EAAAqB,IAAA,WAAAnD,CAAA,IAAAe,CAAA,CAAAP,KAAA,GAAAR,CAAA,EAAAS,CAAA,CAAAM,CAAA,gBAAAf,CAAA,WAAA+C,MAAA,UAAA/C,CAAA,EAAAS,CAAA,EAAAE,CAAA,SAAAA,CAAA,CAAAE,CAAA,CAAAe,GAAA,SAAA3B,CAAA,EAAAK,CAAA,oBAAAE,KAAA,WAAAA,MAAAR,CAAA,EAAAI,CAAA,aAAAgD,2BAAA,eAAArD,CAAA,WAAAA,CAAA,EAAAE,CAAA,IAAA8C,MAAA,CAAA/C,CAAA,EAAAI,CAAA,EAAAL,CAAA,EAAAE,CAAA,gBAAAA,CAAA,GAAAA,CAAA,GAAAA,CAAA,CAAAkD,IAAA,CAAAC,0BAAA,EAAAA,0BAAA,IAAAA,0BAAA,qBAAA3B,iBAAA1B,CAAA,EAAAE,CAAA,EAAAG,CAAA,QAAAE,CAAA,GAAAwB,CAAA,mBAAArB,CAAA,EAAAE,CAAA,QAAAL,CAAA,KAAA0B,CAAA,YAAAqB,KAAA,sCAAA/C,CAAA,KAAA2B,CAAA,oBAAAxB,CAAA,QAAAE,CAAA,WAAAH,KAAA,EAAAR,CAAA,EAAAsD,IAAA,eAAAlD,CAAA,CAAAmD,MAAA,GAAA9C,CAAA,EAAAL,CAAA,CAAAwB,GAAA,GAAAjB,CAAA,UAAAE,CAAA,GAAAT,CAAA,CAAAoD,QAAA,MAAA3C,CAAA,QAAAE,CAAA,GAAA0C,mBAAA,CAAA5C,CAAA,EAAAT,CAAA,OAAAW,CAAA,QAAAA,CAAA,KAAAmB,CAAA,mBAAAnB,CAAA,qBAAAX,CAAA,CAAAmD,MAAA,EAAAnD,CAAA,CAAAsD,IAAA,GAAAtD,CAAA,CAAAuD,KAAA,GAAAvD,CAAA,CAAAwB,GAAA,sBAAAxB,CAAA,CAAAmD,MAAA,QAAAjD,CAAA,KAAAwB,CAAA,QAAAxB,CAAA,GAAA2B,CAAA,EAAA7B,CAAA,CAAAwB,GAAA,EAAAxB,CAAA,CAAAwD,iBAAA,CAAAxD,CAAA,CAAAwB,GAAA,uBAAAxB,CAAA,CAAAmD,MAAA,IAAAnD,CAAA,CAAAyD,MAAA,WAAAzD,CAAA,CAAAwB,GAAA,GAAAtB,CAAA,GAAA0B,CAAA,MAAAK,CAAA,GAAAX,QAAA,CAAA3B,CAAA,EAAAE,CAAA,EAAAG,CAAA,oBAAAiC,CAAA,CAAAV,IAAA,QAAArB,CAAA,GAAAF,CAAA,CAAAkD,IAAA,GAAArB,CAAA,GAAAF,CAAA,EAAAM,CAAA,CAAAT,GAAA,KAAAM,CAAA,qBAAA1B,KAAA,EAAA6B,CAAA,CAAAT,GAAA,EAAA0B,IAAA,EAAAlD,CAAA,CAAAkD,IAAA,kBAAAjB,CAAA,CAAAV,IAAA,KAAArB,CAAA,GAAA2B,CAAA,EAAA7B,CAAA,CAAAmD,MAAA,YAAAnD,CAAA,CAAAwB,GAAA,GAAAS,CAAA,CAAAT,GAAA,mBAAA6B,oBAAA1D,CAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAH,CAAA,CAAAsD,MAAA,EAAAjD,CAAA,GAAAP,CAAA,CAAAa,QAAA,CAAAR,CAAA,OAAAE,CAAA,KAAAN,CAAA,SAAAC,CAAA,CAAAuD,QAAA,qBAAApD,CAAA,IAAAL,CAAA,CAAAa,QAAA,CAAAkD,MAAA,KAAA7D,CAAA,CAAAsD,MAAA,aAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,EAAAyD,mBAAA,CAAA1D,CAAA,EAAAE,CAAA,eAAAA,CAAA,CAAAsD,MAAA,kBAAAnD,CAAA,KAAAH,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,OAAAmC,SAAA,uCAAA3D,CAAA,iBAAA8B,CAAA,MAAAzB,CAAA,GAAAiB,QAAA,CAAApB,CAAA,EAAAP,CAAA,CAAAa,QAAA,EAAAX,CAAA,CAAA2B,GAAA,mBAAAnB,CAAA,CAAAkB,IAAA,SAAA1B,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,GAAAnB,CAAA,CAAAmB,GAAA,EAAA3B,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,MAAAvB,CAAA,GAAAF,CAAA,CAAAmB,GAAA,SAAAjB,CAAA,GAAAA,CAAA,CAAA2C,IAAA,IAAArD,CAAA,CAAAF,CAAA,CAAAiE,UAAA,IAAArD,CAAA,CAAAH,KAAA,EAAAP,CAAA,CAAAgE,IAAA,GAAAlE,CAAA,CAAAmE,OAAA,eAAAjE,CAAA,CAAAsD,MAAA,KAAAtD,CAAA,CAAAsD,MAAA,WAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,GAAAC,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,IAAAvB,CAAA,IAAAV,CAAA,CAAAsD,MAAA,YAAAtD,CAAA,CAAA2B,GAAA,OAAAmC,SAAA,sCAAA9D,CAAA,CAAAuD,QAAA,SAAAtB,CAAA,cAAAiC,aAAAnE,CAAA,QAAAD,CAAA,KAAAqE,MAAA,EAAApE,CAAA,YAAAA,CAAA,KAAAD,CAAA,CAAAsE,QAAA,GAAArE,CAAA,WAAAA,CAAA,KAAAD,CAAA,CAAAuE,UAAA,GAAAtE,CAAA,KAAAD,CAAA,CAAAwE,QAAA,GAAAvE,CAAA,WAAAwE,UAAA,CAAAC,IAAA,CAAA1E,CAAA,cAAA2E,cAAA1E,CAAA,QAAAD,CAAA,GAAAC,CAAA,CAAA2E,UAAA,QAAA5E,CAAA,CAAA4B,IAAA,oBAAA5B,CAAA,CAAA6B,GAAA,EAAA5B,CAAA,CAAA2E,UAAA,GAAA5E,CAAA,aAAAyB,QAAAxB,CAAA,SAAAwE,UAAA,MAAAJ,MAAA,aAAApE,CAAA,CAAA4C,OAAA,CAAAuB,YAAA,cAAAS,KAAA,iBAAAnC,OAAA1C,CAAA,QAAAA,CAAA,WAAAA,CAAA,QAAAE,CAAA,GAAAF,CAAA,CAAAY,CAAA,OAAAV,CAAA,SAAAA,CAAA,CAAA4B,IAAA,CAAA9B,CAAA,4BAAAA,CAAA,CAAAkE,IAAA,SAAAlE,CAAA,OAAA8E,KAAA,CAAA9E,CAAA,CAAA+E,MAAA,SAAAxE,CAAA,OAAAG,CAAA,YAAAwD,KAAA,aAAA3D,CAAA,GAAAP,CAAA,CAAA+E,MAAA,OAAA1E,CAAA,CAAAyB,IAAA,CAAA9B,CAAA,EAAAO,CAAA,UAAA2D,IAAA,CAAAzD,KAAA,GAAAT,CAAA,CAAAO,CAAA,GAAA2D,IAAA,CAAAX,IAAA,OAAAW,IAAA,SAAAA,IAAA,CAAAzD,KAAA,GAAAR,CAAA,EAAAiE,IAAA,CAAAX,IAAA,OAAAW,IAAA,YAAAxD,CAAA,CAAAwD,IAAA,GAAAxD,CAAA,gBAAAsD,SAAA,CAAAf,OAAA,CAAAjD,CAAA,kCAAAoC,iBAAA,CAAAhC,SAAA,GAAAiC,0BAAA,EAAA9B,CAAA,CAAAoC,CAAA,mBAAAlC,KAAA,EAAA4B,0BAAA,EAAAjB,YAAA,SAAAb,CAAA,CAAA8B,0BAAA,mBAAA5B,KAAA,EAAA2B,iBAAA,EAAAhB,YAAA,SAAAgB,iBAAA,CAAA4C,WAAA,GAAA9D,MAAA,CAAAmB,0BAAA,EAAArB,CAAA,wBAAAhB,CAAA,CAAAiF,mBAAA,aAAAhF,CAAA,QAAAD,CAAA,wBAAAC,CAAA,IAAAA,CAAA,CAAAiF,WAAA,WAAAlF,CAAA,KAAAA,CAAA,KAAAoC,iBAAA,6BAAApC,CAAA,CAAAgF,WAAA,IAAAhF,CAAA,CAAAmF,IAAA,OAAAnF,CAAA,CAAAoF,IAAA,aAAAnF,CAAA,WAAAE,MAAA,CAAAkF,cAAA,GAAAlF,MAAA,CAAAkF,cAAA,CAAApF,CAAA,EAAAoC,0BAAA,KAAApC,CAAA,CAAAqF,SAAA,GAAAjD,0BAAA,EAAAnB,MAAA,CAAAjB,CAAA,EAAAe,CAAA,yBAAAf,CAAA,CAAAG,SAAA,GAAAD,MAAA,CAAAqB,MAAA,CAAAmB,CAAA,GAAA1C,CAAA,KAAAD,CAAA,CAAAuF,KAAA,aAAAtF,CAAA,aAAAkD,OAAA,EAAAlD,CAAA,OAAA2C,qBAAA,CAAAG,aAAA,CAAA3C,SAAA,GAAAc,MAAA,CAAA6B,aAAA,CAAA3C,SAAA,EAAAU,CAAA,iCAAAd,CAAA,CAAA+C,aAAA,GAAAA,aAAA,EAAA/C,CAAA,CAAAwF,KAAA,aAAAvF,CAAA,EAAAC,CAAA,EAAAG,CAAA,EAAAE,CAAA,EAAAG,CAAA,eAAAA,CAAA,KAAAA,CAAA,GAAA+E,OAAA,OAAA7E,CAAA,OAAAmC,aAAA,CAAAzB,IAAA,CAAArB,CAAA,EAAAC,CAAA,EAAAG,CAAA,EAAAE,CAAA,GAAAG,CAAA,UAAAV,CAAA,CAAAiF,mBAAA,CAAA/E,CAAA,IAAAU,CAAA,GAAAA,CAAA,CAAAsD,IAAA,GAAAd,IAAA,WAAAnD,CAAA,WAAAA,CAAA,CAAAsD,IAAA,GAAAtD,CAAA,CAAAQ,KAAA,GAAAG,CAAA,CAAAsD,IAAA,WAAAtB,qBAAA,CAAAD,CAAA,GAAAzB,MAAA,CAAAyB,CAAA,EAAA3B,CAAA,gBAAAE,MAAA,CAAAyB,CAAA,EAAA/B,CAAA,iCAAAM,MAAA,CAAAyB,CAAA,6DAAA3C,CAAA,CAAA0F,IAAA,aAAAzF,CAAA,QAAAD,CAAA,GAAAG,MAAA,CAAAF,CAAA,GAAAC,CAAA,gBAAAG,CAAA,IAAAL,CAAA,EAAAE,CAAA,CAAAwE,IAAA,CAAArE,CAAA,UAAAH,CAAA,CAAAyF,OAAA,aAAAzB,KAAA,WAAAhE,CAAA,CAAA6E,MAAA,SAAA9E,CAAA,GAAAC,CAAA,CAAA0F,GAAA,QAAA3F,CAAA,IAAAD,CAAA,SAAAkE,IAAA,CAAAzD,KAAA,GAAAR,CAAA,EAAAiE,IAAA,CAAAX,IAAA,OAAAW,IAAA,WAAAA,IAAA,CAAAX,IAAA,OAAAW,IAAA,QAAAlE,CAAA,CAAA0C,MAAA,GAAAA,MAAA,EAAAjB,OAAA,CAAArB,SAAA,KAAA8E,WAAA,EAAAzD,OAAA,EAAAoD,KAAA,WAAAA,MAAA7E,CAAA,aAAA6F,IAAA,WAAA3B,IAAA,WAAAP,IAAA,QAAAC,KAAA,GAAA3D,CAAA,OAAAsD,IAAA,YAAAE,QAAA,cAAAD,MAAA,gBAAA3B,GAAA,GAAA5B,CAAA,OAAAwE,UAAA,CAAA5B,OAAA,CAAA8B,aAAA,IAAA3E,CAAA,WAAAE,CAAA,kBAAAA,CAAA,CAAA4F,MAAA,OAAAzF,CAAA,CAAAyB,IAAA,OAAA5B,CAAA,MAAA4E,KAAA,EAAA5E,CAAA,CAAA6F,KAAA,cAAA7F,CAAA,IAAAD,CAAA,MAAA+F,IAAA,WAAAA,KAAA,SAAAzC,IAAA,WAAAtD,CAAA,QAAAwE,UAAA,IAAAG,UAAA,kBAAA3E,CAAA,CAAA2B,IAAA,QAAA3B,CAAA,CAAA4B,GAAA,cAAAoE,IAAA,KAAApC,iBAAA,WAAAA,kBAAA7D,CAAA,aAAAuD,IAAA,QAAAvD,CAAA,MAAAE,CAAA,kBAAAgG,OAAA7F,CAAA,EAAAE,CAAA,WAAAK,CAAA,CAAAgB,IAAA,YAAAhB,CAAA,CAAAiB,GAAA,GAAA7B,CAAA,EAAAE,CAAA,CAAAgE,IAAA,GAAA7D,CAAA,EAAAE,CAAA,KAAAL,CAAA,CAAAsD,MAAA,WAAAtD,CAAA,CAAA2B,GAAA,GAAA5B,CAAA,KAAAM,CAAA,aAAAA,CAAA,QAAAkE,UAAA,CAAAM,MAAA,MAAAxE,CAAA,SAAAA,CAAA,QAAAG,CAAA,QAAA+D,UAAA,CAAAlE,CAAA,GAAAK,CAAA,GAAAF,CAAA,CAAAkE,UAAA,iBAAAlE,CAAA,CAAA2D,MAAA,SAAA6B,MAAA,aAAAxF,CAAA,CAAA2D,MAAA,SAAAwB,IAAA,QAAA/E,CAAA,GAAAT,CAAA,CAAAyB,IAAA,CAAApB,CAAA,eAAAM,CAAA,GAAAX,CAAA,CAAAyB,IAAA,CAAApB,CAAA,qBAAAI,CAAA,IAAAE,CAAA,aAAA6E,IAAA,GAAAnF,CAAA,CAAA4D,QAAA,SAAA4B,MAAA,CAAAxF,CAAA,CAAA4D,QAAA,gBAAAuB,IAAA,GAAAnF,CAAA,CAAA6D,UAAA,SAAA2B,MAAA,CAAAxF,CAAA,CAAA6D,UAAA,cAAAzD,CAAA,aAAA+E,IAAA,GAAAnF,CAAA,CAAA4D,QAAA,SAAA4B,MAAA,CAAAxF,CAAA,CAAA4D,QAAA,qBAAAtD,CAAA,YAAAsC,KAAA,qDAAAuC,IAAA,GAAAnF,CAAA,CAAA6D,UAAA,SAAA2B,MAAA,CAAAxF,CAAA,CAAA6D,UAAA,YAAAT,MAAA,WAAAA,OAAA7D,CAAA,EAAAD,CAAA,aAAAE,CAAA,QAAAuE,UAAA,CAAAM,MAAA,MAAA7E,CAAA,SAAAA,CAAA,QAAAK,CAAA,QAAAkE,UAAA,CAAAvE,CAAA,OAAAK,CAAA,CAAA8D,MAAA,SAAAwB,IAAA,IAAAxF,CAAA,CAAAyB,IAAA,CAAAvB,CAAA,wBAAAsF,IAAA,GAAAtF,CAAA,CAAAgE,UAAA,QAAA7D,CAAA,GAAAH,CAAA,aAAAG,CAAA,iBAAAT,CAAA,mBAAAA,CAAA,KAAAS,CAAA,CAAA2D,MAAA,IAAArE,CAAA,IAAAA,CAAA,IAAAU,CAAA,CAAA6D,UAAA,KAAA7D,CAAA,cAAAE,CAAA,GAAAF,CAAA,GAAAA,CAAA,CAAAkE,UAAA,cAAAhE,CAAA,CAAAgB,IAAA,GAAA3B,CAAA,EAAAW,CAAA,CAAAiB,GAAA,GAAA7B,CAAA,EAAAU,CAAA,SAAA8C,MAAA,gBAAAU,IAAA,GAAAxD,CAAA,CAAA6D,UAAA,EAAApC,CAAA,SAAAgE,QAAA,CAAAvF,CAAA,MAAAuF,QAAA,WAAAA,SAAAlG,CAAA,EAAAD,CAAA,oBAAAC,CAAA,CAAA2B,IAAA,QAAA3B,CAAA,CAAA4B,GAAA,qBAAA5B,CAAA,CAAA2B,IAAA,mBAAA3B,CAAA,CAAA2B,IAAA,QAAAsC,IAAA,GAAAjE,CAAA,CAAA4B,GAAA,gBAAA5B,CAAA,CAAA2B,IAAA,SAAAqE,IAAA,QAAApE,GAAA,GAAA5B,CAAA,CAAA4B,GAAA,OAAA2B,MAAA,kBAAAU,IAAA,yBAAAjE,CAAA,CAAA2B,IAAA,IAAA5B,CAAA,UAAAkE,IAAA,GAAAlE,CAAA,GAAAmC,CAAA,KAAAiE,MAAA,WAAAA,OAAAnG,CAAA,aAAAD,CAAA,QAAAyE,UAAA,CAAAM,MAAA,MAAA/E,CAAA,SAAAA,CAAA,QAAAE,CAAA,QAAAuE,UAAA,CAAAzE,CAAA,OAAAE,CAAA,CAAAqE,UAAA,KAAAtE,CAAA,cAAAkG,QAAA,CAAAjG,CAAA,CAAA0E,UAAA,EAAA1E,CAAA,CAAAsE,QAAA,GAAAG,aAAA,CAAAzE,CAAA,GAAAiC,CAAA,OAAAkE,KAAA,WAAAC,OAAArG,CAAA,aAAAD,CAAA,QAAAyE,UAAA,CAAAM,MAAA,MAAA/E,CAAA,SAAAA,CAAA,QAAAE,CAAA,QAAAuE,UAAA,CAAAzE,CAAA,OAAAE,CAAA,CAAAmE,MAAA,KAAApE,CAAA,QAAAI,CAAA,GAAAH,CAAA,CAAA0E,UAAA,kBAAAvE,CAAA,CAAAuB,IAAA,QAAArB,CAAA,GAAAF,CAAA,CAAAwB,GAAA,EAAA8C,aAAA,CAAAzE,CAAA,YAAAK,CAAA,gBAAA+C,KAAA,8BAAAiD,aAAA,WAAAA,cAAAvG,CAAA,EAAAE,CAAA,EAAAG,CAAA,gBAAAoD,QAAA,KAAA5C,QAAA,EAAA6B,MAAA,CAAA1C,CAAA,GAAAiE,UAAA,EAAA/D,CAAA,EAAAiE,OAAA,EAAA9D,CAAA,oBAAAmD,MAAA,UAAA3B,GAAA,GAAA5B,CAAA,GAAAkC,CAAA,OAAAnC,CAAA;AAAA,SAAAwG,mBAAAC,GAAA,EAAAvD,OAAA,EAAAwD,MAAA,EAAAC,KAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAhF,GAAA,cAAAiF,IAAA,GAAAL,GAAA,CAAAI,GAAA,EAAAhF,GAAA,OAAApB,KAAA,GAAAqG,IAAA,CAAArG,KAAA,WAAAsG,KAAA,IAAAL,MAAA,CAAAK,KAAA,iBAAAD,IAAA,CAAAvD,IAAA,IAAAL,OAAA,CAAAzC,KAAA,YAAAgF,OAAA,CAAAvC,OAAA,CAAAzC,KAAA,EAAA2C,IAAA,CAAAuD,KAAA,EAAAC,MAAA;AAAA,SAAAI,kBAAAC,EAAA,6BAAAC,IAAA,SAAAC,IAAA,GAAAC,SAAA,aAAA3B,OAAA,WAAAvC,OAAA,EAAAwD,MAAA,QAAAD,GAAA,GAAAQ,EAAA,CAAAI,KAAA,CAAAH,IAAA,EAAAC,IAAA,YAAAR,MAAAlG,KAAA,IAAA+F,kBAAA,CAAAC,GAAA,EAAAvD,OAAA,EAAAwD,MAAA,EAAAC,KAAA,EAAAC,MAAA,UAAAnG,KAAA,cAAAmG,OAAAU,GAAA,IAAAd,kBAAA,CAAAC,GAAA,EAAAvD,OAAA,EAAAwD,MAAA,EAAAC,KAAA,EAAAC,MAAA,WAAAU,GAAA,KAAAX,KAAA,CAAAY,SAAA;AAAA,SAAAC,gBAAAC,QAAA,EAAAC,WAAA,UAAAD,QAAA,YAAAC,WAAA,eAAA1D,SAAA;AAAA,SAAA2D,kBAAAC,MAAA,EAAAC,KAAA,aAAAnH,CAAA,MAAAA,CAAA,GAAAmH,KAAA,CAAA9C,MAAA,EAAArE,CAAA,UAAAoH,UAAA,GAAAD,KAAA,CAAAnH,CAAA,GAAAoH,UAAA,CAAA3G,UAAA,GAAA2G,UAAA,CAAA3G,UAAA,WAAA2G,UAAA,CAAA1G,YAAA,wBAAA0G,UAAA,EAAAA,UAAA,CAAAzG,QAAA,SAAAlB,MAAA,CAAAK,cAAA,CAAAoH,MAAA,EAAAG,cAAA,CAAAD,UAAA,CAAAjB,GAAA,GAAAiB,UAAA;AAAA,SAAAE,aAAAN,WAAA,EAAAO,UAAA,EAAAC,WAAA,QAAAD,UAAA,EAAAN,iBAAA,CAAAD,WAAA,CAAAtH,SAAA,EAAA6H,UAAA,OAAAC,WAAA,EAAAP,iBAAA,CAAAD,WAAA,EAAAQ,WAAA,GAAA/H,MAAA,CAAAK,cAAA,CAAAkH,WAAA,iBAAArG,QAAA,mBAAAqG,WAAA;AAAA,SAAAS,UAAAC,QAAA,EAAAC,UAAA,eAAAA,UAAA,mBAAAA,UAAA,uBAAArE,SAAA,0DAAAoE,QAAA,CAAAhI,SAAA,GAAAD,MAAA,CAAAqB,MAAA,CAAA6G,UAAA,IAAAA,UAAA,CAAAjI,SAAA,IAAA8E,WAAA,IAAAzE,KAAA,EAAA2H,QAAA,EAAA/G,QAAA,QAAAD,YAAA,aAAAjB,MAAA,CAAAK,cAAA,CAAA4H,QAAA,iBAAA/G,QAAA,gBAAAgH,UAAA,EAAAC,eAAA,CAAAF,QAAA,EAAAC,UAAA;AAAA,SAAAC,gBAAA/H,CAAA,EAAA+B,CAAA,IAAAgG,eAAA,GAAAnI,MAAA,CAAAkF,cAAA,GAAAlF,MAAA,CAAAkF,cAAA,CAAAkD,IAAA,cAAAD,gBAAA/H,CAAA,EAAA+B,CAAA,IAAA/B,CAAA,CAAA+E,SAAA,GAAAhD,CAAA,SAAA/B,CAAA,YAAA+H,eAAA,CAAA/H,CAAA,EAAA+B,CAAA;AAAA,SAAAkG,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,GAAAC,eAAA,CAAAL,OAAA,GAAAM,MAAA,MAAAL,yBAAA,QAAAM,SAAA,GAAAF,eAAA,OAAA5D,WAAA,EAAA6D,MAAA,GAAAE,OAAA,CAAAC,SAAA,CAAAL,KAAA,EAAAzB,SAAA,EAAA4B,SAAA,YAAAD,MAAA,GAAAF,KAAA,CAAAxB,KAAA,OAAAD,SAAA,YAAA+B,0BAAA,OAAAJ,MAAA;AAAA,SAAAI,2BAAAjC,IAAA,EAAApF,IAAA,QAAAA,IAAA,KAAAmB,OAAA,CAAAnB,IAAA,yBAAAA,IAAA,2BAAAA,IAAA,aAAAA,IAAA,yBAAAkC,SAAA,uEAAAoF,sBAAA,CAAAlC,IAAA;AAAA,SAAAkC,uBAAAlC,IAAA,QAAAA,IAAA,yBAAAmC,cAAA,wEAAAnC,IAAA;AAAA,SAAAyB,0BAAA,eAAAM,OAAA,qBAAAA,OAAA,CAAAC,SAAA,oBAAAD,OAAA,CAAAC,SAAA,CAAAI,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAApJ,SAAA,CAAAqJ,OAAA,CAAA3H,IAAA,CAAAmH,OAAA,CAAAC,SAAA,CAAAM,OAAA,8CAAAxJ,CAAA;AAAA,SAAA8I,gBAAAvI,CAAA,IAAAuI,eAAA,GAAA3I,MAAA,CAAAkF,cAAA,GAAAlF,MAAA,CAAAqC,cAAA,CAAA+F,IAAA,cAAAO,gBAAAvI,CAAA,WAAAA,CAAA,CAAA+E,SAAA,IAAAnF,MAAA,CAAAqC,cAAA,CAAAjC,CAAA,aAAAuI,eAAA,CAAAvI,CAAA;AAAA,SAAAmJ,gBAAAC,GAAA,EAAA9C,GAAA,EAAApG,KAAA,IAAAoG,GAAA,GAAAkB,cAAA,CAAAlB,GAAA,OAAAA,GAAA,IAAA8C,GAAA,IAAAxJ,MAAA,CAAAK,cAAA,CAAAmJ,GAAA,EAAA9C,GAAA,IAAApG,KAAA,EAAAA,KAAA,EAAAU,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAsI,GAAA,CAAA9C,GAAA,IAAApG,KAAA,WAAAkJ,GAAA;AAAA,SAAA5B,eAAA9H,CAAA,QAAAS,CAAA,GAAAkJ,YAAA,CAAA3J,CAAA,gCAAAgD,OAAA,CAAAvC,CAAA,IAAAA,CAAA,GAAAmJ,MAAA,CAAAnJ,CAAA;AAAA,SAAAkJ,aAAA3J,CAAA,EAAAC,CAAA,oBAAA+C,OAAA,CAAAhD,CAAA,MAAAA,CAAA,SAAAA,CAAA,MAAAD,CAAA,GAAAC,CAAA,CAAAU,MAAA,CAAAmJ,WAAA,kBAAA9J,CAAA,QAAAU,CAAA,GAAAV,CAAA,CAAA8B,IAAA,CAAA7B,CAAA,EAAAC,CAAA,gCAAA+C,OAAA,CAAAvC,CAAA,UAAAA,CAAA,YAAAsD,SAAA,yEAAA9D,CAAA,GAAA2J,MAAA,GAAAE,MAAA,EAAA9J,CAAA;AAAA,SAAS+J,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAwBC,QAAQ,EAAEC,aAAa,EAAEC,OAAO,EAAEC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AACvI,SAASC,eAAe;AACxB,SAAwEC,MAAM,EAAEC,iBAAiB,EAAEC,qBAAqB,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,gBAAgB;AA6B7K,IAAMC,cAAc,GAAG,IAAIV,OAAO,CAAC,CAAC;AACpC,IAAMW,eAAe,GAAG,CAAC,GAAG;AAC5B,IAAMC,iBAAiB,GAAG,GAAG;AAC7B,IAAMC,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC;;AAE3C;AACA;AACA;AACA,WAAaC,oBAAoB,0BAAAC,SAAA;EAAAlD,SAAA,CAAAiD,oBAAA,EAAAC,SAAA;EAAA,IAAAC,MAAA,GAAA9C,YAAA,CAAA4C,oBAAA;EAoB/B,SAAAA,qBAAYG,OAA8B,EAAE;IAAA,IAAAC,KAAA;IAAAhE,eAAA,OAAA4D,oBAAA;IAC1CI,KAAA,GAAAF,MAAA,CAAAxJ,IAAA;IAAO4H,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,WApByB,MAAM;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,uBACd,IAAIC,GAAG,CAAC,CAAC;IAAA/B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,cAGjB,IAAIC,GAAG,CAAmB,CAAC;IAAA/B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,iBAC2B;MACtEE,IAAI,EAAE,IAAID,GAAG,CAAC,CAAC;MACfE,KAAK,EAAE,IAAIF,GAAG,CAAC,CAAC;MAChBG,IAAI,EAAE,IAAIH,GAAG,CAAC,CAAC;MACfI,OAAO,EAAE,IAAIJ,GAAG,CAAC;IACnB,CAAC;IAAA/B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,YAEuD,IAAI;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,WACrB,IAAI;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,iBAGtB,KAAK;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,YACE,EAAE;IAAA9B,eAAA,CAAAN,sBAAA,CAAAoC,KAAA,uBAkOH;MACzBM,SAAS,EAAE,SAAAA,UAACC,IAAc,EAAEnK,IAAwB;QAAA,OAAK4J,KAAA,CAAKQ,kBAAkB,CAACD,IAAI,EAAEnK,IAAI,CAAC;MAAA;MAC5FqK,SAAS,EAAE,SAAAA,UAACF,IAAc,EAAEnK,IAAwB;QAAA,OAAK4J,KAAA,CAAKU,kBAAkB,CAACH,IAAI,EAAEnK,IAAI,CAAC;MAAA;IAC9F,CAAC;IAjOC,IAAAuK,IAAA,GAA6DZ,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC;MAAlEa,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAAC,WAAA,GAAAF,IAAA,CAAEG,MAAM;MAANA,MAAM,GAAAD,WAAA,cAAGrB,cAAc,GAAAqB,WAAA;MAAAE,UAAA,GAAAJ,IAAA,CAAEK,KAAK;MAALA,KAAK,GAAAD,UAAA,cAAG,KAAK,GAAAA,UAAA;IAExDf,KAAA,CAAKY,QAAQ,GAAGA,QAAQ;IACxBZ,KAAA,CAAKc,MAAM,GAAGA,MAAM;IAEpBd,KAAA,CAAKiB,QAAQ,GAAGjB,KAAA,CAAKkB,kBAAkB,CAAC,CAAC;IACzClB,KAAA,CAAKiB,QAAQ,CAACD,KAAK,CAAC/L,KAAK,GAAG+L,KAAK;IACjChB,KAAA,CAAKmB,uBAAuB,CAAC,CAAC;IAE9BnC,GAAG,CAACoC,QAAQ,CAAC,YAAM;MACjBpB,KAAA,CAAKiB,QAAQ,CAACI,IAAI,CAACpM,KAAK,IAAI,OAAO;IACrC,CAAC,CAAC;IAAA,OAAA+K,KAAA;EACJ;EAACxD,YAAA,CAAAoD,oBAAA;IAAAvE,GAAA;IAAApG,KAAA,EAED,SAAAiM,mBAAA,EAAqD;MACnD,OAAO;QACLI,QAAQ,EAAE;UAAErM,KAAK,EAAE;QAAI,CAAC;QACxBsM,eAAe,EAAE;UAAEtM,KAAK,EAAE;QAAM,CAAC;QACjCuM,YAAY,EAAE;UAAEvM,KAAK,EAAE;QAAK,CAAC;QAC7BwM,YAAY,EAAE;UAAExM,KAAK,EAAE;QAAM,CAAC;QAC9ByM,aAAa,EAAE;UAAEzM,KAAK,EAAE;QAAM,CAAC;QAC/B0M,OAAO,EAAE;UAAE1M,KAAK,EAAE;QAAE,CAAC;QACrB6L,MAAM,EAAE;UAAE7L,KAAK,EAAE,IAAI,CAAC6L;QAAO,CAAC;QAC9BO,IAAI,EAAE;UAAEpM,KAAK,EAAE;QAAE,CAAC;QAClB+L,KAAK,EAAE;UAAE/L,KAAK,EAAE;QAAM;MACxB,CAAC;IACH;EAAC;IAAAoG,GAAA;IAAApG,KAAA,EAED,SAAAkM,wBAAA,EAAkC;MAChClC,eAAe,CAAC2C,cAAc,CAAC,CAAC;IAClC;EAAC;IAAAvG,GAAA;IAAApG,KAAA,EAED,SAAA4M,eAAA,EAA+B;MAC7BlN,MAAM,CAACuC,MAAM,CAAC,IAAI,CAAC4K,UAAU,CAAC,CAACzK,OAAO,CAAC,UAAC0K,SAAS,EAAK;QACpDA,SAAS,CAAC1K,OAAO,CAAC,UAAC2K,MAAM,EAAK;UAC5BA,MAAM,CAACC,OAAO,GAAG,KAAK;QACxB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA5G,GAAA;IAAApG,KAAA,EAED,SAAAiN,kBAA0B9L,IAAwB,EAAQ;MACxD,IAAI,CAAC0L,UAAU,CAAC1L,IAAI,CAAC,CAACiB,OAAO,CAAC,UAAC2K,MAAM,EAAK;QACxCA,MAAM,CAACC,OAAO,GAAG,IAAI;MACvB,CAAC,CAAC;IACJ;EAAC;IAAA5G,GAAA;IAAApG,KAAA,EAED,SAAAkN,WAAkB/L,IAAwB,EACxCgM,MAOC,EAAQ;MAAA,IAAAC,aAAA;MACT,IAAI,IAAI,CAACjM,IAAI,KAAKA,IAAI,EACpB;MAEF,IAAI,CAACkM,KAAK,IAAAD,aAAA,GAAGD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,KAAK,cAAAD,aAAA,cAAAA,aAAA,GAAI,EAAE;MAEhC,IAAI,CAACE,eAAe,CAACH,MAAM,CAAC;MAC5B,IAAI,CAACI,WAAW,CAACpM,IAAI,CAAC;MACtB,IAAI,CAACqM,iBAAiB,CAAC,CAAC;MACxB,IAAI,CAACC,gBAAgB,CAACtM,IAAI,CAAC;MAC3B,IAAI,CAACuM,oBAAoB,CAACvM,IAAI,CAAC;MAE/B,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EAAC;IAAAiF,GAAA;IAAApG,KAAA,EAED,SAAAsN,gBAAwBH,MAKvB,EAAQ;MACP,IAAAQ,KAAA,GAA6ER,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,CAAC,CAAC;QAAAS,UAAA,GAAAD,KAAA,CAAjFE,IAAI;QAAJA,IAAI,GAAAD,UAAA,cAAG,MAAM,GAAAA,UAAA;QAAAE,cAAA,GAAAH,KAAA,CAAEhC,QAAQ;QAARA,QAAQ,GAAAmC,cAAA,cAAG,CAAC,GAAAA,cAAA;QAAAC,YAAA,GAAAJ,KAAA,CAAE9B,MAAM;QAANA,MAAM,GAAAkC,YAAA,cAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAAA,YAAA;QAAAC,cAAA,GAAAL,KAAA,CAAEM,QAAQ;QAARA,QAAQ,GAAAD,cAAA,cAAG,IAAI,GAAAA,cAAA;MACxE,IAAIH,IAAI,KAAK,MAAM,EACjB,IAAI,CAAClC,QAAQ,GAAG7E,SAAS,MAEzB,IAAI,CAAC6E,QAAQ,GAAGA,QAAQ;MAE1B,IAAI,CAACK,QAAQ,CAACH,MAAM,CAAC7L,KAAK,GAAG,IAAI6J,OAAO,CAAC,CAAC,CAACqE,SAAS,CAACrC,MAAM,CAAC;MAC5D,IAAI,CAACsC,UAAU,GAAGF,QAAQ;IAC5B;EAAC;IAAA7H,GAAA;IAAApG,KAAA,EAED,SAAAwN,kBAAA,EAAkC;MAAA,IAAAY,WAAA,EAAAC,UAAA;MAChC,CAAAD,WAAA,OAAI,CAACE,KAAK,cAAAF,WAAA,eAAVA,WAAA,CAAA/M,IAAA,KAAa,CAAC;MACd,CAAAgN,UAAA,OAAI,CAACvE,IAAI,cAAAuE,UAAA,eAATA,UAAA,CAAWE,IAAI,CAAC,CAAC;IACnB;EAAC;IAAAnI,GAAA;IAAApG,KAAA,EAED,SAAAyN,iBAAyBe,OAA2B,EAAQ;MAC1D,IAAI,CAAC5B,cAAc,CAAC,CAAC;MACrB,IAAI,CAACK,iBAAiB,CAACuB,OAAO,CAAC;MAC/B,IAAI,CAACvB,iBAAiB,CAAC,IAAI,CAAC9L,IAAI,CAAC;MAEjC,IAAI,CAAC6K,QAAQ,CAACK,QAAQ,CAACrM,KAAK,GAAG,GAAG;MAClC,IAAI,CAACgM,QAAQ,MAAAyC,MAAA,CAAM,IAAI,CAACtN,IAAI,YAAS,CAACnB,KAAK,GAAG,KAAK;MACnD,IAAI,CAACgM,QAAQ,MAAAyC,MAAA,CAAMD,OAAO,YAAS,CAACxO,KAAK,GAAG,IAAI;IAClD;EAAC;IAAAoG,GAAA;IAAApG,KAAA,EAED,SAAA0N,qBAA6Bc,OAA2B,EAAQ;MAAA,IAAAE,MAAA;MAC9D,IAAMC,QAAQ,GAAG,IAAI,CAACxN,IAAI;MAC1B,IAAMyN,IAAI,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC;MAC9B,IAAMC,SAAS,GAAAC,IAAA,CAAAC,GAAA,CAAK,CAAC,GAAGJ,IAAI,GAAIA,IAAI,EAAM,CAAC,GAAG,CAAC,CAAC;MAEhD,IAAMK,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;QACvBP,MAAI,CAAC7B,UAAU,CAAC8B,QAAQ,CAAC,CAACvM,OAAO,CAAC,UAAC2K,MAAM,EAAK;UAC5CA,MAAM,CAACC,OAAO,GAAG,KAAK;QACxB,CAAC,CAAC;QACF0B,MAAI,CAACQ,aAAa,CAAC;UAAE/N,IAAI,EAAE,gBAAgB;UAAEgO,KAAK,EAAEX;QAAQ,CAAC,CAAC;MAChE,CAAC;MAEDY,qBAAqB,CAAC,YAAM;QAC1B,IAAIV,MAAI,CAAC/C,QAAQ,EACf+C,MAAI,CAACW,eAAe,CAACJ,UAAU,CAAC,MAEhCP,MAAI,CAACY,gBAAgB,CAACR,SAAS,EAAEG,UAAU,CAAC;MAChD,CAAC,CAAC;IACJ;EAAC;IAAA7I,GAAA;IAAApG,KAAA,EAED,SAAAqP,gBAAwBJ,UAAsB,EAAQ;MACpD,IAAI,CAACnF,IAAI,GAAGA,IAAI,CAACyF,EAAE,CAAC,IAAI,CAACvD,QAAQ,CAACK,QAAQ,EAAE;QAC1CrM,KAAK,EAAE,GAAG;QACV2L,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvB6D,IAAI,EAAE,QAAQ;QACdP,UAAU,EAAVA;MACF,CAAC,CAAC;IACJ;EAAC;IAAA7I,GAAA;IAAApG,KAAA,EAED,SAAAsP,iBAAyBR,SAAiB,EAAEG,UAAsB,EAAQ;MAAA,IAAAQ,MAAA;MACxE,IAAI9D,QAAQ,GAAG,CAAC;MAChB,IAAI,CAAC2C,KAAK,GAAGvE,GAAG,CAACoC,QAAQ,CAAC,UAACuD,KAAK,EAAK;QACnC/D,QAAQ,IAAI+D,KAAK;QACjB,IAAMrD,QAAQ,GAAA0C,IAAA,CAAAC,GAAA,CAAIrD,QAAQ,GAAGmD,SAAS,EAAK,CAAC;QAC5CW,MAAI,CAACzD,QAAQ,CAACK,QAAQ,CAACrM,KAAK,IAAIqM,QAAQ;QAExC,IAAIoD,MAAI,CAACzD,QAAQ,CAACK,QAAQ,CAACrM,KAAK,GAAG,GAAG,EAAE;UACtCyP,MAAI,CAACnB,KAAK,CAAC,CAAC;UACZW,UAAU,CAAC,CAAC;QACd;MACF,CAAC,CAAC;IACJ;EAAC;IAAA7I,GAAA;IAAApG,KAAA,EAED,SAAA2P,UAAiB5C,MAAgB,EAAQ;MACvC,IAAI,CAACG,UAAU,CAAC,MAAM,CAAC;MACvB,IAAM0C,IAAI,GAAG,IAAI,CAACC,aAAa,CAAC9C,MAAM,CAAC;MACvC,IAAI,CAAC+C,OAAO,CAACC,GAAG,CAACH,IAAI,EAAE7C,MAAM,CAAC;MAE9B,IAAI,CAACiD,kBAAkB,CAACjD,MAAM,EAAE6C,IAAI,CAAC;MACrC,IAAI,CAACK,gBAAgB,CAAC,CAAC;IACzB;EAAC;IAAA7J,GAAA;IAAApG,KAAA,EAED,SAAA6P,cAAsB9C,MAAgB,EAAU;MAC9C;MACA,OAAOA,MAAM,CAACmD,GAAG,KAAK,QAAQ,GAAGnD,MAAM,CAACoD,QAAQ,GAAGpD,MAAM,CAAC6C,IAAI;IAChE;EAAC;IAAAxJ,GAAA;IAAApG,KAAA,EAED,SAAAoQ,mBAA2BjP,IAAwB,EAAQ;MACzD,IAAI,IAAI,CAAC0L,UAAU,CAAC1L,IAAI,CAAC,CAACkP,GAAG,CAAC,QAAQ,CAAC,EAAE;QACvC,IAAI,CAACC,gBAAgB,CAACnP,IAAI,CAAC;MAC7B,CAAC,MACI;QACH,IAAMoP,UAAU,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;QAC1CnG,cAAc,CAACkG,UAAU,EAAEpP,IAAI,EAAE,IAAI,CAAC6K,QAAQ,CAAC;QAC/C,IAAI,CAACa,UAAU,CAAC1L,IAAI,CAAC,CAAC4O,GAAG,CAAC,QAAQ,EAAEQ,UAAU,CAAC;QAC/C,IAAI,CAACE,GAAG,CAACF,UAAU,CAAC;MACtB;IACF;EAAC;IAAAnK,GAAA;IAAApG,KAAA,EAED,SAAA0Q,qBAA6BvP,IAAwB,EAAE;MACrD,IAAIwP,OAAO,GAAG,KAAK;MAEnBjR,MAAM,CAACuC,MAAM,CAAC,IAAI,CAAC4K,UAAU,CAAC,CAACvH,KAAK,CAAC,CAAC,CAAC,CAAClD,OAAO,CAAC,UAAC0K,SAAS,EAAK;QAC7DA,SAAS,CAAC1K,OAAO,CAAC,UAAC2K,MAAM,EAAK;UAC5B,IAAIrC,eAAe,CAACkG,IAAI,CAAC,UAAAC,QAAQ;YAAA,OAAI9D,MAAM,CAACrI,IAAI,CAACoM,WAAW,CAAC,CAAC,CAACC,UAAU,CAACF,QAAQ,CAAC;UAAA,EAAC,EAAE;YACpFF,OAAO,GAAG,IAAI;YACd5D,MAAM,CAACiE,gBAAgB,CAAC,CAAC;YACzBlE,SAAS,CAACmE,MAAM,CAAClE,MAAM,CAAC6C,IAAI,CAAC;UAC/B;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,IAAIe,OAAO,IAAIxP,IAAI,KAAK,MAAM,EAC5B,IAAI,CAACiP,kBAAkB,CAACjP,IAAI,CAAC;IACjC;EAAC;IAAAiF,GAAA;IAAApG,KAAA;MAAA,IAAAkR,kBAAA,GAAA3K,iBAAA,eAAAjH,mBAAA,GAAAqF,IAAA,CAED,SAAAwM,QAAgCzM,IAAY;QAAA,IAAA0M,QAAA;QAAA,OAAA9R,mBAAA,GAAAuB,IAAA,UAAAwQ,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAlM,IAAA,GAAAkM,QAAA,CAAA7N,IAAA;YAAA;cAAA6N,QAAA,CAAA7N,IAAA;cAAA,OACnBuG,eAAe,CAACuH,WAAW,CAAC7M,IAAI,CAAC;YAAA;cAAlD0M,QAAQ,GAAAE,QAAA,CAAApO,IAAA;cAAA,OAAAoO,QAAA,CAAAjO,MAAA,WAEP+N,QAAQ;YAAA;YAAA;cAAA,OAAAE,QAAA,CAAA/L,IAAA;UAAA;QAAA,GAAA4L,OAAA;MAAA,CAChB;MAAA,SAAAK,kBAAAC,EAAA;QAAA,OAAAP,kBAAA,CAAAtK,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAA6K,iBAAA;IAAA;EAAA;IAAApL,GAAA;IAAApG,KAAA;MAAA,IAAA0R,gBAAA,GAAAnL,iBAAA,eAAAjH,mBAAA,GAAAqF,IAAA,CAED,SAAAgN,SAA8B5E,MAAY,EAAE6E,YAAoB,EAAEzQ,IAAY;QAAA,IAAAiQ,QAAA;QAAA,OAAA9R,mBAAA,GAAAuB,IAAA,UAAAgR,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA1M,IAAA,GAAA0M,SAAA,CAAArO,IAAA;YAAA;cAAA,KACxEsJ,MAAM,CAACgF,QAAQ,CAACC,SAAS;gBAAAF,SAAA,CAAArO,IAAA;gBAAA;cAAA;cAAA,OAAAqO,SAAA,CAAAzO,MAAA;YAAA;cAAAyO,SAAA,CAAArO,IAAA;cAAA,OAGN,IAAI,CAAC+N,iBAAiB,CAACI,YAAY,CAAC;YAAA;cAArDR,QAAQ,GAAAU,SAAA,CAAA5O,IAAA;cACd6J,MAAM,CAACqE,QAAQ,GAAGnH,MAAM,CAACmH,QAAQ,EAAEjQ,IAAI,EAAkC,IAAI,CAAC6K,QAAQ,CAAyB;cAE/Ge,MAAM,CAACgF,QAAQ,CAACC,SAAS,GAAG,IAAI;YAAA;YAAA;cAAA,OAAAF,SAAA,CAAAvM,IAAA;UAAA;QAAA,GAAAoM,QAAA;MAAA,CACjC;MAAA,SAAAM,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAV,gBAAA,CAAA9K,KAAA,OAAAD,SAAA;MAAA;MAAA,OAAAsL,eAAA;IAAA;EAAA;IAAA7L,GAAA;IAAApG,KAAA,EAED,SAAAqS,cAAsBtF,MAAY,EAAE5L,IAAwB,EAAE;MAC5D,IAAI,YAAAsN,MAAA,CAAYtN,IAAI,YAAS,CAAC4L,MAAM,CAAC;IACvC;EAAC;IAAA3G,GAAA;IAAApG,KAAA,EAED,SAAAyL,mBAA2BH,IAAc,EAAEnK,IAAwB,EAAE;MAAA,IAAAmR,MAAA;MACnE,IAAQrN,IAAI,GAAeqG,IAAI,CAAvBrG,IAAI;QAAEmM,QAAQ,GAAK9F,IAAI,CAAjB8F,QAAQ;MAEtB,IAAI,CAACvE,UAAU,CAAC1L,IAAI,CAAC,CAACiB,OAAO,CAAC,UAAC2K,MAAM,EAAK;QACxCA,MAAM,CAACwF,QAAQ,CAAC,UAACC,KAAK,EAAK;UACzB,IAAIA,KAAK,CAACrR,IAAI,KAAK,MAAM,EAAE;YACzB,IAAMsR,IAAI,GAAGD,KAAa;YAC1B,IAAIvN,IAAI,CAAC2L,IAAI,CAAC,UAAAC,QAAQ;cAAA,OAAI4B,IAAI,CAAC/N,IAAI,CAACgO,QAAQ,CAAC7B,QAAQ,CAAC;YAAA,EAAC,EACrDyB,MAAI,CAACL,eAAe,CAACQ,IAAI,EAAErB,QAAQ,EAAEjQ,IAAI,CAAC;UAC9C;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAAiF,GAAA;IAAApG,KAAA,EAED,SAAAuL,mBAA2BD,IAAc,EAAEnK,IAAwB,EAAE,CAAC;EAAC;IAAAiF,GAAA;IAAApG,KAAA,EAOvE,SAAAuN,YAAoBpM,IAAwB,EAAE;MAAA,IAAAwR,MAAA;MAC5C,IAAI,IAAI,CAACxE,UAAU,EACjB,IAAI,CAACuC,oBAAoB,CAACvP,IAAI,CAAC;MAEjC,IAAIA,IAAI,KAAK,MAAM,EACjB;MAEF,IAAI,CAAC0L,UAAU,CAAC1L,IAAI,CAAC,CAACiB,OAAO,CAAC,UAAC2K,MAAM,EAAK;QACxCA,MAAM,CAACwF,QAAQ,CAAC,UAACC,KAAK,EAAK;UACzB,IAAIA,KAAK,CAACrR,IAAI,KAAK,MAAM,EAAE;YACzB,IAAIqR,KAAK,CAACT,QAAQ,CAACC,SAAS,EAC1BW,MAAI,CAACN,aAAa,CAACG,KAAK,EAAUrR,IAAI,CAAC;UAC3C;UAEAqR,KAAK,CAACT,QAAQ,CAACC,SAAS,GAAG,KAAK;QAClC,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,IAAI,IAAI,CAAC3E,KAAK,CAAC/I,MAAM,GAAG,CAAC,EAAE;QACzB,IAAI,CAAC+I,KAAK,CAACjL,OAAO,CAAC,UAACkJ,IAAI,EAAK;UAC3BqH,MAAI,CAACC,gBAAgB,CAACtH,IAAI,CAACnK,IAAI,CAAC,CAACmK,IAAI,EAAEnK,IAAI,CAAC;QAC9C,CAAC,CAAC;MACJ;IACF;EAAC;IAAAiF,GAAA;IAAApG,KAAA,EAED,SAAAgQ,mBAA2BjD,MAAgB,EAAE6C,IAAY,EAAQ;MAC/D,IAAMiD,UAAU,GAAG9F,MAAM;MACzB,IAAI,CAAC+F,kBAAkB,CAACD,UAAU,CAAC;MACnC,IAAI,CAAChG,UAAU,CAAC5B,IAAI,CAAC8E,GAAG,CAACH,IAAI,EAAEiD,UAAU,CAAC;MAC1C,IAAI,CAACpC,GAAG,CAACoC,UAAU,CAAC;MAEpB,IAAME,aAAa,GAAGhG,MAAM,CAACiG,KAAK,CAAC,CAAC;MACpC,IAAI,CAACC,qBAAqB,CAACF,aAAa,CAAC;MACzC,IAAI,CAAClG,UAAU,CAACzB,OAAO,CAAC2E,GAAG,CAACH,IAAI,EAAEmD,aAAa,CAAC;MAChD,IAAI,CAACtC,GAAG,CAACsC,aAAa,CAAC;MAEvB,IAAMG,UAAU,GAAGnG,MAAM,CAACiG,KAAK,CAAC,CAAC;MACjC,IAAI,CAACG,kBAAkB,CAACD,UAAU,CAAC;MACnC,IAAI,CAACrG,UAAU,CAAC1B,IAAI,CAAC4E,GAAG,CAACH,IAAI,EAAEsD,UAAU,CAAC;MAC1C,IAAI,CAACzC,GAAG,CAACyC,UAAU,CAAC;MAEpB,IAAME,WAAW,GAAGrG,MAAM,CAACiG,KAAK,CAAC,CAAC;MAClC,IAAI,CAACK,mBAAmB,CAACD,WAAW,CAAC;MACrC,IAAI,CAACvG,UAAU,CAAC3B,KAAK,CAAC6E,GAAG,CAACH,IAAI,EAAEwD,WAAW,CAAC;MAC5C,IAAI,CAAC3C,GAAG,CAAC2C,WAAW,CAAC;MAErB,IAAI,CAACpH,QAAQ,CAACU,OAAO,CAAC1M,KAAK,GAAG,IAAI,CAAC6O,UAAU,CAAC,CAAC;IACjD;EAAC;IAAAzI,GAAA;IAAApG,KAAA,EAED,SAAAsT,aAAoBvG,MAAgB,EAAQ;MAC1C,IAAM6C,IAAI,GAAG,IAAI,CAACC,aAAa,CAAC9C,MAAM,CAAC;MACvC,IAAI,CAAC+C,OAAO,CAACmB,MAAM,CAACrB,IAAI,CAAC;MAEzBlQ,MAAM,CAACuC,MAAM,CAAC,IAAI,CAAC4K,UAAU,CAAC,CAACzK,OAAO,CAAC,UAAC0K,SAAS,EAAK;QACpD,IAAM5D,GAAG,GAAG4D,SAAS,CAACyG,GAAG,CAAC3D,IAAI,CAAC;QAC/B,IAAI1G,GAAG,EAAE;UACPA,GAAG,CAAC8H,gBAAgB,CAAC,CAAC;UACtBlE,SAAS,CAACmE,MAAM,CAACrB,IAAI,CAAC;QACxB;MACF,CAAC,CAAC;MAEF,IAAI,CAAC5D,QAAQ,CAACU,OAAO,CAAC1M,KAAK,GAAG,IAAI,CAAC6O,UAAU,CAAC,CAAC;IACjD;EAAC;IAAAzI,GAAA;IAAApG,KAAA,EAED,SAAAwQ,iBAAA,EAAiC;MAC/B,IAAMgD,GAAG,GAAG,IAAI,CAACC,IAAI;MACrB,IAAM7E,IAAI,GAAG4E,GAAG,CAACE,OAAO,CAAC,IAAI7J,OAAO,CAAC,CAAC,CAAC;MACvC,IAAMgC,MAAM,GAAG2H,GAAG,CAACG,SAAS,CAAC,IAAI9J,OAAO,CAAC,CAAC,CAAC;MAE3C,IAAM+J,KAAK,GAAG,IAAIhK,aAAa,CAACgF,IAAI,CAACiF,CAAC,EAAEjF,IAAI,CAACkF,CAAC,CAAC;MAC/C,IAAM1C,QAAQ,GAAG,IAAI1H,iBAAiB,CAAC;QAAEqK,KAAK,EAAE,IAAIvK,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MACpE,IAAMiJ,IAAI,GAAG,IAAIhJ,IAAI,CAACmK,KAAK,EAAExC,QAAQ,CAAC;MAEtCqB,IAAI,CAACuB,QAAQ,CAACH,CAAC,GAAG,CAAC9E,IAAI,CAACkF,EAAE,GAAG,CAAC;MAC9BxB,IAAI,CAACyB,QAAQ,CAACnE,GAAG,CAAClE,MAAM,CAACgI,CAAC,EAAErJ,eAAe,EAAEqB,MAAM,CAACiI,CAAC,CAAC;MAEtD,OAAOrB,IAAI;IACb;EAAC;IAAArM,GAAA;IAAApG,KAAA,EAED,SAAAsQ,iBAAyBnP,IAAwB,EAAQ;MACvD,IAAI,CAAC,IAAI,CAAC0L,UAAU,CAAC1L,IAAI,CAAC,CAACkP,GAAG,CAAC,QAAQ,CAAC,EACtC;MAEF,IAAMmD,GAAG,GAAG,IAAI,CAACC,IAAI;MACrB,IAAM7E,IAAI,GAAG4E,GAAG,CAACE,OAAO,CAAC,IAAI7J,OAAO,CAAC,CAAC,CAAC;MACvC,IAAMgC,MAAM,GAAG2H,GAAG,CAACG,SAAS,CAAC,IAAI9J,OAAO,CAAC,CAAC,CAAC;MAE1C,IAAI,CAACgD,UAAU,CAAC1L,IAAI,CAAC,CAACoS,GAAG,CAAC,QAAQ,CAAC,CAAUY,QAAQ,CAACC,OAAO,CAAC,CAAC;MAC/D,IAAI,CAACvH,UAAU,CAAC1L,IAAI,CAAC,CAACoS,GAAG,CAAC,QAAQ,CAAC,CAAUY,QAAQ,GAAG,IAAIvK,aAAa,CAACgF,IAAI,CAACiF,CAAC,EAAEjF,IAAI,CAACkF,CAAC,CAAC;MACzF,IAAI,CAACjH,UAAU,CAAC1L,IAAI,CAAC,CAACoS,GAAG,CAAC,QAAQ,CAAC,CAAUW,QAAQ,CAACnE,GAAG,CAAClE,MAAM,CAACgI,CAAC,EAAErJ,eAAe,EAAEqB,MAAM,CAACiI,CAAC,CAAC;IACjG;EAAC;IAAA1N,GAAA;IAAAmN,GAAA,EAED,SAAAA,IAAA,EAAyB;MACvB,IAAME,IAAI,GAAG,IAAIlK,IAAI,CAAC,CAAC;MACvB,IAAI,CAACsD,UAAU,CAAC5B,IAAI,CAAC7I,OAAO,CAAC,UAAC2K,MAAM,EAAK;QACvC0G,IAAI,CAACY,cAAc,CAACtH,MAAM,CAAC;MAC7B,CAAC,CAAC;MACF,OAAO0G,IAAI;IACb;EAAC;IAAArN,GAAA;IAAApG,KAAA,EAED,SAAA6O,WAAA,EAA6B;MAC3B,IAAM4E,IAAI,GAAG,IAAI,CAACA,IAAI;MACtB,IAAMa,QAAQ,GAAG,IAAI,CAACC,cAAc,CAACd,IAAI,CAAC;MAC1C,IAAMe,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACH,QAAQ,CAAC;MACvD,OAAOE,WAAW,GAAG/J,iBAAiB;IACxC;EAAC;IAAArE,GAAA;IAAApG,KAAA,EAED,SAAAuU,eAAuBd,IAAU,EAAa;MAC5C,OAAO,CACL,IAAI5J,OAAO,CAAC4J,IAAI,CAACiB,GAAG,CAACb,CAAC,EAAEJ,IAAI,CAACiB,GAAG,CAAChT,CAAC,EAAE+R,IAAI,CAACiB,GAAG,CAACZ,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACiB,GAAG,CAACb,CAAC,EAAEJ,IAAI,CAACiB,GAAG,CAAChT,CAAC,EAAE+R,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACiB,GAAG,CAACb,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACjT,CAAC,EAAE+R,IAAI,CAACiB,GAAG,CAACZ,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACiB,GAAG,CAACb,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACjT,CAAC,EAAE+R,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACiB,GAAG,CAAChT,CAAC,EAAE+R,IAAI,CAACiB,GAAG,CAACZ,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACiB,GAAG,CAAChT,CAAC,EAAE+R,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACjT,CAAC,EAAE+R,IAAI,CAACiB,GAAG,CAACZ,CAAC,CAAC,EAC/C,IAAIjK,OAAO,CAAC4J,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACjT,CAAC,EAAE+R,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,CAChD;IACH;EAAC;IAAA1N,GAAA;IAAApG,KAAA,EAED,SAAAyU,qBAA6BH,QAAmB,EAAU;MAAA,IAAAM,MAAA;MACxD,OAAON,QAAQ,CAACO,MAAM,CAAC,UAACF,GAAG,EAAEG,MAAM,EAAK;QACtC,IAAMC,QAAQ,GAAGH,MAAI,CAAC/I,MAAM,CAACmJ,UAAU,CAACF,MAAM,CAAC;QAC/C,OAAO/F,IAAI,CAAC4F,GAAG,CAACA,GAAG,EAAEI,QAAQ,CAAC;MAChC,CAAC,EAAE,CAAC,CAAC;IACP;EAAC;IAAA3O,GAAA;IAAApG,KAAA,EAED,SAAAiT,sBAA8BlG,MAAgB,EAAQ;MACpD5C,qBAAqB,CAAC4C,MAAM,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC9C;EAAC;IAAA5F,GAAA;IAAApG,KAAA,EAED,SAAA8S,mBAA2B/F,MAAgB,EAAQ;MACjDzC,gBAAgB,CAACyC,MAAM,EAAE,IAAI,CAACf,QAAQ,CAAC;IACzC;EAAC;IAAA5F,GAAA;IAAApG,KAAA,EAED,SAAAmT,mBAA2BpG,MAAgB,EAAQ;MACjD7C,iBAAiB,CAAC6C,MAAM,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC1C;EAAC;IAAA5F,GAAA;IAAApG,KAAA,EAED,SAAAqT,oBAA4BtG,MAAgB,EAAQ;MAClD3C,iBAAiB,CAAC2C,MAAM,EAAE,IAAI,CAACf,QAAQ,CAAC;IAC1C;EAAC;IAAA5F,GAAA;IAAApG,KAAA,EAED,SAAAiQ,iBAAA,EAAiC;MAC/B,IAAI,CAACrD,cAAc,CAAC,CAAC;MACrB,IAAI,CAACK,iBAAiB,CAAC,MAAM,CAAC;IAChC;EAAC;EAAA,OAAAtC,oBAAA;AAAA,EA3YuChB,QAAQ"}
|
|
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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"}
|
|
@@ -109,4 +109,24 @@ export declare const inject: (material: Material, type: 'Fresnel' | 'Frame' | 'P
|
|
|
109
109
|
progress: {
|
|
110
110
|
value: number;
|
|
111
111
|
};
|
|
112
|
+
height: {
|
|
113
|
+
value: number;
|
|
114
|
+
};
|
|
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: {
|
|
130
|
+
value: boolean;
|
|
131
|
+
};
|
|
112
132
|
}) => Material;
|
|
@@ -13,6 +13,7 @@ export var realMaterialCache = [];
|
|
|
13
13
|
export var pureMaterialCache = [];
|
|
14
14
|
export var fresnelMaterialCache = [];
|
|
15
15
|
export var groundMaterialCache = [];
|
|
16
|
+
var heightTransitionEffect = /* glsl */"\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n \n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n \n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // \u5F52\u4E00\u5316\u9AD8\u5EA6 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n ";
|
|
16
17
|
export var disposeMaterial = function disposeMaterial(material) {
|
|
17
18
|
if (material.map) material.map.dispose();
|
|
18
19
|
if (material.lightMap) material.lightMap.dispose();
|
|
@@ -99,6 +100,30 @@ export var injectToRealFade = function injectToRealFade(object, uniforms) {
|
|
|
99
100
|
}
|
|
100
101
|
});
|
|
101
102
|
};
|
|
103
|
+
var conversionRealFade = function conversionRealFade(material, type, uniforms) {
|
|
104
|
+
var newMaterial = material.clone();
|
|
105
|
+
newMaterial.transparent = true;
|
|
106
|
+
newMaterial.depthTest = true;
|
|
107
|
+
newMaterial.depthWrite = true;
|
|
108
|
+
newMaterial.polygonOffset = true;
|
|
109
|
+
newMaterial.polygonOffsetFactor = 1;
|
|
110
|
+
newMaterial.polygonOffsetUnits = 1;
|
|
111
|
+
newMaterial.alphaTest = 0.05;
|
|
112
|
+
newMaterial.onBeforeCompile = function (shader) {
|
|
113
|
+
shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
|
|
114
|
+
progress: uniforms.progress,
|
|
115
|
+
objSize: uniforms.maxSize,
|
|
116
|
+
center: uniforms.center,
|
|
117
|
+
isFadeIn: uniforms["is".concat(type, "FadeIn")]
|
|
118
|
+
});
|
|
119
|
+
shader.vertexShader = ver_pre + shader.vertexShader;
|
|
120
|
+
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
|
|
121
|
+
shader.fragmentShader = frag_pre + shader.fragmentShader;
|
|
122
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
|
|
123
|
+
};
|
|
124
|
+
newMaterial.needsUpdate = true;
|
|
125
|
+
return newMaterial;
|
|
126
|
+
};
|
|
102
127
|
|
|
103
128
|
/**
|
|
104
129
|
* inject to base write
|
|
@@ -157,7 +182,7 @@ export var injectToFinirMaterial = function injectToFinirMaterial(object, unifor
|
|
|
157
182
|
object.traverse(function (child) {
|
|
158
183
|
if (child.isMesh) {
|
|
159
184
|
var newMaterial = child.material.clone();
|
|
160
|
-
child.userData.originalMaterial = child.material;
|
|
185
|
+
child.userData.originalMaterial = conversionRealFade(child.material, 'Fresnel', uniforms);
|
|
161
186
|
newMaterial = new MeshStandardMaterial({
|
|
162
187
|
color: new Color('#000')
|
|
163
188
|
});
|
|
@@ -218,6 +243,7 @@ export var injectToGround = function injectToGround(object, type, uniforms) {
|
|
|
218
243
|
groundMaterialCache.push(object.material);
|
|
219
244
|
};
|
|
220
245
|
export var inject = function inject(material, type, uniforms) {
|
|
246
|
+
var isSweepAway = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
221
247
|
material.transparent = true;
|
|
222
248
|
material.depthTest = true;
|
|
223
249
|
material.depthWrite = true;
|
|
@@ -227,7 +253,54 @@ export var inject = function inject(material, type, uniforms) {
|
|
|
227
253
|
progress: uniforms.progress,
|
|
228
254
|
objSize: uniforms.maxSize,
|
|
229
255
|
isFadeIn: uniforms["is".concat(type, "FadeIn")],
|
|
230
|
-
center: uniforms.center
|
|
256
|
+
center: uniforms.center,
|
|
257
|
+
u_interval: {
|
|
258
|
+
value: 100.0
|
|
259
|
+
},
|
|
260
|
+
u_slice_height: {
|
|
261
|
+
value: 80.0
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
shader.vertexShader = ver_pre + shader.vertexShader;
|
|
265
|
+
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
|
|
266
|
+
shader.fragmentShader = frag_pre + shader.fragmentShader;
|
|
267
|
+
shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
|
|
268
|
+
shader.uniforms.u_height = uniforms.height;
|
|
269
|
+
shader.fragmentShader = /* glsl */"\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + "".concat(isSweepAway ? heightTransitionEffect : '')), "\n ");
|
|
270
|
+
};
|
|
271
|
+
material.needsUpdate = true;
|
|
272
|
+
material.customProgramCacheKey = function () {
|
|
273
|
+
return "".concat(ver, "-").concat(frag, "-").concat(type);
|
|
274
|
+
};
|
|
275
|
+
return material;
|
|
276
|
+
};
|
|
277
|
+
export var finirheightTransitionEffect = function finirheightTransitionEffect(material, uniforms) {
|
|
278
|
+
var newMaterial = material.clone();
|
|
279
|
+
newMaterial.transparent = true;
|
|
280
|
+
newMaterial.depthTest = true;
|
|
281
|
+
newMaterial.depthWrite = true;
|
|
282
|
+
newMaterial.polygonOffset = true;
|
|
283
|
+
newMaterial.polygonOffsetFactor = 3;
|
|
284
|
+
newMaterial.polygonOffsetUnits = 3;
|
|
285
|
+
newMaterial.alphaTest = 0.05;
|
|
286
|
+
newMaterial.onBeforeCompile = function (shader) {
|
|
287
|
+
shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
|
|
288
|
+
progress: uniforms.progress,
|
|
289
|
+
objSize: uniforms.maxSize,
|
|
290
|
+
isFadeIn: uniforms.isFresnelFadeIn,
|
|
291
|
+
center: uniforms.center,
|
|
292
|
+
u_interval: {
|
|
293
|
+
value: 100.0
|
|
294
|
+
},
|
|
295
|
+
u_slice_height: {
|
|
296
|
+
value: 80.0
|
|
297
|
+
},
|
|
298
|
+
u_time: {
|
|
299
|
+
value: 0
|
|
300
|
+
},
|
|
301
|
+
u_speed: {
|
|
302
|
+
value: 0.5
|
|
303
|
+
}
|
|
231
304
|
});
|
|
232
305
|
shader.vertexShader = ver_pre + shader.vertexShader;
|
|
233
306
|
shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
|
|
@@ -239,12 +312,10 @@ export var inject = function inject(material, type, uniforms) {
|
|
|
239
312
|
shader.uniforms.rimPower = {
|
|
240
313
|
value: 0.7
|
|
241
314
|
};
|
|
242
|
-
shader.
|
|
243
|
-
|
|
244
|
-
material.needsUpdate = true;
|
|
245
|
-
material.customProgramCacheKey = function () {
|
|
246
|
-
return "".concat(ver, "-").concat(frag, "-").concat(type);
|
|
315
|
+
shader.uniforms.u_height = uniforms.height;
|
|
316
|
+
shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n\t' + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; ' + "".concat(heightTransitionEffect)), "\n ");
|
|
247
317
|
};
|
|
248
|
-
|
|
318
|
+
newMaterial.needsUpdate = true;
|
|
319
|
+
return newMaterial;
|
|
249
320
|
};
|
|
250
321
|
//# sourceMappingURL=inject.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","frameMaterialCache","realMaterialCache","pureMaterialCache","fresnelMaterialCache","groundMaterialCache","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","injectToFrameFade","object","uniforms","traverse","child","isMesh","clone","side","transparent","depthTest","depthWrite","blending","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","alphaTest","onBeforeCompile","shader","_objectSpread","progress","center","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","needsUpdate","push","injectToRealFade","newMaterial","isRealFadeIn","replace","customProgramCacheKey","concat","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","userData","originalMaterial","isFresnelFadeIn","injectToGround","type","time","isApi","inject"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\n\nexport const frameMaterialCache = []\nexport const realMaterialCache = []\nexport const pureMaterialCache = []\nexport const fresnelMaterialCache = []\nexport const groundMaterialCache = []\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone()\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.05\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n frameMaterialCache.push(child.material)\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n realMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone()\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n pureMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = child.material\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n child.material = newMaterial\n fresnelMaterialCache.push(newMaterial)\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n groundMaterialCache.push(object.material)\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number } },\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n material.needsUpdate = true\n material.customProgramCacheKey = () => `${ver}-${frag}-${type}`\n\n return material\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","frameMaterialCache","realMaterialCache","pureMaterialCache","fresnelMaterialCache","groundMaterialCache","heightTransitionEffect","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","injectToFrameFade","object","uniforms","traverse","child","isMesh","clone","side","transparent","depthTest","depthWrite","blending","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","alphaTest","onBeforeCompile","shader","_objectSpread","progress","center","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","needsUpdate","push","injectToRealFade","newMaterial","isRealFadeIn","replace","customProgramCacheKey","concat","conversionRealFade","type","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","userData","originalMaterial","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","arguments","length","undefined","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\n\nexport const frameMaterialCache = []\nexport const realMaterialCache = []\nexport const pureMaterialCache = []\nexport const fresnelMaterialCache = []\nexport const groundMaterialCache = []\n\nconst heightTransitionEffect = /* glsl */`\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n \n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n \n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // 归一化高度 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n `\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone()\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.05\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n frameMaterialCache.push(child.material)\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n realMaterialCache.push(newMaterial)\n }\n })\n}\n\nconst conversionRealFade = (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone()\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n pureMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, 'Fresnel', uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n child.material = newMaterial\n fresnelMaterialCache.push(newMaterial)\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n groundMaterialCache.push(object.material)\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; height: { value: number } },\n isSweepAway = false,\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + `${isSweepAway ? heightTransitionEffect : ''}`,\n )}\n `\n }\n\n material.needsUpdate = true\n material.customProgramCacheKey = () => `${ver}-${frag}-${type}`\n\n return material\n}\n\nexport const finirheightTransitionEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; '\n + `${heightTransitionEffect}`,\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const ver_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
|
|
2
2
|
export declare const ver = "\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
|
|
3
3
|
export declare const frag_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
|
|
4
|
-
export declare const frag = "\n#include <map_fragment
|
|
4
|
+
export declare const frag = "\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
|
|
5
5
|
declare const RealFadeObjS: {
|
|
6
6
|
ver_pre: string;
|
|
7
7
|
ver: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export var ver_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
|
|
2
2
|
export var ver = /* glsl */"\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
|
|
3
3
|
export var frag_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
|
|
4
|
-
export var frag = /* glsl */"\n#include <map_fragment
|
|
4
|
+
export var frag = /* glsl */"\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
|
|
5
5
|
var RealFadeObjS = {
|
|
6
6
|
ver_pre: ver_pre,
|
|
7
7
|
ver: ver,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment
|
|
1
|
+
{"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n`\n\nconst RealFadeObjS = { ver_pre, ver, frag_pre, frag }\n\nexport default RealFadeObjS"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,qEAGtB;AAED,OAAO,IAAMC,GAAG,GAAG,yIAKlB;AAED,OAAO,IAAMC,QAAQ,GAAG,oKAOvB;AAED,OAAO,IAAMC,IAAI,GAAG,yfAenB;AAED,IAAMC,YAAY,GAAG;EAAEJ,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAEC,QAAQ,EAARA,QAAQ;EAAEC,IAAI,EAAJA;AAAK,CAAC;AAErD,eAAeC,YAAY"}
|
|
@@ -161,9 +161,7 @@ export var StreamerTraffic = /*#__PURE__*/function (_BaseTraffic) {
|
|
|
161
161
|
}
|
|
162
162
|
},
|
|
163
163
|
vertexShader: vertexShader,
|
|
164
|
-
fragmentShader: fragmentShader
|
|
165
|
-
depthTest: false,
|
|
166
|
-
depthWrite: false
|
|
164
|
+
fragmentShader: fragmentShader
|
|
167
165
|
});
|
|
168
166
|
var road = new Mesh(geometry, material);
|
|
169
167
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","depthTest","depthWrite","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? -1.0 },\n },\n vertexShader,\n fragmentShader,\n depthTest: false,\n depthWrite: false,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Clock","Color","DoubleSide","MathUtils","Mesh","ShaderMaterial","TubeGeometry","Vector2","use","BaseTraffic","fragmentShader","vertexShader","StreamerTraffic","_BaseTraffic","_inherits","_super","_createSuper","params","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","path","_params$width","width","_params$divide","divide","_params$divideWidth","divideWidth","_params$num","num","_params$length","length","_params$baseColor","baseColor","_params$speed","speed","_params$corner","corner","_params$control","control","_path","_width","_divide","_divideWidth","_num","_baseColor","_speed","_corner","_length","_lanelineControl","generateLaneLines","generateStreamer","_createClass","key","get","set","w","value","_streamerArr","forEach","mesh","removeFromParent","i","lanelines","_this$_lanelineContro","_this$_lanelineContro2","geometry","Math","floor","getLength","material","side","transparent","uniforms","uColor","uTime","lerp","random","uFade","uNumLines","uOffset","uAlpha","uSpeed","ulength","uReverse","direction","road","renderOrder","add","run","push","clock","_control","useframe","getElapsedTime","_get","_getPrototypeOf","prototype"],"sources":["../../../../src/business/TrafficComponents/StreamerTraffic/StreamerTraffic.ts"],"sourcesContent":["import { Clock, Color, type CurvePath, DoubleSide, MathUtils, Mesh, ShaderMaterial, TubeGeometry, Vector2, type Vector3, use } from '@anov/3d-core'\nimport { BaseTraffic } from '../base'\nimport { fragmentShader } from './fragmentShader'\nimport { vertexShader } from './vertexShader'\nimport type { StreamerTrafficInterface } from '.'\n\ntype LanelineControl = {\n index: number\n direction?: number\n}\n\ntype StreamerTrafficParams = {\n path: CurvePath<Vector3>\n width?: number\n divide?: number\n divideWidth?: number\n num?: number\n length?: number\n baseColor?: string\n speed?: number\n control?: LanelineControl[]\n corner?: number\n}\n\n/**\n * 流光风格交通组件\n */\nexport class StreamerTraffic extends BaseTraffic implements StreamerTrafficInterface {\n /** 流光速度 */\n private _speed: number\n\n /** 流光数量 */\n private _num: number\n\n /** 流光颜色 */\n private _baseColor: string\n\n /** 流光宽度 */\n private _divideWidth: number\n\n /** 流光长度 */\n private _length: number\n\n private _streamerArr: Mesh[] = []\n\n private _lanelineControl: LanelineControl[] = []\n\n private _control = []\n\n public get speed() {\n return this._speed\n }\n\n public get num() {\n return this._num\n }\n\n public get baseColor() {\n return this._baseColor\n }\n\n public get divideWidth() {\n return this._divideWidth\n }\n\n public get width(): number {\n return this._width\n }\n\n public set width(w: number) {\n this._width = w\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n public get divide(): number {\n return this._divide\n }\n\n public set divide(num: number) {\n this._divide = num\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n constructor(params: StreamerTrafficParams) {\n super(params)\n\n const { path, width = 4, divide = 4, divideWidth = 1, num = 5, length = 0.25, baseColor = '#ff7700', speed = 100, corner = 10, control = [] } = params\n\n this._path = path\n this._width = width\n this._divide = divide\n this._divideWidth = divideWidth / 2\n this._num = num\n this._baseColor = baseColor\n this._speed = speed\n this._corner = corner\n this._length = length\n this._lanelineControl = control\n\n this.generateLaneLines()\n this.generateStreamer()\n }\n\n /**\n * generate streamer\n */\n private generateStreamer() {\n this._streamerArr.forEach((mesh) => {\n mesh.removeFromParent()\n })\n this._streamerArr = []\n\n for (let i = 0; i < this.lanelines.length; i++) {\n const geometry = new TubeGeometry(this.lanelines[i], Math.floor(this.lanelines[i].getLength()) * 10, this._divideWidth, 5, false)\n const material = new ShaderMaterial({\n side: DoubleSide,\n transparent: true,\n uniforms: {\n uColor: { value: new Color(this._baseColor) },\n uTime: { value: MathUtils.lerp(-1, 1, Math.random()) },\n uFade: { value: new Vector2(0, this._length + Math.random() * this._length - this._length / 2) },\n uNumLines: { value: this._num },\n uOffset: { value: Math.random() },\n uAlpha: { value: Math.random() },\n uSpeed: { value: this._speed + Math.random() * this._speed - this._speed / 2 },\n ulength: { value: Math.floor(this.lanelines[i].getLength()) },\n uReverse: { value: this._lanelineControl[i]?.direction ?? -1.0 },\n },\n vertexShader,\n fragmentShader,\n })\n\n const road = new Mesh(geometry, material)\n\n // 渲染顺序\n road.renderOrder = 1000\n\n this.add(road)\n this.run(material)\n this._streamerArr.push(road)\n }\n }\n\n /**\n * run\n * @param material\n */\n private run(material) {\n const clock = new Clock()\n\n this._control.push(\n use.useframe(() => {\n material.uniforms.uTime.value = clock.getElapsedTime()\n }),\n )\n }\n\n override removeFromParent(): this {\n this._control.forEach((control) => {\n control()\n })\n\n return super.removeFromParent()\n }\n}"],"mappings":"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"}
|