@woosh/meep-engine 2.42.7 → 2.43.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/core/binary/BitSet.js +4 -4
- package/core/binary/ctz32.js +40 -0
- package/core/collection/ObservedMap.js +61 -57
- package/core/collection/heap/FastBinaryHeap.js +7 -1
- package/core/collection/heap/Uint32Heap.js +19 -0
- package/core/collection/map/AsyncLoadingCache.js +3 -1
- package/core/geom/2d/compute_polygon_area_2d.js +32 -0
- package/core/geom/2d/compute_polygon_area_2d.spec.js +10 -0
- package/core/geom/2d/compute_triangle_area_2d.js +15 -0
- package/core/geom/2d/compute_triangle_area_2d.spec.js +9 -0
- package/core/geom/2d/convex-hull/convex_hull_jarvis_2d.js +64 -0
- package/core/geom/2d/convex-hull/convex_hull_jarvis_2d.spec.js +33 -0
- package/core/geom/2d/convex-hull/convex_hull_monotone_2d.js +82 -0
- package/core/geom/2d/convex-hull/fixed_convex_hull_humus.js +135 -0
- package/core/geom/2d/convex-hull/fixed_convex_hull_relaxation.js +282 -0
- package/core/geom/2d/convex-hull/orientation3.js +444 -0
- package/core/geom/2d/convex-hull/orientation3_array.js +22 -0
- package/core/geom/2d/convex-hull/orientation3_v2.js +12 -0
- package/core/geom/2d/intersect_ray_2d.js +56 -0
- package/core/geom/2d/quad-tree/QuadTreeNode.js +0 -81
- package/core/geom/2d/quad-tree/qt_match_data_by_circle.js +70 -0
- package/core/geom/3d/matrix/m4_multiply_alphatensor.js +131 -0
- package/core/geom/3d/plane/orient3d_fast.js +2 -6
- package/core/geom/3d/tetrahedra/README.md +7 -0
- package/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +3 -1
- package/core/geom/3d/tetrahedra/delaunay/Cavity.js +48 -0
- package/core/geom/3d/tetrahedra/{compute_delaunay_tetrahedral_mesh.js → delaunay/compute_delaunay_tetrahedral_mesh.js} +15 -7
- package/core/geom/3d/tetrahedra/{compute_delaunay_tetrahedral_mesh.spec.js → delaunay/compute_delaunay_tetrahedral_mesh.spec.js} +0 -0
- package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_cavity.js +73 -0
- package/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_walk_toward_cavity.js +48 -0
- package/core/geom/3d/tetrahedra/hxt/a.js +524 -0
- package/core/geom/3d/tetrahedra/hxt/hxt.js +140 -0
- package/core/geom/3d/tetrahedra/hxt/hxt.wasm +0 -0
- package/core/geom/3d/tetrahedra/point_in_tetrahedron_circumsphere.js +35 -20
- package/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +98 -0
- package/core/geom/3d/tetrahedra/tetrahedra_collection.js +60 -131
- package/core/geom/packing/{MaxRectangles.js → max-rect/MaxRectangles.js} +28 -124
- package/core/geom/packing/max-rect/removeRedundantBoxes.js +69 -0
- package/core/geom/packing/max-rect/removeRedundantBoxesArray.js +40 -0
- package/core/geom/v3_distance_above_plane.js +1 -1
- package/core/graph/layout/BoxLayouter.js +2 -88
- package/core/graph/layout/CircleLayout.js +2 -1
- package/core/graph/layout/box/forceIntoBox.js +45 -0
- package/core/graph/layout/box/pullBoxTowardsPoint.js +20 -0
- package/core/graph/layout/box/resolveAABB2Overlap.js +22 -0
- package/core/math/bessel_3.js +11 -0
- package/core/math/bessel_i0.js +26 -0
- package/core/process/executor/ConcurrentExecutor.spec.js +2 -1
- package/core/process/task/util/actionTask.js +19 -0
- package/core/process/task/util/countTask.js +62 -0
- package/core/process/task/util/delayTask.js +45 -0
- package/core/process/task/util/emptyTask.js +19 -0
- package/core/process/task/util/failingTask.js +17 -0
- package/core/process/task/util/futureTask.js +48 -0
- package/core/process/task/util/promiseTask.js +42 -0
- package/core/process/task/util/randomCountTask.js +64 -0
- package/core/process/task/util/wrapTaskIgnoreFailure.js +47 -0
- package/engine/Engine.js +8 -8
- package/engine/EngineBootstrapper.js +1 -1
- package/engine/asset/AssetManager.js +197 -53
- package/engine/asset/AssetRequest.js +32 -0
- package/engine/asset/loaders/ArrayBufferLoader.js +62 -50
- package/engine/asset/loaders/image/png/PNG.js +15 -1
- package/engine/asset/loaders/image/png/PNGReader.js +3 -2
- package/engine/ecs/foliage/ecs/InstancedMeshUtils.js +2 -1
- package/engine/ecs/storage/BinaryBufferDeSerializer.js +1 -1
- package/engine/ecs/storage/JSONDeSerializer.js +2 -1
- package/engine/ecs/terrain/ecs/splat/SplatMapOptimizer.js +2 -1
- package/engine/ecs/terrain/ecs/splat/SplatMapping.js +1 -1
- package/engine/graphics/camera/makeScreenScissorFrustum.js +1 -1
- package/engine/graphics/camera/testClippingPlaneComputation.js +4 -45
- package/engine/graphics/ecs/camera/FrustumProjector.js +6 -0
- package/engine/graphics/ecs/decal/v2/FPDecalSystem.js +5 -0
- package/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +23 -4
- package/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.js +1 -1
- package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +11 -0
- package/engine/graphics/geometry/FULL_SCREEN_TRIANGLE_GEOMETRY.js +1 -2
- package/engine/graphics/impostors/octahedral/ImpostorBaker.js +5 -2
- package/engine/graphics/impostors/octahedral/ImpostorDescription.js +18 -0
- package/engine/graphics/impostors/octahedral/bake/prepare_bake_material.js +15 -0
- package/engine/graphics/impostors/octahedral/prototypeBaker.js +66 -79
- package/engine/graphics/impostors/octahedral/shader/ImpostorShaderWireframeV0.js +134 -0
- package/engine/graphics/impostors/octahedral/util/build_cutout_from_atlas_by_alpha.js +128 -0
- package/engine/graphics/impostors/octahedral/util/build_geometry_from_cutout_shape.js +32 -0
- package/engine/graphics/impostors/octahedral/util/load_mesh_for_bake.js +31 -0
- package/engine/graphics/impostors/octahedral/util/makeImpostorAtlasPreview.js +107 -0
- package/engine/graphics/material/manager/ManagedMaterial.js +4 -0
- package/engine/graphics/material/manager/MaterialManager.js +1 -0
- package/engine/graphics/material/optimization/MaterialOptimizationContext.js +7 -3
- package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +2 -2
- package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +0 -19
- package/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +2 -2
- package/engine/graphics/render/visibility/hiz/buildCanvasViewFromTexture.js +83 -27
- package/engine/graphics/shadows/ShadowMapRenderer.js +11 -4
- package/engine/graphics/texture/atlas/AbstractTextureAtlas.js +2 -1
- package/engine/graphics/texture/atlas/CachingTextureAtlas.js +208 -38
- package/engine/graphics/texture/atlas/TextureAtlas.js +31 -24
- package/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.js +1 -1
- package/engine/graphics/texture/sampler/filter/box.js +16 -0
- package/engine/graphics/texture/sampler/filter/cubic2.js +32 -0
- package/engine/graphics/texture/sampler/filter/gaussian.js +16 -0
- package/engine/graphics/texture/sampler/filter/kaiser_1.js +19 -0
- package/engine/graphics/texture/sampler/filter/kaiser_bessel_window.js +19 -0
- package/engine/graphics/texture/sampler/filter/mitchell.js +55 -0
- package/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.js +109 -0
- package/engine/graphics/texture/sampler/filter/triangle.js +19 -0
- package/engine/graphics/texture/sampler/prototypeSamplerFiltering.js +187 -86
- package/engine/graphics/texture/sampler/sampler2_d_scale_down_lanczos.js +77 -25
- package/engine/graphics/texture/sampler/search/make_edge_condition_channel_threshold.js +34 -0
- package/engine/graphics/texture/sampler/search/sampler2d_find_pixels.js +24 -0
- package/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +212 -0
- package/engine/knowledge/database/StaticKnowledgeDataTable.js +1 -1
- package/engine/navigation/grid/AStar.js +1 -1
- package/engine/plugin/EnginePluginManager.js +28 -27
- package/engine/plugin/PluginReferenceContext.js +9 -0
- package/engine/scene/Scene.js +1 -1
- package/engine/scene/SerializedScene.js +1 -1
- package/engine/scene/transitionToScene.js +3 -1
- package/generation/example/main.js +1 -1
- package/generation/grid/generation/GridTaskApplyActionToCells.js +1 -1
- package/generation/grid/generation/GridTaskDensityMarkerDistribution.js +1 -1
- package/generation/grid/generation/GridTaskExecuteRuleTimes.js +1 -1
- package/generation/grid/generation/NoopGridTaskGenerator.js +1 -1
- package/generation/grid/generation/discrete/GridTaskCellularAutomata.js +2 -1
- package/generation/grid/generation/discrete/GridTaskConnectRooms.js +1 -1
- package/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +3 -2
- package/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +1 -1
- package/generation/grid/generation/grid/GridTaskAddNodesFixed.js +1 -1
- package/generation/grid/generation/road/GridTaskGenerateRoads.js +3 -2
- package/generation/grid/generation/util/buildDistanceMapToObjective.js +1 -1
- package/generation/markers/GridActionRuleSet.js +2 -1
- package/generation/placement/GridCellActionTransformNearbyMarkers.js +2 -4
- package/generation/theme/ThemeEngine.js +4 -1
- package/package.json +1 -1
- package/view/asset/AssetLoaderStatusView.js +5 -5
- package/view/minimap/gl/MinimapTerrainGL.js +1 -2
- package/view/renderModel.js +1 -1
- package/view/tooltip/TooltipView.js +5 -5
- package/core/process/task/TaskUtils.js +0 -352
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import Task from "../Task.js";
|
|
2
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
3
|
+
import { clamp01 } from "../../../math/clamp01.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {number} delay in milliseconds
|
|
8
|
+
* @param {string} [name]
|
|
9
|
+
* @returns {Task}
|
|
10
|
+
*/
|
|
11
|
+
export function delayTask(delay, name = "unnamed") {
|
|
12
|
+
let startTime = -1;
|
|
13
|
+
|
|
14
|
+
const estimatedDuration = delay / 1000;
|
|
15
|
+
return new Task({
|
|
16
|
+
name: `delay (${delay}ms): ${name}`,
|
|
17
|
+
initializer() {
|
|
18
|
+
startTime = Date.now();
|
|
19
|
+
},
|
|
20
|
+
cycleFunction() {
|
|
21
|
+
if (Date.now() >= startTime + delay) {
|
|
22
|
+
return TaskSignal.EndSuccess;
|
|
23
|
+
} else {
|
|
24
|
+
return TaskSignal.Yield;
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
computeProgress() {
|
|
28
|
+
if (startTime === -1) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const currentTime = Date.now();
|
|
33
|
+
const remainingTime = currentTime - startTime;
|
|
34
|
+
|
|
35
|
+
let fraction = remainingTime / delay;
|
|
36
|
+
|
|
37
|
+
if (Number.isNaN(fraction)) {
|
|
38
|
+
fraction = 0;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return clamp01(fraction);
|
|
42
|
+
},
|
|
43
|
+
estimatedDuration
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Task from "../Task.js";
|
|
2
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Does nothing, useful when a task is required but no work is needed
|
|
6
|
+
* @param {string} [name="no-operation"]
|
|
7
|
+
* @returns {Task}
|
|
8
|
+
*/
|
|
9
|
+
export function emptyTask(name = "no-operation") {
|
|
10
|
+
return new Task({
|
|
11
|
+
name,
|
|
12
|
+
cycleFunction: function () {
|
|
13
|
+
return TaskSignal.EndSuccess;
|
|
14
|
+
},
|
|
15
|
+
computeProgress: function () {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import Task from "../Task.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Always fails by throwing an object that was given (typically an Error instance)
|
|
5
|
+
* @param {*} e value to be thrown
|
|
6
|
+
*/
|
|
7
|
+
export function failingTask(e) {
|
|
8
|
+
return new Task({
|
|
9
|
+
name: "Failing Task",
|
|
10
|
+
cycleFunction: function () {
|
|
11
|
+
throw e;
|
|
12
|
+
},
|
|
13
|
+
computeProgress: function () {
|
|
14
|
+
return 0;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
2
|
+
import Task from "../Task.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {Future} future
|
|
7
|
+
* @param {String} name
|
|
8
|
+
* @returns {Task}
|
|
9
|
+
*/
|
|
10
|
+
export function futureTask(future, name) {
|
|
11
|
+
if (typeof future.resolve !== 'function') {
|
|
12
|
+
// Not a future
|
|
13
|
+
throw new Error("No resolve function on the supplied object");
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let resolved = false;
|
|
17
|
+
let rejected = false;
|
|
18
|
+
let error = null;
|
|
19
|
+
|
|
20
|
+
future.then(function () {
|
|
21
|
+
resolved = true;
|
|
22
|
+
}, function (e) {
|
|
23
|
+
rejected = true;
|
|
24
|
+
error = e;
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
function cycle() {
|
|
28
|
+
future.resolve();
|
|
29
|
+
if (resolved) {
|
|
30
|
+
return TaskSignal.EndSuccess;
|
|
31
|
+
} else if (rejected) {
|
|
32
|
+
throw error;
|
|
33
|
+
} else {
|
|
34
|
+
//give up CPU share
|
|
35
|
+
return TaskSignal.Yield;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function progress() {
|
|
40
|
+
return resolved ? 1 : 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return new Task({
|
|
44
|
+
name: name,
|
|
45
|
+
cycleFunction: cycle,
|
|
46
|
+
computeProgress: progress
|
|
47
|
+
});
|
|
48
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
2
|
+
import Task from "../Task.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {Promise} promise
|
|
7
|
+
* @param {string} name
|
|
8
|
+
* @returns {Task}
|
|
9
|
+
*/
|
|
10
|
+
export function promiseTask(promise, name) {
|
|
11
|
+
let resolved = false;
|
|
12
|
+
let rejected = false;
|
|
13
|
+
let error = null;
|
|
14
|
+
|
|
15
|
+
promise.then(function () {
|
|
16
|
+
resolved = true;
|
|
17
|
+
}, function (e) {
|
|
18
|
+
rejected = true;
|
|
19
|
+
error = e;
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
function cycle() {
|
|
23
|
+
if (resolved) {
|
|
24
|
+
return TaskSignal.EndSuccess;
|
|
25
|
+
} else if (rejected) {
|
|
26
|
+
throw error;
|
|
27
|
+
} else {
|
|
28
|
+
//give up CPU share
|
|
29
|
+
return TaskSignal.Yield;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function progress() {
|
|
34
|
+
return resolved ? 1 : 0;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return new Task({
|
|
38
|
+
name: name,
|
|
39
|
+
cycleFunction: cycle,
|
|
40
|
+
computeProgress: progress
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { seededRandom } from "../../../math/random/seededRandom.js";
|
|
2
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
3
|
+
import Task from "../Task.js";
|
|
4
|
+
import { randomizeArrayElementOrder } from "../../../collection/ArrayUtils.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param {number} seed RNG seed
|
|
9
|
+
* @param {number|function(*):number} initial
|
|
10
|
+
* @param {number|function(*):number} limit
|
|
11
|
+
* @param {function(index:int)} callback
|
|
12
|
+
* @returns {Task}
|
|
13
|
+
*/
|
|
14
|
+
export function randomCountTask(seed, initial, limit, callback) {
|
|
15
|
+
|
|
16
|
+
const random = seededRandom(seed);
|
|
17
|
+
|
|
18
|
+
const span = limit - initial;
|
|
19
|
+
|
|
20
|
+
const sequence = new Uint16Array(span);
|
|
21
|
+
|
|
22
|
+
let i = 0;
|
|
23
|
+
|
|
24
|
+
function cycle() {
|
|
25
|
+
if (i >= span) {
|
|
26
|
+
return TaskSignal.EndSuccess;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const order = sequence[i];
|
|
30
|
+
|
|
31
|
+
const index = order + initial;
|
|
32
|
+
|
|
33
|
+
callback(index);
|
|
34
|
+
|
|
35
|
+
i++;
|
|
36
|
+
|
|
37
|
+
return TaskSignal.Continue;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return new Task({
|
|
41
|
+
name: `Count ${initial} -> ${limit}`,
|
|
42
|
+
initializer() {
|
|
43
|
+
|
|
44
|
+
i = 0;
|
|
45
|
+
|
|
46
|
+
//generate sequence
|
|
47
|
+
for (let i = 0; i < span; i++) {
|
|
48
|
+
sequence[i] = i;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//shuffle
|
|
52
|
+
randomizeArrayElementOrder(random, sequence);
|
|
53
|
+
},
|
|
54
|
+
cycleFunction: cycle,
|
|
55
|
+
computeProgress: function () {
|
|
56
|
+
|
|
57
|
+
if (span === 0) {
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return i / span;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import Task from "../Task.js";
|
|
2
|
+
import { TaskSignal } from "../TaskSignal.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {Task} task
|
|
7
|
+
* @returns {Task}
|
|
8
|
+
*/
|
|
9
|
+
export function wrapTaskIgnoreFailure(task) {
|
|
10
|
+
let initializationFailed = false;
|
|
11
|
+
|
|
12
|
+
const wrapper = new Task({
|
|
13
|
+
name: `Ignore Failure of [${task.name}]`,
|
|
14
|
+
initializer() {
|
|
15
|
+
try {
|
|
16
|
+
task.initialize();
|
|
17
|
+
} catch (e) {
|
|
18
|
+
initializationFailed = true;
|
|
19
|
+
console.warn(e);
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
estimatedDuration: task.estimatedDuration,
|
|
23
|
+
cycleFunction() {
|
|
24
|
+
|
|
25
|
+
task.__executedCpuTime = wrapper.__executedCpuTime;
|
|
26
|
+
task.__executedCycleCount = wrapper.__executedCycleCount;
|
|
27
|
+
|
|
28
|
+
if (initializationFailed) {
|
|
29
|
+
//initializer failed, don't execute the source task
|
|
30
|
+
return TaskSignal.EndSuccess;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const c = task.cycle();
|
|
34
|
+
|
|
35
|
+
if (c === TaskSignal.EndFailure) {
|
|
36
|
+
return TaskSignal.EndSuccess;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return c;
|
|
40
|
+
},
|
|
41
|
+
computeProgress() {
|
|
42
|
+
return task.computeProgress();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return wrapper;
|
|
47
|
+
}
|
package/engine/Engine.js
CHANGED
|
@@ -11,10 +11,8 @@ import SoundEngine from './sound/SoundEngine.js';
|
|
|
11
11
|
import { PerspectiveCamera as ThreePerspectiveCamera } from 'three';
|
|
12
12
|
import { PointerDevice } from "./input/devices/PointerDevice.js";
|
|
13
13
|
import KeyboardDevice from "./input/devices/KeyboardDevice.js";
|
|
14
|
-
import Grid from './grid/Grid.js';
|
|
15
14
|
import Preloader from "./asset/preloader/Preloader.js";
|
|
16
15
|
import SceneManager from "./scene/SceneManager.js";
|
|
17
|
-
import CompressionService from "./compression/CompressionService.js";
|
|
18
16
|
|
|
19
17
|
import GUIEngine from './ui/GUIEngine.js';
|
|
20
18
|
import { EntityManager } from "./ecs/EntityManager.js";
|
|
@@ -189,9 +187,10 @@ class Engine {
|
|
|
189
187
|
this.settings = new EngineSettings();
|
|
190
188
|
|
|
191
189
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
190
|
+
/**
|
|
191
|
+
* @deprecated use plugins instead
|
|
192
|
+
*/
|
|
193
|
+
this.services = {};
|
|
195
194
|
|
|
196
195
|
/**
|
|
197
196
|
*
|
|
@@ -251,9 +250,6 @@ class Engine {
|
|
|
251
250
|
*/
|
|
252
251
|
this.sceneManager = new SceneManager(this.entityManager, this.ticker.clock);
|
|
253
252
|
|
|
254
|
-
//
|
|
255
|
-
this.grid = new Grid(this);
|
|
256
|
-
|
|
257
253
|
this.initializeViews();
|
|
258
254
|
|
|
259
255
|
this.devices = {
|
|
@@ -281,6 +277,10 @@ class Engine {
|
|
|
281
277
|
this.plugins.initialize(this);
|
|
282
278
|
}
|
|
283
279
|
|
|
280
|
+
get grid() {
|
|
281
|
+
throw new Error('Deprecated, use systems/components to achieve the same functionality as before');
|
|
282
|
+
}
|
|
283
|
+
|
|
284
284
|
initializeViews() {
|
|
285
285
|
|
|
286
286
|
const viewport = this.graphics.viewport;
|
|
@@ -41,7 +41,7 @@ export class EngineBootstrapper {
|
|
|
41
41
|
|
|
42
42
|
const frameRunner = new FrameRunner(() => {
|
|
43
43
|
vExecutionEngineState.updateText(`Executor: ${engine.executor.queueReady.length} ready, ${engine.executor.queueUnresolved.length} unresolved`);
|
|
44
|
-
vAssetManagerState.updateText(`Assets: ${engine.assetManager.assets.size} loaded, ${engine.assetManager.
|
|
44
|
+
vAssetManagerState.updateText(`Assets: ${engine.assetManager.assets.size} loaded, ${engine.assetManager.request_map.size} pending`);
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
frameRunner.startup();
|