@esengine/ecs-framework-math 2.10.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/index.cjs +2 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.ts +10420 -0
  4. package/dist/index.mjs +2 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/dist/index.umd.js +2 -0
  7. package/dist/index.umd.js.map +1 -0
  8. package/package.json +20 -11
  9. package/bin/Animation/Easing.d.ts +0 -244
  10. package/bin/Animation/Easing.d.ts.map +0 -1
  11. package/bin/Animation/Easing.js +0 -407
  12. package/bin/Animation/Easing.js.map +0 -1
  13. package/bin/Animation/Interpolation.d.ts +0 -172
  14. package/bin/Animation/Interpolation.d.ts.map +0 -1
  15. package/bin/Animation/Interpolation.js +0 -327
  16. package/bin/Animation/Interpolation.js.map +0 -1
  17. package/bin/Animation/index.d.ts +0 -8
  18. package/bin/Animation/index.d.ts.map +0 -1
  19. package/bin/Animation/index.js +0 -8
  20. package/bin/Animation/index.js.map +0 -1
  21. package/bin/Circle.d.ts +0 -277
  22. package/bin/Circle.d.ts.map +0 -1
  23. package/bin/Circle.js +0 -496
  24. package/bin/Circle.js.map +0 -1
  25. package/bin/Collision/CollisionDetector.d.ts +0 -114
  26. package/bin/Collision/CollisionDetector.d.ts.map +0 -1
  27. package/bin/Collision/CollisionDetector.js +0 -353
  28. package/bin/Collision/CollisionDetector.js.map +0 -1
  29. package/bin/Collision/index.d.ts +0 -7
  30. package/bin/Collision/index.d.ts.map +0 -1
  31. package/bin/Collision/index.js +0 -7
  32. package/bin/Collision/index.js.map +0 -1
  33. package/bin/Color.d.ts +0 -277
  34. package/bin/Color.d.ts.map +0 -1
  35. package/bin/Color.js +0 -470
  36. package/bin/Color.js.map +0 -1
  37. package/bin/Fixed32.d.ts +0 -266
  38. package/bin/Fixed32.d.ts.map +0 -1
  39. package/bin/Fixed32.js +0 -381
  40. package/bin/Fixed32.js.map +0 -1
  41. package/bin/FixedMath.d.ts +0 -109
  42. package/bin/FixedMath.d.ts.map +0 -1
  43. package/bin/FixedMath.js +0 -264
  44. package/bin/FixedMath.js.map +0 -1
  45. package/bin/FixedVector2.d.ts +0 -293
  46. package/bin/FixedVector2.d.ts.map +0 -1
  47. package/bin/FixedVector2.js +0 -413
  48. package/bin/FixedVector2.js.map +0 -1
  49. package/bin/MathUtils.d.ts +0 -312
  50. package/bin/MathUtils.d.ts.map +0 -1
  51. package/bin/MathUtils.js +0 -500
  52. package/bin/MathUtils.js.map +0 -1
  53. package/bin/Matrix3.d.ts +0 -288
  54. package/bin/Matrix3.d.ts.map +0 -1
  55. package/bin/Matrix3.js +0 -542
  56. package/bin/Matrix3.js.map +0 -1
  57. package/bin/Rectangle.d.ts +0 -266
  58. package/bin/Rectangle.d.ts.map +0 -1
  59. package/bin/Rectangle.js +0 -437
  60. package/bin/Rectangle.js.map +0 -1
  61. package/bin/Vector2.d.ts +0 -333
  62. package/bin/Vector2.d.ts.map +0 -1
  63. package/bin/Vector2.js +0 -484
  64. package/bin/Vector2.js.map +0 -1
  65. package/bin/Vector3.d.ts +0 -257
  66. package/bin/Vector3.d.ts.map +0 -1
  67. package/bin/Vector3.js +0 -372
  68. package/bin/Vector3.js.map +0 -1
  69. package/bin/index.d.ts +0 -25
  70. package/bin/index.d.ts.map +0 -1
  71. package/bin/index.js +0 -32
  72. package/bin/index.js.map +0 -1
  73. package/bin/nodes/ColorNodes.d.ts +0 -70
  74. package/bin/nodes/ColorNodes.d.ts.map +0 -1
  75. package/bin/nodes/ColorNodes.js +0 -427
  76. package/bin/nodes/ColorNodes.js.map +0 -1
  77. package/bin/nodes/FixedNodes.d.ts +0 -98
  78. package/bin/nodes/FixedNodes.d.ts.map +0 -1
  79. package/bin/nodes/FixedNodes.js +0 -612
  80. package/bin/nodes/FixedNodes.js.map +0 -1
  81. package/bin/nodes/FixedVectorNodes.d.ts +0 -58
  82. package/bin/nodes/FixedVectorNodes.d.ts.map +0 -1
  83. package/bin/nodes/FixedVectorNodes.js +0 -330
  84. package/bin/nodes/FixedVectorNodes.js.map +0 -1
  85. package/bin/nodes/VectorNodes.d.ts +0 -62
  86. package/bin/nodes/VectorNodes.d.ts.map +0 -1
  87. package/bin/nodes/VectorNodes.js +0 -355
  88. package/bin/nodes/VectorNodes.js.map +0 -1
  89. package/bin/nodes/index.d.ts +0 -20
  90. package/bin/nodes/index.d.ts.map +0 -1
  91. package/bin/nodes/index.js +0 -27
  92. package/bin/nodes/index.js.map +0 -1
