@esengine/ecs-framework-math 2.10.1 → 2.10.3
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/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +10175 -0
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.umd.js +2 -0
- package/dist/index.umd.js.map +1 -0
- package/package.json +20 -11
- package/bin/Animation/Easing.d.ts +0 -244
- package/bin/Animation/Easing.d.ts.map +0 -1
- package/bin/Animation/Easing.js +0 -407
- package/bin/Animation/Easing.js.map +0 -1
- package/bin/Animation/Interpolation.d.ts +0 -172
- package/bin/Animation/Interpolation.d.ts.map +0 -1
- package/bin/Animation/Interpolation.js +0 -327
- package/bin/Animation/Interpolation.js.map +0 -1
- package/bin/Animation/index.d.ts +0 -8
- package/bin/Animation/index.d.ts.map +0 -1
- package/bin/Animation/index.js +0 -8
- package/bin/Animation/index.js.map +0 -1
- package/bin/Circle.d.ts +0 -277
- package/bin/Circle.d.ts.map +0 -1
- package/bin/Circle.js +0 -496
- package/bin/Circle.js.map +0 -1
- package/bin/Collision/CollisionDetector.d.ts +0 -114
- package/bin/Collision/CollisionDetector.d.ts.map +0 -1
- package/bin/Collision/CollisionDetector.js +0 -353
- package/bin/Collision/CollisionDetector.js.map +0 -1
- package/bin/Collision/index.d.ts +0 -7
- package/bin/Collision/index.d.ts.map +0 -1
- package/bin/Collision/index.js +0 -7
- package/bin/Collision/index.js.map +0 -1
- package/bin/Color.d.ts +0 -277
- package/bin/Color.d.ts.map +0 -1
- package/bin/Color.js +0 -470
- package/bin/Color.js.map +0 -1
- package/bin/Fixed32.d.ts +0 -266
- package/bin/Fixed32.d.ts.map +0 -1
- package/bin/Fixed32.js +0 -381
- package/bin/Fixed32.js.map +0 -1
- package/bin/FixedMath.d.ts +0 -109
- package/bin/FixedMath.d.ts.map +0 -1
- package/bin/FixedMath.js +0 -264
- package/bin/FixedMath.js.map +0 -1
- package/bin/FixedVector2.d.ts +0 -293
- package/bin/FixedVector2.d.ts.map +0 -1
- package/bin/FixedVector2.js +0 -413
- package/bin/FixedVector2.js.map +0 -1
- package/bin/MathUtils.d.ts +0 -312
- package/bin/MathUtils.d.ts.map +0 -1
- package/bin/MathUtils.js +0 -500
- package/bin/MathUtils.js.map +0 -1
- package/bin/Matrix3.d.ts +0 -288
- package/bin/Matrix3.d.ts.map +0 -1
- package/bin/Matrix3.js +0 -542
- package/bin/Matrix3.js.map +0 -1
- package/bin/Rectangle.d.ts +0 -266
- package/bin/Rectangle.d.ts.map +0 -1
- package/bin/Rectangle.js +0 -437
- package/bin/Rectangle.js.map +0 -1
- package/bin/Vector2.d.ts +0 -333
- package/bin/Vector2.d.ts.map +0 -1
- package/bin/Vector2.js +0 -484
- package/bin/Vector2.js.map +0 -1
- package/bin/Vector3.d.ts +0 -257
- package/bin/Vector3.d.ts.map +0 -1
- package/bin/Vector3.js +0 -372
- package/bin/Vector3.js.map +0 -1
- package/bin/index.d.ts +0 -25
- package/bin/index.d.ts.map +0 -1
- package/bin/index.js +0 -32
- package/bin/index.js.map +0 -1
- package/bin/nodes/ColorNodes.d.ts +0 -70
- package/bin/nodes/ColorNodes.d.ts.map +0 -1
- package/bin/nodes/ColorNodes.js +0 -427
- package/bin/nodes/ColorNodes.js.map +0 -1
- package/bin/nodes/FixedNodes.d.ts +0 -98
- package/bin/nodes/FixedNodes.d.ts.map +0 -1
- package/bin/nodes/FixedNodes.js +0 -612
- package/bin/nodes/FixedNodes.js.map +0 -1
- package/bin/nodes/FixedVectorNodes.d.ts +0 -58
- package/bin/nodes/FixedVectorNodes.d.ts.map +0 -1
- package/bin/nodes/FixedVectorNodes.js +0 -330
- package/bin/nodes/FixedVectorNodes.js.map +0 -1
- package/bin/nodes/VectorNodes.d.ts +0 -62
- package/bin/nodes/VectorNodes.d.ts.map +0 -1
- package/bin/nodes/VectorNodes.js +0 -355
- package/bin/nodes/VectorNodes.js.map +0 -1
- package/bin/nodes/index.d.ts +0 -20
- package/bin/nodes/index.d.ts.map +0 -1
- package/bin/nodes/index.js +0 -27
- package/bin/nodes/index.js.map +0 -1
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
import { Vector2 } from '../Vector2';
|
|
2
|
-
/**
|
|
3
|
-
* 碰撞检测器
|
|
4
|
-
*
|
|
5
|
-
* 提供各种几何体之间的碰撞检测功能
|
|
6
|
-
*/
|
|
7
|
-
export class CollisionDetector {
|
|
8
|
-
// 点与几何体碰撞检测
|
|
9
|
-
/**
|
|
10
|
-
* 点与圆形碰撞检测
|
|
11
|
-
* @param point 点
|
|
12
|
-
* @param circle 圆形
|
|
13
|
-
* @returns 碰撞信息
|
|
14
|
-
*/
|
|
15
|
-
static pointCircle(point, circle) {
|
|
16
|
-
const distance = Vector2.distance(point, circle.center);
|
|
17
|
-
const collided = distance <= circle.radius;
|
|
18
|
-
if (!collided) {
|
|
19
|
-
return { collided: false };
|
|
20
|
-
}
|
|
21
|
-
const normal = distance > 0
|
|
22
|
-
? Vector2.subtract(point, circle.center).normalize()
|
|
23
|
-
: new Vector2(1, 0); // 默认法线
|
|
24
|
-
return {
|
|
25
|
-
collided: true,
|
|
26
|
-
normal,
|
|
27
|
-
penetration: circle.radius - distance,
|
|
28
|
-
contactPoint: point.clone()
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* 点与矩形碰撞检测
|
|
33
|
-
* @param point 点
|
|
34
|
-
* @param rect 矩形
|
|
35
|
-
* @returns 碰撞信息
|
|
36
|
-
*/
|
|
37
|
-
static pointRect(point, rect) {
|
|
38
|
-
const collided = rect.containsPoint(point);
|
|
39
|
-
if (!collided) {
|
|
40
|
-
return { collided: false };
|
|
41
|
-
}
|
|
42
|
-
// 计算到各边的距离
|
|
43
|
-
const distLeft = point.x - rect.left;
|
|
44
|
-
const distRight = rect.right - point.x;
|
|
45
|
-
const distTop = point.y - rect.top;
|
|
46
|
-
const distBottom = rect.bottom - point.y;
|
|
47
|
-
// 找到最小距离确定法线方向
|
|
48
|
-
const minDist = Math.min(distLeft, distRight, distTop, distBottom);
|
|
49
|
-
let normal;
|
|
50
|
-
const penetration = minDist;
|
|
51
|
-
if (minDist === distLeft) {
|
|
52
|
-
normal = new Vector2(-1, 0);
|
|
53
|
-
}
|
|
54
|
-
else if (minDist === distRight) {
|
|
55
|
-
normal = new Vector2(1, 0);
|
|
56
|
-
}
|
|
57
|
-
else if (minDist === distTop) {
|
|
58
|
-
normal = new Vector2(0, -1);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
normal = new Vector2(0, 1);
|
|
62
|
-
}
|
|
63
|
-
return {
|
|
64
|
-
collided: true,
|
|
65
|
-
normal,
|
|
66
|
-
penetration,
|
|
67
|
-
contactPoint: point.clone()
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
// 圆形碰撞检测
|
|
71
|
-
/**
|
|
72
|
-
* 圆形与圆形碰撞检测
|
|
73
|
-
* @param circle1 第一个圆形
|
|
74
|
-
* @param circle2 第二个圆形
|
|
75
|
-
* @returns 碰撞信息
|
|
76
|
-
*/
|
|
77
|
-
static circleCircle(circle1, circle2) {
|
|
78
|
-
const distance = Vector2.distance(circle1.center, circle2.center);
|
|
79
|
-
const radiusSum = circle1.radius + circle2.radius;
|
|
80
|
-
const collided = distance <= radiusSum;
|
|
81
|
-
if (!collided) {
|
|
82
|
-
return { collided: false };
|
|
83
|
-
}
|
|
84
|
-
const normal = distance > 0
|
|
85
|
-
? Vector2.subtract(circle2.center, circle1.center).normalize()
|
|
86
|
-
: new Vector2(1, 0); // 默认法线
|
|
87
|
-
const penetration = radiusSum - distance;
|
|
88
|
-
const contactPoint = circle1.center.clone().add(normal.clone().multiply(circle1.radius - penetration * 0.5));
|
|
89
|
-
return {
|
|
90
|
-
collided: true,
|
|
91
|
-
normal,
|
|
92
|
-
penetration,
|
|
93
|
-
contactPoint
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* 圆形与矩形碰撞检测
|
|
98
|
-
* @param circle 圆形
|
|
99
|
-
* @param rect 矩形
|
|
100
|
-
* @returns 碰撞信息
|
|
101
|
-
*/
|
|
102
|
-
static circleRect(circle, rect) {
|
|
103
|
-
// 找到矩形上离圆心最近的点
|
|
104
|
-
const closestPoint = rect.closestPointTo(circle.center);
|
|
105
|
-
// 检查是否碰撞
|
|
106
|
-
const distance = Vector2.distance(circle.center, closestPoint);
|
|
107
|
-
const collided = distance <= circle.radius;
|
|
108
|
-
if (!collided) {
|
|
109
|
-
return { collided: false };
|
|
110
|
-
}
|
|
111
|
-
// 计算法线和穿透深度
|
|
112
|
-
const normal = distance > 0
|
|
113
|
-
? Vector2.subtract(closestPoint, circle.center).normalize()
|
|
114
|
-
: new Vector2(0, -1); // 默认法线(圆心在矩形内部时)
|
|
115
|
-
const penetration = circle.radius - distance;
|
|
116
|
-
return {
|
|
117
|
-
collided: true,
|
|
118
|
-
normal,
|
|
119
|
-
penetration,
|
|
120
|
-
contactPoint: closestPoint
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
// 矩形碰撞检测
|
|
124
|
-
/**
|
|
125
|
-
* 矩形与矩形碰撞检测(AABB)
|
|
126
|
-
* @param rect1 第一个矩形
|
|
127
|
-
* @param rect2 第二个矩形
|
|
128
|
-
* @returns 碰撞信息
|
|
129
|
-
*/
|
|
130
|
-
static rectRect(rect1, rect2) {
|
|
131
|
-
const collided = rect1.intersects(rect2);
|
|
132
|
-
if (!collided) {
|
|
133
|
-
return { collided: false };
|
|
134
|
-
}
|
|
135
|
-
// 计算重叠区域
|
|
136
|
-
const overlapLeft = Math.max(rect1.left, rect2.left);
|
|
137
|
-
const overlapRight = Math.min(rect1.right, rect2.right);
|
|
138
|
-
const overlapTop = Math.max(rect1.top, rect2.top);
|
|
139
|
-
const overlapBottom = Math.min(rect1.bottom, rect2.bottom);
|
|
140
|
-
const overlapWidth = overlapRight - overlapLeft;
|
|
141
|
-
const overlapHeight = overlapBottom - overlapTop;
|
|
142
|
-
// 确定分离方向(最小重叠轴)
|
|
143
|
-
let normal;
|
|
144
|
-
let penetration;
|
|
145
|
-
if (overlapWidth < overlapHeight) {
|
|
146
|
-
// 水平分离
|
|
147
|
-
penetration = overlapWidth;
|
|
148
|
-
if (rect1.centerX < rect2.centerX) {
|
|
149
|
-
normal = new Vector2(-1, 0);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
normal = new Vector2(1, 0);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
// 垂直分离
|
|
157
|
-
penetration = overlapHeight;
|
|
158
|
-
if (rect1.centerY < rect2.centerY) {
|
|
159
|
-
normal = new Vector2(0, -1);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
normal = new Vector2(0, 1);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const contactPoint = new Vector2((overlapLeft + overlapRight) * 0.5, (overlapTop + overlapBottom) * 0.5);
|
|
166
|
-
return {
|
|
167
|
-
collided: true,
|
|
168
|
-
normal,
|
|
169
|
-
penetration,
|
|
170
|
-
contactPoint
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
// 射线投射
|
|
174
|
-
/**
|
|
175
|
-
* 射线与圆形相交检测
|
|
176
|
-
* @param rayOrigin 射线起点
|
|
177
|
-
* @param rayDirection 射线方向(单位向量)
|
|
178
|
-
* @param circle 圆形
|
|
179
|
-
* @param maxDistance 最大检测距离,默认无限
|
|
180
|
-
* @returns 碰撞信息,包含距离信息
|
|
181
|
-
*/
|
|
182
|
-
static rayCircle(rayOrigin, rayDirection, circle, maxDistance = Infinity) {
|
|
183
|
-
const oc = Vector2.subtract(rayOrigin, circle.center);
|
|
184
|
-
const a = rayDirection.lengthSquared;
|
|
185
|
-
const b = 2 * Vector2.dot(oc, rayDirection);
|
|
186
|
-
const c = oc.lengthSquared - circle.radius * circle.radius;
|
|
187
|
-
const discriminant = b * b - 4 * a * c;
|
|
188
|
-
if (discriminant < 0) {
|
|
189
|
-
return { collided: false };
|
|
190
|
-
}
|
|
191
|
-
const sqrt = Math.sqrt(discriminant);
|
|
192
|
-
const t1 = (-b - sqrt) / (2 * a);
|
|
193
|
-
const t2 = (-b + sqrt) / (2 * a);
|
|
194
|
-
// 选择最近的正距离
|
|
195
|
-
const t = t1 >= 0 ? t1 : t2;
|
|
196
|
-
if (t < 0 || t > maxDistance) {
|
|
197
|
-
return { collided: false };
|
|
198
|
-
}
|
|
199
|
-
const contactPoint = rayOrigin.clone().add(rayDirection.clone().multiply(t));
|
|
200
|
-
const normal = Vector2.subtract(contactPoint, circle.center).normalize();
|
|
201
|
-
return {
|
|
202
|
-
collided: true,
|
|
203
|
-
normal,
|
|
204
|
-
contactPoint,
|
|
205
|
-
distance: t,
|
|
206
|
-
penetration: 0 // 射线检测不计算穿透
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* 射线与矩形相交检测
|
|
211
|
-
* @param rayOrigin 射线起点
|
|
212
|
-
* @param rayDirection 射线方向(单位向量)
|
|
213
|
-
* @param rect 矩形
|
|
214
|
-
* @param maxDistance 最大检测距离,默认无限
|
|
215
|
-
* @returns 碰撞信息,包含距离信息
|
|
216
|
-
*/
|
|
217
|
-
static rayRect(rayOrigin, rayDirection, rect, maxDistance = Infinity) {
|
|
218
|
-
// 避免除零
|
|
219
|
-
const invDirX = rayDirection.x !== 0 ? 1 / rayDirection.x : 1e10;
|
|
220
|
-
const invDirY = rayDirection.y !== 0 ? 1 / rayDirection.y : 1e10;
|
|
221
|
-
// 计算与各边的交点参数
|
|
222
|
-
const t1 = (rect.left - rayOrigin.x) * invDirX;
|
|
223
|
-
const t2 = (rect.right - rayOrigin.x) * invDirX;
|
|
224
|
-
const t3 = (rect.top - rayOrigin.y) * invDirY;
|
|
225
|
-
const t4 = (rect.bottom - rayOrigin.y) * invDirY;
|
|
226
|
-
const tmin = Math.max(Math.min(t1, t2), Math.min(t3, t4));
|
|
227
|
-
const tmax = Math.min(Math.max(t1, t2), Math.max(t3, t4));
|
|
228
|
-
// 没有交点或交点在射线反方向
|
|
229
|
-
if (tmax < 0 || tmin > tmax || tmin > maxDistance) {
|
|
230
|
-
return { collided: false };
|
|
231
|
-
}
|
|
232
|
-
const t = tmin >= 0 ? tmin : tmax;
|
|
233
|
-
const contactPoint = rayOrigin.clone().add(rayDirection.clone().multiply(t));
|
|
234
|
-
// 确定法线方向
|
|
235
|
-
let normal;
|
|
236
|
-
const epsilon = 1e-6;
|
|
237
|
-
if (Math.abs(contactPoint.x - rect.left) < epsilon) {
|
|
238
|
-
normal = new Vector2(-1, 0);
|
|
239
|
-
}
|
|
240
|
-
else if (Math.abs(contactPoint.x - rect.right) < epsilon) {
|
|
241
|
-
normal = new Vector2(1, 0);
|
|
242
|
-
}
|
|
243
|
-
else if (Math.abs(contactPoint.y - rect.top) < epsilon) {
|
|
244
|
-
normal = new Vector2(0, -1);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
normal = new Vector2(0, 1);
|
|
248
|
-
}
|
|
249
|
-
return {
|
|
250
|
-
collided: true,
|
|
251
|
-
normal,
|
|
252
|
-
contactPoint,
|
|
253
|
-
distance: t,
|
|
254
|
-
penetration: 0 // 射线检测不计算穿透
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
// 线段相交检测
|
|
258
|
-
/**
|
|
259
|
-
* 线段与线段相交检测
|
|
260
|
-
* @param p1 第一条线段起点
|
|
261
|
-
* @param p2 第一条线段终点
|
|
262
|
-
* @param p3 第二条线段起点
|
|
263
|
-
* @param p4 第二条线段终点
|
|
264
|
-
* @returns 碰撞信息
|
|
265
|
-
*/
|
|
266
|
-
static lineSegmentLineSegment(p1, p2, p3, p4) {
|
|
267
|
-
const d1 = Vector2.subtract(p2, p1);
|
|
268
|
-
const d2 = Vector2.subtract(p4, p3);
|
|
269
|
-
const d3 = Vector2.subtract(p3, p1);
|
|
270
|
-
const cross = Vector2.cross(d1, d2);
|
|
271
|
-
if (Math.abs(cross) < Number.EPSILON) {
|
|
272
|
-
// 平行或共线
|
|
273
|
-
return { collided: false };
|
|
274
|
-
}
|
|
275
|
-
const t1 = Vector2.cross(d3, d2) / cross;
|
|
276
|
-
const t2 = Vector2.cross(d3, d1) / cross;
|
|
277
|
-
if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {
|
|
278
|
-
const contactPoint = p1.clone().add(d1.clone().multiply(t1));
|
|
279
|
-
// 计算法线(垂直于第一条线段)
|
|
280
|
-
const normal = d1.perpendicular().normalize();
|
|
281
|
-
return {
|
|
282
|
-
collided: true,
|
|
283
|
-
normal,
|
|
284
|
-
contactPoint,
|
|
285
|
-
penetration: 0 // 线段相交不计算穿透
|
|
286
|
-
};
|
|
287
|
-
}
|
|
288
|
-
return { collided: false };
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* 线段与圆形相交检测
|
|
292
|
-
* @param lineStart 线段起点
|
|
293
|
-
* @param lineEnd 线段终点
|
|
294
|
-
* @param circle 圆形
|
|
295
|
-
* @returns 碰撞信息
|
|
296
|
-
*/
|
|
297
|
-
static lineSegmentCircle(lineStart, lineEnd, circle) {
|
|
298
|
-
const d = Vector2.subtract(lineEnd, lineStart);
|
|
299
|
-
const f = Vector2.subtract(lineStart, circle.center);
|
|
300
|
-
const a = Vector2.dot(d, d);
|
|
301
|
-
const b = 2 * Vector2.dot(f, d);
|
|
302
|
-
const c = Vector2.dot(f, f) - circle.radius * circle.radius;
|
|
303
|
-
const discriminant = b * b - 4 * a * c;
|
|
304
|
-
if (discriminant < 0) {
|
|
305
|
-
return { collided: false };
|
|
306
|
-
}
|
|
307
|
-
const sqrt = Math.sqrt(discriminant);
|
|
308
|
-
const t1 = (-b - sqrt) / (2 * a);
|
|
309
|
-
const t2 = (-b + sqrt) / (2 * a);
|
|
310
|
-
// 检查交点是否在线段上
|
|
311
|
-
const validT = [];
|
|
312
|
-
if (t1 >= 0 && t1 <= 1)
|
|
313
|
-
validT.push(t1);
|
|
314
|
-
if (t2 >= 0 && t2 <= 1)
|
|
315
|
-
validT.push(t2);
|
|
316
|
-
if (validT.length === 0) {
|
|
317
|
-
return { collided: false };
|
|
318
|
-
}
|
|
319
|
-
// 使用最近的交点
|
|
320
|
-
const t = validT[0];
|
|
321
|
-
const contactPoint = lineStart.clone().add(d.clone().multiply(t));
|
|
322
|
-
const normal = Vector2.subtract(contactPoint, circle.center).normalize();
|
|
323
|
-
return {
|
|
324
|
-
collided: true,
|
|
325
|
-
normal,
|
|
326
|
-
contactPoint,
|
|
327
|
-
penetration: 0 // 线段相交不计算穿透
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
// 快速排斥测试
|
|
331
|
-
/**
|
|
332
|
-
* AABB包围盒快速排斥测试
|
|
333
|
-
* @param bounds1 第一个包围盒
|
|
334
|
-
* @param bounds2 第二个包围盒
|
|
335
|
-
* @returns 是否可能相交
|
|
336
|
-
*/
|
|
337
|
-
static aabbTest(bounds1, bounds2) {
|
|
338
|
-
return bounds1.intersects(bounds2);
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* 圆形包围盒快速排斥测试
|
|
342
|
-
* @param center1 第一个圆心
|
|
343
|
-
* @param radius1 第一个半径
|
|
344
|
-
* @param center2 第二个圆心
|
|
345
|
-
* @param radius2 第二个半径
|
|
346
|
-
* @returns 是否可能相交
|
|
347
|
-
*/
|
|
348
|
-
static circleTest(center1, radius1, center2, radius2) {
|
|
349
|
-
const distance = Vector2.distance(center1, center2);
|
|
350
|
-
return distance <= radius1 + radius2;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
//# sourceMappingURL=CollisionDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CollisionDetector.js","sourceRoot":"","sources":["../../src/Collision/CollisionDetector.ts"],"names":[],"mappings":"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"}
|
package/bin/Collision/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Collision/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
|
package/bin/Collision/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Collision/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAsB,MAAM,qBAAqB,CAAC"}
|
package/bin/Color.d.ts
DELETED
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Color utility class for game engine
|
|
3
|
-
* 游戏引擎颜色工具类
|
|
4
|
-
*
|
|
5
|
-
* Provides color conversion, manipulation, and packing utilities.
|
|
6
|
-
* 提供颜色转换、操作和打包工具。
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* RGBA color components
|
|
10
|
-
* RGBA 颜色分量
|
|
11
|
-
*/
|
|
12
|
-
export interface RGBA {
|
|
13
|
-
r: number;
|
|
14
|
-
g: number;
|
|
15
|
-
b: number;
|
|
16
|
-
a: number;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* HSL color components
|
|
20
|
-
* HSL 颜色分量
|
|
21
|
-
*/
|
|
22
|
-
export interface HSL {
|
|
23
|
-
h: number;
|
|
24
|
-
s: number;
|
|
25
|
-
l: number;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Color class for color manipulation and conversion
|
|
29
|
-
* 颜色类,用于颜色操作和转换
|
|
30
|
-
*/
|
|
31
|
-
export declare class Color {
|
|
32
|
-
/** Red component (0-255) | 红色分量 (0-255) */
|
|
33
|
-
r: number;
|
|
34
|
-
/** Green component (0-255) | 绿色分量 (0-255) */
|
|
35
|
-
g: number;
|
|
36
|
-
/** Blue component (0-255) | 蓝色分量 (0-255) */
|
|
37
|
-
b: number;
|
|
38
|
-
/** Alpha component (0-1) | 透明度分量 (0-1) */
|
|
39
|
-
a: number;
|
|
40
|
-
/** White (0xFFFFFF) | 白色 */
|
|
41
|
-
static readonly WHITE: Color;
|
|
42
|
-
/** Black (0x000000) | 黑色 */
|
|
43
|
-
static readonly BLACK: Color;
|
|
44
|
-
/** Red (0xFF0000) | 红色 */
|
|
45
|
-
static readonly RED: Color;
|
|
46
|
-
/** Green (0x00FF00) | 绿色 */
|
|
47
|
-
static readonly GREEN: Color;
|
|
48
|
-
/** Blue (0x0000FF) | 蓝色 */
|
|
49
|
-
static readonly BLUE: Color;
|
|
50
|
-
/** Yellow (0xFFFF00) | 黄色 */
|
|
51
|
-
static readonly YELLOW: Color;
|
|
52
|
-
/** Cyan (0x00FFFF) | 青色 */
|
|
53
|
-
static readonly CYAN: Color;
|
|
54
|
-
/** Magenta (0xFF00FF) | 品红色 */
|
|
55
|
-
static readonly MAGENTA: Color;
|
|
56
|
-
/** Transparent (0x00000000) | 透明 */
|
|
57
|
-
static readonly TRANSPARENT: Color;
|
|
58
|
-
/** Gray (0x808080) | 灰色 */
|
|
59
|
-
static readonly GRAY: Color;
|
|
60
|
-
/**
|
|
61
|
-
* Create a new Color instance
|
|
62
|
-
* 创建新的 Color 实例
|
|
63
|
-
*/
|
|
64
|
-
constructor(r?: number, g?: number, b?: number, a?: number);
|
|
65
|
-
/**
|
|
66
|
-
* Create color from hex string
|
|
67
|
-
* 从十六进制字符串创建颜色
|
|
68
|
-
* @param hex Hex string (e.g., "#FF0000", "#F00", "FF0000") | 十六进制字符串
|
|
69
|
-
* @param alpha Optional alpha value (0-1) | 可选的透明度值
|
|
70
|
-
*/
|
|
71
|
-
static fromHex(hex: string, alpha?: number): Color;
|
|
72
|
-
/**
|
|
73
|
-
* Create color from packed uint32 (0xRRGGBB or 0xAARRGGBB)
|
|
74
|
-
* 从打包的 uint32 创建颜色
|
|
75
|
-
* @param value Packed color value | 打包的颜色值
|
|
76
|
-
* @param hasAlpha Whether value includes alpha | 是否包含透明度
|
|
77
|
-
*/
|
|
78
|
-
static fromUint32(value: number, hasAlpha?: boolean): Color;
|
|
79
|
-
/**
|
|
80
|
-
* Create color from HSL values
|
|
81
|
-
* 从 HSL 值创建颜色
|
|
82
|
-
* @param h Hue (0-360) | 色相
|
|
83
|
-
* @param s Saturation (0-1) | 饱和度
|
|
84
|
-
* @param l Lightness (0-1) | 亮度
|
|
85
|
-
* @param a Alpha (0-1) | 透明度
|
|
86
|
-
*/
|
|
87
|
-
static fromHSL(h: number, s: number, l: number, a?: number): Color;
|
|
88
|
-
/**
|
|
89
|
-
* Create color from normalized float values (0-1)
|
|
90
|
-
* 从归一化浮点值创建颜色 (0-1)
|
|
91
|
-
*/
|
|
92
|
-
static fromFloat(r: number, g: number, b: number, a?: number): Color;
|
|
93
|
-
/**
|
|
94
|
-
* Convert hex string to RGB
|
|
95
|
-
* 将十六进制字符串转换为 RGB
|
|
96
|
-
*/
|
|
97
|
-
static hexToRgb(hex: string): {
|
|
98
|
-
r: number;
|
|
99
|
-
g: number;
|
|
100
|
-
b: number;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Convert RGB to hex string
|
|
104
|
-
* 将 RGB 转换为十六进制字符串
|
|
105
|
-
*/
|
|
106
|
-
static rgbToHex(r: number, g: number, b: number): string;
|
|
107
|
-
/**
|
|
108
|
-
* Convert HSL to RGB
|
|
109
|
-
* 将 HSL 转换为 RGB
|
|
110
|
-
*/
|
|
111
|
-
static hslToRgb(h: number, s: number, l: number): {
|
|
112
|
-
r: number;
|
|
113
|
-
g: number;
|
|
114
|
-
b: number;
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* Convert RGB to HSL
|
|
118
|
-
* 将 RGB 转换为 HSL
|
|
119
|
-
*/
|
|
120
|
-
static rgbToHsl(r: number, g: number, b: number): HSL;
|
|
121
|
-
/**
|
|
122
|
-
* Pack color to uint32 (0xRRGGBB)
|
|
123
|
-
* 打包颜色为 uint32 (0xRRGGBB)
|
|
124
|
-
*/
|
|
125
|
-
static packRGB(r: number, g: number, b: number): number;
|
|
126
|
-
/**
|
|
127
|
-
* Pack color to uint32 (0xAARRGGBB)
|
|
128
|
-
* 打包颜色为 uint32 (0xAARRGGBB)
|
|
129
|
-
*/
|
|
130
|
-
static packARGB(r: number, g: number, b: number, a: number): number;
|
|
131
|
-
/**
|
|
132
|
-
* Pack color to uint32 for WebGL (0xAABBGGRR)
|
|
133
|
-
* 打包颜色为 WebGL 格式的 uint32 (0xAABBGGRR)
|
|
134
|
-
*/
|
|
135
|
-
static packABGR(r: number, g: number, b: number, a: number): number;
|
|
136
|
-
/**
|
|
137
|
-
* Pack hex string and alpha to WebGL uint32 (0xAABBGGRR)
|
|
138
|
-
* 将十六进制字符串和透明度打包为 WebGL 格式 uint32
|
|
139
|
-
*/
|
|
140
|
-
static packHexAlpha(hex: string, alpha: number): number;
|
|
141
|
-
/**
|
|
142
|
-
* Unpack uint32 to RGBA (assumes 0xAARRGGBB)
|
|
143
|
-
* 解包 uint32 为 RGBA (假设格式为 0xAARRGGBB)
|
|
144
|
-
*/
|
|
145
|
-
static unpackARGB(value: number): RGBA;
|
|
146
|
-
/**
|
|
147
|
-
* Unpack uint32 to RGBA (assumes 0xAABBGGRR - WebGL format)
|
|
148
|
-
* 解包 uint32 为 RGBA (假设格式为 0xAABBGGRR - WebGL 格式)
|
|
149
|
-
*/
|
|
150
|
-
static unpackABGR(value: number): RGBA;
|
|
151
|
-
/**
|
|
152
|
-
* Interpolate between two colors
|
|
153
|
-
* 在两个颜色之间插值
|
|
154
|
-
*/
|
|
155
|
-
static lerp(from: Color, to: Color, t: number): Color;
|
|
156
|
-
/**
|
|
157
|
-
* Interpolate between two packed uint32 colors (0xRRGGBB)
|
|
158
|
-
* 在两个打包的 uint32 颜色之间插值
|
|
159
|
-
*/
|
|
160
|
-
static lerpUint32(from: number, to: number, t: number): number;
|
|
161
|
-
/**
|
|
162
|
-
* Mix two colors
|
|
163
|
-
* 混合两个颜色
|
|
164
|
-
*/
|
|
165
|
-
static mix(color1: Color, color2: Color, ratio?: number): Color;
|
|
166
|
-
/**
|
|
167
|
-
* Lighten a color
|
|
168
|
-
* 使颜色变亮
|
|
169
|
-
*/
|
|
170
|
-
static lighten(color: Color, amount: number): Color;
|
|
171
|
-
/**
|
|
172
|
-
* Darken a color
|
|
173
|
-
* 使颜色变暗
|
|
174
|
-
*/
|
|
175
|
-
static darken(color: Color, amount: number): Color;
|
|
176
|
-
/**
|
|
177
|
-
* Saturate a color
|
|
178
|
-
* 增加颜色饱和度
|
|
179
|
-
*/
|
|
180
|
-
static saturate(color: Color, amount: number): Color;
|
|
181
|
-
/**
|
|
182
|
-
* Desaturate a color
|
|
183
|
-
* 降低颜色饱和度
|
|
184
|
-
*/
|
|
185
|
-
static desaturate(color: Color, amount: number): Color;
|
|
186
|
-
/**
|
|
187
|
-
* Invert a color
|
|
188
|
-
* 反转颜色
|
|
189
|
-
*/
|
|
190
|
-
static invert(color: Color): Color;
|
|
191
|
-
/**
|
|
192
|
-
* Convert color to grayscale
|
|
193
|
-
* 将颜色转换为灰度
|
|
194
|
-
*/
|
|
195
|
-
static grayscale(color: Color): Color;
|
|
196
|
-
/**
|
|
197
|
-
* Get color luminance (perceived brightness)
|
|
198
|
-
* 获取颜色亮度(感知亮度)
|
|
199
|
-
*/
|
|
200
|
-
static luminance(color: Color): number;
|
|
201
|
-
/**
|
|
202
|
-
* Get contrast ratio between two colors
|
|
203
|
-
* 获取两个颜色之间的对比度
|
|
204
|
-
*/
|
|
205
|
-
static contrastRatio(color1: Color, color2: Color): number;
|
|
206
|
-
/**
|
|
207
|
-
* Convert to hex string
|
|
208
|
-
* 转换为十六进制字符串
|
|
209
|
-
*/
|
|
210
|
-
toHex(): string;
|
|
211
|
-
/**
|
|
212
|
-
* Convert to hex string with alpha
|
|
213
|
-
* 转换为带透明度的十六进制字符串
|
|
214
|
-
*/
|
|
215
|
-
toHexAlpha(): string;
|
|
216
|
-
/**
|
|
217
|
-
* Convert to CSS rgba string
|
|
218
|
-
* 转换为 CSS rgba 字符串
|
|
219
|
-
*/
|
|
220
|
-
toRgba(): string;
|
|
221
|
-
/**
|
|
222
|
-
* Convert to CSS rgb string
|
|
223
|
-
* 转换为 CSS rgb 字符串
|
|
224
|
-
*/
|
|
225
|
-
toRgb(): string;
|
|
226
|
-
/**
|
|
227
|
-
* Convert to HSL
|
|
228
|
-
* 转换为 HSL
|
|
229
|
-
*/
|
|
230
|
-
toHSL(): HSL;
|
|
231
|
-
/**
|
|
232
|
-
* Pack to uint32 (0xRRGGBB)
|
|
233
|
-
* 打包为 uint32 (0xRRGGBB)
|
|
234
|
-
*/
|
|
235
|
-
toUint32(): number;
|
|
236
|
-
/**
|
|
237
|
-
* Pack to uint32 with alpha (0xAARRGGBB)
|
|
238
|
-
* 打包为带透明度的 uint32 (0xAARRGGBB)
|
|
239
|
-
*/
|
|
240
|
-
toUint32Alpha(): number;
|
|
241
|
-
/**
|
|
242
|
-
* Pack to WebGL uint32 (0xAABBGGRR)
|
|
243
|
-
* 打包为 WebGL 格式 uint32 (0xAABBGGRR)
|
|
244
|
-
*/
|
|
245
|
-
toWebGL(): number;
|
|
246
|
-
/**
|
|
247
|
-
* Get normalized float array [r, g, b, a] (0-1)
|
|
248
|
-
* 获取归一化浮点数组 [r, g, b, a] (0-1)
|
|
249
|
-
*/
|
|
250
|
-
toFloatArray(): [number, number, number, number];
|
|
251
|
-
/**
|
|
252
|
-
* Clone this color
|
|
253
|
-
* 克隆此颜色
|
|
254
|
-
*/
|
|
255
|
-
clone(): Color;
|
|
256
|
-
/**
|
|
257
|
-
* Set color values
|
|
258
|
-
* 设置颜色值
|
|
259
|
-
*/
|
|
260
|
-
set(r: number, g: number, b: number, a?: number): this;
|
|
261
|
-
/**
|
|
262
|
-
* Copy from another color
|
|
263
|
-
* 从另一个颜色复制
|
|
264
|
-
*/
|
|
265
|
-
copy(other: Color): this;
|
|
266
|
-
/**
|
|
267
|
-
* Check equality with another color
|
|
268
|
-
* 检查与另一个颜色是否相等
|
|
269
|
-
*/
|
|
270
|
-
equals(other: Color): boolean;
|
|
271
|
-
/**
|
|
272
|
-
* String representation
|
|
273
|
-
* 字符串表示
|
|
274
|
-
*/
|
|
275
|
-
toString(): string;
|
|
276
|
-
}
|
|
277
|
-
//# sourceMappingURL=Color.d.ts.map
|
package/bin/Color.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../src/Color.ts"],"names":[],"mappings":"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"}
|