@woosh/meep-engine 3.4.0 → 3.5.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.
Files changed (45) hide show
  1. package/package.json +1 -1
  2. package/src/engine/Engine.js +2 -2
  3. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +1 -1
  4. package/src/engine/graphics3/GraphicsEngine3.d.ts +7 -0
  5. package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
  6. package/src/engine/graphics3/GraphicsEngine3.js +9 -0
  7. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
  8. package/src/shade/playground/skinned_blas_refit/README.md +56 -33
  9. package/src/shade/playground/skinned_blas_refit/place_character.d.ts +2 -1
  10. package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
  11. package/src/shade/playground/skinned_blas_refit/place_character.js +2 -1
  12. package/src/view/graphics/{WebGLContextFailureView.d.ts → GraphicsContextFailureView.d.ts} +2 -2
  13. package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -0
  14. package/src/view/graphics/{WebGLContextFailureView.js → GraphicsContextFailureView.js} +1 -1
  15. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +0 -7
  16. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +0 -1
  17. package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +0 -18
  18. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +0 -7
  19. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +0 -1
  20. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +0 -7
  21. package/src/engine/ecs/transform/copy_three_transform.d.ts +0 -7
  22. package/src/engine/ecs/transform/copy_three_transform.d.ts.map +0 -1
  23. package/src/engine/ecs/transform/copy_three_transform.js +0 -15
  24. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts +0 -48
  25. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts.map +0 -1
  26. package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.js +0 -88
  27. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts +0 -63
  28. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +0 -1
  29. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +0 -314
  30. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts +0 -67
  31. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +0 -1
  32. package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +0 -130
  33. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts +0 -42
  34. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts.map +0 -1
  35. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +0 -71
  36. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts +0 -20
  37. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts.map +0 -1
  38. package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +0 -123
  39. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts +0 -8
  40. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts.map +0 -1
  41. package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +0 -55
  42. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts +0 -12
  43. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts.map +0 -1
  44. package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js +0 -31
  45. package/src/view/graphics/WebGLContextFailureView.d.ts.map +0 -1
