@woosh/meep-engine 2.61.0 → 2.62.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.
- package/build/meep.cjs +234 -212
- package/build/meep.min.js +1 -1
- package/build/meep.module.js +234 -212
- package/package.json +1 -1
- package/src/core/bvh2/BinaryNode.js +16 -13
- package/src/core/bvh2/LeafNode.js +6 -3
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_overlaps_sphere.js +81 -0
- package/src/core/geom/3d/aabb/AABB3.js +24 -36
- package/src/core/geom/3d/aabb/aabb3_array_compute_from_sphere.js +22 -0
- package/src/core/geom/3d/aabb/aabb3_array_intersects_sphere.js +22 -0
- package/src/core/geom/3d/aabb/aabb3_array_intersects_sphere_array.js +11 -0
- package/src/core/geom/3d/aabb/aabb3_signed_distance_to_aabb3.js +28 -0
- package/src/core/geom/3d/aabb/serializeAABB3Quantized16Uint.js +19 -10
- package/src/core/geom/3d/tetrahedra/delaunay/Cavity.js +3 -4
- package/src/engine/ecs/foliage/ecs/Foliage2System.js +3 -0
- package/src/engine/ecs/foliage/ecs/InstancedMeshComponent.js +4 -1
- package/src/engine/ecs/foliage/ecs/convertInstancedMeshComponents2Entities.js +64 -0
- package/src/engine/ecs/foliage/ecs/{InstancedMeshUtils.js → optimizeIndividualMeshesEntitiesToInstances.js} +11 -70
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +25 -27
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +49 -52
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +40 -42
- package/src/engine/graphics/particles/ecs/ParticleEmitterSystem.js +43 -25
- package/src/engine/graphics/particles/particular/engine/ParticularEngine.js +10 -6
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +37 -41
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +44 -46
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +24 -26
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +40 -42
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +36 -38
- package/src/engine/graphics/shadows/testShadowMapRendering.js +19 -19
- package/src/engine/sound/dB2Volume.js +8 -0
- package/src/engine/sound/ecs/emitter/SoundEmitter.js +125 -99
- package/src/engine/sound/ecs/emitter/SoundEmitterComponentContext.js +4 -42
- package/src/engine/sound/ecs/emitter/SoundEmitterSystem.js +31 -121
- package/src/engine/sound/volume2dB.js +8 -0
- package/src/generation/theme/ThemeEngine.js +19 -53
- package/src/engine/graphics/geometry/bvh/buffered/BVHFromBufferGeometry.js +0 -133
|
@@ -3,22 +3,24 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { aabb3_compute_plane_side } from "./aabb3_compute_plane_side.js";
|
|
6
|
+
import {assert} from "../../../assert.js";
|
|
8
7
|
import computeMortonCode from "../morton/Morton.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
8
|
+
import {aabb3_array_intersects_point} from "./aabb3_array_intersects_point.js";
|
|
9
|
+
import {aabb3_build_corners} from "./aabb3_build_corners.js";
|
|
10
|
+
import {aabb3_compute_distance_above_plane_max} from "./aabb3_compute_distance_above_plane_max.js";
|
|
11
|
+
import {aabb3_compute_plane_side} from "./aabb3_compute_plane_side.js";
|
|
12
|
+
import {aabb3_compute_surface_area} from "./aabb3_compute_surface_area.js";
|
|
13
|
+
import {aabb3_intersects_frustum_array} from "./aabb3_intersects_frustum_array.js";
|
|
14
|
+
import {aabb3_intersects_frustum_degree} from "./aabb3_intersects_frustum_degree.js";
|
|
15
|
+
import {aabb3_intersects_line_segment} from "./aabb3_intersects_line_segment.js";
|
|
16
|
+
import {aabb3_intersects_ray} from "./aabb3_intersects_ray.js";
|
|
17
|
+
import {aabb3_matrix4_project} from "./aabb3_matrix4_project.js";
|
|
18
|
+
import {aabb3_signed_distance_sqr_to_point} from "./aabb3_signed_distance_sqr_to_point.js";
|
|
19
|
+
import {aabb3_signed_distance_to_aabb3} from "./aabb3_signed_distance_to_aabb3.js";
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Axis-Aligned bounding box in 3D
|
|
23
|
+
* NOTE: In cases where all you want is raw performance - prefer to use typed arrays instead along with `aabb3_` functions
|
|
22
24
|
*/
|
|
23
25
|
export class AABB3 {
|
|
24
26
|
/**
|
|
@@ -238,7 +240,12 @@ export class AABB3 {
|
|
|
238
240
|
* @returns {boolean}
|
|
239
241
|
*/
|
|
240
242
|
_equals(x0, y0, z0, x1, y1, z1) {
|
|
241
|
-
return this.x0 === x0
|
|
243
|
+
return this.x0 === x0
|
|
244
|
+
&& this.y0 === y0
|
|
245
|
+
&& this.z0 === z0
|
|
246
|
+
&& this.x1 === x1
|
|
247
|
+
&& this.y1 === y1
|
|
248
|
+
&& this.z1 === z1;
|
|
242
249
|
}
|
|
243
250
|
|
|
244
251
|
/**
|
|
@@ -332,28 +339,10 @@ export class AABB3 {
|
|
|
332
339
|
const _y1 = this.y1;
|
|
333
340
|
const _z1 = this.z1;
|
|
334
341
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
const yp1 = y0 - _y1;
|
|
340
|
-
const zp0 = _z0 - z1;
|
|
341
|
-
const zp1 = z0 - _z1;
|
|
342
|
-
|
|
343
|
-
//calculate separation in each axis
|
|
344
|
-
const dx = Math.max(xp0, xp1);
|
|
345
|
-
const dy = Math.max(yp0, yp1);
|
|
346
|
-
const dz = Math.max(zp0, zp1);
|
|
347
|
-
|
|
348
|
-
//straight-line distance
|
|
349
|
-
let distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
350
|
-
|
|
351
|
-
if (dx < 0 && dy < 0 && dz < 0) {
|
|
352
|
-
//penetration
|
|
353
|
-
return -distance;
|
|
354
|
-
} else {
|
|
355
|
-
return distance;
|
|
356
|
-
}
|
|
342
|
+
return aabb3_signed_distance_to_aabb3(
|
|
343
|
+
_x0, _y0, _z0, _x1, _y1, _z1,
|
|
344
|
+
x0, y0, z0, x1, y1, z1
|
|
345
|
+
);
|
|
357
346
|
}
|
|
358
347
|
|
|
359
348
|
/**
|
|
@@ -778,7 +767,6 @@ export class AABB3 {
|
|
|
778
767
|
}
|
|
779
768
|
|
|
780
769
|
/**
|
|
781
|
-
*
|
|
782
770
|
* @param {Plane[]} clippingPlanes
|
|
783
771
|
* @returns {boolean}
|
|
784
772
|
*/
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {number[]} output
|
|
4
|
+
* @param {number} output_offset
|
|
5
|
+
* @param {number} x
|
|
6
|
+
* @param {number} y
|
|
7
|
+
* @param {number} z
|
|
8
|
+
* @param {number} radius
|
|
9
|
+
*/
|
|
10
|
+
export function aabb3_array_compute_from_sphere(
|
|
11
|
+
output, output_offset,
|
|
12
|
+
x, y, z, radius
|
|
13
|
+
) {
|
|
14
|
+
|
|
15
|
+
output[output_offset] = x - radius;
|
|
16
|
+
output[output_offset + 1] = y - radius;
|
|
17
|
+
output[output_offset + 2] = z - radius;
|
|
18
|
+
output[output_offset + 3] = x + radius;
|
|
19
|
+
output[output_offset + 4] = y + radius;
|
|
20
|
+
output[output_offset + 5] = z + radius;
|
|
21
|
+
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {aabb3_signed_distance_sqr_to_point} from "./aabb3_signed_distance_sqr_to_point.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]} aabb
|
|
6
|
+
* @param {number} x
|
|
7
|
+
* @param {number} y
|
|
8
|
+
* @param {number} z
|
|
9
|
+
* @param {number} radius
|
|
10
|
+
* @returns {boolean}
|
|
11
|
+
*/
|
|
12
|
+
export function aabb3_array_intersects_sphere(aabb, x, y, z, radius) {
|
|
13
|
+
const distance_sqr = aabb3_signed_distance_sqr_to_point(
|
|
14
|
+
aabb[0], aabb[1], aabb[2],
|
|
15
|
+
aabb[3], aabb[4], aabb[5],
|
|
16
|
+
x, y, z
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const radius2 = radius * radius;
|
|
20
|
+
|
|
21
|
+
return distance_sqr <= radius2;
|
|
22
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {aabb3_array_intersects_sphere} from "./aabb3_array_intersects_sphere.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* @param {number[]|Float32Array} aabb
|
|
6
|
+
* @param {number[]|Float32Array} sphere [x,y,z, radius]
|
|
7
|
+
* @returns {boolean}
|
|
8
|
+
*/
|
|
9
|
+
export function aabb3_array_intersects_sphere_array(aabb, sphere) {
|
|
10
|
+
return aabb3_array_intersects_sphere(aabb, sphere[0], sphere[1], sphere[2], sphere[3]);
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function aabb3_signed_distance_to_aabb3(
|
|
2
|
+
ax0,ay0,az0,ax1,ay1,az1,
|
|
3
|
+
bx0,by0,bz0, bx1,by1,bz1
|
|
4
|
+
){
|
|
5
|
+
|
|
6
|
+
//do projection
|
|
7
|
+
const xp0 = bx0 - ax1;
|
|
8
|
+
const xp1 = ax0 - bx1;
|
|
9
|
+
const yp0 = by0 - ay1;
|
|
10
|
+
const yp1 = ay0 - by1;
|
|
11
|
+
const zp0 = bz0 - az1;
|
|
12
|
+
const zp1 = az0 - bz1;
|
|
13
|
+
|
|
14
|
+
//calculate separation in each axis
|
|
15
|
+
const dx = Math.max(xp0, xp1);
|
|
16
|
+
const dy = Math.max(yp0, yp1);
|
|
17
|
+
const dz = Math.max(zp0, zp1);
|
|
18
|
+
|
|
19
|
+
//straight-line distance
|
|
20
|
+
let distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
21
|
+
|
|
22
|
+
if (dx < 0 && dy < 0 && dz < 0) {
|
|
23
|
+
//penetration
|
|
24
|
+
return -distance;
|
|
25
|
+
} else {
|
|
26
|
+
return distance;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -9,20 +9,29 @@
|
|
|
9
9
|
* @param {number} y1
|
|
10
10
|
* @param {number} z1
|
|
11
11
|
*/
|
|
12
|
-
export function serializeAABB3Quantized16Uint(
|
|
12
|
+
export function serializeAABB3Quantized16Uint(
|
|
13
|
+
buffer, box,
|
|
14
|
+
x0, y0, z0, x1, y1, z1
|
|
15
|
+
) {
|
|
16
|
+
|
|
13
17
|
//compute value ranges
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
18
|
+
const dx = x1 - x0;
|
|
19
|
+
const dy = y1 - y0;
|
|
20
|
+
const dz = z1 - z0;
|
|
21
|
+
|
|
22
|
+
// scale delta to Uin16 range, and avoid division by 0
|
|
23
|
+
const mx = dx > 0 ? 65535 / dx : 0;
|
|
24
|
+
const my = dy > 0 ? 65535 / dy : 0;
|
|
25
|
+
const mz = dz > 0 ? 65535 / dz : 0;
|
|
17
26
|
|
|
18
27
|
//quantize all values
|
|
19
|
-
const _x0 = ((
|
|
20
|
-
const _y0 = ((
|
|
21
|
-
const _z0 = ((
|
|
28
|
+
const _x0 = Math.floor((box.x0 - x0) * mx);
|
|
29
|
+
const _y0 = Math.floor((box.y0 - y0) * my);
|
|
30
|
+
const _z0 = Math.floor((box.z0 - z0) * mz);
|
|
22
31
|
|
|
23
|
-
const _x1 = ((
|
|
24
|
-
const _y1 = ((
|
|
25
|
-
const _z1 = ((
|
|
32
|
+
const _x1 = Math.ceil((box.x1 - x0) * mx);
|
|
33
|
+
const _y1 = Math.ceil((box.y1 - y0) * my);
|
|
34
|
+
const _z1 = Math.ceil((box.z1 - z0) * mz);
|
|
26
35
|
|
|
27
36
|
buffer.writeUint16(_x0);
|
|
28
37
|
buffer.writeUint16(_y0);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { assert } from "../../../../assert.js";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents cavity or "ball" formed when carving out "triangles" to accommodate inserted point
|
|
5
|
+
*/
|
|
3
6
|
export class Cavity {
|
|
4
7
|
constructor() {
|
|
5
8
|
/**
|
|
@@ -52,10 +55,6 @@ export class Cavity {
|
|
|
52
55
|
this.__boundary_size++;
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
update() {
|
|
56
|
-
// compute in/out state for each side of each tetra
|
|
57
|
-
}
|
|
58
|
-
|
|
59
58
|
/**
|
|
60
59
|
*
|
|
61
60
|
* @param {number} i
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import List from "../../../../core/collection/list/List.js";
|
|
2
|
-
import {
|
|
2
|
+
import {InstancedMeshLayer} from "./InstancedMeshLayer.js";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @deprecated use {@link ShadedGeometry} instead with instanced rendering
|
|
7
|
+
*/
|
|
5
8
|
export class InstancedMeshComponent {
|
|
6
9
|
constructor() {
|
|
7
10
|
/**
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {assert} from "../../../../core/assert.js";
|
|
2
|
+
import Mesh from "../../../graphics/ecs/mesh/Mesh.js";
|
|
3
|
+
import Entity from "../../Entity.js";
|
|
4
|
+
import {Transform} from "../../transform/Transform.js";
|
|
5
|
+
import {loadFoliageLayer} from "./Foliage2System.js";
|
|
6
|
+
import {InstancedMeshComponent} from "./InstancedMeshComponent.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Convert all existing instanced mesh components to individual Transform+Mesh pairs
|
|
10
|
+
* @param {EntityComponentDataset} dataset
|
|
11
|
+
* @param assetManager
|
|
12
|
+
*/
|
|
13
|
+
export function convertInstancedMeshComponents2Entities(dataset, assetManager) {
|
|
14
|
+
assert.notEqual(dataset, undefined, 'dataset is undefined');
|
|
15
|
+
assert.notEqual(assetManager, undefined, 'assetManager is undefined');
|
|
16
|
+
|
|
17
|
+
const entitiesToStrip = [];
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {InstancedMeshComponent} foliage2
|
|
22
|
+
* @param entity
|
|
23
|
+
*/
|
|
24
|
+
function visitFoliageEntities(foliage2, entity) {
|
|
25
|
+
foliage2.layers.forEach(function (layer) {
|
|
26
|
+
const modelURL = layer.modelURL.getValue();
|
|
27
|
+
|
|
28
|
+
loadFoliageLayer(layer, assetManager)
|
|
29
|
+
.then(function (instancedFoliage) {
|
|
30
|
+
|
|
31
|
+
const data = instancedFoliage.data;
|
|
32
|
+
const numInstances = data.length;
|
|
33
|
+
|
|
34
|
+
for (let i = 0; i < numInstances; i++) {
|
|
35
|
+
const transform = new Transform();
|
|
36
|
+
|
|
37
|
+
instancedFoliage.read(i, transform.position, transform.rotation, transform.scale);
|
|
38
|
+
|
|
39
|
+
const mesh = new Mesh();
|
|
40
|
+
mesh.url = modelURL;
|
|
41
|
+
|
|
42
|
+
mesh.castShadow = layer.castShadow.getValue();
|
|
43
|
+
mesh.receiveShadow = layer.receiveShadow.getValue();
|
|
44
|
+
|
|
45
|
+
//TODO Consider moving BVH info here also, to make this process faster
|
|
46
|
+
|
|
47
|
+
const entityBuilder = new Entity();
|
|
48
|
+
|
|
49
|
+
entityBuilder.add(transform).add(mesh).build(dataset);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
entitiesToStrip.push(entity);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
dataset.traverseEntities([InstancedMeshComponent], visitFoliageEntities);
|
|
58
|
+
|
|
59
|
+
//remove converted foliage components
|
|
60
|
+
entitiesToStrip.forEach(function (entity) {
|
|
61
|
+
dataset.removeComponentFromEntity(entity, InstancedMeshComponent);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
@@ -1,73 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { loadFoliageLayer } from "./Foliage2System.js";
|
|
3
|
-
import Mesh, { MeshFlags } from "../../../graphics/ecs/mesh/Mesh.js";
|
|
4
|
-
import { Transform } from "../../transform/Transform.js";
|
|
5
|
-
import { InstancedMeshComponent } from "./InstancedMeshComponent.js";
|
|
6
|
-
import { InstancedFoliage } from "../InstancedFoliage.js";
|
|
7
|
-
import { buildTreeOptimizationTask } from "../../../../core/bvh2/BVHTasks.js";
|
|
1
|
+
import {buildTreeOptimizationTask} from "../../../../core/bvh2/BVHTasks.js";
|
|
8
2
|
import Task from "../../../../core/process/task/Task.js";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* @param assetManager
|
|
19
|
-
*/
|
|
20
|
-
export function convertInstancedMeshComponents2Entities(dataset, assetManager) {
|
|
21
|
-
assert.notEqual(dataset, undefined, 'dataset is undefined');
|
|
22
|
-
assert.notEqual(assetManager, undefined, 'assetManager is undefined');
|
|
23
|
-
|
|
24
|
-
const entitiesToStrip = [];
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* @param {InstancedMeshComponent} foliage2
|
|
29
|
-
* @param entity
|
|
30
|
-
*/
|
|
31
|
-
function visitFoliageEntities(foliage2, entity) {
|
|
32
|
-
foliage2.layers.forEach(function (layer) {
|
|
33
|
-
const modelURL = layer.modelURL.getValue();
|
|
34
|
-
|
|
35
|
-
loadFoliageLayer(layer, assetManager)
|
|
36
|
-
.then(function (instancedFoliage) {
|
|
37
|
-
|
|
38
|
-
const data = instancedFoliage.data;
|
|
39
|
-
const numInstances = data.length;
|
|
40
|
-
|
|
41
|
-
for (let i = 0; i < numInstances; i++) {
|
|
42
|
-
const transform = new Transform();
|
|
43
|
-
|
|
44
|
-
instancedFoliage.read(i, transform.position, transform.rotation, transform.scale);
|
|
45
|
-
|
|
46
|
-
const mesh = new Mesh();
|
|
47
|
-
mesh.url = modelURL;
|
|
48
|
-
|
|
49
|
-
mesh.castShadow = layer.castShadow.getValue();
|
|
50
|
-
mesh.receiveShadow = layer.receiveShadow.getValue();
|
|
51
|
-
|
|
52
|
-
//TODO Consider moving BVH info here also, to make this process faster
|
|
53
|
-
|
|
54
|
-
const entityBuilder = new Entity();
|
|
55
|
-
|
|
56
|
-
entityBuilder.add(transform).add(mesh).build(dataset);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
entitiesToStrip.push(entity);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
dataset.traverseEntities([InstancedMeshComponent], visitFoliageEntities);
|
|
65
|
-
|
|
66
|
-
//remove converted foliage components
|
|
67
|
-
entitiesToStrip.forEach(function (entity) {
|
|
68
|
-
dataset.removeComponentFromEntity(entity, InstancedMeshComponent);
|
|
69
|
-
});
|
|
70
|
-
}
|
|
3
|
+
import {TaskSignal} from "../../../../core/process/task/TaskSignal.js";
|
|
4
|
+
import {countTask} from "../../../../core/process/task/util/countTask.js";
|
|
5
|
+
import {promiseTask} from "../../../../core/process/task/util/promiseTask.js";
|
|
6
|
+
import Mesh, {MeshFlags} from "../../../graphics/ecs/mesh/Mesh.js";
|
|
7
|
+
import Entity from "../../Entity.js";
|
|
8
|
+
import {Transform} from "../../transform/Transform.js";
|
|
9
|
+
import {InstancedFoliage} from "../InstancedFoliage.js";
|
|
10
|
+
import {InstancedMeshComponent} from "./InstancedMeshComponent.js";
|
|
11
|
+
import {InstancedMeshLayer} from "./InstancedMeshLayer.js";
|
|
71
12
|
|
|
72
13
|
/**
|
|
73
14
|
*
|
|
@@ -289,4 +230,4 @@ export function optimizeIndividualMeshesEntitiesToInstances(dataset, threshold =
|
|
|
289
230
|
main: tBuild,
|
|
290
231
|
tasks
|
|
291
232
|
};
|
|
292
|
-
}
|
|
233
|
+
}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
import {Frustum, OrthographicCamera} from "three";
|
|
1
|
+
import { Frustum, OrthographicCamera } from "three";
|
|
2
2
|
import FacingDirectionSystem from "../../../../../model/game/ecs/system/FacingDirectionSystem.js";
|
|
3
|
-
import {makeEngineOptionsModel} from "../../../../../model/game/options/makeEngineOptionsModel.js";
|
|
4
|
-
import {enableEditor} from "../../../../editor/enableEditor.js";
|
|
3
|
+
import { makeEngineOptionsModel } from "../../../../../model/game/options/makeEngineOptionsModel.js";
|
|
4
|
+
import { enableEditor } from "../../../../editor/enableEditor.js";
|
|
5
5
|
import {
|
|
6
6
|
ThreeClippingPlaneComputingBVHVisitor
|
|
7
7
|
} from "../../../core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js";
|
|
8
|
-
import {RingBuffer} from "../../../core/collection/RingBuffer.js";
|
|
9
|
-
import {convex_hull_jarvis_2d} from "../../../core/geom/2d/convex-hull/convex_hull_jarvis_2d.js";
|
|
8
|
+
import { RingBuffer } from "../../../core/collection/RingBuffer.js";
|
|
9
|
+
import { convex_hull_jarvis_2d } from "../../../core/geom/2d/convex-hull/convex_hull_jarvis_2d.js";
|
|
10
10
|
import Vector2 from "../../../core/geom/Vector2.js";
|
|
11
11
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
12
|
-
import {computeStatisticalMean} from "../../../core/math/statistics/computeStatisticalMean.js";
|
|
13
|
-
import {CanvasView} from "../../../view/elements/CanvasView.js";
|
|
12
|
+
import { computeStatisticalMean } from "../../../core/math/statistics/computeStatisticalMean.js";
|
|
13
|
+
import { CanvasView } from "../../../view/elements/CanvasView.js";
|
|
14
14
|
import Entity from "../../ecs/Entity.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {FogOfWarSystem} from "../../ecs/fow/FogOfWarSystem.js";
|
|
15
|
+
import { FogOfWarRevealerSystem } from "../../ecs/fow/FogOfWarRevealerSystem.js";
|
|
16
|
+
import { FogOfWarSystem } from "../../ecs/fow/FogOfWarSystem.js";
|
|
18
17
|
import GUIElement from "../../ecs/gui/GUIElement.js";
|
|
19
18
|
import GUIElementSystem from "../../ecs/gui/GUIElementSystem.js";
|
|
20
19
|
import HeadsUpDisplaySystem from "../../ecs/gui/hud/HeadsUpDisplaySystem.js";
|
|
21
20
|
import ViewportPosition from "../../ecs/gui/position/ViewportPosition.js";
|
|
22
21
|
import ViewportPositionSystem from "../../ecs/gui/position/ViewportPositionSystem.js";
|
|
23
|
-
import {InverseKinematicsSystem} from "../../ecs/ik/InverseKinematicsSystem.js";
|
|
22
|
+
import { InverseKinematicsSystem } from "../../ecs/ik/InverseKinematicsSystem.js";
|
|
24
23
|
import AnimationSystem from "../../ecs/systems/AnimationSystem.js";
|
|
25
24
|
import MotionSystem from "../../ecs/systems/MotionSystem.js";
|
|
26
25
|
import RenderSystem from "../../ecs/systems/RenderSystem.js";
|
|
@@ -30,33 +29,33 @@ import TagSystem from "../../ecs/systems/TagSystem.js";
|
|
|
30
29
|
import TimerSystem from "../../ecs/systems/TimerSystem.js";
|
|
31
30
|
import ClingToTerrainSystem from "../../ecs/terrain/ecs/cling/ClingToTerrainSystem.js";
|
|
32
31
|
import TerrainSystem from "../../ecs/terrain/ecs/TerrainSystem.js";
|
|
33
|
-
import {Transform} from "../../ecs/transform/Transform.js";
|
|
34
|
-
import {EngineConfiguration} from "../../EngineConfiguration.js";
|
|
35
|
-
import {EngineHarness} from "../../EngineHarness.js";
|
|
36
|
-
import {GridPosition2TransformSystem} from "../../grid/grid2transform/GridPosition2TransformSystem.js";
|
|
32
|
+
import { Transform } from "../../ecs/transform/Transform.js";
|
|
33
|
+
import { EngineConfiguration } from "../../EngineConfiguration.js";
|
|
34
|
+
import { EngineHarness } from "../../EngineHarness.js";
|
|
35
|
+
import { GridPosition2TransformSystem } from "../../grid/grid2transform/GridPosition2TransformSystem.js";
|
|
37
36
|
import GridPositionSystem from "../../grid/position/GridPositionSystem.js";
|
|
38
|
-
import {Transform2GridPositionSystem} from "../../grid/transform2grid/Transform2GridPositionSystem.js";
|
|
37
|
+
import { Transform2GridPositionSystem } from "../../grid/transform2grid/Transform2GridPositionSystem.js";
|
|
39
38
|
import InputControllerSystem from "../../input/ecs/systems/InputControllerSystem.js";
|
|
40
|
-
import {InputSystem} from "../../input/ecs/systems/InputSystem.js";
|
|
41
|
-
import {BehaviorSystem} from "../../intelligence/behavior/ecs/BehaviorSystem.js";
|
|
39
|
+
import { InputSystem } from "../../input/ecs/systems/InputSystem.js";
|
|
40
|
+
import { BehaviorSystem } from "../../intelligence/behavior/ecs/BehaviorSystem.js";
|
|
42
41
|
import PathFollowingSystem from "../../navigation/ecs/path_following/PathFollowingSystem.js";
|
|
43
|
-
import {SoundEmitterSystem} from "../../sound/ecs/emitter/SoundEmitterSystem.js";
|
|
42
|
+
import { SoundEmitterSystem } from "../../sound/ecs/emitter/SoundEmitterSystem.js";
|
|
44
43
|
import SoundControllerSystem from "../../sound/ecs/SoundControllerSystem.js";
|
|
45
44
|
import SoundListenerSystem from "../../sound/ecs/SoundListenerSystem.js";
|
|
46
45
|
import AnimationControllerSystem from "../ecs/animation/AnimationControllerSystem.js";
|
|
47
|
-
import {AnimationGraphSystem} from "../ecs/animation/animator/AnimationGraphSystem.js";
|
|
48
|
-
import {CameraSystem} from "../ecs/camera/CameraSystem.js";
|
|
49
|
-
import {frustum_from_camera} from "../ecs/camera/frustum_from_camera.js";
|
|
46
|
+
import { AnimationGraphSystem } from "../ecs/animation/animator/AnimationGraphSystem.js";
|
|
47
|
+
import { CameraSystem } from "../ecs/camera/CameraSystem.js";
|
|
48
|
+
import { frustum_from_camera } from "../ecs/camera/frustum_from_camera.js";
|
|
50
49
|
import TopDownCameraControllerSystem from "../ecs/camera/topdown/TopDownCameraControllerSystem.js";
|
|
51
|
-
import {TopDownCameraLanderSystem} from "../ecs/camera/topdown/TopDownCameraLanderSystem.js";
|
|
50
|
+
import { TopDownCameraLanderSystem } from "../ecs/camera/topdown/TopDownCameraLanderSystem.js";
|
|
52
51
|
import MeshHighlightSystem from "../ecs/highlight/system/MeshHighlightSystem.js";
|
|
53
52
|
import LightSystem from "../ecs/light/LightSystem.js";
|
|
54
53
|
import Mesh from "../ecs/mesh/Mesh.js";
|
|
55
|
-
import {MeshSystem} from "../ecs/mesh/MeshSystem.js";
|
|
56
|
-
import {PathDisplaySystem} from "../ecs/path/PathDisplaySystem.js";
|
|
54
|
+
import { MeshSystem } from "../ecs/mesh/MeshSystem.js";
|
|
55
|
+
import { PathDisplaySystem } from "../ecs/path/PathDisplaySystem.js";
|
|
57
56
|
import Trail2DSystem from "../ecs/trail2d/Trail2DSystem.js";
|
|
58
57
|
import WaterSystem from "../ecs/water/WaterSystem.js";
|
|
59
|
-
import {computeFrustumCorners} from "../render/forward_plus/computeFrustumCorners.js";
|
|
58
|
+
import { computeFrustumCorners } from "../render/forward_plus/computeFrustumCorners.js";
|
|
60
59
|
|
|
61
60
|
const engineHarness = new EngineHarness();
|
|
62
61
|
|
|
@@ -97,7 +96,6 @@ function makeConfig(engine) {
|
|
|
97
96
|
new TerrainSystem(graphics, assetManager),
|
|
98
97
|
new WaterSystem(graphics),
|
|
99
98
|
new Trail2DSystem(engine),
|
|
100
|
-
new Foliage2System(assetManager, graphics),
|
|
101
99
|
new ViewportPositionSystem(graphics.viewport.size),
|
|
102
100
|
new GridPosition2TransformSystem(),
|
|
103
101
|
new Transform2GridPositionSystem(),
|