@bitmagic/world-forger 0.1.24-dev.1 → 0.1.24-dev.11
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/dist/artifact-types.d.ts +6 -0
- package/dist/artifact-types.d.ts.map +1 -1
- package/dist/generated/game-data-schema.d.ts +11 -1
- package/dist/generated/game-data-schema.d.ts.map +1 -1
- package/dist/generated/game-data-schema.js +15 -1
- package/dist/generated/game-data-schema.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/physics-mode.d.ts +97 -0
- package/dist/physics-mode.d.ts.map +1 -0
- package/dist/physics-mode.js +101 -0
- package/dist/physics-mode.js.map +1 -0
- package/dist/pipeline/index.d.ts +4 -0
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +4 -0
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/job-types.d.ts +40 -2
- package/dist/pipeline/job-types.d.ts.map +1 -1
- package/dist/pipeline/persist-sideon.d.ts +83 -0
- package/dist/pipeline/persist-sideon.d.ts.map +1 -0
- package/dist/pipeline/persist-sideon.js +196 -0
- package/dist/pipeline/persist-sideon.js.map +1 -0
- package/dist/pipeline/place-and-persist-level.d.ts +14 -1
- package/dist/pipeline/place-and-persist-level.d.ts.map +1 -1
- package/dist/pipeline/place-and-persist-level.js +59 -5
- package/dist/pipeline/place-and-persist-level.js.map +1 -1
- package/dist/pipeline/place-and-persist-sideon.d.ts +43 -0
- package/dist/pipeline/place-and-persist-sideon.d.ts.map +1 -0
- package/dist/pipeline/place-and-persist-sideon.js +352 -0
- package/dist/pipeline/place-and-persist-sideon.js.map +1 -0
- package/dist/pipeline/progress-types.d.ts +15 -0
- package/dist/pipeline/progress-types.d.ts.map +1 -1
- package/dist/pipeline/progress-types.js +6 -0
- package/dist/pipeline/progress-types.js.map +1 -1
- package/dist/pipeline/sideon-layout-map.d.ts +27 -0
- package/dist/pipeline/sideon-layout-map.d.ts.map +1 -0
- package/dist/pipeline/sideon-layout-map.js +96 -0
- package/dist/pipeline/sideon-layout-map.js.map +1 -0
- package/dist/pipeline/sideon-types.d.ts +146 -0
- package/dist/pipeline/sideon-types.d.ts.map +1 -0
- package/dist/pipeline/sideon-types.js +7 -0
- package/dist/pipeline/sideon-types.js.map +1 -0
- package/dist/pipeline/voxelize-level.d.ts.map +1 -1
- package/dist/pipeline/voxelize-level.js +9 -0
- package/dist/pipeline/voxelize-level.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"job-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/job-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EACV,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,mBAAmB,EAC1E,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EACxE,eAAe,EAAE,mBAAmB,EAAE,WAAW,EAClD,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;;4CAEwC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gGAAgG;IAChG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4FAA4F;IAC5F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;iFAC6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;kEAE8D;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6EAA6E;AAC7E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,iBAAiB,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjK,mFAAmF;IACnF,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,oBAAoB,CAAC;IACtC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B
|
|
1
|
+
{"version":3,"file":"job-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/job-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure builder for the SIDE-ON persist step's world.json modifications.
|
|
3
|
+
*
|
|
4
|
+
* A side-on level has no vwld asset, so nothing here WRITES `voxelUrl`,
|
|
5
|
+
* `levels[]` or `startLevelId` — but a pre-existing value in any of them must
|
|
6
|
+
* be CLEARED, for two DIFFERENT reasons:
|
|
7
|
+
* - `voxelUrl` is what the terrain loader itself reads (`WorldGenerator`
|
|
8
|
+
* resolves it before the procedural path), so a stale one loads the old
|
|
9
|
+
* level over the strip and the flat delegation never runs — a billed
|
|
10
|
+
* side-on forge buried under the world it replaced;
|
|
11
|
+
* - a surviving `levels[]`/`startLevelId` does NOT re-point the terrain, but
|
|
12
|
+
* `GameEngine` merges the start level's `overrides` over the world profile
|
|
13
|
+
* (`mergeEffectiveProfile`), so the discarded level's fog/lighting/water
|
|
14
|
+
* still dress the strip — and `LevelManager` throws on any level switch,
|
|
15
|
+
* since every entry names a vwld asset this world no longer loads.
|
|
16
|
+
* A side-on level cannot simply BE a registry entry either: the registry keys
|
|
17
|
+
* on a vwld asset id, and this level has none.
|
|
18
|
+
*
|
|
19
|
+
* DISCARDING A REGISTRY IS LOSSY, and this file follows the one existing
|
|
20
|
+
* precedent for it — `bitmagic levels remove` (cli/src/levels/registry.ts) —
|
|
21
|
+
* whose rule is that a level's content leaves WITH it: its `levelId`-tagged
|
|
22
|
+
* instances, doors and key pickups all go. That is not merely tidiness here.
|
|
23
|
+
* When ONE level of several is removed the orphans go invisible; when the
|
|
24
|
+
* registry EMPTIES, level filtering switches off entirely
|
|
25
|
+
* (game/src/engine/levels/levelResolve.ts returns null for an empty registry,
|
|
26
|
+
* documented as "no level filtering, exactly the pre-levels behavior"), so
|
|
27
|
+
* every discarded level's objects would load AT ONCE on top of the flat strip.
|
|
28
|
+
* The `.vwld` ASSETS survive in `assets[]`, but they carry terrain only — each
|
|
29
|
+
* entry's `spawnPoints` and atmosphere `overrides` live nowhere else, so the
|
|
30
|
+
* replaced registry is stashed on the `worldForgerSideon` carrier — merged
|
|
31
|
+
* field by field across re-forges, so a later forge cannot blank it.
|
|
32
|
+
* The level lands as:
|
|
33
|
+
* - the baked archetype asset upserts (never reused stubs),
|
|
34
|
+
* - a full `environmentObjects` replace of the PREVIOUS side-on set only
|
|
35
|
+
* (instances tagged `sideonForged: true`; user content is kept),
|
|
36
|
+
* - `terrain.shape = 'flat'` + the strip's ground sizes (the baseline voxel
|
|
37
|
+
* WorldGenerator's flat plane is the ground — every template has it),
|
|
38
|
+
* - spawn + spawnPoints (+ rotation) — baseline `prepareStartingPlate()`
|
|
39
|
+
* preserves the configured Y verbatim, so elevated rooftop spawns hold,
|
|
40
|
+
* - the `worldForgerSideon` carrier (plan + as-built layout + the coding-pass
|
|
41
|
+
* feature handoff),
|
|
42
|
+
* - the same orphaned-placeholder purge the 3D persist runs.
|
|
43
|
+
*
|
|
44
|
+
* COMPATIBILITY: uses only existing WorldJsonModification kinds — an old pinned
|
|
45
|
+
* CLI's applyModificationsToWorld throws on an unknown kind AFTER the paid
|
|
46
|
+
* design/expand, so introducing one here is forbidden.
|
|
47
|
+
*/
|
|
48
|
+
import type { WorldJsonModification, WorldJsonShape } from './world-json-types.js';
|
|
49
|
+
import type { SideonPersistCarrier } from './sideon-types.js';
|
|
50
|
+
/** The instance tag that marks side-on forged content (the re-forge replacement key). */
|
|
51
|
+
export declare const SIDEON_FORGED_TAG = "sideonForged";
|
|
52
|
+
export interface PersistSideonInput {
|
|
53
|
+
existingWorldJson: WorldJsonShape;
|
|
54
|
+
/** Baked archetype asset records; reused stubs carry `reused: true`. */
|
|
55
|
+
archetypeAssets: Array<Record<string, unknown>>;
|
|
56
|
+
/** Placed instance records, already reconciled AND tagged `sideonForged: true`. */
|
|
57
|
+
instances: Array<Record<string, unknown>>;
|
|
58
|
+
/** Instance ids removed outright (starter scatter) — must also be dropped from
|
|
59
|
+
* the kept set here, or the final setRoot resurrects them (same trap the 3D
|
|
60
|
+
* builder documents on `removedInstanceIds`). */
|
|
61
|
+
removedInstanceIds?: ReadonlySet<string>;
|
|
62
|
+
spawn: {
|
|
63
|
+
x: number;
|
|
64
|
+
y: number;
|
|
65
|
+
z: number;
|
|
66
|
+
};
|
|
67
|
+
spawnPoints: Array<Record<string, unknown>>;
|
|
68
|
+
playerSpawnRotationY: number | null;
|
|
69
|
+
groundWorldSizeX: number;
|
|
70
|
+
groundWorldSizeZ: number;
|
|
71
|
+
/** Plan-chosen ground block name, or null to keep whatever the game has. */
|
|
72
|
+
groundBlockType: string | null;
|
|
73
|
+
carrier: SideonPersistCarrier;
|
|
74
|
+
/** Asset ids with an HQ job in flight — never purged. */
|
|
75
|
+
activeHqAssetIds: Set<string>;
|
|
76
|
+
}
|
|
77
|
+
export interface PersistSideonOutput {
|
|
78
|
+
modifications: WorldJsonModification[];
|
|
79
|
+
purgedAssetIds: string[];
|
|
80
|
+
notes: string[];
|
|
81
|
+
}
|
|
82
|
+
export declare function buildSideonPersistModifications(input: PersistSideonInput): PersistSideonOutput;
|
|
83
|
+
//# sourceMappingURL=persist-sideon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist-sideon.d.ts","sourceRoot":"","sources":["../../src/pipeline/persist-sideon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,cAAc,CAAC;IAClC,wEAAwE;IACxE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,mFAAmF;IACnF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C;;sDAEkD;IAClD,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,yDAAyD;IACzD,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAyN9F"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { getLevels } from './level-registry.js';
|
|
2
|
+
/** The instance tag that marks side-on forged content (the re-forge replacement key). */
|
|
3
|
+
export const SIDEON_FORGED_TAG = 'sideonForged';
|
|
4
|
+
export function buildSideonPersistModifications(input) {
|
|
5
|
+
const notes = [];
|
|
6
|
+
const world = input.existingWorldJson;
|
|
7
|
+
const profile = world.worldProfileData ?? {};
|
|
8
|
+
// The levels this forge discards (see the file header). Resolved FIRST,
|
|
9
|
+
// because their content has to be dropped from the instance set below.
|
|
10
|
+
const staleLevels = getLevels(world);
|
|
11
|
+
const clearedLevelIds = new Set(staleLevels.map((l) => String(l.id)));
|
|
12
|
+
// ── Instances: replace ONLY the previous side-on set; keep user content. ──
|
|
13
|
+
const removedIds = input.removedInstanceIds ?? new Set();
|
|
14
|
+
const base = world.environmentObjects ?? [];
|
|
15
|
+
const survivingBase = removedIds.size === 0
|
|
16
|
+
? base
|
|
17
|
+
: base.filter((o) => !removedIds.has(String(o.id ?? '')));
|
|
18
|
+
const newIds = new Set(input.instances.map((o) => String(o.id ?? '')));
|
|
19
|
+
// Three exclusions, and the third is the discarded levels' own objects.
|
|
20
|
+
// Filtering them HERE rather than with a `removeRoot` is required, not a
|
|
21
|
+
// shortcut: the `setRoot` below is the last word on `environmentObjects`, so
|
|
22
|
+
// a removeRoot alone would be undone by it (the same trap `removedInstanceIds`
|
|
23
|
+
// documents). UNTAGGED instances are global-by-intent and survive, exactly as
|
|
24
|
+
// `levels remove` leaves them.
|
|
25
|
+
//
|
|
26
|
+
// The test is TAGGEDNESS, not registry membership, whenever a registry is
|
|
27
|
+
// actually being cleared: an object tagged with a level id that is no longer
|
|
28
|
+
// in `levels[]` is the ROUTINE leftover of a level deletion (manage-levels and
|
|
29
|
+
// `bitmagic levels remove` both leave level-scoped doors/keys behind), and it
|
|
30
|
+
// is every bit as invisible today and every bit as visible once the registry
|
|
31
|
+
// empties and level filtering switches off. Membership alone let exactly that
|
|
32
|
+
// content survive onto the strip.
|
|
33
|
+
const isLevelScoped = (o) => (clearedLevelIds.size > 0
|
|
34
|
+
? o.levelId !== undefined
|
|
35
|
+
: clearedLevelIds.has(String(o.levelId ?? '')));
|
|
36
|
+
const droppedWithLevels = survivingBase.filter(isLevelScoped).length;
|
|
37
|
+
const kept = survivingBase.filter((o) => o[SIDEON_FORGED_TAG] !== true
|
|
38
|
+
&& !newIds.has(String(o.id ?? ''))
|
|
39
|
+
&& !isLevelScoped(o));
|
|
40
|
+
const finalInstances = [...kept, ...input.instances];
|
|
41
|
+
const modifications = [
|
|
42
|
+
...input.archetypeAssets
|
|
43
|
+
.filter((a) => a.reused !== true)
|
|
44
|
+
.map((asset) => ({
|
|
45
|
+
type: 'upsertRoot',
|
|
46
|
+
path: ['assets'],
|
|
47
|
+
predicate: (a) => a.id === asset.id,
|
|
48
|
+
value: asset,
|
|
49
|
+
})),
|
|
50
|
+
{ type: 'setRoot', path: ['environmentObjects'], value: finalInstances },
|
|
51
|
+
];
|
|
52
|
+
// ── Terrain: the flat baseline plane is the ground the strip stands on. ──
|
|
53
|
+
// Merge over the existing terrain config so creator-set fields survive, but
|
|
54
|
+
// `shape` is the forge's to own; the plan's ground block wins only when set.
|
|
55
|
+
const existingTerrain = (world.worldProfileData?.terrain ?? {});
|
|
56
|
+
const terrain = {
|
|
57
|
+
...existingTerrain,
|
|
58
|
+
shape: 'flat',
|
|
59
|
+
// Solid to the world floor. The side camera looks at the terrain's
|
|
60
|
+
// cross-section, and the default 3-block fill leaves open sky UNDER the
|
|
61
|
+
// ground — the level reads as a floating texture band. The engine clamps
|
|
62
|
+
// the fill to the world's own bounds, so "generously deep" is exact.
|
|
63
|
+
fillDepthBlocks: 64,
|
|
64
|
+
...(input.groundBlockType !== null ? { groundBlockType: input.groundBlockType } : {}),
|
|
65
|
+
};
|
|
66
|
+
modifications.push({ type: 'set', path: ['terrain'], value: terrain }, { type: 'set', path: ['groundWorldSizeX'], value: input.groundWorldSizeX }, { type: 'set', path: ['groundWorldSizeZ'], value: input.groundWorldSizeZ }, { type: 'set', path: ['playerSpawnPosition'], value: input.spawn }, { type: 'set', path: ['spawnPoints'], value: input.spawnPoints });
|
|
67
|
+
if (input.playerSpawnRotationY !== null) {
|
|
68
|
+
modifications.push({ type: 'set', path: ['playerSpawnRotationY'], value: input.playerSpawnRotationY });
|
|
69
|
+
}
|
|
70
|
+
// ── Discard the previous 3D world (see the file header) ──────────────────
|
|
71
|
+
// Cleared with `set` (an existing modification kind — old pinned CLIs must
|
|
72
|
+
// keep applying this plan), and only when actually present, so the notes
|
|
73
|
+
// stay honest.
|
|
74
|
+
//
|
|
75
|
+
// `''` rather than `null` for the two string fields: the generated GameData
|
|
76
|
+
// schema types `voxelUrl` and `startLevelId` as `string`, and the CLI applies
|
|
77
|
+
// this plan through a strict validator that THROWS on a newly-introduced
|
|
78
|
+
// violation — which lands AFTER the design, expand and archetype bakes are
|
|
79
|
+
// billed, and reproduces on every resume. Empty string is falsy on every
|
|
80
|
+
// engine read path, so it clears exactly as well as null would.
|
|
81
|
+
if (profile.voxelUrl) {
|
|
82
|
+
modifications.push({ type: 'set', path: ['voxelUrl'], value: '' });
|
|
83
|
+
notes.push('Cleared the previous baked level\'s voxelUrl — it would have loaded over the side-on strip.');
|
|
84
|
+
}
|
|
85
|
+
if (staleLevels.length > 0) {
|
|
86
|
+
modifications.push({ type: 'set', path: ['levels'], value: [] });
|
|
87
|
+
notes.push(`Cleared the levels registry (${staleLevels.length} entr${staleLevels.length === 1 ? 'y' : 'ies'}) — a side-on level `
|
|
88
|
+
+ 'uses no registry, and the start level\'s vwld would have loaded over the strip. The discarded registry is '
|
|
89
|
+
+ 'kept verbatim under worldProfileData.worldForgerSideon.replacedLevels.');
|
|
90
|
+
}
|
|
91
|
+
if (profile.startLevelId) {
|
|
92
|
+
modifications.push({ type: 'set', path: ['startLevelId'], value: '' });
|
|
93
|
+
}
|
|
94
|
+
// Water is REPORTED, never cleared. The 3D persist mirrors `waterLevelY` onto
|
|
95
|
+
// the globals for a start level, so a discarded lake still renders as a
|
|
96
|
+
// full-width plane across the flat strip — but the schema types the field
|
|
97
|
+
// `number` (null would fail the CLI's post-payment gate exactly as a null
|
|
98
|
+
// voxelUrl does), and the modification vocabulary has no "delete a scalar
|
|
99
|
+
// key". Both of these are one toggle in the world settings, so the honest
|
|
100
|
+
// move is to say so rather than to write a sentinel.
|
|
101
|
+
if (typeof profile.waterLevelY === 'number') {
|
|
102
|
+
notes.push(`This game has a water plane at y=${profile.waterLevelY}, which renders across the whole strip — `
|
|
103
|
+
+ 'clear it in the world settings if the side-on level should be dry.');
|
|
104
|
+
}
|
|
105
|
+
if (profile.openWater) {
|
|
106
|
+
// Not cosmetic: `WorldGenerator.generateWorld` checks `openWater` FIRST and
|
|
107
|
+
// RETURNS, so no terrain is generated at all and the flat-ground writes
|
|
108
|
+
// above never take effect. The pre-flight gates refuse this combination
|
|
109
|
+
// before anything is billed; reaching here means one was bypassed, so the
|
|
110
|
+
// note has to say the level is unplayable rather than merely wet.
|
|
111
|
+
notes.push('This game has `openWater` set, and an open-water world generates NO terrain at all — the flat ground '
|
|
112
|
+
+ 'this level stands on will not exist and the player will fall. Remove `openWater` from world.json and '
|
|
113
|
+
+ 're-forge.');
|
|
114
|
+
}
|
|
115
|
+
if (droppedWithLevels > 0) {
|
|
116
|
+
notes.push(`Removed ${droppedWithLevels} object${droppedWithLevels === 1 ? '' : 's'} belonging to the discarded `
|
|
117
|
+
+ 'level(s) — with the registry empty they would all have loaded at once on top of the strip.');
|
|
118
|
+
}
|
|
119
|
+
// Level-scoped doors and key pickups go with their levels, exactly as
|
|
120
|
+
// `levels remove` takes them: orphaned entries never spawn again, and their
|
|
121
|
+
// `assetId`s would still count as references pinning placeholder assets
|
|
122
|
+
// against the purge below — permanent dead weight.
|
|
123
|
+
const keptDefinitions = { doors: [], keyItems: [] };
|
|
124
|
+
for (const key of ['doors', 'keyItems']) {
|
|
125
|
+
const existing = (profile[key] ?? []);
|
|
126
|
+
// Same taggedness rule as the instances above — orphan-tagged doors are the
|
|
127
|
+
// normal residue of a level deletion, and they would otherwise stand locked
|
|
128
|
+
// in the middle of a route the expander verified as clear.
|
|
129
|
+
const remaining = existing.filter((e) => !isLevelScoped(e));
|
|
130
|
+
keptDefinitions[key] = remaining;
|
|
131
|
+
if (remaining.length !== existing.length) {
|
|
132
|
+
const gone = existing.length - remaining.length;
|
|
133
|
+
modifications.push({ type: 'set', path: [key], value: remaining });
|
|
134
|
+
notes.push(`Removed ${gone} ${key} entr${gone === 1 ? 'y' : 'ies'} belonging to the discarded level(s).`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// The discarded registry rides the carrier: clearing it drops each entry's
|
|
138
|
+
// `spawnPoints` and atmosphere `overrides`, and those live nowhere else.
|
|
139
|
+
//
|
|
140
|
+
// A RE-FORGE must not erase it. The second side-on forge of a game sees an
|
|
141
|
+
// already-empty registry and has nothing of its own to stash, but the write
|
|
142
|
+
// below replaces `worldForgerSideon` wholesale — so without carrying the
|
|
143
|
+
// previous stash forward, the ordinary "make it longer" loop would destroy
|
|
144
|
+
// the very thing this field exists to preserve.
|
|
145
|
+
// Merged FIELD BY FIELD, never rebuilt: a re-forge may find one field
|
|
146
|
+
// repopulated (an in-engine terrain save rewrites `voxelUrl`) while the
|
|
147
|
+
// registry is still empty, and rebuilding wholesale would then write
|
|
148
|
+
// `levels: []` over the only surviving copy of the original registry.
|
|
149
|
+
const carrierNow = profile.worldForgerSideon;
|
|
150
|
+
const previousStash = (typeof carrierNow === 'object' && carrierNow !== null && !Array.isArray(carrierNow)
|
|
151
|
+
? carrierNow.replacedLevels
|
|
152
|
+
: undefined);
|
|
153
|
+
const previousLevels = Array.isArray(previousStash?.levels) ? previousStash.levels : [];
|
|
154
|
+
const stashLevels = staleLevels.length > 0 ? staleLevels : previousLevels;
|
|
155
|
+
const stashStart = profile.startLevelId ? String(profile.startLevelId) : previousStash?.startLevelId;
|
|
156
|
+
const stashVoxelUrl = profile.voxelUrl ? String(profile.voxelUrl) : previousStash?.voxelUrl;
|
|
157
|
+
const replacedLevels = stashLevels.length > 0 || stashStart || stashVoxelUrl
|
|
158
|
+
? {
|
|
159
|
+
levels: stashLevels,
|
|
160
|
+
...(stashStart ? { startLevelId: stashStart } : {}),
|
|
161
|
+
...(stashVoxelUrl ? { voxelUrl: stashVoxelUrl } : {}),
|
|
162
|
+
}
|
|
163
|
+
: null;
|
|
164
|
+
modifications.push({
|
|
165
|
+
type: 'set',
|
|
166
|
+
path: ['worldForgerSideon'],
|
|
167
|
+
value: replacedLevels ? { ...input.carrier, replacedLevels } : input.carrier,
|
|
168
|
+
});
|
|
169
|
+
// ── Purge orphaned forge placeholders (the 3D persist's predicate). Door and
|
|
170
|
+
// key-pickup assetIds count as references exactly as they do there: the ones
|
|
171
|
+
// belonging to discarded levels were removed above, and whatever survives is
|
|
172
|
+
// still live content whose placeholder must not be purged from under it. ──
|
|
173
|
+
const referencedAssetIds = new Set([
|
|
174
|
+
...finalInstances.map((o) => String(o.assetId)),
|
|
175
|
+
...keptDefinitions.doors.map((d) => String(d.assetId ?? '')),
|
|
176
|
+
...keptDefinitions.keyItems.map((k) => String(k.assetId ?? '')),
|
|
177
|
+
]);
|
|
178
|
+
const upsertedIds = new Set(input.archetypeAssets.map((a) => String(a.id)));
|
|
179
|
+
const purgedAssetIds = (world.assets ?? [])
|
|
180
|
+
.filter((a) => a.placeholder === true &&
|
|
181
|
+
!upsertedIds.has(String(a.id)) &&
|
|
182
|
+
!referencedAssetIds.has(String(a.id)) &&
|
|
183
|
+
!input.activeHqAssetIds.has(String(a.id)))
|
|
184
|
+
.map((a) => String(a.id));
|
|
185
|
+
if (purgedAssetIds.length > 0) {
|
|
186
|
+
const purgedSet = new Set(purgedAssetIds);
|
|
187
|
+
modifications.push({
|
|
188
|
+
type: 'removeRoot',
|
|
189
|
+
path: ['assets'],
|
|
190
|
+
predicate: (a) => purgedSet.has(String(a.id)),
|
|
191
|
+
});
|
|
192
|
+
notes.push(`Purged ${purgedAssetIds.length} orphaned placeholder asset(s)`);
|
|
193
|
+
}
|
|
194
|
+
return { modifications, purgedAssetIds, notes };
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=persist-sideon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persist-sideon.js","sourceRoot":"","sources":["../../src/pipeline/persist-sideon.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ import type { ForgedWorkStore } from './forged-work-store.js';
|
|
|
20
20
|
import type { ForgeDeps } from './deps.js';
|
|
21
21
|
import type { ForgeLevelSummary } from './job-types.js';
|
|
22
22
|
import type { WorldJsonModification } from './world-json-types.js';
|
|
23
|
-
import type { ForgedDungeonView } from '../artifact-types.js';
|
|
23
|
+
import type { ForgedDungeonView, ForgedPlacement } from '../artifact-types.js';
|
|
24
24
|
import type { ForgedHeightGrid } from '../terrain-height-grid.js';
|
|
25
25
|
/** What step 5 produces for the host to apply. */
|
|
26
26
|
export interface PlaceAndPersistResult {
|
|
@@ -41,6 +41,19 @@ export interface PlaceAndPersistResult {
|
|
|
41
41
|
*/
|
|
42
42
|
terrainHeightGrid?: ForgedHeightGrid;
|
|
43
43
|
}
|
|
44
|
+
/** Place all instances via the engine's batch-place path, in chunks. Exported
|
|
45
|
+
* for the side-on step, which shares the placement wire but not the vwld persist. */
|
|
46
|
+
export declare function placeInstances(deps: ForgeDeps, placements: ForgedPlacement[],
|
|
47
|
+
/**
|
|
48
|
+
* How a batch that resolves nothing is treated.
|
|
49
|
+
*
|
|
50
|
+
* `'fatal'` (side-on) — the placed objects ARE the level, so an empty result
|
|
51
|
+
* means the world gains nothing and must not be reported as a success.
|
|
52
|
+
* `'note'` (3D) — the level is the already-uploaded `.vwld`; losing the props
|
|
53
|
+
* costs scenery, and throwing away a paid forge over it is the worse trade,
|
|
54
|
+
* so it degrades with a loud log line instead.
|
|
55
|
+
*/
|
|
56
|
+
onEmptyBatch?: 'fatal' | 'note'): Promise<Array<Record<string, unknown>>>;
|
|
44
57
|
/**
|
|
45
58
|
* Reconcile placed instances against the assets actually being written, so a dangling `assetId`
|
|
46
59
|
* can never make the strict validator discard the WHOLE level at session cleanup (which surfaces
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-and-persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAgC,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAUnE,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"place-and-persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAgC,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAUnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;;OAGG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAsBD;sFACsF;AACtF,wBAAsB,cAAc,CAClC,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,eAAe,EAAE;AAC7B;;;;;;;;GAQG;AACH,YAAY,GAAE,OAAO,GAAG,MAAe,GACtC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAsFzC;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC;IAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgBlF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAC/D,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,cAAc,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CACjG,CAgBA;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,CAAC,CAsPhC"}
|
|
@@ -28,8 +28,19 @@ function describeForge(forge, skippedNames) {
|
|
|
28
28
|
: '';
|
|
29
29
|
return `Objects:\n${objectLines}${markerLines}`;
|
|
30
30
|
}
|
|
31
|
-
/** Place all instances via the engine's batch-place path, in chunks.
|
|
32
|
-
|
|
31
|
+
/** Place all instances via the engine's batch-place path, in chunks. Exported
|
|
32
|
+
* for the side-on step, which shares the placement wire but not the vwld persist. */
|
|
33
|
+
export async function placeInstances(deps, placements,
|
|
34
|
+
/**
|
|
35
|
+
* How a batch that resolves nothing is treated.
|
|
36
|
+
*
|
|
37
|
+
* `'fatal'` (side-on) — the placed objects ARE the level, so an empty result
|
|
38
|
+
* means the world gains nothing and must not be reported as a success.
|
|
39
|
+
* `'note'` (3D) — the level is the already-uploaded `.vwld`; losing the props
|
|
40
|
+
* costs scenery, and throwing away a paid forge over it is the worse trade,
|
|
41
|
+
* so it degrades with a loud log line instead.
|
|
42
|
+
*/
|
|
43
|
+
onEmptyBatch = 'note') {
|
|
33
44
|
const placedInstances = [];
|
|
34
45
|
for (let i = 0; i < placements.length; i += PLACEMENT_BATCH_SIZE) {
|
|
35
46
|
const batch = placements.slice(i, i + PLACEMENT_BATCH_SIZE);
|
|
@@ -49,7 +60,14 @@ async function placeInstances(deps, placements) {
|
|
|
49
60
|
asset_name: p.archetype,
|
|
50
61
|
position: p.position,
|
|
51
62
|
rotation: { x: 0, y: p.rotationYDeg, z: 0 },
|
|
52
|
-
|
|
63
|
+
// Per-axis stretch wins over the uniform scale where declared — the
|
|
64
|
+
// side-on expander stretches buildings vertically to hit their
|
|
65
|
+
// designed rooftop heights (and the audit verifies those heights), so
|
|
66
|
+
// dropping scaleXYZ here would place every such building unstretched
|
|
67
|
+
// while the recorded surfaces claim the stretched tops.
|
|
68
|
+
scale: p.scaleXYZ
|
|
69
|
+
? { x: p.scaleXYZ.x, y: p.scaleXYZ.y, z: p.scaleXYZ.z }
|
|
70
|
+
: { x: p.scale, y: p.scale, z: p.scale },
|
|
53
71
|
// The forge computed exact world-space ground heights on the NEW
|
|
54
72
|
// terrain; a placement raycast would hit the OLD terrain (the new
|
|
55
73
|
// level loads only after the session's reload).
|
|
@@ -60,15 +78,44 @@ async function placeInstances(deps, placements) {
|
|
|
60
78
|
// mass beats the engine's bounding-box estimate.
|
|
61
79
|
...(p.dynamic ? { dynamic: true } : {}),
|
|
62
80
|
...(p.dynamic && p.mass !== undefined ? { mass: p.mass } : {}),
|
|
81
|
+
// Side-on pickups/waypoints: the engine auto-wires CollectibleComponent
|
|
82
|
+
// for `collectible` records, and `name` gives checkpoints/goal a stable
|
|
83
|
+
// identity game code can look up. Absent on every 3D placement, so the
|
|
84
|
+
// wire bytes for existing forges are unchanged.
|
|
85
|
+
...(p.collectible ? { collectible: true } : {}),
|
|
86
|
+
...(p.name !== undefined ? { name: p.name } : {}),
|
|
63
87
|
})),
|
|
64
88
|
}, 'BATCH_VOXEL_OBJECTS_PLACED', PLACEMENT_TIMEOUT_MS);
|
|
65
89
|
if (!result || !Array.isArray(result.results)) {
|
|
66
90
|
throw new Error(`Placing instances ${i + 1}-${i + batch.length} failed or timed out`);
|
|
67
91
|
}
|
|
92
|
+
// A batch that RESOLVED NOTHING is a failure, not an empty success. The
|
|
93
|
+
// engine's batch handler logs "Asset not found … skipping" and continues, so
|
|
94
|
+
// an answered-but-empty result looks identical to a placed one here — and on
|
|
95
|
+
// the side-on lane the placed objects ARE the level, so the run goes on to
|
|
96
|
+
// write flat empty ground, record the job-complete marker, and report
|
|
97
|
+
// success on a forge the creator has already paid for. The known way in is a
|
|
98
|
+
// resumed run: the archetype step is skipped because its artifact exists,
|
|
99
|
+
// but the resume drives a FRESH browser whose asset library was never
|
|
100
|
+
// populated by that bake.
|
|
101
|
+
const resolved = result.results.length;
|
|
102
|
+
if (resolved === 0 && batch.length > 0 && onEmptyBatch === 'fatal') {
|
|
103
|
+
throw new Error(`Placing instances ${i + 1}-${i + batch.length} resolved NO objects — the browser has none of `
|
|
104
|
+
+ 'this level\'s archetype assets, so nothing would be placed. This is what a resume against a '
|
|
105
|
+
+ 'fresh browser looks like: the archetype bake was skipped as already-done, but its assets only '
|
|
106
|
+
+ 'ever existed in the page that baked them. Re-run without resuming so the archetypes are baked '
|
|
107
|
+
+ 'again; the design and geometry are already saved and are not re-billed.');
|
|
108
|
+
}
|
|
109
|
+
// The engine's batch handler skips PER OBJECT, so a batch that lost 199 of
|
|
110
|
+
// 200 answers with one result and looks like a success from here. The
|
|
111
|
+
// all-or-nothing case above is the rarer one; say the quiet part either way.
|
|
112
|
+
if (resolved < batch.length) {
|
|
113
|
+
deps.logger.warn({ from: i + 1, to: i + batch.length, placed: resolved, missing: batch.length - resolved }, 'Instance batch placed FEWER objects than requested — the browser could not resolve some archetype assets');
|
|
114
|
+
}
|
|
68
115
|
const instances = result.instances;
|
|
69
116
|
if (instances)
|
|
70
117
|
placedInstances.push(...instances);
|
|
71
|
-
deps.logger.info({ from: i + 1, to: i + batch.length, placed:
|
|
118
|
+
deps.logger.info({ from: i + 1, to: i + batch.length, placed: resolved }, 'Instance batch placed');
|
|
72
119
|
}
|
|
73
120
|
return placedInstances;
|
|
74
121
|
}
|
|
@@ -280,7 +327,14 @@ export async function placeAndPersistLevel(store, deps) {
|
|
|
280
327
|
deps.logger.info({ jobId: store.jobId, objects: starterScatter.objectIds.length, assets: starterScatter.assetIds.length }, 'Stripping starter-template trees/rocks left behind by the discarded template level');
|
|
281
328
|
}
|
|
282
329
|
const removedObjectIds = new Set(starterScatter.objectIds);
|
|
283
|
-
|
|
330
|
+
// NEVER delete an asset this forge's own instances reference. A starter asset
|
|
331
|
+
// the designer chose to REUSE (`reuseAssetId`) is written back as a reuse stub
|
|
332
|
+
// — which the asset upsert deliberately skips — while its original scatter
|
|
333
|
+
// instances are being removed, so the starter-scatter plan, computed against
|
|
334
|
+
// the OLD world.json alone, still lists it as unreferenced and emits a
|
|
335
|
+
// removal. The result is a live instance pointing at a deleted asset:
|
|
336
|
+
// invisible props in the CLI lane, and a dropped object in the web lane.
|
|
337
|
+
const removedAssetIds = new Set(starterScatter.assetIds.filter((id) => !writableAssetIds.has(String(id))));
|
|
284
338
|
const starterScatterRemovals = [
|
|
285
339
|
...(removedObjectIds.size > 0
|
|
286
340
|
? [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-and-persist-level.js","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"place-and-persist-level.js","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIDE-ON step 4 — place the archetype instances in the browser and PLAN the
|
|
3
|
+
* world.json write for a side-on level (no vwld: flat baseline ground + placed
|
|
4
|
+
* objects ARE the level).
|
|
5
|
+
*
|
|
6
|
+
* Mirrors `place-and-persist-level.ts`'s structure and shares its wire pieces
|
|
7
|
+
* (`placeInstances`, `reconcileInstancesToAssets`, the starter-scatter plan)
|
|
8
|
+
* — the difference is the persist plan: `buildSideonPersistModifications`
|
|
9
|
+
* writes terrain/sizes/spawn/carrier instead of vwld/levels/mirrors.
|
|
10
|
+
*/
|
|
11
|
+
import type { ForgedWorkStore } from './forged-work-store.js';
|
|
12
|
+
import type { ForgeDeps } from './deps.js';
|
|
13
|
+
import type { ForgeLevelSummary } from './job-types.js';
|
|
14
|
+
import type { WorldJsonModification } from './world-json-types.js';
|
|
15
|
+
import type { SpawnPointEntry } from './spawn-points.js';
|
|
16
|
+
/** What the side-on step 4 produces for the host to apply (no heightfield sidecar — the ground is flat). */
|
|
17
|
+
export interface PlaceAndPersistSideonResult {
|
|
18
|
+
summary: ForgeLevelSummary;
|
|
19
|
+
modifications: WorldJsonModification[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Multiplayer spread for a side-on level: extra starts spaced ALONG X on the
|
|
23
|
+
* first surface, never the 3D lane's XZ ring — the gameplay plane is locked to
|
|
24
|
+
* Z=0, and a ring would seat half the players 2 m off it. Same entry shape as
|
|
25
|
+
* `buildSpawnPointEntries`; side-on plans carry no path/playerSpawns/npcSpawns
|
|
26
|
+
* features, so this small builder replaces it rather than parameterizing it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildSideonSpawnPoints(options: {
|
|
29
|
+
playerStart: {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
z: number;
|
|
33
|
+
};
|
|
34
|
+
clearanceM: number;
|
|
35
|
+
playerStartYaw: number | null;
|
|
36
|
+
/** The first walkable surface's extent, to keep extras on standable ground. */
|
|
37
|
+
firstSurface: {
|
|
38
|
+
x0: number;
|
|
39
|
+
x1: number;
|
|
40
|
+
} | null;
|
|
41
|
+
}): SpawnPointEntry[];
|
|
42
|
+
export declare function placeAndPersistSideonLevel(store: ForgedWorkStore, deps: ForgeDeps): Promise<PlaceAndPersistSideonResult>;
|
|
43
|
+
//# sourceMappingURL=place-and-persist-sideon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"place-and-persist-sideon.d.ts","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-sideon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAMnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAiBzD,4GAA4G;AAC5G,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,aAAa,EAAE,qBAAqB,EAAE,CAAC;CACxC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,WAAW,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+EAA+E;IAC/E,YAAY,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACjD,GAAG,eAAe,EAAE,CAiBpB;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,2BAA2B,CAAC,CAkStC"}
|