@@ -1,123 +0,0 @@
1
- import { ShadedGeometry } from "../../ShadedGeometry.js";
2
- import { ShadedGeometryFlags } from "../../ShadedGeometryFlags.js";
3
-
4
- export class RuntimeDrawMethodOptimizer {
5
- /**
6
- *
7
- * @type {ShadedGeometrySystem|null}
8
- * @private
9
- */
10
- __system = null;
11
-
12
- /**
13
- *
14
- * @type {Generator<number>}
15
- * @private
16
- */
17
- __entity_iterator = null;
18
-
19
- /**
20
- *
21
- * @returns {boolean} true if a change was made, false otherwise
22
- */
23
- step() {
24
- const system = this.__system;
25
-
26
- if (system === null) {
27
- return false;
28
- }
29
-
30
- const ecd = system.entityManager.dataset;
31
-
32
- if (ecd === null) {
33
- // no dataset attached
34
- return false;
35
- }
36
-
37
- if (!ecd.isComponentTypeRegistered(ShadedGeometry)) {
38
- // component not registered
39
- return false;
40
- }
41
-
42
- if (this.__entity_iterator === null) {
43
- this.__entity_iterator = ecd[Symbol.iterator]();
44
- }
45
-
46
- const next = this.__entity_iterator.next();
47
-
48
- if (next.done) {
49
- this.__entity_iterator = ecd[Symbol.iterator]();
50
- return false;
51
- }
52
-
53
- const entity = next.value;
54
-
55
- if (!ecd.entityExists(entity)) {
56
- // seems that iterator is stale, reset iterator
57
- this.__entity_iterator = null;
58
- return false;
59
- }
60
-
61
- /**
62
- *
63
- * @type {ShadedGeometry}
64
- */
65
- const sg = ecd.getComponent(entity, ShadedGeometry);
66
-
67
- if (sg === undefined) {
68
- return false;
69
- }
70
-
71
- if (sg.getFlag(ShadedGeometryFlags.DrawMethodLocked)) {
72
- // draw mode is locked, can't change
73
- return false;
74
- }
75
-
76
- const use_count = system.getGeometryUsageCounters().get(sg.geometry.id);
77
-
78
- /**
79
- *
80
- * @type {ShadedGeometryRendererContext|undefined}
81
- */
82
- const first_context = system.__view_contexts.values().next().value;
83
-
84
- if (first_context === undefined) {
85
- return false;
86
- }
87
-
88
- const adapters = first_context.adapters;
89
- const adapter_count = adapters.length;
90
-
91
- let best_score = Number.NEGATIVE_INFINITY;
92
- let best_adapter = -1;
93
-
94
- for (let i = 0; i < adapter_count; i++) {
95
- const adapter = adapters[i];
96
-
97
- const score = adapter.score(sg.geometry, sg.material, use_count);
98
-
99
- if (score > best_score) {
100
- best_score = score;
101
- best_adapter = i;
102
- }
103
- }
104
-
105
- if (best_adapter === -1) {
106
- // not found
107
- return false;
108
- }
109
-
110
- if (sg.draw_method === best_adapter) {
111
- return false;
112
- }
113
-
114
- if (!adapters[best_adapter].intend_draw(sg)) {
115
- // unable to draw, don't do anything
116
- return false;
117
- }
118
-
119
- sg.draw_method = best_adapter;
120
-
121
- return true;
122
- }
123
- }
@@ -1,8 +0,0 @@
1
- /**
2
- *
3
- * @param {THREE.Object3D} root
4
- * @returns {EntityNode}
5
- */
6
- export function three_object_to_entity_composition(root: THREE.Object3D): EntityNode;
7
- import { EntityNode } from "../../../ecs/parent/EntityNode.js";
8
- //# sourceMappingURL=three_object_to_entity_composition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"three_object_to_entity_composition.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,0EAFa,UAAU,CA6CtB;2BArD0B,mCAAmC"}
@@ -1,55 +0,0 @@
1
- import Name from "../../../ecs/name/Name.js";
2
- import { EntityNode } from "../../../ecs/parent/EntityNode.js";
3
- import { copy_three_transform } from "../../../ecs/transform/copy_three_transform.js";
4
- import { Transform } from "../../../ecs/transform/Transform.js";
5
- import { ShadedGeometry } from "./ShadedGeometry.js";
6
-
7
- /**
8
- *
9
- * @param {THREE.Object3D} root
10
- * @returns {EntityNode}
11
- */
12
- export function three_object_to_entity_composition(root) {
13
- const node = new EntityNode();
14
-
15
- const node_transform = node.transform;
16
-
17
- // copy object transform
18
- copy_three_transform(node_transform, root);
19
-
20
- const entity = node.entity;
21
-
22
- const transform = new Transform();
23
- // initialize world transform
24
- transform.fromMatrix(root.matrixWorld.elements);
25
-
26
- entity.add(transform);
27
- entity.add(new Name(root.name));
28
-
29
- if (root.isMesh) {
30
- if (root.isSkinnedMesh) {
31
- console.error(`Skinned meshes are not supported`);
32
- }
33
-
34
- const sg = ShadedGeometry.from(root.geometry, root.material);
35
-
36
- if(root.customDepthMaterial !== undefined && root.customDepthMaterial !== null) {
37
- sg.depth_material = root.customDepthMaterial;
38
- }
39
-
40
- entity.add(sg);
41
- }
42
-
43
- const children = root.children;
44
- const child_count = children.length;
45
-
46
- for (let i = 0; i < child_count; i++) {
47
- const child = children[i];
48
-
49
- const child_node = three_object_to_entity_composition(child);
50
-
51
- node.addChild(child_node);
52
- }
53
-
54
- return node;
55
- }
@@ -1,12 +0,0 @@
1
- /**
2
- *
3
- * @param {Engine} engine
4
- * @param {string} url
5
- * @return {Promise<{mesh:ShadedGeometry,transform:mat4}[]>}
6
- */
7
- export function load_mesh_for_bake(engine: Engine, url: string): Promise<{
8
- mesh: ShadedGeometry;
9
- transform: mat4;
10
- }[]>;
11
- import { ShadedGeometry } from "../../../ecs/mesh-v2/ShadedGeometry.js";
12
- //# sourceMappingURL=load_mesh_for_bake.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load_mesh_for_bake.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wDAHW,MAAM,GACL,QAAQ;IAAC,IAAI,EAAC,cAAc,CAAC;IAAA,SAAS,OAAK;CAAC,EAAE,CAAC,CAqB1D;+BA5B8B,wCAAwC"}
@@ -1,31 +0,0 @@
1
- import { GameAssetType } from "../../../../asset/GameAssetType.js";
2
- import { three_object_to_entity_composition } from "../../../ecs/mesh-v2/three_object_to_entity_composition.js";
3
- import { ShadedGeometry } from "../../../ecs/mesh-v2/ShadedGeometry.js";
4
- import { Transform } from "../../../../ecs/transform/Transform.js";
5
-
6
- /**
7
- *
8
- * @param {Engine} engine
9
- * @param {string} url
10
- * @return {Promise<{mesh:ShadedGeometry,transform:mat4}[]>}
11
- */
12
- export async function load_mesh_for_bake(engine, url) {
13
-
14
- const gltf_asset = await engine.assetManager.promise(url, GameAssetType.ModelGLTF_JSON);
15
-
16
- const node_hierarchy = three_object_to_entity_composition(gltf_asset.create());
17
-
18
- const objects = [];
19
-
20
- node_hierarchy.traverse(n => {
21
- const sg = n.entity.getComponent(ShadedGeometry);
22
- if (sg !== null) {
23
- objects.push({
24
- mesh: sg,
25
- transform: n.entity.getComponent(Transform).matrix
26
- })
27
- }
28
- });
29
-
30
- return objects;
31
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebGLContextFailureView.d.ts","sourceRoot":"","sources":["../../../../src/view/graphics/WebGLContextFailureView.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH;IACI;;;;;OAKG;IACH,oDALW,MAAM,EA4DhB;CACJ;sBA1EqB,0BAA0B"}