@vaitosoi/minejs 0.2.0 → 0.2.2

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 (90) hide show
  1. package/dist/base/aabb.d.ts +197 -0
  2. package/dist/base/aabb.d.ts.map +1 -0
  3. package/dist/base/aabb.js +576 -0
  4. package/dist/base/aabb.js.map +1 -0
  5. package/dist/base/bitset.d.ts +9 -0
  6. package/dist/base/bitset.d.ts.map +1 -0
  7. package/dist/base/bitset.js +46 -0
  8. package/dist/base/bitset.js.map +1 -0
  9. package/dist/base/block.d.ts +86 -0
  10. package/dist/base/block.d.ts.map +1 -0
  11. package/dist/base/block.js +232 -0
  12. package/dist/base/block.js.map +1 -0
  13. package/dist/base/direction.d.ts +153 -0
  14. package/dist/base/direction.d.ts.map +1 -0
  15. package/dist/base/direction.js +288 -0
  16. package/dist/base/direction.js.map +1 -0
  17. package/dist/base/entity.d.ts +43 -0
  18. package/dist/base/entity.d.ts.map +1 -0
  19. package/dist/base/entity.js +97 -0
  20. package/dist/base/entity.js.map +1 -0
  21. package/dist/base/error.d.ts +76 -0
  22. package/dist/base/error.d.ts.map +1 -0
  23. package/dist/base/error.js +141 -0
  24. package/dist/base/error.js.map +1 -0
  25. package/dist/base/event.d.ts +7 -0
  26. package/dist/base/event.d.ts.map +1 -0
  27. package/dist/base/event.js +3 -0
  28. package/dist/base/event.js.map +1 -0
  29. package/dist/base/math.d.ts +25 -0
  30. package/dist/base/math.d.ts.map +1 -0
  31. package/dist/base/math.js +69 -0
  32. package/dist/base/math.js.map +1 -0
  33. package/dist/base/player.d.ts +107 -0
  34. package/dist/base/player.d.ts.map +1 -0
  35. package/dist/base/player.js +543 -0
  36. package/dist/base/player.js.map +1 -0
  37. package/dist/base/registry.d.ts +50 -0
  38. package/dist/base/registry.d.ts.map +1 -0
  39. package/dist/base/registry.js +89 -0
  40. package/dist/base/registry.js.map +1 -0
  41. package/dist/base/tick.d.ts +19 -0
  42. package/dist/base/tick.d.ts.map +1 -0
  43. package/dist/base/tick.js +49 -0
  44. package/dist/base/tick.js.map +1 -0
  45. package/dist/base/typing.d.ts +3 -0
  46. package/dist/base/typing.d.ts.map +1 -0
  47. package/dist/base/typing.js +3 -0
  48. package/dist/base/typing.js.map +1 -0
  49. package/dist/client/auth.d.ts +39 -0
  50. package/dist/client/auth.d.ts.map +1 -0
  51. package/dist/client/auth.js +307 -0
  52. package/dist/client/auth.js.map +1 -0
  53. package/dist/client/client.d.ts +62 -0
  54. package/dist/client/client.d.ts.map +1 -0
  55. package/dist/client/client.js +98 -0
  56. package/dist/client/client.js.map +1 -0
  57. package/dist/client/static.d.ts +28 -0
  58. package/dist/client/static.d.ts.map +1 -0
  59. package/dist/client/static.js +43 -0
  60. package/dist/client/static.js.map +1 -0
  61. package/dist/client/tcp.d.ts +269 -0
  62. package/dist/client/tcp.d.ts.map +1 -0
  63. package/dist/client/tcp.js +838 -0
  64. package/dist/client/tcp.js.map +1 -0
  65. package/dist/index.d.ts +21 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/translator/decoder.d.ts +293 -0
  69. package/dist/translator/decoder.d.ts.map +1 -0
  70. package/dist/translator/decoder.js +668 -0
  71. package/dist/translator/decoder.js.map +1 -0
  72. package/dist/translator/encoder.d.ts +162 -0
  73. package/dist/translator/encoder.d.ts.map +1 -0
  74. package/dist/translator/encoder.js +430 -0
  75. package/dist/translator/encoder.js.map +1 -0
  76. package/dist/translator/static.d.ts +33 -0
  77. package/dist/translator/static.d.ts.map +1 -0
  78. package/dist/translator/static.js +42 -0
  79. package/dist/translator/static.js.map +1 -0
  80. package/package.json +10 -10
  81. package/src/base/aabb.ts +2 -0
  82. package/src/base/block.ts +4 -0
  83. package/src/base/direction.ts +5 -0
  84. package/src/base/error.ts +16 -0
  85. package/src/base/event.ts +1 -1
  86. package/src/base/math.ts +10 -0
  87. package/src/base/typing.ts +1 -0
  88. package/src/client/static.ts +4 -0
  89. package/src/translator/encoder.ts +2 -2
  90. package/src/translator/static.ts +9 -0
