@2112-lab/central-plant 0.1.4 → 0.1.6
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/bundle/index.js +33146 -1
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +432 -1
- package/dist/cjs/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1448 -1
- package/dist/cjs/node_modules/three/examples/jsm/controls/OrbitControls.js +1853 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3537 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/OBJExporter.js +305 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/PLYExporter.js +542 -1
- package/dist/cjs/node_modules/three/examples/jsm/exporters/STLExporter.js +218 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/DRACOLoader.js +683 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4811 -1
- package/dist/cjs/node_modules/three/examples/jsm/loaders/RGBELoader.js +480 -1
- package/dist/cjs/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +309 -1
- package/dist/cjs/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +120 -1
- package/dist/cjs/src/analysis/analysis.js +560 -1
- package/dist/cjs/src/analysis/testing.js +958 -1
- package/dist/cjs/src/core/centralPlant.js +1149 -1
- package/dist/cjs/src/core/debugLogger.js +175 -1
- package/dist/cjs/src/core/mathUtils.js +574 -1
- package/dist/cjs/src/core/nameUtils.js +93 -1
- package/dist/cjs/src/data/export.js +716 -1
- package/dist/cjs/src/data/import.js +380 -1
- package/dist/cjs/src/data/numerics.js +522 -1
- package/dist/cjs/src/helpers/sceneHelper.js +572 -1
- package/dist/cjs/src/index.js +69 -1
- package/dist/cjs/src/managers/components/animationManager.js +123 -1
- package/dist/cjs/src/managers/components/componentManager.js +332 -1
- package/dist/cjs/src/managers/components/pathfindingManager.js +1441 -1
- package/dist/cjs/src/managers/controls/TransformControls.js +1063 -1
- package/dist/cjs/src/managers/controls/cameraControlsManager.js +79 -1
- package/dist/cjs/src/managers/controls/dragDropManager.js +1026 -1
- package/dist/cjs/src/managers/controls/keyboardControlsManager.js +395 -1
- package/dist/cjs/src/managers/controls/transformControlsManager.js +1807 -1
- package/dist/cjs/src/managers/environment/environmentManager.js +714 -1
- package/dist/cjs/src/managers/environment/textureConfig.js +229 -1
- package/dist/cjs/src/managers/scene/sceneExportManager.js +264 -1
- package/dist/cjs/src/managers/scene/sceneInitializationManager.js +346 -1
- package/dist/cjs/src/managers/scene/sceneOperationsManager.js +1509 -1
- package/dist/cjs/src/managers/scene/sceneTooltipsManager.js +661 -1
- package/dist/cjs/src/managers/system/disposalManager.js +444 -1
- package/dist/cjs/src/managers/system/hotReloadManager.js +291 -1
- package/dist/cjs/src/managers/system/performanceMonitor.js +863 -1
- package/dist/cjs/src/rendering/modelPreloader.js +369 -1
- package/dist/cjs/src/rendering/rendering2D.js +631 -1
- package/dist/cjs/src/rendering/rendering3D.js +685 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +396 -1
- package/dist/esm/node_modules/@2112-lab/pathfinder/dist/index.esm.js +1444 -1
- package/dist/esm/node_modules/three/examples/jsm/controls/OrbitControls.js +1849 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/GLTFExporter.js +3533 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/OBJExporter.js +301 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/PLYExporter.js +538 -1
- package/dist/esm/node_modules/three/examples/jsm/exporters/STLExporter.js +214 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/DRACOLoader.js +679 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/GLTFLoader.js +4807 -1
- package/dist/esm/node_modules/three/examples/jsm/loaders/RGBELoader.js +476 -1
- package/dist/esm/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js +304 -1
- package/dist/esm/node_modules/three/examples/jsm/utils/BufferGeometryUtils.js +116 -1
- package/dist/esm/src/analysis/analysis.js +536 -1
- package/dist/esm/src/analysis/testing.js +954 -1
- package/dist/esm/src/core/centralPlant.js +1144 -1
- package/dist/esm/src/core/debugLogger.js +167 -1
- package/dist/esm/src/core/mathUtils.js +570 -1
- package/dist/esm/src/core/nameUtils.js +87 -1
- package/dist/esm/src/data/export.js +712 -1
- package/dist/esm/src/data/import.js +356 -1
- package/dist/esm/src/data/numerics.js +518 -1
- package/dist/esm/src/helpers/sceneHelper.js +547 -1
- package/dist/esm/src/index.js +35 -1
- package/dist/esm/src/managers/components/animationManager.js +119 -1
- package/dist/esm/src/managers/components/componentManager.js +328 -1
- package/dist/esm/src/managers/components/pathfindingManager.js +1417 -1
- package/dist/esm/src/managers/controls/TransformControls.js +1057 -1
- package/dist/esm/src/managers/controls/cameraControlsManager.js +75 -1
- package/dist/esm/src/managers/controls/dragDropManager.js +1002 -1
- package/dist/esm/src/managers/controls/keyboardControlsManager.js +371 -1
- package/dist/esm/src/managers/controls/transformControlsManager.js +1782 -1
- package/dist/esm/src/managers/environment/environmentManager.js +690 -1
- package/dist/esm/src/managers/environment/textureConfig.js +202 -1
- package/dist/esm/src/managers/scene/sceneExportManager.js +260 -1
- package/dist/esm/src/managers/scene/sceneInitializationManager.js +322 -1
- package/dist/esm/src/managers/scene/sceneOperationsManager.js +1485 -1
- package/dist/esm/src/managers/scene/sceneTooltipsManager.js +637 -1
- package/dist/esm/src/managers/system/disposalManager.js +440 -1
- package/dist/esm/src/managers/system/hotReloadManager.js +287 -1
- package/dist/esm/src/managers/system/performanceMonitor.js +858 -1
- package/dist/esm/src/rendering/modelPreloader.js +364 -1
- package/dist/esm/src/rendering/rendering2D.js +627 -1
- package/dist/esm/src/rendering/rendering3D.js +661 -1
- package/package.json +1 -1
|
@@ -1 +1,574 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
|
|
6
|
+
|
|
7
|
+
var _MathUtils;
|
|
8
|
+
/**
|
|
9
|
+
* MathUtils
|
|
10
|
+
* Essential mathematical utilities and helper functions
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
var MathUtils = /*#__PURE__*/_rollupPluginBabelHelpers.createClass(function MathUtils() {
|
|
14
|
+
_rollupPluginBabelHelpers.classCallCheck(this, MathUtils);
|
|
15
|
+
});
|
|
16
|
+
_MathUtils = MathUtils;
|
|
17
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "PI", Math.PI);
|
|
18
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "TWO_PI", 2 * Math.PI);
|
|
19
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "HALF_PI", Math.PI / 2);
|
|
20
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "DEG_TO_RAD", Math.PI / 180);
|
|
21
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "RAD_TO_DEG", 180 / Math.PI);
|
|
22
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "EPSILON", 1e-10);
|
|
23
|
+
/**
|
|
24
|
+
* Angle utilities
|
|
25
|
+
*/
|
|
26
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "angle", {
|
|
27
|
+
/**
|
|
28
|
+
* Convert degrees to radians
|
|
29
|
+
* @param {number} degrees - Angle in degrees
|
|
30
|
+
* @returns {number} Angle in radians
|
|
31
|
+
*/
|
|
32
|
+
toRadians: function toRadians(degrees) {
|
|
33
|
+
return degrees * _MathUtils.DEG_TO_RAD;
|
|
34
|
+
},
|
|
35
|
+
/**
|
|
36
|
+
* Convert radians to degrees
|
|
37
|
+
* @param {number} radians - Angle in radians
|
|
38
|
+
* @returns {number} Angle in degrees
|
|
39
|
+
*/
|
|
40
|
+
toDegrees: function toDegrees(radians) {
|
|
41
|
+
return radians * _MathUtils.RAD_TO_DEG;
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* Normalize angle to [0, 2π] range
|
|
45
|
+
* @param {number} angle - Angle in radians
|
|
46
|
+
* @returns {number} Normalized angle
|
|
47
|
+
*/
|
|
48
|
+
normalize: function normalize(angle) {
|
|
49
|
+
while (angle < 0) angle += _MathUtils.TWO_PI;
|
|
50
|
+
while (angle >= _MathUtils.TWO_PI) angle -= _MathUtils.TWO_PI;
|
|
51
|
+
return angle;
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* Normalize angle to [-π, π] range
|
|
55
|
+
* @param {number} angle - Angle in radians
|
|
56
|
+
* @returns {number} Normalized angle
|
|
57
|
+
*/
|
|
58
|
+
normalizeSignedAngle: function normalizeSignedAngle(angle) {
|
|
59
|
+
angle = _MathUtils.angle.normalize(angle);
|
|
60
|
+
return angle > Math.PI ? angle - _MathUtils.TWO_PI : angle;
|
|
61
|
+
},
|
|
62
|
+
/**
|
|
63
|
+
* Calculate shortest angular distance between two angles
|
|
64
|
+
* @param {number} a - First angle in radians
|
|
65
|
+
* @param {number} b - Second angle in radians
|
|
66
|
+
* @returns {number} Angular distance
|
|
67
|
+
*/
|
|
68
|
+
distance: function distance(a, b) {
|
|
69
|
+
var diff = _MathUtils.angle.normalizeSignedAngle(b - a);
|
|
70
|
+
return Math.abs(diff);
|
|
71
|
+
},
|
|
72
|
+
/**
|
|
73
|
+
* Linear interpolation between two angles
|
|
74
|
+
* @param {number} a - Start angle in radians
|
|
75
|
+
* @param {number} b - End angle in radians
|
|
76
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
77
|
+
* @returns {number} Interpolated angle
|
|
78
|
+
*/
|
|
79
|
+
lerp: function lerp(a, b, t) {
|
|
80
|
+
var diff = _MathUtils.angle.normalizeSignedAngle(b - a);
|
|
81
|
+
return _MathUtils.angle.normalize(a + diff * t);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
/**
|
|
85
|
+
* Interpolation utilities
|
|
86
|
+
*/
|
|
87
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "interpolation", {
|
|
88
|
+
/**
|
|
89
|
+
* Linear interpolation
|
|
90
|
+
* @param {number} a - Start value
|
|
91
|
+
* @param {number} b - End value
|
|
92
|
+
* @param {number} t - Factor (0-1)
|
|
93
|
+
* @returns {number} Interpolated value
|
|
94
|
+
*/
|
|
95
|
+
linear: function linear(a, b, t) {
|
|
96
|
+
return a + (b - a) * t;
|
|
97
|
+
},
|
|
98
|
+
/**
|
|
99
|
+
* Smoothstep interpolation
|
|
100
|
+
* @param {number} a - Start value
|
|
101
|
+
* @param {number} b - End value
|
|
102
|
+
* @param {number} t - Factor (0-1)
|
|
103
|
+
* @returns {number} Smoothly interpolated value
|
|
104
|
+
*/
|
|
105
|
+
smoothstep: function smoothstep(a, b, t) {
|
|
106
|
+
var smooth = t * t * (3 - 2 * t);
|
|
107
|
+
return _MathUtils.interpolation.linear(a, b, smooth);
|
|
108
|
+
},
|
|
109
|
+
/**
|
|
110
|
+
* Smootherstep interpolation
|
|
111
|
+
* @param {number} a - Start value
|
|
112
|
+
* @param {number} b - End value
|
|
113
|
+
* @param {number} t - Factor (0-1)
|
|
114
|
+
* @returns {number} Smoother interpolated value
|
|
115
|
+
*/
|
|
116
|
+
smootherstep: function smootherstep(a, b, t) {
|
|
117
|
+
var smooth = t * t * t * (t * (t * 6 - 15) + 10);
|
|
118
|
+
return _MathUtils.interpolation.linear(a, b, smooth);
|
|
119
|
+
},
|
|
120
|
+
/**
|
|
121
|
+
* Cosine interpolation
|
|
122
|
+
* @param {number} a - Start value
|
|
123
|
+
* @param {number} b - End value
|
|
124
|
+
* @param {number} t - Factor (0-1)
|
|
125
|
+
* @returns {number} Cosine interpolated value
|
|
126
|
+
*/
|
|
127
|
+
cosine: function cosine(a, b, t) {
|
|
128
|
+
var ft = t * Math.PI;
|
|
129
|
+
var f = (1 - Math.cos(ft)) * 0.5;
|
|
130
|
+
return a * (1 - f) + b * f;
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Cubic interpolation
|
|
134
|
+
* @param {number} p0 - Point before start
|
|
135
|
+
* @param {number} p1 - Start point
|
|
136
|
+
* @param {number} p2 - End point
|
|
137
|
+
* @param {number} p3 - Point after end
|
|
138
|
+
* @param {number} t - Factor (0-1)
|
|
139
|
+
* @returns {number} Cubic interpolated value
|
|
140
|
+
*/
|
|
141
|
+
cubic: function cubic(p0, p1, p2, p3, t) {
|
|
142
|
+
var t2 = t * t;
|
|
143
|
+
var t3 = t2 * t;
|
|
144
|
+
return 0.5 * (2 * p1 + (-p0 + p2) * t + (2 * p0 - 5 * p1 + 4 * p2 - p3) * t2 + (-p0 + 3 * p1 - 3 * p2 + p3) * t3);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
/**
|
|
148
|
+
* Easing functions
|
|
149
|
+
*/
|
|
150
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "easing", {
|
|
151
|
+
// Quadratic
|
|
152
|
+
easeInQuad: function easeInQuad(t) {
|
|
153
|
+
return t * t;
|
|
154
|
+
},
|
|
155
|
+
easeOutQuad: function easeOutQuad(t) {
|
|
156
|
+
return t * (2 - t);
|
|
157
|
+
},
|
|
158
|
+
easeInOutQuad: function easeInOutQuad(t) {
|
|
159
|
+
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
|
|
160
|
+
},
|
|
161
|
+
// Cubic
|
|
162
|
+
easeInCubic: function easeInCubic(t) {
|
|
163
|
+
return t * t * t;
|
|
164
|
+
},
|
|
165
|
+
easeOutCubic: function easeOutCubic(t) {
|
|
166
|
+
return --t * t * t + 1;
|
|
167
|
+
},
|
|
168
|
+
easeInOutCubic: function easeInOutCubic(t) {
|
|
169
|
+
return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
|
|
170
|
+
},
|
|
171
|
+
// Quartic
|
|
172
|
+
easeInQuart: function easeInQuart(t) {
|
|
173
|
+
return t * t * t * t;
|
|
174
|
+
},
|
|
175
|
+
easeOutQuart: function easeOutQuart(t) {
|
|
176
|
+
return 1 - --t * t * t * t;
|
|
177
|
+
},
|
|
178
|
+
easeInOutQuart: function easeInOutQuart(t) {
|
|
179
|
+
return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
|
|
180
|
+
},
|
|
181
|
+
// Quintic
|
|
182
|
+
easeInQuint: function easeInQuint(t) {
|
|
183
|
+
return t * t * t * t * t;
|
|
184
|
+
},
|
|
185
|
+
easeOutQuint: function easeOutQuint(t) {
|
|
186
|
+
return 1 + --t * t * t * t * t;
|
|
187
|
+
},
|
|
188
|
+
easeInOutQuint: function easeInOutQuint(t) {
|
|
189
|
+
return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;
|
|
190
|
+
},
|
|
191
|
+
// Sine
|
|
192
|
+
easeInSine: function easeInSine(t) {
|
|
193
|
+
return 1 - Math.cos(t * _MathUtils.HALF_PI);
|
|
194
|
+
},
|
|
195
|
+
easeOutSine: function easeOutSine(t) {
|
|
196
|
+
return Math.sin(t * _MathUtils.HALF_PI);
|
|
197
|
+
},
|
|
198
|
+
easeInOutSine: function easeInOutSine(t) {
|
|
199
|
+
return 0.5 * (1 - Math.cos(_MathUtils.PI * t));
|
|
200
|
+
},
|
|
201
|
+
// Exponential
|
|
202
|
+
easeInExpo: function easeInExpo(t) {
|
|
203
|
+
return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));
|
|
204
|
+
},
|
|
205
|
+
easeOutExpo: function easeOutExpo(t) {
|
|
206
|
+
return t === 1 ? 1 : 1 - Math.pow(2, -10 * t);
|
|
207
|
+
},
|
|
208
|
+
easeInOutExpo: function easeInOutExpo(t) {
|
|
209
|
+
if (t === 0) return 0;
|
|
210
|
+
if (t === 1) return 1;
|
|
211
|
+
if (t < 0.5) return 0.5 * Math.pow(2, 10 * (2 * t - 1));
|
|
212
|
+
return 0.5 * (2 - Math.pow(2, -10 * (2 * t - 1)));
|
|
213
|
+
},
|
|
214
|
+
// Circular
|
|
215
|
+
easeInCirc: function easeInCirc(t) {
|
|
216
|
+
return 1 - Math.sqrt(1 - t * t);
|
|
217
|
+
},
|
|
218
|
+
easeOutCirc: function easeOutCirc(t) {
|
|
219
|
+
return Math.sqrt(1 - --t * t);
|
|
220
|
+
},
|
|
221
|
+
easeInOutCirc: function easeInOutCirc(t) {
|
|
222
|
+
t *= 2;
|
|
223
|
+
if (t < 1) return 0.5 * (1 - Math.sqrt(1 - t * t));
|
|
224
|
+
t -= 2;
|
|
225
|
+
return 0.5 * (Math.sqrt(1 - t * t) + 1);
|
|
226
|
+
},
|
|
227
|
+
// Elastic
|
|
228
|
+
easeInElastic: function easeInElastic(t) {
|
|
229
|
+
if (t === 0) return 0;
|
|
230
|
+
if (t === 1) return 1;
|
|
231
|
+
var p = 0.3;
|
|
232
|
+
var s = p / 4;
|
|
233
|
+
return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * _MathUtils.TWO_PI / p));
|
|
234
|
+
},
|
|
235
|
+
easeOutElastic: function easeOutElastic(t) {
|
|
236
|
+
if (t === 0) return 0;
|
|
237
|
+
if (t === 1) return 1;
|
|
238
|
+
var p = 0.3;
|
|
239
|
+
var s = p / 4;
|
|
240
|
+
return Math.pow(2, -10 * t) * Math.sin((t - s) * _MathUtils.TWO_PI / p) + 1;
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
/**
|
|
244
|
+
* Geometry utilities
|
|
245
|
+
*/
|
|
246
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "geometry", {
|
|
247
|
+
/**
|
|
248
|
+
* Calculate area of triangle given three points
|
|
249
|
+
* @param {Array} p1 - First point [x, y]
|
|
250
|
+
* @param {Array} p2 - Second point [x, y]
|
|
251
|
+
* @param {Array} p3 - Third point [x, y]
|
|
252
|
+
* @returns {number} Triangle area
|
|
253
|
+
*/
|
|
254
|
+
triangleArea: function triangleArea(p1, p2, p3) {
|
|
255
|
+
return 0.5 * Math.abs((p2[0] - p1[0]) * (p3[1] - p1[1]) - (p3[0] - p1[0]) * (p2[1] - p1[1]));
|
|
256
|
+
},
|
|
257
|
+
/**
|
|
258
|
+
* Calculate area of polygon
|
|
259
|
+
* @param {Array} points - Array of points [[x, y], ...]
|
|
260
|
+
* @returns {number} Polygon area
|
|
261
|
+
*/
|
|
262
|
+
polygonArea: function polygonArea(points) {
|
|
263
|
+
var area = 0;
|
|
264
|
+
var n = points.length;
|
|
265
|
+
for (var i = 0; i < n; i++) {
|
|
266
|
+
var j = (i + 1) % n;
|
|
267
|
+
area += points[i][0] * points[j][1];
|
|
268
|
+
area -= points[j][0] * points[i][1];
|
|
269
|
+
}
|
|
270
|
+
return Math.abs(area) / 2;
|
|
271
|
+
},
|
|
272
|
+
/**
|
|
273
|
+
* Check if point is inside triangle
|
|
274
|
+
* @param {Array} p - Point to test [x, y]
|
|
275
|
+
* @param {Array} p1 - Triangle vertex 1 [x, y]
|
|
276
|
+
* @param {Array} p2 - Triangle vertex 2 [x, y]
|
|
277
|
+
* @param {Array} p3 - Triangle vertex 3 [x, y]
|
|
278
|
+
* @returns {boolean} Whether point is inside triangle
|
|
279
|
+
*/
|
|
280
|
+
pointInTriangle: function pointInTriangle(p, p1, p2, p3) {
|
|
281
|
+
var area = _MathUtils.geometry.triangleArea(p1, p2, p3);
|
|
282
|
+
var area1 = _MathUtils.geometry.triangleArea(p, p2, p3);
|
|
283
|
+
var area2 = _MathUtils.geometry.triangleArea(p1, p, p3);
|
|
284
|
+
var area3 = _MathUtils.geometry.triangleArea(p1, p2, p);
|
|
285
|
+
return Math.abs(area - (area1 + area2 + area3)) < _MathUtils.EPSILON;
|
|
286
|
+
},
|
|
287
|
+
/**
|
|
288
|
+
* Calculate centroid of polygon
|
|
289
|
+
* @param {Array} points - Array of points [[x, y], ...]
|
|
290
|
+
* @returns {Array} Centroid [x, y]
|
|
291
|
+
*/
|
|
292
|
+
polygonCentroid: function polygonCentroid(points) {
|
|
293
|
+
var x = 0,
|
|
294
|
+
y = 0;
|
|
295
|
+
var area = 0;
|
|
296
|
+
var n = points.length;
|
|
297
|
+
for (var i = 0; i < n; i++) {
|
|
298
|
+
var j = (i + 1) % n;
|
|
299
|
+
var cross = points[i][0] * points[j][1] - points[j][0] * points[i][1];
|
|
300
|
+
area += cross;
|
|
301
|
+
x += (points[i][0] + points[j][0]) * cross;
|
|
302
|
+
y += (points[i][1] + points[j][1]) * cross;
|
|
303
|
+
}
|
|
304
|
+
area /= 2;
|
|
305
|
+
x /= 6 * area;
|
|
306
|
+
y /= 6 * area;
|
|
307
|
+
return [x, y];
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
/**
|
|
311
|
+
* Random utilities
|
|
312
|
+
*/
|
|
313
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "random", {
|
|
314
|
+
/**
|
|
315
|
+
* Random float between min and max
|
|
316
|
+
* @param {number} min - Minimum value
|
|
317
|
+
* @param {number} max - Maximum value
|
|
318
|
+
* @returns {number} Random float
|
|
319
|
+
*/
|
|
320
|
+
float: function float() {
|
|
321
|
+
var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
322
|
+
var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
|
323
|
+
return min + Math.random() * (max - min);
|
|
324
|
+
},
|
|
325
|
+
/**
|
|
326
|
+
* Random integer between min and max (inclusive)
|
|
327
|
+
* @param {number} min - Minimum value
|
|
328
|
+
* @param {number} max - Maximum value
|
|
329
|
+
* @returns {number} Random integer
|
|
330
|
+
*/
|
|
331
|
+
int: function int(min, max) {
|
|
332
|
+
return Math.floor(_MathUtils.random.float(min, max + 1));
|
|
333
|
+
},
|
|
334
|
+
/**
|
|
335
|
+
* Random boolean
|
|
336
|
+
* @param {number} probability - Probability of true (0-1)
|
|
337
|
+
* @returns {boolean} Random boolean
|
|
338
|
+
*/
|
|
339
|
+
boolean: function boolean() {
|
|
340
|
+
var probability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0.5;
|
|
341
|
+
return Math.random() < probability;
|
|
342
|
+
},
|
|
343
|
+
/**
|
|
344
|
+
* Random element from array
|
|
345
|
+
* @param {Array} array - Input array
|
|
346
|
+
* @returns {*} Random element
|
|
347
|
+
*/
|
|
348
|
+
choice: function choice(array) {
|
|
349
|
+
return array[_MathUtils.random.int(0, array.length - 1)];
|
|
350
|
+
},
|
|
351
|
+
/**
|
|
352
|
+
* Shuffle array (Fisher-Yates)
|
|
353
|
+
* @param {Array} array - Array to shuffle
|
|
354
|
+
* @returns {Array} Shuffled array
|
|
355
|
+
*/
|
|
356
|
+
shuffle: function shuffle(array) {
|
|
357
|
+
var result = _rollupPluginBabelHelpers.toConsumableArray(array);
|
|
358
|
+
for (var i = result.length - 1; i > 0; i--) {
|
|
359
|
+
var j = Math.floor(Math.random() * (i + 1));
|
|
360
|
+
var _ref = [result[j], result[i]];
|
|
361
|
+
result[i] = _ref[0];
|
|
362
|
+
result[j] = _ref[1];
|
|
363
|
+
}
|
|
364
|
+
return result;
|
|
365
|
+
},
|
|
366
|
+
/**
|
|
367
|
+
* Random point on unit circle
|
|
368
|
+
* @returns {Array} Point [x, y]
|
|
369
|
+
*/
|
|
370
|
+
unitCircle: function unitCircle() {
|
|
371
|
+
var angle = _MathUtils.random.float(0, _MathUtils.TWO_PI);
|
|
372
|
+
return [Math.cos(angle), Math.sin(angle)];
|
|
373
|
+
},
|
|
374
|
+
/**
|
|
375
|
+
* Random point inside unit circle
|
|
376
|
+
* @returns {Array} Point [x, y]
|
|
377
|
+
*/
|
|
378
|
+
insideUnitCircle: function insideUnitCircle() {
|
|
379
|
+
var _MathUtils$random$uni = _MathUtils.random.unitCircle(),
|
|
380
|
+
_MathUtils$random$uni2 = _rollupPluginBabelHelpers.slicedToArray(_MathUtils$random$uni, 2),
|
|
381
|
+
x = _MathUtils$random$uni2[0],
|
|
382
|
+
y = _MathUtils$random$uni2[1];
|
|
383
|
+
var r = Math.sqrt(Math.random());
|
|
384
|
+
return [x * r, y * r];
|
|
385
|
+
},
|
|
386
|
+
/**
|
|
387
|
+
* Random point on unit sphere
|
|
388
|
+
* @returns {Array} Point [x, y, z]
|
|
389
|
+
*/
|
|
390
|
+
unitSphere: function unitSphere() {
|
|
391
|
+
var u = Math.random();
|
|
392
|
+
var v = Math.random();
|
|
393
|
+
var theta = _MathUtils.TWO_PI * u;
|
|
394
|
+
var phi = Math.acos(2 * v - 1);
|
|
395
|
+
var x = Math.sin(phi) * Math.cos(theta);
|
|
396
|
+
var y = Math.sin(phi) * Math.sin(theta);
|
|
397
|
+
var z = Math.cos(phi);
|
|
398
|
+
return [x, y, z];
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
/**
|
|
402
|
+
* Color utilities
|
|
403
|
+
*/
|
|
404
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "color", {
|
|
405
|
+
/**
|
|
406
|
+
* Convert HSL to RGB
|
|
407
|
+
* @param {number} h - Hue (0-360)
|
|
408
|
+
* @param {number} s - Saturation (0-1)
|
|
409
|
+
* @param {number} l - Lightness (0-1)
|
|
410
|
+
* @returns {Array} RGB values [r, g, b] (0-255)
|
|
411
|
+
*/
|
|
412
|
+
hslToRgb: function hslToRgb(h, s, l) {
|
|
413
|
+
h /= 360;
|
|
414
|
+
var c = (1 - Math.abs(2 * l - 1)) * s;
|
|
415
|
+
var x = c * (1 - Math.abs(h * 6 % 2 - 1));
|
|
416
|
+
var m = l - c / 2;
|
|
417
|
+
var r, g, b;
|
|
418
|
+
if (h < 1 / 6) {
|
|
419
|
+
r = c;
|
|
420
|
+
g = x;
|
|
421
|
+
b = 0;
|
|
422
|
+
} else if (h < 2 / 6) {
|
|
423
|
+
r = x;
|
|
424
|
+
g = c;
|
|
425
|
+
b = 0;
|
|
426
|
+
} else if (h < 3 / 6) {
|
|
427
|
+
r = 0;
|
|
428
|
+
g = c;
|
|
429
|
+
b = x;
|
|
430
|
+
} else if (h < 4 / 6) {
|
|
431
|
+
r = 0;
|
|
432
|
+
g = x;
|
|
433
|
+
b = c;
|
|
434
|
+
} else if (h < 5 / 6) {
|
|
435
|
+
r = x;
|
|
436
|
+
g = 0;
|
|
437
|
+
b = c;
|
|
438
|
+
} else {
|
|
439
|
+
r = c;
|
|
440
|
+
g = 0;
|
|
441
|
+
b = x;
|
|
442
|
+
}
|
|
443
|
+
return [Math.round((r + m) * 255), Math.round((g + m) * 255), Math.round((b + m) * 255)];
|
|
444
|
+
},
|
|
445
|
+
/**
|
|
446
|
+
* Convert RGB to HSL
|
|
447
|
+
* @param {number} r - Red (0-255)
|
|
448
|
+
* @param {number} g - Green (0-255)
|
|
449
|
+
* @param {number} b - Blue (0-255)
|
|
450
|
+
* @returns {Array} HSL values [h, s, l]
|
|
451
|
+
*/
|
|
452
|
+
rgbToHsl: function rgbToHsl(r, g, b) {
|
|
453
|
+
r /= 255;
|
|
454
|
+
g /= 255;
|
|
455
|
+
b /= 255;
|
|
456
|
+
var max = Math.max(r, g, b);
|
|
457
|
+
var min = Math.min(r, g, b);
|
|
458
|
+
var l = (max + min) / 2;
|
|
459
|
+
if (max === min) {
|
|
460
|
+
return [0, 0, l]; // Achromatic
|
|
461
|
+
}
|
|
462
|
+
var d = max - min;
|
|
463
|
+
var s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
464
|
+
var h;
|
|
465
|
+
switch (max) {
|
|
466
|
+
case r:
|
|
467
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
468
|
+
break;
|
|
469
|
+
case g:
|
|
470
|
+
h = (b - r) / d + 2;
|
|
471
|
+
break;
|
|
472
|
+
case b:
|
|
473
|
+
h = (r - g) / d + 4;
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
h /= 6;
|
|
477
|
+
return [h * 360, s, l];
|
|
478
|
+
},
|
|
479
|
+
/**
|
|
480
|
+
* Interpolate between two colors
|
|
481
|
+
* @param {Array} color1 - First color [r, g, b]
|
|
482
|
+
* @param {Array} color2 - Second color [r, g, b]
|
|
483
|
+
* @param {number} t - Interpolation factor (0-1)
|
|
484
|
+
* @returns {Array} Interpolated color [r, g, b]
|
|
485
|
+
*/
|
|
486
|
+
lerp: function lerp(color1, color2, t) {
|
|
487
|
+
return [Math.round(_MathUtils.interpolation.linear(color1[0], color2[0], t)), Math.round(_MathUtils.interpolation.linear(color1[1], color2[1], t)), Math.round(_MathUtils.interpolation.linear(color1[2], color2[2], t))];
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
/**
|
|
491
|
+
* General utility functions
|
|
492
|
+
*/
|
|
493
|
+
_rollupPluginBabelHelpers.defineProperty(MathUtils, "utils", {
|
|
494
|
+
/**
|
|
495
|
+
* Clamp value between min and max
|
|
496
|
+
* @param {number} value - Input value
|
|
497
|
+
* @param {number} min - Minimum value
|
|
498
|
+
* @param {number} max - Maximum value
|
|
499
|
+
* @returns {number} Clamped value
|
|
500
|
+
*/
|
|
501
|
+
clamp: function clamp(value, min, max) {
|
|
502
|
+
return Math.max(min, Math.min(max, value));
|
|
503
|
+
},
|
|
504
|
+
/**
|
|
505
|
+
* Map value from one range to another
|
|
506
|
+
* @param {number} value - Input value
|
|
507
|
+
* @param {number} inMin - Input range minimum
|
|
508
|
+
* @param {number} inMax - Input range maximum
|
|
509
|
+
* @param {number} outMin - Output range minimum
|
|
510
|
+
* @param {number} outMax - Output range maximum
|
|
511
|
+
* @returns {number} Mapped value
|
|
512
|
+
*/
|
|
513
|
+
map: function map(value, inMin, inMax, outMin, outMax) {
|
|
514
|
+
return outMin + (value - inMin) * (outMax - outMin) / (inMax - inMin);
|
|
515
|
+
},
|
|
516
|
+
/**
|
|
517
|
+
* Check if value is power of 2
|
|
518
|
+
* @param {number} value - Value to check
|
|
519
|
+
* @returns {boolean} Whether value is power of 2
|
|
520
|
+
*/
|
|
521
|
+
isPowerOfTwo: function isPowerOfTwo(value) {
|
|
522
|
+
return (value & value - 1) === 0;
|
|
523
|
+
},
|
|
524
|
+
/**
|
|
525
|
+
* Get next power of 2
|
|
526
|
+
* @param {number} value - Input value
|
|
527
|
+
* @returns {number} Next power of 2
|
|
528
|
+
*/
|
|
529
|
+
nextPowerOfTwo: function nextPowerOfTwo(value) {
|
|
530
|
+
return Math.pow(2, Math.ceil(Math.log2(value)));
|
|
531
|
+
},
|
|
532
|
+
/**
|
|
533
|
+
* Calculate greatest common divisor
|
|
534
|
+
* @param {number} a - First number
|
|
535
|
+
* @param {number} b - Second number
|
|
536
|
+
* @returns {number} GCD
|
|
537
|
+
*/
|
|
538
|
+
gcd: function gcd(a, b) {
|
|
539
|
+
return b === 0 ? a : _MathUtils.utils.gcd(b, a % b);
|
|
540
|
+
},
|
|
541
|
+
/**
|
|
542
|
+
* Calculate least common multiple
|
|
543
|
+
* @param {number} a - First number
|
|
544
|
+
* @param {number} b - Second number
|
|
545
|
+
* @returns {number} LCM
|
|
546
|
+
*/
|
|
547
|
+
lcm: function lcm(a, b) {
|
|
548
|
+
return Math.abs(a * b) / _MathUtils.utils.gcd(a, b);
|
|
549
|
+
},
|
|
550
|
+
/**
|
|
551
|
+
* Check if number is approximately equal to another
|
|
552
|
+
* @param {number} a - First number
|
|
553
|
+
* @param {number} b - Second number
|
|
554
|
+
* @param {number} epsilon - Tolerance
|
|
555
|
+
* @returns {boolean} Whether numbers are approximately equal
|
|
556
|
+
*/
|
|
557
|
+
approxEqual: function approxEqual(a, b) {
|
|
558
|
+
var epsilon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _MathUtils.EPSILON;
|
|
559
|
+
return Math.abs(a - b) < epsilon;
|
|
560
|
+
},
|
|
561
|
+
/**
|
|
562
|
+
* Round to specified decimal places
|
|
563
|
+
* @param {number} value - Input value
|
|
564
|
+
* @param {number} decimals - Number of decimal places
|
|
565
|
+
* @returns {number} Rounded value
|
|
566
|
+
*/
|
|
567
|
+
round: function round(value) {
|
|
568
|
+
var decimals = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
569
|
+
var factor = Math.pow(10, decimals);
|
|
570
|
+
return Math.round(value * factor) / factor;
|
|
571
|
+
}
|
|
572
|
+
});
|
|
573
|
+
|
|
574
|
+
exports.MathUtils = MathUtils;
|
|
@@ -1 +1,93 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Name Utilities
|
|
7
|
+
* Common helper functions for name and UUID generation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Generate UUID from name using consistent transformation rules
|
|
12
|
+
* @param {string} name - The name to convert to UUID
|
|
13
|
+
* @returns {string} The generated UUID
|
|
14
|
+
*/
|
|
15
|
+
function generateUuidFromName(name) {
|
|
16
|
+
if (!name) return null;
|
|
17
|
+
|
|
18
|
+
// Convert name to uppercase and replace spaces with hyphens
|
|
19
|
+
var uuid = name.toUpperCase().replace(/\s+COMPONENT$/i, '') // Remove "Component" suffix
|
|
20
|
+
.replace(/\s+/g, '-') // Replace spaces with hyphens
|
|
21
|
+
.replace(/[^A-Z0-9\-]/g, ''); // Remove special characters except hyphens
|
|
22
|
+
|
|
23
|
+
// Clean up any duplicate "COMPONENT" text that might have been left behind
|
|
24
|
+
uuid = uuid.replace(/-COMPONENT$/, '');
|
|
25
|
+
return uuid;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Find an object in a Three.js scene by hardcoded UUID with fallback strategies
|
|
30
|
+
* @param {THREE.Scene} scene - The Three.js scene to search
|
|
31
|
+
* @param {string} targetUuid - The UUID to search for
|
|
32
|
+
* @returns {THREE.Object3D|null} The found object or null
|
|
33
|
+
*/
|
|
34
|
+
function findObjectByHardcodedUuid(scene, targetUuid) {
|
|
35
|
+
if (!scene || !targetUuid) return null;
|
|
36
|
+
var foundObject = null;
|
|
37
|
+
scene.traverse(function (child) {
|
|
38
|
+
var _child$userData;
|
|
39
|
+
if (foundObject) return; // Stop if already found
|
|
40
|
+
|
|
41
|
+
// Strategy 1: Direct UUID match (HIGHEST PRIORITY)
|
|
42
|
+
if (child.uuid === targetUuid) {
|
|
43
|
+
foundObject = child;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Strategy 2: Original hardcoded UUID match
|
|
48
|
+
if (((_child$userData = child.userData) === null || _child$userData === void 0 ? void 0 : _child$userData.originalUuid) === targetUuid) {
|
|
49
|
+
foundObject = child;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Strategy 3: Name-based UUID match (FALLBACK)
|
|
54
|
+
if (child.name) {
|
|
55
|
+
var generatedUuid = generateUuidFromName(child.name);
|
|
56
|
+
if (generatedUuid === targetUuid) {
|
|
57
|
+
foundObject = child;
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
return foundObject;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Get the hardcoded UUID for an object, prioritizing original over current
|
|
67
|
+
* @param {THREE.Object3D} object - The Three.js object
|
|
68
|
+
* @returns {string|null} The hardcoded UUID or null
|
|
69
|
+
*/
|
|
70
|
+
function getHardcodedUuid(object) {
|
|
71
|
+
var _object$userData;
|
|
72
|
+
if (!object) return null;
|
|
73
|
+
|
|
74
|
+
// Priority 1: Original hardcoded UUID stored in userData
|
|
75
|
+
if ((_object$userData = object.userData) !== null && _object$userData !== void 0 && _object$userData.originalUuid) {
|
|
76
|
+
return object.userData.originalUuid;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Priority 2: Current UUID (if it looks like a hardcoded one)
|
|
80
|
+
if (object.uuid && !object.uuid.includes('-') && object.uuid.length > 10) {
|
|
81
|
+
return object.uuid;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Priority 3: Generate from name if available
|
|
85
|
+
if (object.name) {
|
|
86
|
+
return generateUuidFromName(object.name);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
exports.findObjectByHardcodedUuid = findObjectByHardcodedUuid;
|
|
92
|
+
exports.generateUuidFromName = generateUuidFromName;
|
|
93
|
+
exports.getHardcodedUuid = getHardcodedUuid;
|