@woosh/meep-engine 2.43.3 → 2.43.5
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/core/binary/BinaryBuffer.js +13 -1
- package/core/binary/BitSet.js +2 -2
- package/core/collection/array/array_range_equal_strict.js +22 -0
- package/core/collection/map/AsyncMapWrapper.js +13 -1
- package/core/collection/map/CachedAsyncMap.js +9 -2
- package/core/collection/map/CachedAsyncMap.spec.js +47 -0
- package/core/color/sRGB_to_linear.js +9 -4
- package/core/geom/3d/plane/orient3d_fast.js +3 -0
- package/core/geom/3d/plane/orient3d_robust.js +41 -0
- package/core/geom/3d/sphere/harmonics/README.md +15 -0
- package/core/geom/3d/sphere/harmonics/sh3_add.js +21 -0
- package/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.js +618 -0
- package/core/geom/3d/sphere/harmonics/sh3_sample_by_direction.js +49 -0
- package/core/geom/3d/sphere/harmonics/sh3_sample_irradiance_by_direction.js +53 -0
- package/core/geom/3d/tetrahedra/TetrahedralMesh.js +251 -68
- package/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +80 -3
- package/core/geom/3d/tetrahedra/build_tetrahedral_mesh_buffer_geometry.js +75 -0
- package/core/geom/3d/tetrahedra/delaunay/Cavity.js +5 -1
- package/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +30 -31
- package/core/geom/3d/tetrahedra/delaunay/fill_in_a_cavity.js +54 -18
- package/core/geom/3d/tetrahedra/delaunay/push_boundary_with_validation.js +27 -0
- package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_cavity.js +89 -0
- package/core/geom/3d/tetrahedra/delaunay/{tetrahedral_mesh_walk_toward_cavity.js → tetrahedral_mesh_walk_towards_containing_tetrahedron.js} +15 -12
- package/core/geom/3d/tetrahedra/delaunay/validate_cavity_boundary.js +60 -0
- package/core/geom/3d/tetrahedra/{point_in_tetrahedron_circumsphere.js → in_sphere_fast.js} +2 -4
- package/core/geom/3d/tetrahedra/in_sphere_robust.js +53 -0
- package/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +44 -35
- package/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +85 -38
- package/core/geom/3d/util/make_justified_point_grid.js +31 -0
- package/core/process/delay.js +5 -0
- package/editor/Editor.js +3 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +195 -11
- package/editor/ecs/component/editors/ecs/ParameterTrackSetEditor.js +16 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +4 -0
- package/engine/EngineHarness.js +11 -5
- package/engine/ecs/terrain/ecs/TerrainSystem.js +7 -1
- package/engine/ecs/transform/copy_three_transform.js +15 -0
- package/engine/graphics/ecs/light/Light.js +6 -1
- package/engine/graphics/ecs/light/LightSystem.d.ts +1 -1
- package/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +2 -17
- package/engine/graphics/geometry/instancing/InstancedMeshGroup.js +2 -2
- package/engine/graphics/micron/plugin/shaded_geometry/MicronShadedGeometryRenderAdapter.js +9 -1
- package/engine/graphics/sh3/LightProbeVolume.js +595 -0
- package/engine/graphics/sh3/SH3VisualisationMaterial.js +79 -0
- package/engine/graphics/sh3/prototypeSH3Probe.js +427 -0
- package/engine/graphics/sh3/visualise_probe.js +40 -0
- package/engine/graphics/texture/atlas/TextureAtlas.js +15 -3
- package/engine/intelligence/blackboard/AbstractBlackboard.d.ts +1 -1
- package/package.json +2 -1
- package/samples/terrain/from_image_2.js +127 -82
- package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_cavity2.js +0 -224
- package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_insert_point.js +0 -98
|
@@ -7,6 +7,7 @@ import { TerrainFlags } from "./TerrainFlags.js";
|
|
|
7
7
|
import { ImageRGBADataLoader } from "../../../asset/loaders/image/ImageRGBADataLoader.js";
|
|
8
8
|
import { Transform } from "../../transform/Transform.js";
|
|
9
9
|
import { MATRIX_4_IDENTITY } from "../../../../core/geom/3d/matrix/MATRIX_4_IDENTITY.js";
|
|
10
|
+
import { BinaryNode } from "../../../../core/bvh2/BinaryNode.js";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
*
|
|
@@ -149,6 +150,11 @@ class TerrainSystem extends System {
|
|
|
149
150
|
*/
|
|
150
151
|
unlink(component, entity) {
|
|
151
152
|
|
|
153
|
+
if (this.renderLayer.bvh === component.__tiles.bvh) {
|
|
154
|
+
// remove from render index
|
|
155
|
+
this.renderLayer.bvh = new BinaryNode();
|
|
156
|
+
}
|
|
157
|
+
|
|
152
158
|
component.unlink();
|
|
153
159
|
}
|
|
154
160
|
|
|
@@ -187,7 +193,7 @@ class TerrainSystem extends System {
|
|
|
187
193
|
if (transform !== undefined) {
|
|
188
194
|
// terrain has a transform
|
|
189
195
|
terrain.transform = transform.matrix;
|
|
190
|
-
}else{
|
|
196
|
+
} else {
|
|
191
197
|
terrain.transform = MATRIX_4_IDENTITY;
|
|
192
198
|
}
|
|
193
199
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {Transform} transform
|
|
4
|
+
* @param {THREE.Object3D} three_object
|
|
5
|
+
*/
|
|
6
|
+
export function copy_three_transform(transform, three_object) {
|
|
7
|
+
|
|
8
|
+
// copy object transform
|
|
9
|
+
transform.position.copy(three_object.position);
|
|
10
|
+
transform.scale.copy(three_object.scale);
|
|
11
|
+
transform.rotation.copy(three_object.quaternion);
|
|
12
|
+
|
|
13
|
+
//
|
|
14
|
+
transform.matrix.set(three_object.matrix.elements);
|
|
15
|
+
}
|
|
@@ -8,6 +8,9 @@ import { Color } from "../../../../core/color/Color.js";
|
|
|
8
8
|
import ObservedBoolean from "../../../../core/model/ObservedBoolean.js";
|
|
9
9
|
import { LightType } from "./LightType.js";
|
|
10
10
|
|
|
11
|
+
|
|
12
|
+
const DEFAULT_DISTANCE = 1;
|
|
13
|
+
|
|
11
14
|
export class Light {
|
|
12
15
|
/**
|
|
13
16
|
*
|
|
@@ -48,7 +51,7 @@ export class Light {
|
|
|
48
51
|
* Applicable for SPOT and POINT lights, controls maximum extents of influence of the light
|
|
49
52
|
* @type {Vector1}
|
|
50
53
|
*/
|
|
51
|
-
this.distance = new Vector1(
|
|
54
|
+
this.distance = new Vector1(DEFAULT_DISTANCE);
|
|
52
55
|
|
|
53
56
|
/**
|
|
54
57
|
*
|
|
@@ -127,6 +130,8 @@ export class Light {
|
|
|
127
130
|
|
|
128
131
|
if (json.distance !== undefined) {
|
|
129
132
|
this.distance.fromJSON(json.distance);
|
|
133
|
+
} else {
|
|
134
|
+
this.distance.set(DEFAULT_DISTANCE);
|
|
130
135
|
}
|
|
131
136
|
}
|
|
132
137
|
this.__threeObject = null;
|
|
@@ -1,22 +1,7 @@
|
|
|
1
1
|
import { EntityNode } from "../../../ecs/parent/EntityNode.js";
|
|
2
2
|
import { Transform } from "../../../ecs/transform/Transform.js";
|
|
3
3
|
import { ShadedGeometry } from "./ShadedGeometry.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
* @param {Transform} transform
|
|
8
|
-
* @param {THREE.Object3D} three_object
|
|
9
|
-
*/
|
|
10
|
-
function copy_three_transform(transform, three_object) {
|
|
11
|
-
|
|
12
|
-
// copy object transform
|
|
13
|
-
transform.position.copy(three_object.position);
|
|
14
|
-
transform.scale.copy(three_object.scale);
|
|
15
|
-
transform.rotation.copy(three_object.quaternion);
|
|
16
|
-
|
|
17
|
-
//
|
|
18
|
-
transform.matrix.set(three_object.matrix.elements);
|
|
19
|
-
}
|
|
4
|
+
import { copy_three_transform } from "../../../ecs/transform/copy_three_transform.js";
|
|
20
5
|
|
|
21
6
|
/**
|
|
22
7
|
*
|
|
@@ -41,7 +26,7 @@ export function three_object_to_entity_composition(root) {
|
|
|
41
26
|
|
|
42
27
|
if (root.isMesh) {
|
|
43
28
|
if (root.isSkinnedMesh) {
|
|
44
|
-
|
|
29
|
+
console.error(`Skinned meshes are not supported`);
|
|
45
30
|
}
|
|
46
31
|
|
|
47
32
|
const sg = ShadedGeometry.from(root.geometry, root.material);
|
|
@@ -54,12 +54,12 @@ export class InstancedMeshGroup {
|
|
|
54
54
|
*
|
|
55
55
|
* @type {number}
|
|
56
56
|
*/
|
|
57
|
-
this.growFactor = 1.
|
|
57
|
+
this.growFactor = 1.2;
|
|
58
58
|
/**
|
|
59
59
|
* Minimum spare capacity increase during growing
|
|
60
60
|
* @type {number}
|
|
61
61
|
*/
|
|
62
|
-
this.growConstant =
|
|
62
|
+
this.growConstant = 16;
|
|
63
63
|
|
|
64
64
|
this.shrinkFactor = 0.5;
|
|
65
65
|
/**
|
|
@@ -89,7 +89,15 @@ export class MicronShadedGeometryRenderAdapter extends AbstractRenderAdapter {
|
|
|
89
89
|
|
|
90
90
|
this.__geometry_building_promises.set(geometry_id, p);
|
|
91
91
|
|
|
92
|
-
p.then(mg =>
|
|
92
|
+
p.then(mg => {
|
|
93
|
+
if (mg !== undefined) {
|
|
94
|
+
this.__geometry_map.set(geometry_id, mg);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
p.finally(() => {
|
|
99
|
+
this.__geometry_building_promises.delete(geometry_id);
|
|
100
|
+
});
|
|
93
101
|
}
|
|
94
102
|
return undefined;
|
|
95
103
|
}
|