@@ -0,0 +1,576 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Shapes = exports.VoxelShape = exports.AABB = void 0;
4
+ const bitset_1 = require("./bitset");
5
+ const direction_1 = require("./direction");
6
+ const error_1 = require("./error");
7
+ const registry_1 = require("./registry");
8
+ const math_1 = require("./math");
9
+ const block_1 = require("./block");
10
+ class AABB {
11
+ minX;
12
+ minY;
13
+ minZ;
14
+ maxX;
15
+ maxY;
16
+ maxZ;
17
+ static EntityBoundingBoxes = {};
18
+ /**
19
+ * Construct bounding box from entity namespace or type ID
20
+ * @param type Entity namespace or type ID
21
+ * @returns
22
+ */
23
+ static fromEntityType(type) {
24
+ if (this.EntityBoundingBoxes[type])
25
+ return this.EntityBoundingBoxes[type];
26
+ if (!(type in registry_1.EntityRegistry.data) && !(type in registry_1.EntityRegistry.mapTypeToData))
27
+ throw new error_1.RegistryItemNotFound(`entity type ${type}`);
28
+ const { height, width } = registry_1.EntityRegistry.get(type);
29
+ return this.fromDimension(height, width);
30
+ }
31
+ /**
32
+ * Construct bounding box from given rectangle
33
+ * @param height
34
+ * @param width
35
+ * @returns
36
+ */
37
+ static fromDimension(height, width) {
38
+ return new AABB(-width / 2, 0, -width / 2, width / 2, height, width / 2);
39
+ }
40
+ /**
41
+ * Construct bounding box from base interface
42
+ * @param aabb
43
+ * @returns
44
+ */
45
+ static fromAABB(aabb) {
46
+ return new AABB(aabb.minX, aabb.minY, aabb.minZ, aabb.maxX, aabb.maxY, aabb.maxZ);
47
+ }
48
+ constructor(x1, y1, z1, x2, y2, z2) {
49
+ this.minX = Math.min(x1, x2);
50
+ this.minY = Math.min(y1, y2);
51
+ this.minZ = Math.min(z1, z2);
52
+ this.maxX = Math.max(x1, x2);
53
+ this.maxY = Math.max(y1, y2);
54
+ this.maxZ = Math.max(z1, z2);
55
+ }
56
+ /**
57
+ * Return a copy
58
+ * @returns
59
+ */
60
+ copyBase() {
61
+ return {
62
+ minX: this.minX,
63
+ minY: this.minY,
64
+ minZ: this.minZ,
65
+ maxX: this.maxX,
66
+ maxY: this.maxY,
67
+ maxZ: this.maxZ,
68
+ };
69
+ }
70
+ /**
71
+ * Check if two AABB is equal
72
+ * @param aabb
73
+ * @returns
74
+ */
75
+ equal(aabb) {
76
+ return this.minX === aabb.minX &&
77
+ this.minY === aabb.minY &&
78
+ this.minZ === aabb.minZ &&
79
+ this.maxX === aabb.maxX &&
80
+ this.maxY === aabb.maxY &&
81
+ this.maxZ === aabb.maxZ;
82
+ }
83
+ expandTowards(a, b, c) {
84
+ const { x, y, z } = direction_1.Vec3.loadArgs(a, b, c);
85
+ let { minX, minY, minZ, maxX, maxY, maxZ } = this;
86
+ if (x < 0.0) {
87
+ minX += x;
88
+ }
89
+ else if (x > 0.0) {
90
+ maxX += x;
91
+ }
92
+ if (y < 0.0) {
93
+ minY += y;
94
+ }
95
+ else if (y > 0.0) {
96
+ maxY += y;
97
+ }
98
+ if (z < 0.0) {
99
+ minZ += z;
100
+ }
101
+ else if (z > 0.0) {
102
+ maxZ += z;
103
+ }
104
+ return new AABB(minX, minY, minZ, maxX, maxY, maxZ);
105
+ }
106
+ move(a, b, c) {
107
+ const { x, y, z } = direction_1.Vec3.loadArgs(a, b, c);
108
+ const { minX, minY, minZ, maxX, maxY, maxZ } = this;
109
+ return new AABB(minX + x, minY + y, minZ + z, maxX + x, maxY + y, maxZ + z);
110
+ }
111
+ /**
112
+ * Is two AABB intersect each other
113
+ */
114
+ isIntersect(other) {
115
+ return this.minX < other.maxX && this.maxX > other.minX &&
116
+ this.minY < other.maxY && this.maxY > other.minY &&
117
+ this.minZ < other.maxZ && this.maxZ > other.minZ;
118
+ }
119
+ /**
120
+ * Get min value of an Axis
121
+ */
122
+ min(axis) {
123
+ return direction_1.Axis.choose(axis, this.minX, this.minY, this.minZ);
124
+ }
125
+ /**
126
+ * Get max value of an Axis
127
+ */
128
+ max(axis) {
129
+ return direction_1.Axis.choose(axis, this.maxX, this.maxY, this.maxZ);
130
+ }
131
+ /**
132
+ * Cliping math. Find smallest distance to reach a face of this Shape, which contain multiple AABB.
133
+ */
134
+ static clip(aabbs, from, to, pos) {
135
+ const scaleReference = [1]; // Make a mutable var
136
+ let direction = null;
137
+ const dx = to.x - from.x, dy = to.y - from.y, dz = to.z - from.z;
138
+ for (const aabb of aabbs)
139
+ direction = this.getDirection(aabb.move(pos), from, { x: dx, y: dy, z: dz }, direction, scaleReference);
140
+ if (direction === null)
141
+ return null;
142
+ const scale = scaleReference[0];
143
+ return block_1.BlockHitResult.hit(from.add(scale * dx, scale * dy, scale * dz), direction, pos);
144
+ }
145
+ /**
146
+ * Cliping math. Find smallest distance to reach a face of this AABB.
147
+ */
148
+ static getDirection(aabb, from, delta, direction_, scaleRef) {
149
+ let direction = structuredClone(direction_);
150
+ const { minX, maxX, minY, maxY, minZ, maxZ } = aabb;
151
+ if (delta.x > math_1.Epsilon)
152
+ direction = this.clipPoint(direction, direction_1.Direction.WEST, scaleRef, { a: delta.x, b: delta.y, c: delta.z }, minX, minY, maxX, minZ, maxZ, from.x, from.y, from.z);
153
+ else if (delta.x < -math_1.Epsilon)
154
+ direction = this.clipPoint(direction, direction_1.Direction.EAST, scaleRef, { a: delta.x, b: delta.y, c: delta.z }, maxX, minY, maxX, minZ, maxZ, from.x, from.y, from.z);
155
+ if (delta.y > math_1.Epsilon)
156
+ direction = this.clipPoint(direction, direction_1.Direction.DOWN, scaleRef, { a: delta.y, b: delta.z, c: delta.x }, minY, minZ, maxZ, minX, maxX, from.y, from.z, from.x);
157
+ else if (delta.y < -math_1.Epsilon)
158
+ direction = this.clipPoint(direction, direction_1.Direction.UP, scaleRef, { a: delta.y, b: delta.z, c: delta.x }, maxY, minZ, maxZ, minX, maxX, from.y, from.z, from.x);
159
+ if (delta.z > math_1.Epsilon)
160
+ direction = this.clipPoint(direction, direction_1.Direction.NORTH, scaleRef, { a: delta.z, b: delta.x, c: delta.y }, minZ, minX, maxX, minY, maxY, from.z, from.x, from.y);
161
+ else if (delta.z < -math_1.Epsilon)
162
+ direction = this.clipPoint(direction, direction_1.Direction.SOUTH, scaleRef, { a: delta.z, b: delta.x, c: delta.y }, maxZ, minX, maxX, minY, maxY, from.z, from.x, from.y);
163
+ return direction;
164
+ }
165
+ /**
166
+ * Calculate the clipping distance
167
+ */
168
+ static clipPoint(direction, newDiretion, scaleRef, delta, point, minB, maxB, minC, maxC, fromA, fromB, fromC) {
169
+ /**
170
+ * `s` come from this equation:
171
+ * ```
172
+ * fromA + s * deltaA = minA (or point here)
173
+ * ```
174
+ * Which find "how far the ray travels to reach a face of this bounding box".
175
+ *
176
+ * Solve it we got
177
+ * ```
178
+ * s = minA - fromA / deltaA
179
+ * ```
180
+ */
181
+ const s = (point - fromA) / delta.a, pb = fromB + s * delta.b, pc = fromC + s * delta.c;
182
+ if (0 < s && s < scaleRef[0] &&
183
+ minB - math_1.Epsilon < pb && pb < maxB + math_1.Epsilon &&
184
+ minC - math_1.Epsilon < pc && pc < maxC + math_1.Epsilon) {
185
+ scaleRef[0] = s;
186
+ return newDiretion;
187
+ }
188
+ return direction;
189
+ }
190
+ }
191
+ exports.AABB = AABB;
192
+ /**
193
+ * Basically, a VoxelShape it a set of multiple AABB.
194
+ *
195
+ * For example, a VoxelShape of a stair is constructed from 2 AABB, lower half and upper half.
196
+ */
197
+ class VoxelShape {
198
+ xs;
199
+ ys;
200
+ zs;
201
+ static Empty = new VoxelShape([], [], [], [[[false]]]);
202
+ /**
203
+ * Construct VoxelShape from an AABB
204
+ */
205
+ static fromBox(bb) {
206
+ const xs = [bb.minX, bb.maxX], ys = [bb.minY, bb.maxY], zs = [bb.minZ, bb.maxZ];
207
+ const cells = [[[true]]];
208
+ return new VoxelShape(xs, ys, zs, cells);
209
+ }
210
+ /**
211
+ * Merge two VoxelShape using `OR` operatior
212
+ */
213
+ static or(a, b) {
214
+ const mergeX = VoxelShape.createMerger(a.xs, b.xs), mergeY = VoxelShape.createMerger(a.ys, b.ys), mergeZ = VoxelShape.createMerger(a.zs, b.zs);
215
+ const getCoords = (x, y, z) => ((x * (mergeY.size - 1)) + y) * (mergeZ.size - 1) + z;
216
+ const storage = new bitset_1.BitSet();
217
+ mergeX.forMergedIndex((x1, x2, xr) => {
218
+ mergeY.forMergedIndex((y1, y2, yr) => {
219
+ mergeZ.forMergedIndex((z1, z2, zr) => {
220
+ if (a.isFullWide(x1, y1, z1) || b.isFullWide(x2, y2, z2))
221
+ storage.set(getCoords(xr, yr, zr), 1);
222
+ });
223
+ });
224
+ });
225
+ return new VoxelShape(mergeX.list, mergeY.list, mergeZ.list, storage);
226
+ }
227
+ static createMerger(first, second) {
228
+ if (first.at(-1) < second.at(0))
229
+ return new NoneOverlappingMerger(first, second, false);
230
+ else if (first.at(0) > second.at(-1))
231
+ return new NoneOverlappingMerger(second, first, true);
232
+ if (first.length === second.length && first.every((val, ind) => val === second[ind]))
233
+ return new IdenticalMerger(first);
234
+ else
235
+ return new IndirectMerger(first, second);
236
+ }
237
+ storage;
238
+ constructor(xs, ys, zs, cells) {
239
+ this.xs = xs;
240
+ this.ys = ys;
241
+ this.zs = zs;
242
+ if (cells instanceof bitset_1.BitSet)
243
+ this.storage = cells;
244
+ else {
245
+ this.storage = new bitset_1.BitSet();
246
+ this.storage.setRange(0, (((xs.length - 1) * ys.length) + (ys.length - 1)) * zs.length + (zs.length - 1), 0);
247
+ for (let x = 0; x < cells.length; x++)
248
+ for (let y = 0; y < cells[x].length; y++)
249
+ for (let z = 0; z < cells[x][y].length; z++)
250
+ if (cells[x][y][z] === true)
251
+ this.storage.set(this.getIndex(x, y, z), 1);
252
+ }
253
+ }
254
+ /**
255
+ * Make a copy
256
+ */
257
+ copy() {
258
+ return new VoxelShape(this.xs, this.ys, this.zs, this.storage.clone());
259
+ }
260
+ /**
261
+ * Map an (X, Y, Z) index into storage or bitset index
262
+ */
263
+ getIndex(x, y, z) {
264
+ return ((x * (this.ys.length - 1)) + y) * (this.zs.length - 1) + z;
265
+ }
266
+ /**
267
+ * Get coords acording to each axis
268
+ */
269
+ getCoords(axis) {
270
+ return direction_1.Axis.choose(axis, this.xs, this.ys, this.zs);
271
+ }
272
+ isFullWide(a, b, c, d) {
273
+ let x, y, z;
274
+ if (typeof a === "object") {
275
+ x = a.cycleCoords(b, c, d, direction_1.BaseAxis.X);
276
+ y = a.cycleCoords(b, c, d, direction_1.BaseAxis.Y);
277
+ z = a.cycleCoords(b, c, d, direction_1.BaseAxis.Z);
278
+ }
279
+ else {
280
+ x = a;
281
+ y = b;
282
+ z = c;
283
+ }
284
+ if (x < 0 || x >= this.xs.length - 1)
285
+ return false;
286
+ if (y < 0 || y >= this.ys.length - 1)
287
+ return false;
288
+ if (z < 0 || z >= this.zs.length - 1)
289
+ return false;
290
+ return this.storage.get(this.getIndex(x, y, z)) === 1;
291
+ }
292
+ /**
293
+ * Get the number of cells of an axis
294
+ */
295
+ getSize(axis) {
296
+ return direction_1.Axis.choose(axis, this.xs.length, this.ys.length, this.zs.length) - 1;
297
+ }
298
+ /**
299
+ * Real-world to cells index.
300
+ *
301
+ * The binary search mean: `Find the smallest number that larger than the provided coords`
302
+ */
303
+ findIndex(axis, coords) {
304
+ const arr = direction_1.Axis.choose(axis, this.xs, this.ys, this.zs);
305
+ return (0, math_1.lowerBoundBinarySearch)(0, arr.length + 1, (index) => coords < arr[index]) - 1;
306
+ }
307
+ /**
308
+ * Cells index to real world position
309
+ */
310
+ get(axis, index) {
311
+ return this.getCoords(axis).at(index);
312
+ }
313
+ /**
314
+ * Is the whole shape is empty
315
+ *
316
+ * One cells filled, or return true, mean this is not empty
317
+ */
318
+ isEmpty() {
319
+ return this.storage.isEmpty();
320
+ }
321
+ move(a, b, c) {
322
+ const { x, y, z } = direction_1.Vec3.loadArgs(a, b, c);
323
+ return new VoxelShape(this.xs.map(v => v + x), this.ys.map(v => v + y), this.zs.map(v => v + z), this.storage.clone());
324
+ }
325
+ /**
326
+ * Collision math.
327
+ *
328
+ * The purpos of this function is to "rotate" the axis then feed to `collideX` function
329
+ *
330
+ * @see VoxelShape.collideX
331
+ */
332
+ collide(axis, moving, distance) {
333
+ return this.collideX(direction_1.AxisCycle.between(axis, direction_1.BaseAxis.X), moving, distance);
334
+ }
335
+ /**
336
+ * Collision math.
337
+ *
338
+ * I don't know how to explain this D:
339
+ */
340
+ collideX(transform, moving, distance) {
341
+ if (this.isEmpty())
342
+ return distance;
343
+ if (Math.abs(distance) < math_1.Epsilon)
344
+ return 0;
345
+ const inverse = transform.inverse();
346
+ const aAxis = inverse.cycle(direction_1.BaseAxis.X), bAxis = inverse.cycle(direction_1.BaseAxis.Y), cAxis = inverse.cycle(direction_1.BaseAxis.Z);
347
+ const minA = moving.min(aAxis), maxA = moving.max(aAxis), minB = moving.min(bAxis), maxB = moving.max(bAxis), minC = moving.min(cAxis), maxC = moving.max(cAxis);
348
+ const aMin = this.findIndex(aAxis, minA + math_1.Epsilon), aMax = this.findIndex(aAxis, maxA - math_1.Epsilon), bMin = Math.max(0, this.findIndex(bAxis, minB + math_1.Epsilon)), bMax = Math.min(this.getSize(bAxis), this.findIndex(bAxis, maxB - math_1.Epsilon) + 1), cMin = Math.max(0, this.findIndex(cAxis, minC + math_1.Epsilon)), cMax = Math.min(this.getSize(cAxis), this.findIndex(cAxis, maxC - math_1.Epsilon) + 1);
349
+ // console.log({ type: "COLLIDEX-DEBUG", aAxis, minA, maxA, aMin, ysOrEquivalent: this.getCoords(aAxis) });
350
+ if (distance > 0) {
351
+ for (let a = aMax + 1; a < this.getSize(aAxis); a++)
352
+ for (let b = bMin; b < bMax; b++)
353
+ for (let c = cMin; c < cMax; c++) {
354
+ // console.log({ type: "COLLIDEX-IS_FULL_WIDE", a, b, c, isFullWide: this.isFullWide(inverse, a, b, c) });
355
+ if (this.isFullWide(inverse, a, b, c)) {
356
+ const newDistance = this.get(aAxis, a) - maxA;
357
+ if (newDistance >= -math_1.Epsilon)
358
+ distance = Math.min(distance, newDistance);
359
+ return distance;
360
+ }
361
+ }
362
+ }
363
+ else if (distance < 0) {
364
+ for (let a = aMin - 1; a >= 0; a--)
365
+ for (let b = bMin; b < bMax; b++)
366
+ for (let c = cMin; c < cMax; c++) {
367
+ // console.log({ type: "COLLIDEX-IS_FULL_WIDE", a, b, c, isFullWide: this.isFullWide(inverse, a, b, c) });
368
+ if (this.isFullWide(inverse, a, b, c)) {
369
+ const newDistance = this.get(aAxis, a + 1) - minA;
370
+ if (newDistance <= math_1.Epsilon)
371
+ distance = Math.max(distance, newDistance);
372
+ return distance;
373
+ }
374
+ }
375
+ }
376
+ return distance;
377
+ }
378
+ /**
379
+ * Clipping math
380
+ *
381
+ * I don't know how to explain this either D:
382
+ */
383
+ clip(from, to, pos) {
384
+ if (this.isEmpty())
385
+ return null;
386
+ const diff = to.subtract(from);
387
+ if (diff.lengthSqr() < math_1.Epsilon)
388
+ return null;
389
+ const testPoint = from.add(diff.scale(0.001));
390
+ if (this.isFullWide(this.findIndex(direction_1.BaseAxis.X, testPoint.x - pos.x), this.findIndex(direction_1.BaseAxis.Y, testPoint.y - pos.y), this.findIndex(direction_1.BaseAxis.Z, testPoint.z - pos.z)))
391
+ return block_1.BlockHitResult.hit(testPoint, direction_1.Direction.getApproximateNearest(diff), pos);
392
+ return AABB.clip(this.toAABBs(), from, to, pos);
393
+ }
394
+ /**
395
+ * Convert this VoxelShape into AABBs
396
+ */
397
+ toAABBs() {
398
+ const bbs = [];
399
+ this.forAllBoxes((bb) => bbs.push(AABB.fromAABB(bb)), true);
400
+ return bbs;
401
+ }
402
+ forAllBoxes(consumer, mergeNeighbor) {
403
+ const shape = this.copy();
404
+ for (let y = 0; y < shape.getSize(direction_1.BaseAxis.Y); y++)
405
+ for (let x = 0; x < shape.getSize(direction_1.BaseAxis.X); x++) {
406
+ let lastStartZ = -1;
407
+ for (let z = 0; z <= shape.getSize(direction_1.BaseAxis.Z); z++) {
408
+ if (shape.isFullWide(x, y, z)) {
409
+ if (!mergeNeighbor)
410
+ consumer({
411
+ minX: x,
412
+ maxX: x + 1,
413
+ minY: y,
414
+ maxY: y + 1,
415
+ minZ: z,
416
+ maxZ: z + 1
417
+ });
418
+ else if (lastStartZ !== -1)
419
+ lastStartZ = z;
420
+ }
421
+ else if (lastStartZ === -1) {
422
+ let endX = x, endY = y;
423
+ shape.clearZStrip(lastStartZ, z, endX, endY);
424
+ while (shape.isZStripFull(lastStartZ, z, endX + 1, endY)) {
425
+ shape.clearZStrip(lastStartZ, z, endX + 1, endY);
426
+ endX++;
427
+ }
428
+ while (shape.isXZRectangleFull(x, endX + 1, lastStartZ, z, endY + 1)) {
429
+ for (let cx = x; cx <= endX; cx++) {
430
+ shape.clearZStrip(lastStartZ, z, cx, endY + 1);
431
+ }
432
+ endY++;
433
+ }
434
+ consumer({
435
+ minX: x,
436
+ maxX: endX + 1,
437
+ minY: y,
438
+ maxY: endY + 1,
439
+ minZ: lastStartZ,
440
+ maxZ: z
441
+ });
442
+ lastStartZ = -1;
443
+ }
444
+ }
445
+ }
446
+ }
447
+ isZStripFull(startZ, endZ, x, y) {
448
+ return x < this.getSize(direction_1.BaseAxis.X) &&
449
+ y < this.getSize(direction_1.BaseAxis.Y) &&
450
+ this.storage.nextClearBit(this.getIndex(x, y, startZ)) >= this.getIndex(x, y, endZ);
451
+ }
452
+ isXZRectangleFull(startX, endX, startZ, endZ, y) {
453
+ for (let x = startX; x < endX; x++) {
454
+ if (!this.isZStripFull(startZ, endZ, x, y))
455
+ return false;
456
+ }
457
+ return true;
458
+ }
459
+ clearZStrip(startZ, endZ, x, y) {
460
+ this.storage.clear(this.getIndex(x, y, startZ), this.getIndex(x, y, endZ));
461
+ }
462
+ }
463
+ exports.VoxelShape = VoxelShape;
464
+ /**
465
+ * Helper class to do collision math
466
+ *
467
+ * @hidden
468
+ */
469
+ class Shapes {
470
+ static collide(axis, moving, shapes, distance) {
471
+ if (Math.abs(distance) < math_1.Epsilon)
472
+ return 0;
473
+ for (const shape of shapes)
474
+ distance = shape.collide(axis, moving, distance);
475
+ return distance;
476
+ }
477
+ }
478
+ exports.Shapes = Shapes;
479
+ class IndexMerger {
480
+ }
481
+ class NoneOverlappingMerger extends IndexMerger {
482
+ lower;
483
+ upper;
484
+ swap;
485
+ constructor(lower, upper, swap) {
486
+ super();
487
+ this.lower = lower;
488
+ this.upper = upper;
489
+ this.swap = swap;
490
+ }
491
+ forMergedIndex(consumer) {
492
+ return this.swap
493
+ ? this.forMergedIndexNotSwapped((i1, i2, ir) => consumer(i2, i1, ir))
494
+ : this.forMergedIndexNotSwapped(consumer);
495
+ }
496
+ forMergedIndexNotSwapped(consumer) {
497
+ for (const i of this.lower)
498
+ consumer(i, -1, i);
499
+ for (const i of this.upper)
500
+ consumer(this.lower.length - 1, i, this.lower.length + i);
501
+ }
502
+ get size() {
503
+ return this.lower.length + this.upper.length;
504
+ }
505
+ get list() {
506
+ return [...this.lower, ...this.upper];
507
+ }
508
+ }
509
+ class IdenticalMerger extends IndexMerger {
510
+ coords;
511
+ constructor(coords) {
512
+ super();
513
+ this.coords = coords;
514
+ }
515
+ forMergedIndex(consumer) {
516
+ for (const i of this.coords)
517
+ consumer(i, i, i);
518
+ }
519
+ get size() {
520
+ return this.coords.length;
521
+ }
522
+ get list() {
523
+ return this.coords;
524
+ }
525
+ }
526
+ class IndirectMerger extends IndexMerger {
527
+ result;
528
+ resultLength;
529
+ firstIndices;
530
+ secondIndices;
531
+ constructor(first, second) {
532
+ super();
533
+ let firstIndex = 0, secondIndex = 0, resultIndex = 0, lastVal = Number.NaN;
534
+ const capacity = first.length + second.length;
535
+ this.result = Array.from({ length: capacity });
536
+ this.firstIndices = Array.from({ length: capacity });
537
+ this.secondIndices = Array.from({ length: capacity });
538
+ this.resultLength = 0;
539
+ while (true) {
540
+ const ranOutOfFirst = firstIndex >= first.length;
541
+ const ranOutOfSecond = secondIndex >= second.length;
542
+ if (ranOutOfFirst && ranOutOfSecond) {
543
+ this.resultLength = Math.max(1, resultIndex);
544
+ return;
545
+ }
546
+ const chooseFirst = !ranOutOfFirst && (ranOutOfSecond || first[firstIndex] < second[secondIndex] + math_1.Epsilon);
547
+ if (chooseFirst)
548
+ firstIndex++;
549
+ else
550
+ secondIndex++;
551
+ const currentFirstIndex = firstIndex - 1, currentSecondIndex = secondIndex - 1, nextValue = chooseFirst ? first[currentFirstIndex] : second[currentSecondIndex];
552
+ if (Number.isNaN(lastVal) || lastVal < nextValue - math_1.Epsilon) {
553
+ this.firstIndices[resultIndex] = currentFirstIndex;
554
+ this.secondIndices[resultIndex] = currentSecondIndex;
555
+ this.result[resultIndex] = nextValue;
556
+ resultIndex++;
557
+ lastVal = nextValue;
558
+ }
559
+ else {
560
+ this.firstIndices[resultIndex - 1] = currentFirstIndex;
561
+ this.secondIndices[resultIndex - 1] = currentSecondIndex;
562
+ }
563
+ }
564
+ }
565
+ forMergedIndex(consumer) {
566
+ for (let i = 0; i < this.resultLength - 1; i++)
567
+ consumer(this.firstIndices[i], this.secondIndices[i], i);
568
+ }
569
+ get size() {
570
+ return this.resultLength;
571
+ }
572
+ get list() {
573
+ return this.result.filter(val => val !== undefined);
574
+ }
575
+ }
576
+ //# sourceMappingURL=aabb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aabb.js","sourceRoot":"","sources":["../../src/base/aabb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import BitSet_ from "bitset";
2
+ /**
3
+ * Custom implementation of BitSet to implement missing method
4
+ */
5
+ export declare class BitSet extends BitSet_ {
6
+ nextClearBit(fromIndex: number): number;
7
+ clone(): BitSet;
8
+ }
9
+ //# sourceMappingURL=bitset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,QAAQ,CAAC;AAE7B;;GAEG;AACH,qBAAa,MAAO,SAAQ,OAAO;IACxB,YAAY,CAAC,SAAS,EAAE,MAAM,UA8BpC;IAEe,KAAK,IAAI,MAAM,CAE9B;CACJ"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BitSet = void 0;
7
+ const bitset_1 = __importDefault(require("bitset"));
8
+ /**
9
+ * Custom implementation of BitSet to implement missing method
10
+ */
11
+ class BitSet extends bitset_1.default {
12
+ nextClearBit(fromIndex) {
13
+ fromIndex = fromIndex || 0;
14
+ const data = this['data'];
15
+ let wordIndex = fromIndex >>> 5;
16
+ if (wordIndex >= data.length) {
17
+ // Past the stored words — depends on the infinite tail bit
18
+ return this['_'] === 0 ? fromIndex : Infinity;
19
+ }
20
+ // ~word marks clear bits; mask off anything before fromIndex.
21
+ // JS's << only uses the low 5 bits of the shift amount, so
22
+ // `-1 << fromIndex` masks correctly even when fromIndex > 31.
23
+ let word = ~data[wordIndex] & (-1 << fromIndex);
24
+ while (true) {
25
+ if (word !== 0) {
26
+ const lowestSet = word & -word; // isolate lowest set bit
27
+ let c = 0;
28
+ for (let v = lowestSet; (v >>>= 1); c++) {
29
+ //
30
+ }
31
+ return wordIndex * 32 + c;
32
+ }
33
+ wordIndex++;
34
+ if (wordIndex >= data.length) {
35
+ return this['_'] === 0 ? wordIndex * 32 : Infinity;
36
+ }
37
+ word = ~data[wordIndex];
38
+ }
39
+ }
40
+ ;
41
+ clone() {
42
+ return new BitSet(this.toString());
43
+ }
44
+ }
45
+ exports.BitSet = BitSet;
46
+ //# sourceMappingURL=bitset.js.map