@anov/3d-ability 0.0.101 → 0.0.103
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/Base/ObjectLayer.d.ts +1 -1
- package/dist/business/Base/ObjectLayer.js +3 -1
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Flyline/index.js +8 -11
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/HeatMap/core.d.ts +2 -2
- package/dist/business/HeatMap/core.js +1 -1
- package/dist/business/HeatMap/core.js.map +1 -1
- package/dist/business/Mark/KeyframeAnimation.d.ts +62 -0
- package/dist/business/Mark/KeyframeAnimation.js +219 -0
- package/dist/business/Mark/KeyframeAnimation.js.map +1 -0
- package/dist/business/Mark/index.d.ts +15 -8
- package/dist/business/Mark/index.js +134 -74
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/{Poi/shader/circle copy 2.d.ts → Mark/shader/tanhao.d.ts} +2 -5
- package/dist/business/Mark/shader/tanhao.js +12 -0
- package/dist/business/Mark/shader/tanhao.js.map +1 -0
- package/dist/business/Mark/type.d.ts +2 -12
- package/dist/business/Mark/type.js +0 -7
- package/dist/business/Mark/type.js.map +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.d.ts +72 -63
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +315 -158
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.d.ts +46 -1
- package/dist/business/MaterialSwitch/inject.js +78 -8
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/finalFade.d.ts +2 -0
- package/dist/business/MaterialSwitch/shader/finalFade.js +3 -0
- package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -0
- package/dist/business/MaterialSwitch/shader/ground.d.ts +81 -0
- package/dist/business/MaterialSwitch/shader/ground.js +68 -0
- package/dist/business/MaterialSwitch/shader/ground.js.map +1 -0
- package/dist/business/MaterialSwitch/{realFade.d.ts → shader/realFade.d.ts} +2 -2
- package/dist/business/MaterialSwitch/{realFade.js → shader/realFade.js} +2 -2
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -0
- package/dist/business/Poi/link/Pyramid.js +1 -1
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/particle/DoubleCircle.d.ts +1 -0
- package/dist/business/Poi/particle/DoubleCircle.js +14 -1
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +4 -1
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.d.ts +3 -3
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +1 -1
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Poi/title/index.d.ts +1 -1
- package/dist/business/SplitBuilding/index.d.ts +86 -0
- package/dist/business/SplitBuilding/index.js +593 -0
- package/dist/business/SplitBuilding/index.js.map +1 -0
- package/dist/business/SplitBuilding/type.d.ts +34 -0
- package/dist/business/SplitBuilding/type.js +25 -0
- package/dist/business/SplitBuilding/type.js.map +1 -0
- package/dist/business/Utils/constant.d.ts +1 -1
- package/dist/business/Utils/constant.js +1 -1
- package/dist/business/Utils/constant.js.map +1 -1
- package/dist/business/index.d.ts +1 -0
- package/dist/business/index.js +1 -0
- package/dist/business/index.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js +7 -7
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/business/MaterialSwitch/finalFade.d.ts +0 -2
- package/dist/business/MaterialSwitch/finalFade.js +0 -3
- package/dist/business/MaterialSwitch/finalFade.js.map +0 -1
- package/dist/business/MaterialSwitch/realFade.js.map +0 -1
- package/dist/business/Poi/shader/circle copy 2.js +0 -15
- package/dist/business/Poi/shader/circle copy 2.js.map +0 -1
|
@@ -12,241 +12,398 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
|
|
|
12
12
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
13
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
14
14
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
|
-
import { Box3, Object3D, Vector3, gsap } from '@anov/3d-core';
|
|
16
|
-
import { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from "./inject";
|
|
15
|
+
import { Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
|
|
16
|
+
import { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
|
|
17
|
+
var DEFAULT_CENTER = new Vector3();
|
|
18
|
+
var GROUND_Y_OFFSET = -0.1;
|
|
19
|
+
var SIZE_SCALE_FACTOR = 1.2;
|
|
20
|
+
var GROUND_MATCHING = ['ground', 'floor'];
|
|
21
|
+
|
|
17
22
|
/**
|
|
18
23
|
* 材质切换系统
|
|
19
24
|
*/
|
|
20
25
|
export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
|
|
21
26
|
_inherits(MaterialSwitchSystem, _Object3D);
|
|
22
27
|
var _super = _createSuper(MaterialSwitchSystem);
|
|
23
|
-
function MaterialSwitchSystem() {
|
|
28
|
+
function MaterialSwitchSystem(options) {
|
|
24
29
|
var _this;
|
|
25
30
|
_classCallCheck(this, MaterialSwitchSystem);
|
|
26
31
|
_this = _super.call(this);
|
|
27
32
|
_defineProperty(_assertThisInitialized(_this), "type", 'Real');
|
|
28
33
|
_defineProperty(_assertThisInitialized(_this), "originalMaterial", new Map());
|
|
34
|
+
_defineProperty(_assertThisInitialized(_this), "uniforms", void 0);
|
|
29
35
|
_defineProperty(_assertThisInitialized(_this), "objects", new Map());
|
|
30
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
_defineProperty(_assertThisInitialized(_this), "objectsMap", {
|
|
37
|
+
Real: new Map(),
|
|
38
|
+
Frame: new Map(),
|
|
39
|
+
Pure: new Map(),
|
|
40
|
+
Fresnel: new Map()
|
|
41
|
+
});
|
|
35
42
|
_defineProperty(_assertThisInitialized(_this), "frame", null);
|
|
36
|
-
_defineProperty(_assertThisInitialized(_this), "
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
value: false
|
|
45
|
-
},
|
|
46
|
-
isPureFadeIn: {
|
|
47
|
-
value: false
|
|
48
|
-
},
|
|
49
|
-
isFrameFadeIn: {
|
|
50
|
-
value: false
|
|
43
|
+
_defineProperty(_assertThisInitialized(_this), "gsap", null);
|
|
44
|
+
_defineProperty(_assertThisInitialized(_this), "duration", void 0);
|
|
45
|
+
_defineProperty(_assertThisInitialized(_this), "center", void 0);
|
|
46
|
+
_defineProperty(_assertThisInitialized(_this), "isGenPlane", false);
|
|
47
|
+
_defineProperty(_assertThisInitialized(_this), "rules", []);
|
|
48
|
+
_defineProperty(_assertThisInitialized(_this), "matchingStrategy", {
|
|
49
|
+
matchSize: function matchSize(rule) {
|
|
50
|
+
return _this.handleSizeMatching(rule);
|
|
51
51
|
},
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
matchName: function matchName(rule) {
|
|
53
|
+
return _this.handleNameMatching(rule);
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
|
-
|
|
56
|
+
var _ref = options !== null && options !== void 0 ? options : {},
|
|
57
|
+
duration = _ref.duration,
|
|
58
|
+
_ref$center = _ref.center,
|
|
59
|
+
center = _ref$center === void 0 ? DEFAULT_CENTER : _ref$center,
|
|
60
|
+
_ref$isApi = _ref.isApi,
|
|
61
|
+
isApi = _ref$isApi === void 0 ? false : _ref$isApi;
|
|
62
|
+
_this.duration = duration;
|
|
63
|
+
_this.center = center;
|
|
64
|
+
_this.uniforms = _this.initializeUniforms();
|
|
65
|
+
_this.uniforms.isApi.value = isApi;
|
|
66
|
+
use.useframe(function () {
|
|
67
|
+
_this.uniforms.time.value += 0.00018;
|
|
68
|
+
});
|
|
57
69
|
return _this;
|
|
58
70
|
}
|
|
59
71
|
_createClass(MaterialSwitchSystem, [{
|
|
60
|
-
key: "
|
|
61
|
-
value: function
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
key: "initializeUniforms",
|
|
73
|
+
value: function initializeUniforms() {
|
|
74
|
+
return {
|
|
75
|
+
progress: {
|
|
76
|
+
value: 1.0
|
|
77
|
+
},
|
|
78
|
+
isFresnelFadeIn: {
|
|
79
|
+
value: false
|
|
80
|
+
},
|
|
81
|
+
isRealFadeIn: {
|
|
82
|
+
value: true
|
|
83
|
+
},
|
|
84
|
+
isPureFadeIn: {
|
|
85
|
+
value: false
|
|
86
|
+
},
|
|
87
|
+
isFrameFadeIn: {
|
|
88
|
+
value: false
|
|
89
|
+
},
|
|
90
|
+
maxSize: {
|
|
91
|
+
value: 0
|
|
92
|
+
},
|
|
93
|
+
center: {
|
|
94
|
+
value: this.center
|
|
95
|
+
},
|
|
96
|
+
time: {
|
|
97
|
+
value: 0
|
|
98
|
+
},
|
|
99
|
+
isApi: {
|
|
100
|
+
value: false
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
}, {
|
|
105
|
+
key: "hideAllObjects",
|
|
106
|
+
value: function hideAllObjects() {
|
|
107
|
+
Object.values(this.objectsMap).forEach(function (objectMap) {
|
|
108
|
+
objectMap.forEach(function (object) {
|
|
109
|
+
object.visible = false;
|
|
110
|
+
});
|
|
82
111
|
});
|
|
83
|
-
|
|
84
|
-
|
|
112
|
+
}
|
|
113
|
+
}, {
|
|
114
|
+
key: "showObjectsByType",
|
|
115
|
+
value: function showObjectsByType(type) {
|
|
116
|
+
this.objectsMap[type].forEach(function (object) {
|
|
117
|
+
object.visible = true;
|
|
85
118
|
});
|
|
86
119
|
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* switch type
|
|
90
|
-
* @param type
|
|
91
|
-
*/
|
|
92
120
|
}, {
|
|
93
121
|
key: "switchType",
|
|
94
|
-
value: function switchType(type) {
|
|
95
|
-
var _this$frame,
|
|
96
|
-
_this2 = this;
|
|
122
|
+
value: function switchType(type, option) {
|
|
97
123
|
if (this.type === type) return;
|
|
98
|
-
|
|
99
|
-
this.
|
|
100
|
-
this
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
this
|
|
104
|
-
|
|
105
|
-
|
|
124
|
+
this.handleApiOption(option);
|
|
125
|
+
this.handleMatch(type);
|
|
126
|
+
this.cleanupAnimations();
|
|
127
|
+
this.prepareForSwitch(type);
|
|
128
|
+
this.startSwitchAnimation(type);
|
|
129
|
+
this.type = type;
|
|
130
|
+
}
|
|
131
|
+
}, {
|
|
132
|
+
key: "handleApiOption",
|
|
133
|
+
value: function handleApiOption(option) {
|
|
134
|
+
var _ref2 = option !== null && option !== void 0 ? option : {},
|
|
135
|
+
_ref2$mode = _ref2.mode,
|
|
136
|
+
mode = _ref2$mode === void 0 ? 'auto' : _ref2$mode,
|
|
137
|
+
_ref2$duration = _ref2.duration,
|
|
138
|
+
duration = _ref2$duration === void 0 ? 2 : _ref2$duration,
|
|
139
|
+
_ref2$center = _ref2.center,
|
|
140
|
+
center = _ref2$center === void 0 ? [0, 0, 0] : _ref2$center,
|
|
141
|
+
_ref2$genPlane = _ref2.genPlane,
|
|
142
|
+
genPlane = _ref2$genPlane === void 0 ? true : _ref2$genPlane;
|
|
143
|
+
if (mode === 'auto') this.duration = undefined;else this.duration = duration;
|
|
144
|
+
this.uniforms.center.value = new Vector3().fromArray(center);
|
|
145
|
+
this.isGenPlane = genPlane;
|
|
146
|
+
}
|
|
147
|
+
}, {
|
|
148
|
+
key: "cleanupAnimations",
|
|
149
|
+
value: function cleanupAnimations() {
|
|
150
|
+
var _this$frame, _this$gsap;
|
|
151
|
+
(_this$frame = this.frame) === null || _this$frame === void 0 || _this$frame.call(this);
|
|
152
|
+
(_this$gsap = this.gsap) === null || _this$gsap === void 0 || _this$gsap.kill();
|
|
153
|
+
}
|
|
154
|
+
}, {
|
|
155
|
+
key: "prepareForSwitch",
|
|
156
|
+
value: function prepareForSwitch(newType) {
|
|
157
|
+
this.hideAllObjects();
|
|
158
|
+
this.showObjectsByType(newType);
|
|
159
|
+
this.showObjectsByType(this.type);
|
|
106
160
|
this.uniforms.progress.value = 0.0;
|
|
107
161
|
this.uniforms["is".concat(this.type, "FadeIn")].value = false;
|
|
108
|
-
this.uniforms["is".concat(
|
|
162
|
+
this.uniforms["is".concat(newType, "FadeIn")].value = true;
|
|
163
|
+
}
|
|
164
|
+
}, {
|
|
165
|
+
key: "startSwitchAnimation",
|
|
166
|
+
value: function startSwitchAnimation(newType) {
|
|
167
|
+
var _this2 = this;
|
|
109
168
|
var lastType = this.type;
|
|
110
|
-
|
|
169
|
+
var size = this.getMaxSize();
|
|
170
|
+
var totalTime = Math.pow(6 * size / size, 1 / 3);
|
|
171
|
+
var onComplete = function onComplete() {
|
|
172
|
+
_this2.objectsMap[lastType].forEach(function (object) {
|
|
173
|
+
object.visible = false;
|
|
174
|
+
});
|
|
175
|
+
_this2.dispatchEvent({
|
|
176
|
+
type: 'onStyleChanged',
|
|
177
|
+
style: newType
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
requestAnimationFrame(function () {
|
|
181
|
+
if (_this2.duration) _this2.animateWithGSAP(onComplete);else _this2.animateWithFrame(totalTime, onComplete);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}, {
|
|
185
|
+
key: "animateWithGSAP",
|
|
186
|
+
value: function animateWithGSAP(onComplete) {
|
|
187
|
+
this.gsap = gsap.to(this.uniforms.progress, {
|
|
111
188
|
value: 1.0,
|
|
112
|
-
duration:
|
|
189
|
+
duration: this.duration,
|
|
113
190
|
ease: 'linear',
|
|
114
|
-
onComplete:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
191
|
+
onComplete: onComplete
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}, {
|
|
195
|
+
key: "animateWithFrame",
|
|
196
|
+
value: function animateWithFrame(totalTime, onComplete) {
|
|
197
|
+
var _this3 = this;
|
|
198
|
+
var duration = 0;
|
|
199
|
+
this.frame = use.useframe(function (delta) {
|
|
200
|
+
duration += delta;
|
|
201
|
+
var progress = Math.pow(duration / totalTime, 3);
|
|
202
|
+
_this3.uniforms.progress.value += progress;
|
|
203
|
+
if (_this3.uniforms.progress.value > 1.0) {
|
|
204
|
+
_this3.frame();
|
|
205
|
+
onComplete();
|
|
122
206
|
}
|
|
123
207
|
});
|
|
124
|
-
this.type = type;
|
|
125
208
|
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* add object
|
|
129
|
-
* @param object
|
|
130
|
-
*/
|
|
131
209
|
}, {
|
|
132
210
|
key: "addObject",
|
|
133
211
|
value: function addObject(object) {
|
|
134
|
-
var _this3 = this;
|
|
135
212
|
this.switchType('Real');
|
|
136
|
-
|
|
137
|
-
// @ts-ignore
|
|
138
|
-
var uuid = object.tag === 'entity' ? object.entityId : object.uuid;
|
|
213
|
+
var uuid = this.getObjectUuid(object);
|
|
139
214
|
this.objects.set(uuid, object);
|
|
140
|
-
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
|
|
215
|
+
this.handleNormalObject(object, uuid);
|
|
216
|
+
this.updateVisibility();
|
|
217
|
+
}
|
|
218
|
+
}, {
|
|
219
|
+
key: "getObjectUuid",
|
|
220
|
+
value: function getObjectUuid(object) {
|
|
221
|
+
// @ts-ignore
|
|
222
|
+
return object.tag === 'entity' ? object.entityId : object.uuid;
|
|
223
|
+
}
|
|
224
|
+
}, {
|
|
225
|
+
key: "handleGroundObject",
|
|
226
|
+
value: function handleGroundObject(type) {
|
|
227
|
+
if (this.objectsMap[type].has('ground')) {
|
|
228
|
+
this.updateGroundMesh(type);
|
|
229
|
+
} else {
|
|
230
|
+
var groundMesh = this.createGroundMesh();
|
|
231
|
+
injectToGround(groundMesh, type, this.uniforms);
|
|
232
|
+
this.objectsMap[type].set('ground', groundMesh);
|
|
233
|
+
this.add(groundMesh);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}, {
|
|
237
|
+
key: "handleGroundMatching",
|
|
238
|
+
value: function handleGroundMatching(type) {
|
|
239
|
+
var isMatch = false;
|
|
240
|
+
Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
|
|
241
|
+
objectMap.forEach(function (object) {
|
|
242
|
+
if (GROUND_MATCHING.some(function (matching) {
|
|
243
|
+
return object.name.includes(matching);
|
|
244
|
+
})) {
|
|
245
|
+
isMatch = true;
|
|
246
|
+
object.removeFromParent();
|
|
247
|
+
objectMap.delete(object.uuid);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
if (isMatch && type !== 'Real') this.handleGroundObject(type);
|
|
252
|
+
}
|
|
253
|
+
}, {
|
|
254
|
+
key: "handleNameMatching",
|
|
255
|
+
value: function handleNameMatching(rule) {
|
|
256
|
+
var keys = rule.keys,
|
|
257
|
+
material = rule.material;
|
|
258
|
+
var objects = [];
|
|
259
|
+
var isMatch = false;
|
|
260
|
+
Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
|
|
261
|
+
objectMap.forEach(function (object) {
|
|
262
|
+
if (GROUND_MATCHING.some(function (matching) {
|
|
263
|
+
return object.name.includes(matching);
|
|
264
|
+
})) {
|
|
265
|
+
isMatch = true;
|
|
266
|
+
object.removeFromParent();
|
|
267
|
+
objectMap.delete(object.uuid);
|
|
268
|
+
}
|
|
269
|
+
});
|
|
270
|
+
});
|
|
271
|
+
if (isMatch) {
|
|
272
|
+
// handle object to other material
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}, {
|
|
276
|
+
key: "handleSizeMatching",
|
|
277
|
+
value: function handleSizeMatching(rule) {}
|
|
278
|
+
}, {
|
|
279
|
+
key: "handleMatch",
|
|
280
|
+
value: function handleMatch(type) {
|
|
281
|
+
var _this4 = this;
|
|
282
|
+
if (this.isGenPlane) this.handleGroundMatching(type);
|
|
283
|
+
if (this.rules.length > 0) {
|
|
284
|
+
this.rules.forEach(function (rule) {
|
|
285
|
+
_this4.matchingStrategy[rule.type](rule);
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}, {
|
|
290
|
+
key: "handleNormalObject",
|
|
291
|
+
value: function handleNormalObject(object, uuid) {
|
|
292
|
+
var realObject = object;
|
|
293
|
+
this.generateRealObject(realObject);
|
|
294
|
+
this.objectsMap.Real.set(uuid, realObject);
|
|
295
|
+
this.add(realObject);
|
|
296
|
+
var fresnelObject = object.clone();
|
|
297
|
+
this.generateFinalObject(fresnelObject);
|
|
298
|
+
this.objectsMap.Fresnel.set(uuid, fresnelObject);
|
|
299
|
+
this.add(fresnelObject);
|
|
144
300
|
var pureObject = object.clone();
|
|
145
301
|
this.generatePureObject(pureObject);
|
|
146
|
-
this.
|
|
302
|
+
this.objectsMap.Pure.set(uuid, pureObject);
|
|
147
303
|
this.add(pureObject);
|
|
148
304
|
var frameObject = object.clone();
|
|
149
305
|
this.generateFrameObject(frameObject);
|
|
150
|
-
this.
|
|
306
|
+
this.objectsMap.Frame.set(uuid, frameObject);
|
|
151
307
|
this.add(frameObject);
|
|
152
|
-
object.traverse(function (child) {
|
|
153
|
-
if (child.type === 'Mesh') {
|
|
154
|
-
// only record the first material
|
|
155
|
-
if (!_this3.originalMaterial.has(child.uuid)) _this3.originalMaterial.set(child.uuid, child.material.clone());
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
var realObject = object;
|
|
159
|
-
this.generateRealObject(realObject);
|
|
160
|
-
this.RealObjects.set(uuid, realObject);
|
|
161
308
|
this.uniforms.maxSize.value = this.getMaxSize();
|
|
162
|
-
this.allHide();
|
|
163
|
-
this.RealObjects.forEach(function (object) {
|
|
164
|
-
object.visible = true;
|
|
165
|
-
});
|
|
166
309
|
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* remove object
|
|
170
|
-
* @param object
|
|
171
|
-
*/
|
|
172
310
|
}, {
|
|
173
311
|
key: "removeObject",
|
|
174
312
|
value: function removeObject(object) {
|
|
175
|
-
|
|
176
|
-
var uuid = object.tag === 'entity' ? object.entityId : object.uuid;
|
|
313
|
+
var uuid = this.getObjectUuid(object);
|
|
177
314
|
this.objects.delete(uuid);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
pureObject.removeFromParent();
|
|
186
|
-
fresnelObject.removeFromParent();
|
|
187
|
-
this.RealObjects.delete(uuid);
|
|
188
|
-
this.FrameObjects.delete(uuid);
|
|
189
|
-
this.PureObjects.delete(uuid);
|
|
190
|
-
this.FresnelObjects.delete(uuid);
|
|
315
|
+
Object.values(this.objectsMap).forEach(function (objectMap) {
|
|
316
|
+
var obj = objectMap.get(uuid);
|
|
317
|
+
if (obj) {
|
|
318
|
+
obj.removeFromParent();
|
|
319
|
+
objectMap.delete(uuid);
|
|
320
|
+
}
|
|
321
|
+
});
|
|
191
322
|
this.uniforms.maxSize.value = this.getMaxSize();
|
|
192
323
|
}
|
|
193
|
-
|
|
194
|
-
/**
|
|
195
|
-
* get max size
|
|
196
|
-
* @param object
|
|
197
|
-
* @returns
|
|
198
|
-
*/
|
|
199
324
|
}, {
|
|
200
|
-
key: "
|
|
201
|
-
value: function
|
|
325
|
+
key: "createGroundMesh",
|
|
326
|
+
value: function createGroundMesh() {
|
|
327
|
+
var box = this.box3;
|
|
328
|
+
var size = box.getSize(new Vector3());
|
|
329
|
+
var center = box.getCenter(new Vector3());
|
|
330
|
+
var plane = new PlaneGeometry(size.x, size.z);
|
|
331
|
+
var material = new MeshBasicMaterial({
|
|
332
|
+
color: new Color('#fff')
|
|
333
|
+
});
|
|
334
|
+
var mesh = new Mesh(plane, material);
|
|
335
|
+
mesh.rotation.x = -Math.PI / 2;
|
|
336
|
+
mesh.position.set(center.x, GROUND_Y_OFFSET, center.z);
|
|
337
|
+
return mesh;
|
|
338
|
+
}
|
|
339
|
+
}, {
|
|
340
|
+
key: "updateGroundMesh",
|
|
341
|
+
value: function updateGroundMesh(type) {
|
|
342
|
+
if (!this.objectsMap[type].has('ground')) return;
|
|
343
|
+
var box = this.box3;
|
|
344
|
+
var size = box.getSize(new Vector3());
|
|
345
|
+
var center = box.getCenter(new Vector3());
|
|
346
|
+
this.objectsMap[type].get('ground').geometry.dispose();
|
|
347
|
+
this.objectsMap[type].get('ground').geometry = new PlaneGeometry(size.x, size.z);
|
|
348
|
+
this.objectsMap[type].get('ground').position.set(center.x, GROUND_Y_OFFSET, center.z);
|
|
349
|
+
}
|
|
350
|
+
}, {
|
|
351
|
+
key: "box3",
|
|
352
|
+
get: function get() {
|
|
202
353
|
var box3 = new Box3();
|
|
203
|
-
this.
|
|
354
|
+
this.objectsMap.Real.forEach(function (object) {
|
|
204
355
|
box3.expandByObject(object);
|
|
205
356
|
});
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
357
|
+
return box3;
|
|
358
|
+
}
|
|
359
|
+
}, {
|
|
360
|
+
key: "getMaxSize",
|
|
361
|
+
value: function getMaxSize() {
|
|
362
|
+
var box3 = this.box3;
|
|
363
|
+
var vertices = this.getBoxVertices(box3);
|
|
364
|
+
var maxDistance = this.calculateMaxDistance(vertices);
|
|
365
|
+
return maxDistance * SIZE_SCALE_FACTOR;
|
|
366
|
+
}
|
|
367
|
+
}, {
|
|
368
|
+
key: "getBoxVertices",
|
|
369
|
+
value: function getBoxVertices(box3) {
|
|
370
|
+
return [new Vector3(box3.min.x, box3.min.y, box3.min.z), new Vector3(box3.min.x, box3.min.y, box3.max.z), new Vector3(box3.min.x, box3.max.y, box3.min.z), new Vector3(box3.min.x, box3.max.y, box3.max.z), new Vector3(box3.max.x, box3.min.y, box3.min.z), new Vector3(box3.max.x, box3.min.y, box3.max.z), new Vector3(box3.max.x, box3.max.y, box3.min.z), new Vector3(box3.max.x, box3.max.y, box3.max.z)];
|
|
371
|
+
}
|
|
372
|
+
}, {
|
|
373
|
+
key: "calculateMaxDistance",
|
|
374
|
+
value: function calculateMaxDistance(vertices) {
|
|
375
|
+
var _this5 = this;
|
|
376
|
+
return vertices.reduce(function (max, vertex) {
|
|
377
|
+
var distance = _this5.center.distanceTo(vertex);
|
|
378
|
+
return Math.max(max, distance);
|
|
379
|
+
}, 0);
|
|
209
380
|
}
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* generate final object
|
|
213
|
-
* @param object
|
|
214
|
-
*/
|
|
215
381
|
}, {
|
|
216
382
|
key: "generateFinalObject",
|
|
217
383
|
value: function generateFinalObject(object) {
|
|
218
384
|
injectToFinirMaterial(object, this.uniforms);
|
|
219
385
|
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* generate real object
|
|
223
|
-
* @param object
|
|
224
|
-
*/
|
|
225
386
|
}, {
|
|
226
387
|
key: "generateRealObject",
|
|
227
388
|
value: function generateRealObject(object) {
|
|
228
389
|
injectToRealFade(object, this.uniforms);
|
|
229
390
|
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* generate pure object
|
|
233
|
-
* @param object
|
|
234
|
-
*/
|
|
235
391
|
}, {
|
|
236
392
|
key: "generatePureObject",
|
|
237
393
|
value: function generatePureObject(object) {
|
|
238
394
|
injectToBaseWrite(object, this.uniforms);
|
|
239
395
|
}
|
|
240
|
-
|
|
241
|
-
/**
|
|
242
|
-
* generate frame object
|
|
243
|
-
* @param object
|
|
244
|
-
*/
|
|
245
396
|
}, {
|
|
246
397
|
key: "generateFrameObject",
|
|
247
398
|
value: function generateFrameObject(object) {
|
|
248
399
|
injectToFrameFade(object, this.uniforms);
|
|
249
400
|
}
|
|
401
|
+
}, {
|
|
402
|
+
key: "updateVisibility",
|
|
403
|
+
value: function updateVisibility() {
|
|
404
|
+
this.hideAllObjects();
|
|
405
|
+
this.showObjectsByType('Real');
|
|
406
|
+
}
|
|
250
407
|
}]);
|
|
251
408
|
return MaterialSwitchSystem;
|
|
252
409
|
}(Object3D);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Box3","Object3D","Vector3","gsap","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","generate","_createClass","key","uniforms","allHide","oldObjects","forEach","object","visible","RealObjects","FrameObjects","PureObjects","FresnelObjects","switchType","type","_this$frame","_this2","frame","kill","concat","lastType","to","duration","ease","onComplete","dispatchEvent","style","addObject","_this3","uuid","tag","entityId","objects","set","finalObject","clone","generateFinalObject","add","pureObject","generatePureObject","frameObject","generateFrameObject","traverse","child","originalMaterial","has","material","realObject","generateRealObject","getMaxSize","removeObject","delete","console","log","get","fresnelObject","removeFromParent","box3","expandByObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n\n private objects = new Map<string, Object3D>()\n private oldObjects = new Map<string, Object3D>()\n private RealObjects = new Map<string, Object3D>()\n private FrameObjects = new Map<string, Object3D>()\n private PureObjects = new Map<string, Object3D>()\n private FresnelObjects = new Map<string, Object3D>()\n\n private frame: gsap.core.Tween | null = null\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n constructor() {\n super()\n\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n }\n\n private allHide() {\n this.oldObjects.forEach((object) => {\n object.visible = false\n })\n\n this.RealObjects.forEach((object) => {\n object.visible = false\n })\n\n this.FrameObjects.forEach((object) => {\n object.visible = false\n })\n\n this.PureObjects.forEach((object) => {\n object.visible = false\n })\n\n this.FresnelObjects.forEach((object) => {\n object.visible = false\n })\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.allHide()\n\n this[`${type}Objects`].forEach((object) => {\n object.visible = true\n })\n\n this[`${this.type}Objects`].forEach((object) => {\n object.visible = true\n })\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n const lastType = this.type\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 3.0,\n ease: 'linear',\n onComplete: () => {\n this[`${lastType}Objects`].forEach((object) => {\n object.visible = false\n })\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n this.switchType('Real')\n\n // @ts-ignore\n const uuid = object.tag === 'entity' ? object.entityId : object.uuid\n\n this.objects.set(uuid, object)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.FresnelObjects.set(uuid, finalObject)\n this.add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.PureObjects.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.FrameObjects.set(uuid, frameObject)\n this.add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n // only record the first material\n if (!this.originalMaterial.has(child.uuid))\n this.originalMaterial.set(child.uuid, child.material.clone())\n }\n })\n\n const realObject = object\n this.generateRealObject(realObject)\n this.RealObjects.set(uuid, realObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n\n this.allHide()\n this.RealObjects.forEach((object) => {\n object.visible = true\n })\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n // @ts-ignore\n const uuid = object.tag === 'entity' ? object.entityId : object.uuid\n this.objects.delete(uuid)\n\n console.log('uuid', uuid)\n const realObject = this.RealObjects.get(uuid)\n const frameObject = this.FrameObjects.get(uuid)\n const pureObject = this.PureObjects.get(uuid)\n const fresnelObject = this.FresnelObjects.get(uuid)\n\n realObject.removeFromParent()\n frameObject.removeFromParent()\n pureObject.removeFromParent()\n fresnelObject.removeFromParent()\n\n this.RealObjects.delete(uuid)\n this.FrameObjects.delete(uuid)\n this.PureObjects.delete(uuid)\n this.FresnelObjects.delete(uuid)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n const box3 = new Box3()\n this.RealObjects.forEach((object) => {\n box3.expandByObject(object)\n })\n\n const size = box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","options","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","Real","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","value","useframe","time","_createClass","key","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","hideAllObjects","Object","values","objectsMap","forEach","objectMap","object","visible","showObjectsByType","type","switchType","option","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","undefined","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","concat","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","add","handleGroundMatching","isMatch","slice","some","matching","name","includes","removeFromParent","delete","keys","material","_this4","rules","length","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFinalObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","obj","get","box","box3","getSize","getCenter","plane","x","z","color","mesh","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","y","max","_this5","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n if (this.type === type)\n return\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private handleNameMatching(rule: RuleItem) {\n const { keys, material } = rule\n const objects = []\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.includes(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch) {\n // handle object to other material\n }\n }\n\n private handleSizeMatching(rule: RuleItem) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem) => this.handleSizeMatching(rule),\n matchName: (rule: RuleItem) => this.handleNameMatching(rule),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFinalObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFinalObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAASA,IAAI,EAAEC,KAAK,EAAEC,IAAI,EAAEC,iBAAiB,EAAwBC,QAAQ,EAAEC,aAAa,EAAEC,OAAO,EAAEC,IAAI,EAAEC,GAAG,QAAQ,eAAe;AACvI,SAAgFC,iBAAiB,EAAEC,qBAAqB,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,gBAAgB;AA6B7K,IAAMC,cAAc,GAAG,IAAIR,OAAO,CAAC,CAAC;AACpC,IAAMS,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;EAAAC,SAAA,CAAAF,oBAAA,EAAAC,SAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,oBAAA;EAoB/B,SAAAA,qBAAYK,OAA8B,EAAE;IAAA,IAAAC,KAAA;IAAAC,eAAA,OAAAP,oBAAA;IAC1CM,KAAA,GAAAH,MAAA,CAAAK,IAAA;IAAOC,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,WApByB,MAAM;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,uBACd,IAAIK,GAAG,CAAC,CAAC;IAAAF,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,cAGjB,IAAIK,GAAG,CAAmB,CAAC;IAAAF,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,iBAC2B;MACtEM,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;IAAAF,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,YAEuD,IAAI;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,WACrB,IAAI;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,iBAGtB,KAAK;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,YACE,EAAE;IAAAG,eAAA,CAAAC,sBAAA,CAAAJ,KAAA,uBA4MH;MACzBU,SAAS,EAAE,SAAAA,UAACC,IAAc;QAAA,OAAKX,KAAA,CAAKY,kBAAkB,CAACD,IAAI,CAAC;MAAA;MAC5DE,SAAS,EAAE,SAAAA,UAACF,IAAc;QAAA,OAAKX,KAAA,CAAKc,kBAAkB,CAACH,IAAI,CAAC;MAAA;IAC9D,CAAC;IA3MC,IAAAI,IAAA,GAA6DhB,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,CAAC,CAAC;MAAlEiB,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAAC,WAAA,GAAAF,IAAA,CAAEG,MAAM;MAANA,MAAM,GAAAD,WAAA,cAAG3B,cAAc,GAAA2B,WAAA;MAAAE,UAAA,GAAAJ,IAAA,CAAEK,KAAK;MAALA,KAAK,GAAAD,UAAA,cAAG,KAAK,GAAAA,UAAA;IAExDnB,KAAA,CAAKgB,QAAQ,GAAGA,QAAQ;IACxBhB,KAAA,CAAKkB,MAAM,GAAGA,MAAM;IAEpBlB,KAAA,CAAKqB,QAAQ,GAAGrB,KAAA,CAAKsB,kBAAkB,CAAC,CAAC;IACzCtB,KAAA,CAAKqB,QAAQ,CAACD,KAAK,CAACG,KAAK,GAAGH,KAAK;IAEjCpC,GAAG,CAACwC,QAAQ,CAAC,YAAM;MACjBxB,KAAA,CAAKqB,QAAQ,CAACI,IAAI,CAACF,KAAK,IAAI,OAAO;IACrC,CAAC,CAAC;IAAA,OAAAvB,KAAA;EACJ;EAAC0B,YAAA,CAAAhC,oBAAA;IAAAiC,GAAA;IAAAJ,KAAA,EAED,SAAAD,mBAAA,EAAqD;MACnD,OAAO;QACLM,QAAQ,EAAE;UAAEL,KAAK,EAAE;QAAI,CAAC;QACxBM,eAAe,EAAE;UAAEN,KAAK,EAAE;QAAM,CAAC;QACjCO,YAAY,EAAE;UAAEP,KAAK,EAAE;QAAK,CAAC;QAC7BQ,YAAY,EAAE;UAAER,KAAK,EAAE;QAAM,CAAC;QAC9BS,aAAa,EAAE;UAAET,KAAK,EAAE;QAAM,CAAC;QAC/BU,OAAO,EAAE;UAAEV,KAAK,EAAE;QAAE,CAAC;QACrBL,MAAM,EAAE;UAAEK,KAAK,EAAE,IAAI,CAACL;QAAO,CAAC;QAC9BO,IAAI,EAAE;UAAEF,KAAK,EAAE;QAAE,CAAC;QAClBH,KAAK,EAAE;UAAEG,KAAK,EAAE;QAAM;MACxB,CAAC;IACH;EAAC;IAAAI,GAAA;IAAAJ,KAAA,EAED,SAAAW,eAAA,EAA+B;MAC7BC,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,UAACC,SAAS,EAAK;QACpDA,SAAS,CAACD,OAAO,CAAC,UAACE,MAAM,EAAK;UAC5BA,MAAM,CAACC,OAAO,GAAG,KAAK;QACxB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAAd,GAAA;IAAAJ,KAAA,EAED,SAAAmB,kBAA0BC,IAAwB,EAAQ;MACxD,IAAI,CAACN,UAAU,CAACM,IAAI,CAAC,CAACL,OAAO,CAAC,UAACE,MAAM,EAAK;QACxCA,MAAM,CAACC,OAAO,GAAG,IAAI;MACvB,CAAC,CAAC;IACJ;EAAC;IAAAd,GAAA;IAAAJ,KAAA,EAED,SAAAqB,WAAkBD,IAAwB,EACxCE,MAMC,EAAQ;MACT,IAAI,IAAI,CAACF,IAAI,KAAKA,IAAI,EACpB;MAEF,IAAI,CAACG,eAAe,CAACD,MAAM,CAAC;MAC5B,IAAI,CAACE,WAAW,CAACJ,IAAI,CAAC;MACtB,IAAI,CAACK,iBAAiB,CAAC,CAAC;MACxB,IAAI,CAACC,gBAAgB,CAACN,IAAI,CAAC;MAC3B,IAAI,CAACO,oBAAoB,CAACP,IAAI,CAAC;MAE/B,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;EAAC;IAAAhB,GAAA;IAAAJ,KAAA,EAED,SAAAuB,gBAAwBD,MAKvB,EAAQ;MACP,IAAAM,KAAA,GAA6EN,MAAM,aAANA,MAAM,cAANA,MAAM,GAAI,CAAC,CAAC;QAAAO,UAAA,GAAAD,KAAA,CAAjFE,IAAI;QAAJA,IAAI,GAAAD,UAAA,cAAG,MAAM,GAAAA,UAAA;QAAAE,cAAA,GAAAH,KAAA,CAAEnC,QAAQ;QAARA,QAAQ,GAAAsC,cAAA,cAAG,CAAC,GAAAA,cAAA;QAAAC,YAAA,GAAAJ,KAAA,CAAEjC,MAAM;QAANA,MAAM,GAAAqC,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,CAACrC,QAAQ,GAAG0C,SAAS,MAEzB,IAAI,CAAC1C,QAAQ,GAAGA,QAAQ;MAE1B,IAAI,CAACK,QAAQ,CAACH,MAAM,CAACK,KAAK,GAAG,IAAIzC,OAAO,CAAC,CAAC,CAAC6E,SAAS,CAACzC,MAAM,CAAC;MAC5D,IAAI,CAAC0C,UAAU,GAAGH,QAAQ;IAC5B;EAAC;IAAA9B,GAAA;IAAAJ,KAAA,EAED,SAAAyB,kBAAA,EAAkC;MAAA,IAAAa,WAAA,EAAAC,UAAA;MAChC,CAAAD,WAAA,OAAI,CAACE,KAAK,cAAAF,WAAA,eAAVA,WAAA,CAAA3D,IAAA,KAAa,CAAC;MACd,CAAA4D,UAAA,OAAI,CAAC/E,IAAI,cAAA+E,UAAA,eAATA,UAAA,CAAWE,IAAI,CAAC,CAAC;IACnB;EAAC;IAAArC,GAAA;IAAAJ,KAAA,EAED,SAAA0B,iBAAyBgB,OAA2B,EAAQ;MAC1D,IAAI,CAAC/B,cAAc,CAAC,CAAC;MACrB,IAAI,CAACQ,iBAAiB,CAACuB,OAAO,CAAC;MAC/B,IAAI,CAACvB,iBAAiB,CAAC,IAAI,CAACC,IAAI,CAAC;MAEjC,IAAI,CAACtB,QAAQ,CAACO,QAAQ,CAACL,KAAK,GAAG,GAAG;MAClC,IAAI,CAACF,QAAQ,MAAA6C,MAAA,CAAM,IAAI,CAACvB,IAAI,YAAS,CAACpB,KAAK,GAAG,KAAK;MACnD,IAAI,CAACF,QAAQ,MAAA6C,MAAA,CAAMD,OAAO,YAAS,CAAC1C,KAAK,GAAG,IAAI;IAClD;EAAC;IAAAI,GAAA;IAAAJ,KAAA,EAED,SAAA2B,qBAA6Be,OAA2B,EAAQ;MAAA,IAAAE,MAAA;MAC9D,IAAMC,QAAQ,GAAG,IAAI,CAACzB,IAAI;MAC1B,IAAM0B,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,CAAC9B,UAAU,CAAC+B,QAAQ,CAAC,CAAC9B,OAAO,CAAC,UAACE,MAAM,EAAK;UAC5CA,MAAM,CAACC,OAAO,GAAG,KAAK;QACxB,CAAC,CAAC;QACF0B,MAAI,CAACQ,aAAa,CAAC;UAAEhC,IAAI,EAAE,gBAAgB;UAAEiC,KAAK,EAAEX;QAAQ,CAAC,CAAC;MAChE,CAAC;MAEDY,qBAAqB,CAAC,YAAM;QAC1B,IAAIV,MAAI,CAACnD,QAAQ,EACfmD,MAAI,CAACW,eAAe,CAACJ,UAAU,CAAC,MAEhCP,MAAI,CAACY,gBAAgB,CAACR,SAAS,EAAEG,UAAU,CAAC;MAChD,CAAC,CAAC;IACJ;EAAC;IAAA/C,GAAA;IAAAJ,KAAA,EAED,SAAAuD,gBAAwBJ,UAAsB,EAAQ;MACpD,IAAI,CAAC3F,IAAI,GAAGA,IAAI,CAACiG,EAAE,CAAC,IAAI,CAAC3D,QAAQ,CAACO,QAAQ,EAAE;QAC1CL,KAAK,EAAE,GAAG;QACVP,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvBiE,IAAI,EAAE,QAAQ;QACdP,UAAU,EAAVA;MACF,CAAC,CAAC;IACJ;EAAC;IAAA/C,GAAA;IAAAJ,KAAA,EAED,SAAAwD,iBAAyBR,SAAiB,EAAEG,UAAsB,EAAQ;MAAA,IAAAQ,MAAA;MACxE,IAAIlE,QAAQ,GAAG,CAAC;MAChB,IAAI,CAAC+C,KAAK,GAAG/E,GAAG,CAACwC,QAAQ,CAAC,UAAC2D,KAAK,EAAK;QACnCnE,QAAQ,IAAImE,KAAK;QACjB,IAAMvD,QAAQ,GAAA4C,IAAA,CAAAC,GAAA,CAAIzD,QAAQ,GAAGuD,SAAS,EAAK,CAAC;QAC5CW,MAAI,CAAC7D,QAAQ,CAACO,QAAQ,CAACL,KAAK,IAAIK,QAAQ;QAExC,IAAIsD,MAAI,CAAC7D,QAAQ,CAACO,QAAQ,CAACL,KAAK,GAAG,GAAG,EAAE;UACtC2D,MAAI,CAACnB,KAAK,CAAC,CAAC;UACZW,UAAU,CAAC,CAAC;QACd;MACF,CAAC,CAAC;IACJ;EAAC;IAAA/C,GAAA;IAAAJ,KAAA,EAED,SAAA6D,UAAiB5C,MAAgB,EAAQ;MACvC,IAAI,CAACI,UAAU,CAAC,MAAM,CAAC;MACvB,IAAMyC,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;IAAA/D,GAAA;IAAAJ,KAAA,EAED,SAAA+D,cAAsB9C,MAAgB,EAAU;MAC9C;MACA,OAAOA,MAAM,CAACmD,GAAG,KAAK,QAAQ,GAAGnD,MAAM,CAACoD,QAAQ,GAAGpD,MAAM,CAAC6C,IAAI;IAChE;EAAC;IAAA1D,GAAA;IAAAJ,KAAA,EAED,SAAAsE,mBAA2BlD,IAAwB,EAAQ;MACzD,IAAI,IAAI,CAACN,UAAU,CAACM,IAAI,CAAC,CAACmD,GAAG,CAAC,QAAQ,CAAC,EAAE;QACvC,IAAI,CAACC,gBAAgB,CAACpD,IAAI,CAAC;MAC7B,CAAC,MACI;QACH,IAAMqD,UAAU,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;QAC1C7G,cAAc,CAAC4G,UAAU,EAAErD,IAAI,EAAE,IAAI,CAACtB,QAAQ,CAAC;QAC/C,IAAI,CAACgB,UAAU,CAACM,IAAI,CAAC,CAAC6C,GAAG,CAAC,QAAQ,EAAEQ,UAAU,CAAC;QAC/C,IAAI,CAACE,GAAG,CAACF,UAAU,CAAC;MACtB;IACF;EAAC;IAAArE,GAAA;IAAAJ,KAAA,EAED,SAAA4E,qBAA6BxD,IAAwB,EAAE;MACrD,IAAIyD,OAAO,GAAG,KAAK;MAEnBjE,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAACgE,KAAK,CAAC,CAAC,CAAC,CAAC/D,OAAO,CAAC,UAACC,SAAS,EAAK;QAC7DA,SAAS,CAACD,OAAO,CAAC,UAACE,MAAM,EAAK;UAC5B,IAAI/C,eAAe,CAAC6G,IAAI,CAAC,UAAAC,QAAQ;YAAA,OAAI/D,MAAM,CAACgE,IAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC;UAAA,EAAC,EAAE;YACpEH,OAAO,GAAG,IAAI;YACd5D,MAAM,CAACkE,gBAAgB,CAAC,CAAC;YACzBnE,SAAS,CAACoE,MAAM,CAACnE,MAAM,CAAC6C,IAAI,CAAC;UAC/B;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,IAAIe,OAAO,IAAIzD,IAAI,KAAK,MAAM,EAC5B,IAAI,CAACkD,kBAAkB,CAAClD,IAAI,CAAC;IACjC;EAAC;IAAAhB,GAAA;IAAAJ,KAAA,EAED,SAAAT,mBAA2BH,IAAc,EAAE;MACzC,IAAQiG,IAAI,GAAejG,IAAI,CAAvBiG,IAAI;QAAEC,QAAQ,GAAKlG,IAAI,CAAjBkG,QAAQ;MACtB,IAAMtB,OAAO,GAAG,EAAE;MAClB,IAAIa,OAAO,GAAG,KAAK;MAEnBjE,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAACgE,KAAK,CAAC,CAAC,CAAC,CAAC/D,OAAO,CAAC,UAACC,SAAS,EAAK;QAC7DA,SAAS,CAACD,OAAO,CAAC,UAACE,MAAM,EAAK;UAC5B,IAAI/C,eAAe,CAAC6G,IAAI,CAAC,UAAAC,QAAQ;YAAA,OAAI/D,MAAM,CAACgE,IAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC;UAAA,EAAC,EAAE;YACpEH,OAAO,GAAG,IAAI;YACd5D,MAAM,CAACkE,gBAAgB,CAAC,CAAC;YACzBnE,SAAS,CAACoE,MAAM,CAACnE,MAAM,CAAC6C,IAAI,CAAC;UAC/B;QACF,CAAC,CAAC;MACJ,CAAC,CAAC;MAEF,IAAIe,OAAO,EAAE;QACX;MAAA;IAEJ;EAAC;IAAAzE,GAAA;IAAAJ,KAAA,EAED,SAAAX,mBAA2BD,IAAc,EAAE,CAAC;EAAC;IAAAgB,GAAA;IAAAJ,KAAA,EAO7C,SAAAwB,YAAoBJ,IAAwB,EAAE;MAAA,IAAAmE,MAAA;MAC5C,IAAI,IAAI,CAAClD,UAAU,EACjB,IAAI,CAACuC,oBAAoB,CAACxD,IAAI,CAAC;MAEjC,IAAI,IAAI,CAACoE,KAAK,CAACC,MAAM,GAAG,CAAC,EAAE;QACzB,IAAI,CAACD,KAAK,CAACzE,OAAO,CAAC,UAAC3B,IAAI,EAAK;UAC3BmG,MAAI,CAACG,gBAAgB,CAACtG,IAAI,CAACgC,IAAI,CAAC,CAAChC,IAAI,CAAC;QACxC,CAAC,CAAC;MACJ;IACF;EAAC;IAAAgB,GAAA;IAAAJ,KAAA,EAED,SAAAkE,mBAA2BjD,MAAgB,EAAE6C,IAAY,EAAQ;MAC/D,IAAM6B,UAAU,GAAG1E,MAAM;MACzB,IAAI,CAAC2E,kBAAkB,CAACD,UAAU,CAAC;MACnC,IAAI,CAAC7E,UAAU,CAAC/B,IAAI,CAACkF,GAAG,CAACH,IAAI,EAAE6B,UAAU,CAAC;MAC1C,IAAI,CAAChB,GAAG,CAACgB,UAAU,CAAC;MAEpB,IAAME,aAAa,GAAG5E,MAAM,CAAC6E,KAAK,CAAC,CAAC;MACpC,IAAI,CAACC,mBAAmB,CAACF,aAAa,CAAC;MACvC,IAAI,CAAC/E,UAAU,CAAC5B,OAAO,CAAC+E,GAAG,CAACH,IAAI,EAAE+B,aAAa,CAAC;MAChD,IAAI,CAAClB,GAAG,CAACkB,aAAa,CAAC;MAEvB,IAAMG,UAAU,GAAG/E,MAAM,CAAC6E,KAAK,CAAC,CAAC;MACjC,IAAI,CAACG,kBAAkB,CAACD,UAAU,CAAC;MACnC,IAAI,CAAClF,UAAU,CAAC7B,IAAI,CAACgF,GAAG,CAACH,IAAI,EAAEkC,UAAU,CAAC;MAC1C,IAAI,CAACrB,GAAG,CAACqB,UAAU,CAAC;MAEpB,IAAME,WAAW,GAAGjF,MAAM,CAAC6E,KAAK,CAAC,CAAC;MAClC,IAAI,CAACK,mBAAmB,CAACD,WAAW,CAAC;MACrC,IAAI,CAACpF,UAAU,CAAC9B,KAAK,CAACiF,GAAG,CAACH,IAAI,EAAEoC,WAAW,CAAC;MAC5C,IAAI,CAACvB,GAAG,CAACuB,WAAW,CAAC;MAErB,IAAI,CAACpG,QAAQ,CAACY,OAAO,CAACV,KAAK,GAAG,IAAI,CAAC+C,UAAU,CAAC,CAAC;IACjD;EAAC;IAAA3C,GAAA;IAAAJ,KAAA,EAED,SAAAoG,aAAoBnF,MAAgB,EAAQ;MAC1C,IAAM6C,IAAI,GAAG,IAAI,CAACC,aAAa,CAAC9C,MAAM,CAAC;MACvC,IAAI,CAAC+C,OAAO,CAACoB,MAAM,CAACtB,IAAI,CAAC;MAEzBlD,MAAM,CAACC,MAAM,CAAC,IAAI,CAACC,UAAU,CAAC,CAACC,OAAO,CAAC,UAACC,SAAS,EAAK;QACpD,IAAMqF,GAAG,GAAGrF,SAAS,CAACsF,GAAG,CAACxC,IAAI,CAAC;QAC/B,IAAIuC,GAAG,EAAE;UACPA,GAAG,CAAClB,gBAAgB,CAAC,CAAC;UACtBnE,SAAS,CAACoE,MAAM,CAACtB,IAAI,CAAC;QACxB;MACF,CAAC,CAAC;MAEF,IAAI,CAAChE,QAAQ,CAACY,OAAO,CAACV,KAAK,GAAG,IAAI,CAAC+C,UAAU,CAAC,CAAC;IACjD;EAAC;IAAA3C,GAAA;IAAAJ,KAAA,EAED,SAAA0E,iBAAA,EAAiC;MAC/B,IAAM6B,GAAG,GAAG,IAAI,CAACC,IAAI;MACrB,IAAM1D,IAAI,GAAGyD,GAAG,CAACE,OAAO,CAAC,IAAIlJ,OAAO,CAAC,CAAC,CAAC;MACvC,IAAMoC,MAAM,GAAG4G,GAAG,CAACG,SAAS,CAAC,IAAInJ,OAAO,CAAC,CAAC,CAAC;MAE3C,IAAMoJ,KAAK,GAAG,IAAIrJ,aAAa,CAACwF,IAAI,CAAC8D,CAAC,EAAE9D,IAAI,CAAC+D,CAAC,CAAC;MAC/C,IAAMvB,QAAQ,GAAG,IAAIlI,iBAAiB,CAAC;QAAE0J,KAAK,EAAE,IAAI5J,KAAK,CAAC,MAAM;MAAE,CAAC,CAAC;MACpE,IAAM6J,IAAI,GAAG,IAAI5J,IAAI,CAACwJ,KAAK,EAAErB,QAAQ,CAAC;MAEtCyB,IAAI,CAACC,QAAQ,CAACJ,CAAC,GAAG,CAAC3D,IAAI,CAACgE,EAAE,GAAG,CAAC;MAC9BF,IAAI,CAACG,QAAQ,CAACjD,GAAG,CAACtE,MAAM,CAACiH,CAAC,EAAE5I,eAAe,EAAE2B,MAAM,CAACkH,CAAC,CAAC;MAEtD,OAAOE,IAAI;IACb;EAAC;IAAA3G,GAAA;IAAAJ,KAAA,EAED,SAAAwE,iBAAyBpD,IAAwB,EAAQ;MACvD,IAAI,CAAC,IAAI,CAACN,UAAU,CAACM,IAAI,CAAC,CAACmD,GAAG,CAAC,QAAQ,CAAC,EACtC;MAEF,IAAMgC,GAAG,GAAG,IAAI,CAACC,IAAI;MACrB,IAAM1D,IAAI,GAAGyD,GAAG,CAACE,OAAO,CAAC,IAAIlJ,OAAO,CAAC,CAAC,CAAC;MACvC,IAAMoC,MAAM,GAAG4G,GAAG,CAACG,SAAS,CAAC,IAAInJ,OAAO,CAAC,CAAC,CAAC;MAE1C,IAAI,CAACuD,UAAU,CAACM,IAAI,CAAC,CAACkF,GAAG,CAAC,QAAQ,CAAC,CAAUa,QAAQ,CAACC,OAAO,CAAC,CAAC;MAC/D,IAAI,CAACtG,UAAU,CAACM,IAAI,CAAC,CAACkF,GAAG,CAAC,QAAQ,CAAC,CAAUa,QAAQ,GAAG,IAAI7J,aAAa,CAACwF,IAAI,CAAC8D,CAAC,EAAE9D,IAAI,CAAC+D,CAAC,CAAC;MACzF,IAAI,CAAC/F,UAAU,CAACM,IAAI,CAAC,CAACkF,GAAG,CAAC,QAAQ,CAAC,CAAUY,QAAQ,CAACjD,GAAG,CAACtE,MAAM,CAACiH,CAAC,EAAE5I,eAAe,EAAE2B,MAAM,CAACkH,CAAC,CAAC;IACjG;EAAC;IAAAzG,GAAA;IAAAkG,GAAA,EAED,SAAAA,IAAA,EAAyB;MACvB,IAAME,IAAI,GAAG,IAAIvJ,IAAI,CAAC,CAAC;MACvB,IAAI,CAAC6D,UAAU,CAAC/B,IAAI,CAACgC,OAAO,CAAC,UAACE,MAAM,EAAK;QACvCuF,IAAI,CAACa,cAAc,CAACpG,MAAM,CAAC;MAC7B,CAAC,CAAC;MACF,OAAOuF,IAAI;IACb;EAAC;IAAApG,GAAA;IAAAJ,KAAA,EAED,SAAA+C,WAAA,EAA6B;MAC3B,IAAMyD,IAAI,GAAG,IAAI,CAACA,IAAI;MACtB,IAAMc,QAAQ,GAAG,IAAI,CAACC,cAAc,CAACf,IAAI,CAAC;MAC1C,IAAMgB,WAAW,GAAG,IAAI,CAACC,oBAAoB,CAACH,QAAQ,CAAC;MACvD,OAAOE,WAAW,GAAGvJ,iBAAiB;IACxC;EAAC;IAAAmC,GAAA;IAAAJ,KAAA,EAED,SAAAuH,eAAuBf,IAAU,EAAa;MAC5C,OAAO,CACL,IAAIjJ,OAAO,CAACiJ,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACC,CAAC,EAAEnB,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACC,CAAC,EAAEnB,IAAI,CAACoB,GAAG,CAACf,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACoB,GAAG,CAACD,CAAC,EAAEnB,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACkB,GAAG,CAACd,CAAC,EAAEJ,IAAI,CAACoB,GAAG,CAACD,CAAC,EAAEnB,IAAI,CAACoB,GAAG,CAACf,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACoB,GAAG,CAAChB,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACC,CAAC,EAAEnB,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACoB,GAAG,CAAChB,CAAC,EAAEJ,IAAI,CAACkB,GAAG,CAACC,CAAC,EAAEnB,IAAI,CAACoB,GAAG,CAACf,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACoB,GAAG,CAAChB,CAAC,EAAEJ,IAAI,CAACoB,GAAG,CAACD,CAAC,EAAEnB,IAAI,CAACkB,GAAG,CAACb,CAAC,CAAC,EAC/C,IAAItJ,OAAO,CAACiJ,IAAI,CAACoB,GAAG,CAAChB,CAAC,EAAEJ,IAAI,CAACoB,GAAG,CAACD,CAAC,EAAEnB,IAAI,CAACoB,GAAG,CAACf,CAAC,CAAC,CAChD;IACH;EAAC;IAAAzG,GAAA;IAAAJ,KAAA,EAED,SAAAyH,qBAA6BH,QAAmB,EAAU;MAAA,IAAAO,MAAA;MACxD,OAAOP,QAAQ,CAACQ,MAAM,CAAC,UAACF,GAAG,EAAEG,MAAM,EAAK;QACtC,IAAMC,QAAQ,GAAGH,MAAI,CAAClI,MAAM,CAACsI,UAAU,CAACF,MAAM,CAAC;QAC/C,OAAO9E,IAAI,CAAC2E,GAAG,CAACA,GAAG,EAAEI,QAAQ,CAAC;MAChC,CAAC,EAAE,CAAC,CAAC;IACP;EAAC;IAAA5H,GAAA;IAAAJ,KAAA,EAED,SAAA+F,oBAA4B9E,MAAgB,EAAQ;MAClDtD,qBAAqB,CAACsD,MAAM,EAAE,IAAI,CAACnB,QAAQ,CAAC;IAC9C;EAAC;IAAAM,GAAA;IAAAJ,KAAA,EAED,SAAA4F,mBAA2B3E,MAAgB,EAAQ;MACjDnD,gBAAgB,CAACmD,MAAM,EAAE,IAAI,CAACnB,QAAQ,CAAC;IACzC;EAAC;IAAAM,GAAA;IAAAJ,KAAA,EAED,SAAAiG,mBAA2BhF,MAAgB,EAAQ;MACjDvD,iBAAiB,CAACuD,MAAM,EAAE,IAAI,CAACnB,QAAQ,CAAC;IAC1C;EAAC;IAAAM,GAAA;IAAAJ,KAAA,EAED,SAAAmG,oBAA4BlF,MAAgB,EAAQ;MAClDrD,iBAAiB,CAACqD,MAAM,EAAE,IAAI,CAACnB,QAAQ,CAAC;IAC1C;EAAC;IAAAM,GAAA;IAAAJ,KAAA,EAED,SAAAmE,iBAAA,EAAiC;MAC/B,IAAI,CAACxD,cAAc,CAAC,CAAC;MACrB,IAAI,CAACQ,iBAAiB,CAAC,MAAM,CAAC;IAChC;EAAC;EAAA,OAAAhD,oBAAA;AAAA,EAvWuCd,QAAQ"}
|