@woosh/meep-engine 2.34.33 → 2.34.37

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 (62) hide show
  1. package/core/assert.js +11 -0
  2. package/core/binary/BitSet.js +5 -0
  3. package/core/bvh2/BinaryNode.js +880 -848
  4. package/core/bvh2/LeafNode.js +80 -82
  5. package/core/bvh2/Node.d.ts +3 -0
  6. package/core/bvh2/Node.js +111 -114
  7. package/core/bvh2/aabb3/AABB3.js +50 -4
  8. package/core/bvh2/aabb3/AABB3.spec.js +27 -1
  9. package/core/bvh2/aabb3/AABB3Math.js +1 -1
  10. package/core/bvh2/aabb3/aabb3_from_v3_array.js +34 -0
  11. package/core/bvh2/aabb3/aabb3_from_v3_array_transformed.js +39 -0
  12. package/core/bvh2/aabb3/aabb3_intersects_frustum_degree.js +46 -0
  13. package/core/bvh2/transform/RotationOptimizer.js +2 -262
  14. package/core/bvh2/transform/tryRotateSingleNode.js +259 -0
  15. package/core/bvh2/traversal/ThreeFrustumsIntersectionBVHVisitor.js +16 -35
  16. package/core/bvh2/traversal/queryBinaryNode_FrustumIntersections.js +52 -0
  17. package/core/collection/list/List.js +0 -34
  18. package/core/events/signal/Signal.js +1 -1
  19. package/core/geom/3d/aabb/aabb3_matrix4_project.js +3 -4
  20. package/core/geom/3d/aabb/aabb3_matrix4_project.spec.js +13 -0
  21. package/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -2
  22. package/core/geom/Quaternion.d.ts +2 -0
  23. package/core/geom/Vector3.js +22 -11
  24. package/engine/asset/loaders/ArrayBufferLoader.js +7 -0
  25. package/engine/asset/loaders/image/ImageRGBADataLoader.js +11 -6
  26. package/engine/ecs/EntityBuilder.js +12 -5
  27. package/engine/ecs/EntityComponentDataset.js +26 -6
  28. package/engine/ecs/attachment/AttachmentSystem.js +1 -1
  29. package/engine/ecs/attachment/TransformAttachmentBinding.js +0 -1
  30. package/engine/ecs/foliage/FoliageVisibilitySetBuilder.js +1 -31
  31. package/engine/ecs/foliage/InstancedFoliage.js +85 -152
  32. package/engine/ecs/foliage/ViewState.js +190 -0
  33. package/engine/ecs/foliage/ecs/Foliage2System.js +82 -19
  34. package/engine/ecs/foliage/ecs/InstancedMeshComponent.js +30 -0
  35. package/engine/ecs/foliage/ecs/InstancedMeshLayer.js +16 -0
  36. package/engine/ecs/foliage/ecs/InstancedMeshUtils.js +2 -2
  37. package/engine/ecs/parent/EntityNode.js +31 -49
  38. package/engine/ecs/sockets/AttachmentSockets.js +11 -1
  39. package/engine/ecs/transform-attachment/TransformAttachment.js +88 -0
  40. package/engine/ecs/transform-attachment/TransformAttachmentSystem.js +59 -0
  41. package/engine/graphics/GraphicsEngine.js +23 -2
  42. package/engine/graphics/ecs/camera/Camera.js +33 -16
  43. package/engine/graphics/ecs/camera/unprojectPoint.js +14 -0
  44. package/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +2 -19
  45. package/engine/graphics/ecs/mesh/updateNodeByTransformAndBBB.js +21 -21
  46. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +9 -1
  47. package/engine/graphics/ecs/mesh-v2/ShadedGeometryFlags.js +4 -1
  48. package/engine/graphics/ecs/mesh-v2/sample/load_gltf.js +40 -8
  49. package/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +3 -3
  50. package/engine/graphics/ecs/water2/shader/AlexWaterShader.js +7 -1
  51. package/engine/graphics/geometry/instancing/InstancedMeshGroup.js +17 -11
  52. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +1 -34
  53. package/engine/graphics/micron/build/fill_patch_geometry_data.js +12 -0
  54. package/engine/graphics/micron/format/MicronGeometry.js +21 -0
  55. package/engine/graphics/micron/plugin/MicronRenderPlugin.js +0 -3
  56. package/engine/graphics/micron/prototypeVirtualGeometry.js +69 -1
  57. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +5 -1
  58. package/engine/graphics/render/layers/RenderLayer.js +22 -85
  59. package/engine/graphics/render/visibility/VisibilityComputer.js +23 -103
  60. package/engine/sound/ecs/emitter/SoundEmitterSystem.js +1 -1
  61. package/package.json +1 -1
  62. package/samples/terrain/editor.js +0 -1
