@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.
- package/package.json +1 -1
- package/src/engine/Engine.js +2 -2
- package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +1 -1
- package/src/engine/graphics3/GraphicsEngine3.d.ts +7 -0
- package/src/engine/graphics3/GraphicsEngine3.d.ts.map +1 -1
- package/src/engine/graphics3/GraphicsEngine3.js +9 -0
- package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -4
- package/src/shade/playground/skinned_blas_refit/README.md +56 -33
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts +2 -1
- package/src/shade/playground/skinned_blas_refit/place_character.d.ts.map +1 -1
- package/src/shade/playground/skinned_blas_refit/place_character.js +2 -1
- package/src/view/graphics/{WebGLContextFailureView.d.ts → GraphicsContextFailureView.d.ts} +2 -2
- package/src/view/graphics/GraphicsContextFailureView.d.ts.map +1 -0
- package/src/view/graphics/{WebGLContextFailureView.js → GraphicsContextFailureView.js} +1 -1
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts +0 -7
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.d.ts.map +0 -1
- package/src/core/geom/3d/aabb/aabb3_from_three_geometry.js +0 -18
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts +0 -7
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.d.ts.map +0 -1
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +0 -7
- package/src/engine/ecs/transform/copy_three_transform.d.ts +0 -7
- package/src/engine/ecs/transform/copy_three_transform.d.ts.map +0 -1
- package/src/engine/ecs/transform/copy_three_transform.js +0 -15
- package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts +0 -48
- package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/DeferredBoundsQueue.js +0 -88
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts +0 -63
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +0 -314
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts +0 -67
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/AbstractRenderAdapter.js +0 -130
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts +0 -42
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +0 -71
- package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts +0 -20
- package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/render/optimization/RuntimeDrawMethodOptimizer.js +0 -123
- package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts +0 -8
- package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.d.ts.map +0 -1
- package/src/engine/graphics/ecs/mesh-v2/three_object_to_entity_composition.js +0 -55
- package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts +0 -12
- package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.d.ts.map +0 -1
- package/src/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js +0 -31
- 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"}
|