@woosh/meep-engine 2.85.18 → 2.85.19
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
CHANGED
|
@@ -16,6 +16,16 @@ export class ThemeEngine {
|
|
|
16
16
|
*/
|
|
17
17
|
private __assetManager;
|
|
18
18
|
set assetManager(arg: any);
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {number} v
|
|
22
|
+
*/
|
|
23
|
+
set seed(arg: number);
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @returns {number}
|
|
27
|
+
*/
|
|
28
|
+
get seed(): number;
|
|
19
29
|
/**
|
|
20
30
|
*
|
|
21
31
|
* @param {AreaTheme} theme
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeEngine.d.ts","sourceRoot":"","sources":["../../../../src/generation/theme/ThemeEngine.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ThemeEngine.d.ts","sourceRoot":"","sources":["../../../../src/generation/theme/ThemeEngine.js"],"names":[],"mappings":"AAiFA;IAEI;;;OAGG;IACH,OAFU,uBAAuB,CAEN;IAE3B;;;OAGG;IACH,cAFqB,MAAM,CAEF;IAEzB;;;;OAIG;IACH,uBAAsB;IAEtB,2BAEC;IAED;;;OAGG;IACH,sBAEC;IAED;;;OAGG;IACH,mBAEC;IAED;;;OAGG;IACH,4BAUC;IAED;;;;;;OAMG;IACH,4BALW,WAAW,KACX,MAAM,KACN,MAAM,GACJ,MAAM,CA8BlB;IAED;;;;;;OAMG;IACH,uBALW,MAAM,gDAGJ,IAAI,CAmChB;IAED;;;;;OAKG;IACH,sDAFa,SAAS,CAiLrB;IAED;;;;;;OAMG;IACH,+DAHW,MAAM,GACJ,IAAI,GAAC,SAAS,CAoG1B;IAED;;;;OAIG;IACH,kEAqCC;IAED;;;;OAIG;IACH,iCAFa,IAAI,CAIhB;IAED;;;;OAIG;IACH,uCAHa,SAAS,CAYrB;IAED;;;;;OAKG;IACH,oDAFa,SAAS,CA2DrB;CACJ;6BA7nB4B,8CAA8C;iBAK1D,iCAAiC;sBAC5B,sCAAsC"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {assert} from "../../core/assert.js";
|
|
2
|
-
import {binarySearchLowIndex} from "../../core/collection/array/binarySearchLowIndex.js";
|
|
3
|
-
import {HashMap} from "../../core/collection/map/HashMap.js";
|
|
4
|
-
import {QuadTreeNode} from "../../core/geom/2d/quad-tree/QuadTreeNode.js";
|
|
5
|
-
import {randomFloatBetween} from "../../core/math/random/randomFloatBetween.js";
|
|
6
|
-
import {seededRandom} from "../../core/math/random/seededRandom.js";
|
|
7
|
-
import {number_compare_ascending} from "../../core/primitives/numbers/number_compare_ascending.js";
|
|
1
|
+
import { assert } from "../../core/assert.js";
|
|
2
|
+
import { binarySearchLowIndex } from "../../core/collection/array/binarySearchLowIndex.js";
|
|
3
|
+
import { HashMap } from "../../core/collection/map/HashMap.js";
|
|
4
|
+
import { QuadTreeNode } from "../../core/geom/2d/quad-tree/QuadTreeNode.js";
|
|
5
|
+
import { randomFloatBetween } from "../../core/math/random/randomFloatBetween.js";
|
|
6
|
+
import { seededRandom } from "../../core/math/random/seededRandom.js";
|
|
7
|
+
import { number_compare_ascending } from "../../core/primitives/numbers/number_compare_ascending.js";
|
|
8
8
|
import Future from "../../core/process/Future.js";
|
|
9
9
|
import Task from "../../core/process/task/Task.js";
|
|
10
10
|
import TaskGroup from "../../core/process/task/TaskGroup.js";
|
|
11
|
-
import {TaskSignal} from "../../core/process/task/TaskSignal.js";
|
|
12
|
-
import {actionTask} from "../../core/process/task/util/actionTask.js";
|
|
13
|
-
import {countTask} from "../../core/process/task/util/countTask.js";
|
|
14
|
-
import {emptyTask} from "../../core/process/task/util/emptyTask.js";
|
|
15
|
-
import {futureTask} from "../../core/process/task/util/futureTask.js";
|
|
16
|
-
import {TerrainLayer} from "../../engine/ecs/terrain/ecs/layers/TerrainLayer.js";
|
|
17
|
-
import {TerrainFlags} from "../../engine/ecs/terrain/ecs/TerrainFlags.js";
|
|
18
|
-
import {obtainTerrain} from "../../engine/ecs/terrain/util/obtainTerrain.js";
|
|
19
|
-
import {Sampler2D} from "../../engine/graphics/texture/sampler/Sampler2D.js";
|
|
20
|
-
import {TerrainLayerRuleAggregator} from "./TerrainLayerRuleAggregator.js";
|
|
11
|
+
import { TaskSignal } from "../../core/process/task/TaskSignal.js";
|
|
12
|
+
import { actionTask } from "../../core/process/task/util/actionTask.js";
|
|
13
|
+
import { countTask } from "../../core/process/task/util/countTask.js";
|
|
14
|
+
import { emptyTask } from "../../core/process/task/util/emptyTask.js";
|
|
15
|
+
import { futureTask } from "../../core/process/task/util/futureTask.js";
|
|
16
|
+
import { TerrainLayer } from "../../engine/ecs/terrain/ecs/layers/TerrainLayer.js";
|
|
17
|
+
import { TerrainFlags } from "../../engine/ecs/terrain/ecs/TerrainFlags.js";
|
|
18
|
+
import { obtainTerrain } from "../../engine/ecs/terrain/util/obtainTerrain.js";
|
|
19
|
+
import { Sampler2D } from "../../engine/graphics/texture/sampler/Sampler2D.js";
|
|
20
|
+
import { TerrainLayerRuleAggregator } from "./TerrainLayerRuleAggregator.js";
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
*
|
|
@@ -52,6 +52,33 @@ function prepare_terrain_for_themes(layer_mapping, themes) {
|
|
|
52
52
|
return max;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
function makeTaskEnsureAllTiles(terrain) {
|
|
56
|
+
return futureTask(new Future((resolve, reject) => {
|
|
57
|
+
|
|
58
|
+
const is_linked = terrain.getFlag(TerrainFlags.Linked);
|
|
59
|
+
|
|
60
|
+
if (!is_linked) {
|
|
61
|
+
terrain.startBuildService();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!terrain.getFlag(TerrainFlags.Built)) {
|
|
65
|
+
terrain.buildNonVisual();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
terrain.__tiles.rebuild();
|
|
69
|
+
|
|
70
|
+
terrain.promiseAllTiles()
|
|
71
|
+
.then(resolve, reject)
|
|
72
|
+
.finally(() => {
|
|
73
|
+
if (!is_linked && !terrain.getFlag(TerrainFlags.Linked)) {
|
|
74
|
+
// cleanup after ourselves
|
|
75
|
+
terrain.stopBuildService();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
}), 'Wait for terrain tiles');
|
|
80
|
+
}
|
|
81
|
+
|
|
55
82
|
export class ThemeEngine {
|
|
56
83
|
|
|
57
84
|
/**
|
|
@@ -77,6 +104,22 @@ export class ThemeEngine {
|
|
|
77
104
|
this.__assetManager = v;
|
|
78
105
|
}
|
|
79
106
|
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* @param {number} v
|
|
110
|
+
*/
|
|
111
|
+
set seed(v) {
|
|
112
|
+
this.random.setCurrentSeed(v);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
*
|
|
117
|
+
* @returns {number}
|
|
118
|
+
*/
|
|
119
|
+
get seed() {
|
|
120
|
+
return this.random.getCurrentSeed();
|
|
121
|
+
}
|
|
122
|
+
|
|
80
123
|
/**
|
|
81
124
|
*
|
|
82
125
|
* @param {AreaTheme} theme
|
|
@@ -540,70 +583,59 @@ export class ThemeEngine {
|
|
|
540
583
|
apply(grid, ecd) {
|
|
541
584
|
const terrain = obtainTerrain(ecd);
|
|
542
585
|
|
|
543
|
-
// build terrain tiles
|
|
544
|
-
const tTerrainGeometry = futureTask(new Future((resolve, reject) => {
|
|
545
|
-
|
|
546
|
-
const is_linked = terrain.getFlag(TerrainFlags.Linked);
|
|
547
|
-
|
|
548
|
-
if (!is_linked) {
|
|
549
|
-
terrain.startBuildService();
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
if (!terrain.getFlag(TerrainFlags.Built)) {
|
|
553
|
-
terrain.buildNonVisual();
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
terrain.__tiles.rebuild();
|
|
557
|
-
|
|
558
|
-
terrain.promiseAllTiles()
|
|
559
|
-
.then(resolve, reject)
|
|
560
|
-
.finally(() => {
|
|
561
|
-
if (!is_linked && !terrain.getFlag(TerrainFlags.Linked)) {
|
|
562
|
-
// cleanup after ourselves
|
|
563
|
-
terrain.stopBuildService();
|
|
564
|
-
}
|
|
565
|
-
});
|
|
566
|
-
|
|
567
|
-
}), 'Wait for terrain tiles');
|
|
568
|
-
|
|
569
586
|
const tInitializeThemes = this.initializeThemes(this.random(), ecd, grid);
|
|
570
587
|
|
|
571
|
-
const tTerrain = this.applyTerrainThemes(grid, terrain);
|
|
572
|
-
|
|
573
588
|
const tNodes = this.applyNodes(grid, ecd);
|
|
574
589
|
|
|
575
590
|
const tCells = this.applyCellRules(grid, ecd);
|
|
576
591
|
|
|
577
|
-
tTerrain.addDependency(tInitializeThemes);
|
|
578
|
-
|
|
579
592
|
tNodes.addDependencies([
|
|
580
593
|
tInitializeThemes,
|
|
581
|
-
tTerrainGeometry,
|
|
582
|
-
tTerrain
|
|
583
594
|
]);
|
|
584
595
|
|
|
585
596
|
tCells.addDependency(tInitializeThemes);
|
|
586
|
-
tTerrainGeometry.addDependency(tCells);
|
|
587
597
|
|
|
588
598
|
const tOptimize = this.optimize(ecd);
|
|
589
599
|
|
|
590
|
-
const tUpdateTerrain = this.updateTerrain(terrain);
|
|
591
|
-
|
|
592
|
-
tUpdateTerrain.addDependencies([
|
|
593
|
-
tTerrain,
|
|
594
|
-
tNodes,
|
|
595
|
-
tCells,
|
|
596
|
-
tTerrainGeometry
|
|
597
|
-
]);
|
|
598
|
-
|
|
599
600
|
tOptimize.addDependencies([
|
|
600
|
-
tUpdateTerrain,
|
|
601
|
-
tTerrain,
|
|
602
601
|
tNodes,
|
|
603
602
|
tCells,
|
|
604
603
|
tInitializeThemes
|
|
605
604
|
]);
|
|
606
605
|
|
|
607
|
-
|
|
606
|
+
const subtasks = [tInitializeThemes, tNodes, tCells, tOptimize];
|
|
607
|
+
|
|
608
|
+
if (terrain !== null) {
|
|
609
|
+
// build terrain tiles
|
|
610
|
+
const tTerrainGeometry = makeTaskEnsureAllTiles(terrain);
|
|
611
|
+
const tTerrain = this.applyTerrainThemes(grid, terrain);
|
|
612
|
+
tTerrain.addDependency(tInitializeThemes);
|
|
613
|
+
|
|
614
|
+
const tUpdateTerrain = this.updateTerrain(terrain);
|
|
615
|
+
|
|
616
|
+
tUpdateTerrain.addDependencies([
|
|
617
|
+
tTerrain,
|
|
618
|
+
tNodes,
|
|
619
|
+
tCells,
|
|
620
|
+
tTerrainGeometry
|
|
621
|
+
]);
|
|
622
|
+
|
|
623
|
+
tNodes.addDependencies([
|
|
624
|
+
tTerrain,
|
|
625
|
+
tTerrainGeometry,
|
|
626
|
+
]);
|
|
627
|
+
tTerrainGeometry.addDependency(tCells);
|
|
628
|
+
|
|
629
|
+
tOptimize.addDependencies([
|
|
630
|
+
tUpdateTerrain,
|
|
631
|
+
tTerrain,
|
|
632
|
+
]);
|
|
633
|
+
|
|
634
|
+
subtasks.push(tTerrainGeometry, tTerrain, tUpdateTerrain);
|
|
635
|
+
} else {
|
|
636
|
+
console.warn(`No terrain present, skipping terrain theming`);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
return new TaskGroup(subtasks);
|
|
608
640
|
}
|
|
609
641
|
}
|