@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
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Created by Alex on 04/05/2016.
|
|
3
|
-
*/
|
|
4
|
-
import { BinaryNode } from '../../../../../core/bvh2/BinaryNode.js';
|
|
5
|
-
import { LeafNode } from '../../../../../core/bvh2/LeafNode.js';
|
|
6
|
-
import IndexedTriangleBoundsComputer from './IndexedTraingleBoundsComputer.js';
|
|
7
|
-
|
|
8
|
-
import { buildUnsorted as buildUnsortedBinaryBVH } from './BinaryBVHFromBufferGeometry.js';
|
|
9
|
-
|
|
10
|
-
const makeTriangle = IndexedTriangleBoundsComputer.compute;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @param object
|
|
15
|
-
* @param {number|uint} a
|
|
16
|
-
* @param {number|uint} b
|
|
17
|
-
* @param {number|uint} c
|
|
18
|
-
* @param {Float32Array|Float64Array} vertices
|
|
19
|
-
*/
|
|
20
|
-
function makeTriangleLeaf(object, a, b, c, vertices) {
|
|
21
|
-
return makeTriangle(a, b, c, vertices, function (x0, y0, z0, x1, y1, z1) {
|
|
22
|
-
return new LeafNode(object, x0, y0, z0, x1, y1, z1);
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* @param {Uint32Array|Uint16Array|Uint8Array} indices
|
|
29
|
-
* @param {Float32Array|Float64Array} vertices
|
|
30
|
-
* @param {BinaryNode} tree
|
|
31
|
-
*/
|
|
32
|
-
function fillTree(indices, vertices, tree) {
|
|
33
|
-
const numFaces = indices.length / 3;
|
|
34
|
-
let iA, iB, iC;
|
|
35
|
-
|
|
36
|
-
function processLeaf(index) {
|
|
37
|
-
const index3 = index * 3;
|
|
38
|
-
|
|
39
|
-
iA = indices[index3];
|
|
40
|
-
iB = indices[index3 + 1];
|
|
41
|
-
iC = indices[index3 + 2];
|
|
42
|
-
|
|
43
|
-
return makeTriangleLeaf(index, iA * 3, iB * 3, iC * 3, vertices);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
tree.insertManyBoxes2(processLeaf, numFaces);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
*
|
|
51
|
-
* @param {BufferGeometry} geometry
|
|
52
|
-
* @returns {BinaryNode}
|
|
53
|
-
*/
|
|
54
|
-
function bvhFromGeometry(geometry) {
|
|
55
|
-
// console.profile( "building geometry bvh" );
|
|
56
|
-
const tree = new BinaryNode();
|
|
57
|
-
tree.setNegativelyInfiniteBounds();
|
|
58
|
-
const vertices = geometry.getAttribute('position').array;
|
|
59
|
-
const indices = geometry.getIndex().array;
|
|
60
|
-
|
|
61
|
-
fillTree(indices, vertices, tree);
|
|
62
|
-
|
|
63
|
-
// console.profileEnd( "building geometry bvh" );
|
|
64
|
-
//
|
|
65
|
-
//console.log("built bvh for " + faces.length + " faces");
|
|
66
|
-
return tree;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
* @param {THREE.BufferGeometry} geometry
|
|
72
|
-
* @returns {BinaryNode}
|
|
73
|
-
*/
|
|
74
|
-
function buildUnsorted(geometry) {
|
|
75
|
-
const tree = new BinaryNode();
|
|
76
|
-
tree.setNegativelyInfiniteBounds();
|
|
77
|
-
//
|
|
78
|
-
const index = geometry.index;
|
|
79
|
-
const indices = index.array;
|
|
80
|
-
const vertices = geometry.attributes.position.array;
|
|
81
|
-
|
|
82
|
-
let numNodes = indices.length / 3;
|
|
83
|
-
let i, n;
|
|
84
|
-
//create leaf nodes
|
|
85
|
-
const nodes = new Array(numNodes);
|
|
86
|
-
let iA, iB, iC;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (i = 0; i < numNodes; i++) {
|
|
90
|
-
//leaf needs to be set up inside the callback
|
|
91
|
-
const index3 = i * 3;
|
|
92
|
-
|
|
93
|
-
iA = indices[index3];
|
|
94
|
-
iB = indices[index3 + 1];
|
|
95
|
-
iC = indices[index3 + 2];
|
|
96
|
-
nodes[i] = makeTriangleLeaf(i, iA * 3, iB * 3, iC * 3, vertices);
|
|
97
|
-
}
|
|
98
|
-
while (numNodes > 2) {
|
|
99
|
-
//sort leafs
|
|
100
|
-
|
|
101
|
-
//pair
|
|
102
|
-
for (i = 0; i < numNodes; i += 2) {
|
|
103
|
-
const a = nodes[i];
|
|
104
|
-
const b = nodes[i + 1];
|
|
105
|
-
n = new BinaryNode();
|
|
106
|
-
n.setChildren(a, b);
|
|
107
|
-
nodes[i >> 1] = n;
|
|
108
|
-
}
|
|
109
|
-
numNodes = (numNodes >> 1) + numNodes % 2;
|
|
110
|
-
//nodes.length = numNodes;
|
|
111
|
-
}
|
|
112
|
-
//finally insert these boxes from this node
|
|
113
|
-
nodes.length = numNodes;
|
|
114
|
-
for (i = 0; i < numNodes; i++) {
|
|
115
|
-
n = nodes[i];
|
|
116
|
-
tree.insertNode(n);
|
|
117
|
-
}
|
|
118
|
-
return tree;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
export default {
|
|
123
|
-
build: bvhFromGeometry,
|
|
124
|
-
buildUnsorted: buildUnsorted,
|
|
125
|
-
setFaceBounds: makeTriangleLeaf,
|
|
126
|
-
buildUnsortedBinaryBVH: function (geometry) {
|
|
127
|
-
|
|
128
|
-
const index = geometry.index;
|
|
129
|
-
const indices = index.array;
|
|
130
|
-
const vertices = geometry.attributes.position.array;
|
|
131
|
-
return buildUnsortedBinaryBVH(vertices, indices);
|
|
132
|
-
}
|
|
133
|
-
};
|