@@ -1,42 +1,14 @@
1
- import { Frustum } from "three";
2
- import { frustumFromCamera } from "../../ecs/camera/CameraSystem.js";
3
1
  import { assert } from "../../../../core/assert.js";
4
2
 
5
- const frustum = new Frustum();
6
- /**
7
- *
8
- * @type {VisibilityFilter[]}
9
- */
10
- const objectFilters = [];
11
-
12
- /**
13
- *
14
- * @type {function[]}
15
- */
16
- const objectFilterExecutors = [];
17
-
18
- export const SOURCE_RENDER_LAYER_PROPERTY = '@meep-render-layer';
19
-
20
3
  export class VisibilityComputer {
21
4
  constructor() {
22
- /**
23
- *
24
- * @type {VisibilityFilter[]}
25
- */
26
- this.filters = [];
5
+
27
6
  /**
28
7
  *
29
8
  * @type {CameraView}
30
9
  */
31
10
  this.__view = null;
32
11
 
33
- /**
34
- * @deprecated use view.frustum instead
35
- * @type {Frustum[]}
36
- * @private
37
- */
38
- this.__frustums = [];
39
-
40
12
  /**
41
13
  *
42
14
  * @type {RenderLayer}
@@ -53,15 +25,28 @@ export class VisibilityComputer {
53
25
  }
54
26
 
55
27
  /**
56
- *
28
+ * @deprecated
29
+ * @returns {VisibilityFilter[]}
30
+ */
31
+ get filters() {
32
+
33
+ throw new Error('Method is deprecated');
34
+ }
35
+
36
+ /**
37
+ * @deprecated
38
+ * @param {VisibilityFilter[]} v
39
+ */
40
+ set filters(v) {
41
+ throw new Error('Method is deprecated');
42
+ }
43
+
44
+ /**
45
+ * @deprecated
57
46
  * @param {VisibilityFilter} filter
58
47
  */
59
48
  addFilter(filter) {
60
- if (this.filters.find(f => f.name === filter.name)) {
61
- throw new Error(`Filter named '${filter.name}' already exists`);
62
- }
63
-
64
- this.filters.push(filter);
49
+ throw new Error('Method is deprecated');
65
50
  }
66
51
 
67
52
  /**
@@ -70,16 +55,8 @@ export class VisibilityComputer {
70
55
  * @returns {boolean}
71
56
  */
72
57
  removeFilter(filter) {
73
- const i = this.filters.indexOf(filter);
74
-
75
- if (i === -1) {
76
- //not present
77
- return false;
78
- }
79
58
 
80
- //cut
81
- this.filters.splice(i, 1);
82
- return true;
59
+ throw new Error('Method is deprecated');
83
60
  }
84
61
 
85
62
  /**
@@ -97,9 +74,6 @@ export class VisibilityComputer {
97
74
  __includeObject(object3d) {
98
75
  assert.equal(object3d.isObject3D, true, 'object3d.isObject3D !== true');
99
76
 
100
- // mark object, this is a hack, needs to be fixed at some point
101
- object3d[SOURCE_RENDER_LAYER_PROPERTY] = this.__activeLayer;
102
-
103
77
  //object passed all filters, add it to visible set
104
78
  this.__output.push(object3d);
105
79
 
@@ -111,8 +85,6 @@ export class VisibilityComputer {
111
85
  * @param {RenderLayer} layer
112
86
  */
113
87
  __processLayer(layer) {
114
-
115
-
116
88
  if (!layer.state.visible) {
117
89
  //whole layer is hidden
118
90
 
@@ -123,61 +95,13 @@ export class VisibilityComputer {
123
95
  this.__activeLayer = layer;
124
96
 
125
97
  if (layer.managed) {
126
- this.__output.pushOther(layer.visibleSet);
127
98
 
128
- // mark all elements in the layer
129
- const elements = layer.visibleSet.elements;
130
-
131
- const element_count = elements.length;
132
- for (let j = 0; j < element_count; j++) {
133
- const object3D = elements[j];
134
-
135
- object3D[SOURCE_RENDER_LAYER_PROPERTY] = layer;
136
- }
99
+ this.__output.pushOther(layer.visibleSet);
137
100
 
138
101
  return;
139
102
  }
140
103
 
141
- // clear visible set
142
- // this.__output.initializeUpdate();
143
-
144
- const filters = this.filters;
145
- const filterCount = filters.length;
146
-
147
- let objectFilterCount = 0;
148
- let i;
149
- for (i = 0; i < filterCount; i++) {
150
- const f = filters[i];
151
-
152
- if (f.enabled && f.layerPredicate(layer)) {
153
- objectFilters[objectFilterCount] = f;
154
- objectFilterExecutors[objectFilterCount] = f.objectPredicateExecute;
155
-
156
- objectFilterCount++;
157
- }
158
- }
159
-
160
-
161
- //prepare filters
162
- for (i = 0; i < objectFilterCount; i++) {
163
- const f = objectFilters[i];
164
-
165
- f.objectPredicateInitialize(this.__view.camera);
166
- }
167
-
168
- objectFilterExecutors.length = objectFilterCount;
169
-
170
- layer.buildVisibleSet(this.__frustums, objectFilterExecutors, this.__includeObject, this);
171
-
172
- //finalize filters
173
- for (i = 0; i < objectFilterCount; i++) {
174
- const f = objectFilters[i];
175
-
176
- f.objectPredicateFinalize();
177
- }
178
-
179
-
180
- // layer.visibleSet.finalizeUpdate();
104
+ layer.buildVisibleSet(this.__view, this.__includeObject, this);
181
105
  }
182
106
 
183
107
 
@@ -193,10 +117,6 @@ export class VisibilityComputer {
193
117
  * @param {RenderLayerManager} renderLayers
194
118
  */
195
119
  build(renderLayers) {
196
- frustumFromCamera(this.__view.camera, frustum);
197
-
198
- this.__frustums = [frustum];
199
-
200
120
  renderLayers.traverse(this.__processLayer, this);
201
121
  }
202
122
  }
@@ -14,11 +14,11 @@ import { BinaryNode } from "../../../../core/bvh2/BinaryNode.js";
14
14
  import SoundListener from "../SoundListener.js";
15
15
  import { IncrementalDeltaSet } from "../../../graphics/render/visibility/IncrementalDeltaSet.js";
16
16
  import { queryBinaryNode_SphereIntersections_Data } from "../../../../core/bvh2/traversal/queryBinaryNode_SphereIntersections.js";
17
- import { tryRotateSingleNode } from "../../../../core/bvh2/transform/RotationOptimizer.js";
18
17
  import { SoundEmitterComponentContext } from "./SoundEmitterComponentContext.js";
19
18
  import { SoundEmitterFlags } from "./SoundEmitterFlags.js";
20
19
  import { SoundEmitterChannel } from "./SoundEmitterChannel.js";
21
20
  import { invokeObjectCompare } from "../../../../core/model/object/invokeObjectCompare.js";
21
+ import { tryRotateSingleNode } from "../../../../core/bvh2/transform/tryRotateSingleNode.js";
22
22
 
23
23
  /**
24
24
  * @readonly
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "productName": "Meep",
6
6
  "description": "production-ready JavaScript game engine based on Entity Component System Architecture",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.34.33",
8
+ "version": "2.34.37",
9
9
  "dependencies": {
10
10
  "gl-matrix": "3.4.3",
11
11
  "fast-levenshtein": "2.0.6",
@@ -20,7 +20,6 @@ import { copy_Sampler2D_channel_data } from "../../engine/graphics/texture/sampl
20
20
  import { TextureAssetLoader } from "../../engine/asset/loaders/texture/TextureAssetLoader.js";
21
21
  import { CanvasView } from "../../view/elements/CanvasView.js";
22
22
  import convertSampler2D2Canvas from "../../engine/graphics/texture/sampler/Sampler2D2Canvas.js";
23
- import { drawSamplerHTML } from "../../engine/graphics/texture/sampler/util/drawSamplerHTML.js";
24
23
 
25
24
  const engineHarness = new EngineHarness();
26
25