package/bin/Color.js DELETED
@@ -1,470 +0,0 @@
1
- /**
2
- * Color utility class for game engine
3
- * 游戏引擎颜色工具类
4
- *
5
- * Provides color conversion, manipulation, and packing utilities.
6
- * 提供颜色转换、操作和打包工具。
7
- */
8
- /**
9
- * Color class for color manipulation and conversion
10
- * 颜色类,用于颜色操作和转换
11
- */
12
- export class Color {
13
- /**
14
- * Create a new Color instance
15
- * 创建新的 Color 实例
16
- */
17
- constructor(r = 255, g = 255, b = 255, a = 1) {
18
- this.r = Math.round(Math.max(0, Math.min(255, r)));
19
- this.g = Math.round(Math.max(0, Math.min(255, g)));
20
- this.b = Math.round(Math.max(0, Math.min(255, b)));
21
- this.a = Math.max(0, Math.min(1, a));
22
- }
23
- // ===== Factory Methods | 工厂方法 =====
24
- /**
25
- * Create color from hex string
26
- * 从十六进制字符串创建颜色
27
- * @param hex Hex string (e.g., "#FF0000", "#F00", "FF0000") | 十六进制字符串
28
- * @param alpha Optional alpha value (0-1) | 可选的透明度值
29
- */
30
- static fromHex(hex, alpha = 1) {
31
- const { r, g, b } = Color.hexToRgb(hex);
32
- return new Color(r, g, b, alpha);
33
- }
34
- /**
35
- * Create color from packed uint32 (0xRRGGBB or 0xAARRGGBB)
36
- * 从打包的 uint32 创建颜色
37
- * @param value Packed color value | 打包的颜色值
38
- * @param hasAlpha Whether value includes alpha | 是否包含透明度
39
- */
40
- static fromUint32(value, hasAlpha = false) {
41
- if (hasAlpha) {
42
- const a = ((value >> 24) & 0xFF) / 255;
43
- const r = (value >> 16) & 0xFF;
44
- const g = (value >> 8) & 0xFF;
45
- const b = value & 0xFF;
46
- return new Color(r, g, b, a);
47
- }
48
- else {
49
- const r = (value >> 16) & 0xFF;
50
- const g = (value >> 8) & 0xFF;
51
- const b = value & 0xFF;
52
- return new Color(r, g, b);
53
- }
54
- }
55
- /**
56
- * Create color from HSL values
57
- * 从 HSL 值创建颜色
58
- * @param h Hue (0-360) | 色相
59
- * @param s Saturation (0-1) | 饱和度
60
- * @param l Lightness (0-1) | 亮度
61
- * @param a Alpha (0-1) | 透明度
62
- */
63
- static fromHSL(h, s, l, a = 1) {
64
- const { r, g, b } = Color.hslToRgb(h, s, l);
65
- return new Color(r, g, b, a);
66
- }
67
- /**
68
- * Create color from normalized float values (0-1)
69
- * 从归一化浮点值创建颜色 (0-1)
70
- */
71
- static fromFloat(r, g, b, a = 1) {
72
- return new Color(r * 255, g * 255, b * 255, a);
73
- }
74
- // ===== Conversion Methods | 转换方法 =====
75
- /**
76
- * Convert hex string to RGB
77
- * 将十六进制字符串转换为 RGB
78
- */
79
- static hexToRgb(hex) {
80
- const colorHex = hex.replace('#', '');
81
- let r = 255, g = 255, b = 255;
82
- if (colorHex.length === 6) {
83
- r = parseInt(colorHex.substring(0, 2), 16);
84
- g = parseInt(colorHex.substring(2, 4), 16);
85
- b = parseInt(colorHex.substring(4, 6), 16);
86
- }
87
- else if (colorHex.length === 3) {
88
- r = parseInt(colorHex[0] + colorHex[0], 16);
89
- g = parseInt(colorHex[1] + colorHex[1], 16);
90
- b = parseInt(colorHex[2] + colorHex[2], 16);
91
- }
92
- else if (colorHex.length === 8) {
93
- // AARRGGBB format
94
- r = parseInt(colorHex.substring(2, 4), 16);
95
- g = parseInt(colorHex.substring(4, 6), 16);
96
- b = parseInt(colorHex.substring(6, 8), 16);
97
- }
98
- return { r, g, b };
99
- }
100
- /**
101
- * Convert RGB to hex string
102
- * 将 RGB 转换为十六进制字符串
103
- */
104
- static rgbToHex(r, g, b) {
105
- const toHex = (n) => Math.round(n).toString(16).padStart(2, '0');
106
- return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
107
- }
108
- /**
109
- * Convert HSL to RGB
110
- * 将 HSL 转换为 RGB
111
- */
112
- static hslToRgb(h, s, l) {
113
- h = ((h % 360) + 360) % 360 / 360;
114
- s = Math.max(0, Math.min(1, s));
115
- l = Math.max(0, Math.min(1, l));
116
- let r, g, b;
117
- if (s === 0) {
118
- r = g = b = l;
119
- }
120
- else {
121
- const hue2rgb = (p, q, t) => {
122
- if (t < 0)
123
- t += 1;
124
- if (t > 1)
125
- t -= 1;
126
- if (t < 1 / 6)
127
- return p + (q - p) * 6 * t;
128
- if (t < 1 / 2)
129
- return q;
130
- if (t < 2 / 3)
131
- return p + (q - p) * (2 / 3 - t) * 6;
132
- return p;
133
- };
134
- const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
135
- const p = 2 * l - q;
136
- r = hue2rgb(p, q, h + 1 / 3);
137
- g = hue2rgb(p, q, h);
138
- b = hue2rgb(p, q, h - 1 / 3);
139
- }
140
- return {
141
- r: Math.round(r * 255),
142
- g: Math.round(g * 255),
143
- b: Math.round(b * 255)
144
- };
145
- }
146
- /**
147
- * Convert RGB to HSL
148
- * 将 RGB 转换为 HSL
149
- */
150
- static rgbToHsl(r, g, b) {
151
- r /= 255;
152
- g /= 255;
153
- b /= 255;
154
- const max = Math.max(r, g, b);
155
- const min = Math.min(r, g, b);
156
- let h = 0;
157
- let s = 0;
158
- const l = (max + min) / 2;
159
- if (max !== min) {
160
- const d = max - min;
161
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
162
- switch (max) {
163
- case r:
164
- h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
165
- break;
166
- case g:
167
- h = ((b - r) / d + 2) / 6;
168
- break;
169
- case b:
170
- h = ((r - g) / d + 4) / 6;
171
- break;
172
- }
173
- }
174
- return { h: h * 360, s, l };
175
- }
176
- // ===== Packing Methods | 打包方法 =====
177
- /**
178
- * Pack color to uint32 (0xRRGGBB)
179
- * 打包颜色为 uint32 (0xRRGGBB)
180
- */
181
- static packRGB(r, g, b) {
182
- return ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
183
- }
184
- /**
185
- * Pack color to uint32 (0xAARRGGBB)
186
- * 打包颜色为 uint32 (0xAARRGGBB)
187
- */
188
- static packARGB(r, g, b, a) {
189
- const alpha = Math.round(a * 255);
190
- return ((alpha & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
191
- }
192
- /**
193
- * Pack color to uint32 for WebGL (0xAABBGGRR)
194
- * 打包颜色为 WebGL 格式的 uint32 (0xAABBGGRR)
195
- */
196
- static packABGR(r, g, b, a) {
197
- const alpha = Math.round(a * 255);
198
- return ((alpha & 0xFF) << 24) | ((b & 0xFF) << 16) | ((g & 0xFF) << 8) | (r & 0xFF);
199
- }
200
- /**
201
- * Pack hex string and alpha to WebGL uint32 (0xAABBGGRR)
202
- * 将十六进制字符串和透明度打包为 WebGL 格式 uint32
203
- */
204
- static packHexAlpha(hex, alpha) {
205
- const { r, g, b } = Color.hexToRgb(hex);
206
- return Color.packABGR(r, g, b, alpha);
207
- }
208
- /**
209
- * Unpack uint32 to RGBA (assumes 0xAARRGGBB)
210
- * 解包 uint32 为 RGBA (假设格式为 0xAARRGGBB)
211
- */
212
- static unpackARGB(value) {
213
- return {
214
- a: ((value >> 24) & 0xFF) / 255,
215
- r: (value >> 16) & 0xFF,
216
- g: (value >> 8) & 0xFF,
217
- b: value & 0xFF
218
- };
219
- }
220
- /**
221
- * Unpack uint32 to RGBA (assumes 0xAABBGGRR - WebGL format)
222
- * 解包 uint32 为 RGBA (假设格式为 0xAABBGGRR - WebGL 格式)
223
- */
224
- static unpackABGR(value) {
225
- return {
226
- a: ((value >> 24) & 0xFF) / 255,
227
- b: (value >> 16) & 0xFF,
228
- g: (value >> 8) & 0xFF,
229
- r: value & 0xFF
230
- };
231
- }
232
- // ===== Color Operations | 颜色操作 =====
233
- /**
234
- * Interpolate between two colors
235
- * 在两个颜色之间插值
236
- */
237
- static lerp(from, to, t) {
238
- t = Math.max(0, Math.min(1, t));
239
- return new Color(from.r + (to.r - from.r) * t, from.g + (to.g - from.g) * t, from.b + (to.b - from.b) * t, from.a + (to.a - from.a) * t);
240
- }
241
- /**
242
- * Interpolate between two packed uint32 colors (0xRRGGBB)
243
- * 在两个打包的 uint32 颜色之间插值
244
- */
245
- static lerpUint32(from, to, t) {
246
- t = Math.max(0, Math.min(1, t));
247
- const fromR = (from >> 16) & 0xFF;
248
- const fromG = (from >> 8) & 0xFF;
249
- const fromB = from & 0xFF;
250
- const toR = (to >> 16) & 0xFF;
251
- const toG = (to >> 8) & 0xFF;
252
- const toB = to & 0xFF;
253
- const r = Math.round(fromR + (toR - fromR) * t);
254
- const g = Math.round(fromG + (toG - fromG) * t);
255
- const b = Math.round(fromB + (toB - fromB) * t);
256
- return (r << 16) | (g << 8) | b;
257
- }
258
- /**
259
- * Mix two colors
260
- * 混合两个颜色
261
- */
262
- static mix(color1, color2, ratio = 0.5) {
263
- return Color.lerp(color1, color2, ratio);
264
- }
265
- /**
266
- * Lighten a color
267
- * 使颜色变亮
268
- */
269
- static lighten(color, amount) {
270
- const hsl = Color.rgbToHsl(color.r, color.g, color.b);
271
- hsl.l = Math.min(1, hsl.l + amount);
272
- const rgb = Color.hslToRgb(hsl.h, hsl.s, hsl.l);
273
- return new Color(rgb.r, rgb.g, rgb.b, color.a);
274
- }
275
- /**
276
- * Darken a color
277
- * 使颜色变暗
278
- */
279
- static darken(color, amount) {
280
- const hsl = Color.rgbToHsl(color.r, color.g, color.b);
281
- hsl.l = Math.max(0, hsl.l - amount);
282
- const rgb = Color.hslToRgb(hsl.h, hsl.s, hsl.l);
283
- return new Color(rgb.r, rgb.g, rgb.b, color.a);
284
- }
285
- /**
286
- * Saturate a color
287
- * 增加颜色饱和度
288
- */
289
- static saturate(color, amount) {
290
- const hsl = Color.rgbToHsl(color.r, color.g, color.b);
291
- hsl.s = Math.min(1, hsl.s + amount);
292
- const rgb = Color.hslToRgb(hsl.h, hsl.s, hsl.l);
293
- return new Color(rgb.r, rgb.g, rgb.b, color.a);
294
- }
295
- /**
296
- * Desaturate a color
297
- * 降低颜色饱和度
298
- */
299
- static desaturate(color, amount) {
300
- const hsl = Color.rgbToHsl(color.r, color.g, color.b);
301
- hsl.s = Math.max(0, hsl.s - amount);
302
- const rgb = Color.hslToRgb(hsl.h, hsl.s, hsl.l);
303
- return new Color(rgb.r, rgb.g, rgb.b, color.a);
304
- }
305
- /**
306
- * Invert a color
307
- * 反转颜色
308
- */
309
- static invert(color) {
310
- return new Color(255 - color.r, 255 - color.g, 255 - color.b, color.a);
311
- }
312
- /**
313
- * Convert color to grayscale
314
- * 将颜色转换为灰度
315
- */
316
- static grayscale(color) {
317
- const gray = Math.round(0.299 * color.r + 0.587 * color.g + 0.114 * color.b);
318
- return new Color(gray, gray, gray, color.a);
319
- }
320
- /**
321
- * Get color luminance (perceived brightness)
322
- * 获取颜色亮度(感知亮度)
323
- */
324
- static luminance(color) {
325
- return (0.299 * color.r + 0.587 * color.g + 0.114 * color.b) / 255;
326
- }
327
- /**
328
- * Get contrast ratio between two colors
329
- * 获取两个颜色之间的对比度
330
- */
331
- static contrastRatio(color1, color2) {
332
- const l1 = Color.luminance(color1);
333
- const l2 = Color.luminance(color2);
334
- const lighter = Math.max(l1, l2);
335
- const darker = Math.min(l1, l2);
336
- return (lighter + 0.05) / (darker + 0.05);
337
- }
338
- // ===== Instance Methods | 实例方法 =====
339
- /**
340
- * Convert to hex string
341
- * 转换为十六进制字符串
342
- */
343
- toHex() {
344
- return Color.rgbToHex(this.r, this.g, this.b);
345
- }
346
- /**
347
- * Convert to hex string with alpha
348
- * 转换为带透明度的十六进制字符串
349
- */
350
- toHexAlpha() {
351
- const alphaHex = Math.round(this.a * 255).toString(16).padStart(2, '0');
352
- return `#${alphaHex}${this.toHex().slice(1)}`;
353
- }
354
- /**
355
- * Convert to CSS rgba string
356
- * 转换为 CSS rgba 字符串
357
- */
358
- toRgba() {
359
- return `rgba(${this.r}, ${this.g}, ${this.b}, ${this.a})`;
360
- }
361
- /**
362
- * Convert to CSS rgb string
363
- * 转换为 CSS rgb 字符串
364
- */
365
- toRgb() {
366
- return `rgb(${this.r}, ${this.g}, ${this.b})`;
367
- }
368
- /**
369
- * Convert to HSL
370
- * 转换为 HSL
371
- */
372
- toHSL() {
373
- return Color.rgbToHsl(this.r, this.g, this.b);
374
- }
375
- /**
376
- * Pack to uint32 (0xRRGGBB)
377
- * 打包为 uint32 (0xRRGGBB)
378
- */
379
- toUint32() {
380
- return Color.packRGB(this.r, this.g, this.b);
381
- }
382
- /**
383
- * Pack to uint32 with alpha (0xAARRGGBB)
384
- * 打包为带透明度的 uint32 (0xAARRGGBB)
385
- */
386
- toUint32Alpha() {
387
- return Color.packARGB(this.r, this.g, this.b, this.a);
388
- }
389
- /**
390
- * Pack to WebGL uint32 (0xAABBGGRR)
391
- * 打包为 WebGL 格式 uint32 (0xAABBGGRR)
392
- */
393
- toWebGL() {
394
- return Color.packABGR(this.r, this.g, this.b, this.a);
395
- }
396
- /**
397
- * Get normalized float array [r, g, b, a] (0-1)
398
- * 获取归一化浮点数组 [r, g, b, a] (0-1)
399
- */
400
- toFloatArray() {
401
- return [this.r / 255, this.g / 255, this.b / 255, this.a];
402
- }
403
- /**
404
- * Clone this color
405
- * 克隆此颜色
406
- */
407
- clone() {
408
- return new Color(this.r, this.g, this.b, this.a);
409
- }
410
- /**
411
- * Set color values
412
- * 设置颜色值
413
- */
414
- set(r, g, b, a) {
415
- this.r = Math.round(Math.max(0, Math.min(255, r)));
416
- this.g = Math.round(Math.max(0, Math.min(255, g)));
417
- this.b = Math.round(Math.max(0, Math.min(255, b)));
418
- if (a !== undefined) {
419
- this.a = Math.max(0, Math.min(1, a));
420
- }
421
- return this;
422
- }
423
- /**
424
- * Copy from another color
425
- * 从另一个颜色复制
426
- */
427
- copy(other) {
428
- this.r = other.r;
429
- this.g = other.g;
430
- this.b = other.b;
431
- this.a = other.a;
432
- return this;
433
- }
434
- /**
435
- * Check equality with another color
436
- * 检查与另一个颜色是否相等
437
- */
438
- equals(other) {
439
- return this.r === other.r && this.g === other.g && this.b === other.b && this.a === other.a;
440
- }
441
- /**
442
- * String representation
443
- * 字符串表示
444
- */
445
- toString() {
446
- return `Color(${this.r}, ${this.g}, ${this.b}, ${this.a})`;
447
- }
448
- }
449
- // ===== Predefined Colors | 预定义颜色 =====
450
- /** White (0xFFFFFF) | 白色 */
451
- Color.WHITE = new Color(255, 255, 255);
452
- /** Black (0x000000) | 黑色 */
453
- Color.BLACK = new Color(0, 0, 0);
454
- /** Red (0xFF0000) | 红色 */
455
- Color.RED = new Color(255, 0, 0);
456
- /** Green (0x00FF00) | 绿色 */
457
- Color.GREEN = new Color(0, 255, 0);
458
- /** Blue (0x0000FF) | 蓝色 */
459
- Color.BLUE = new Color(0, 0, 255);
460
- /** Yellow (0xFFFF00) | 黄色 */
461
- Color.YELLOW = new Color(255, 255, 0);
462
- /** Cyan (0x00FFFF) | 青色 */
463
- Color.CYAN = new Color(0, 255, 255);
464
- /** Magenta (0xFF00FF) | 品红色 */
465
- Color.MAGENTA = new Color(255, 0, 255);
466
- /** Transparent (0x00000000) | 透明 */
467
- Color.TRANSPARENT = new Color(0, 0, 0, 0);
468
- /** Gray (0x808080) | 灰色 */
469
- Color.GRAY = new Color(128, 128, 128);
470
- //# sourceMappingURL=Color.js.map
package/bin/Color.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Color.js","sourceRoot":"","sources":["../src/Color.ts"],"names":[],"mappings":"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"}