@bitmagic/cli 0.1.64-dev.1 → 0.1.64-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/README.md +80 -5
- package/assets/blender-level/README.md +25 -0
- package/assets/blender-level/audit.py +232 -0
- package/assets/blender-level/bmlevel/__init__.py +294 -0
- package/assets/blender-level/bmlevel/core.py +438 -0
- package/assets/blender-level/bmlevel/scene_bpy.py +186 -0
- package/assets/blender-level/bmlevel/scene_null.py +44 -0
- package/assets/blender-level/example_level.py +80 -0
- package/assets/blender-level/find_blender.py +62 -0
- package/assets/blender-level/review.py +117 -0
- package/assets/blender-level/sync_world.py +85 -0
- package/assets/blender-level/tests/test_core.py +189 -0
- package/dist/assets/keep-glb.d.ts +20 -0
- package/dist/assets/keep-glb.js +45 -0
- package/dist/assets/keep-glb.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/assets.d.ts +3 -0
- package/dist/commands/assets.js +33 -3
- package/dist/commands/assets.js.map +1 -1
- package/dist/commands/cover.js +7 -1
- package/dist/commands/cover.js.map +1 -1
- package/dist/commands/forge.d.ts +2 -0
- package/dist/commands/forge.js +76 -12
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +88 -1
- package/dist/commands/generate.js +400 -21
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.js +33 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/judge.d.ts +0 -11
- package/dist/commands/judge.js +15 -2
- package/dist/commands/judge.js.map +1 -1
- package/dist/commands/levels.d.ts +1 -1
- package/dist/commands/levels.js +14 -3
- package/dist/commands/levels.js.map +1 -1
- package/dist/commands/reference.js +5 -1
- package/dist/commands/reference.js.map +1 -1
- package/dist/commands/reset-account.js +2 -11
- package/dist/commands/reset-account.js.map +1 -1
- package/dist/commands/tools.d.ts +1 -0
- package/dist/commands/tools.js +73 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/trailer.js +18 -4
- package/dist/commands/trailer.js.map +1 -1
- package/dist/editor/asset-detail-panel.d.ts +8 -3
- package/dist/editor/asset-detail-panel.js +11 -1
- package/dist/editor/asset-detail-panel.js.map +1 -1
- package/dist/editor/hud-replay-page.js +317 -22
- package/dist/editor/hud-replay-page.js.map +1 -1
- package/dist/editor/shell-page.js +117 -7
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/forge/apply-modifications.js +70 -2
- package/dist/forge/apply-modifications.js.map +1 -1
- package/dist/forge/progress.d.ts +10 -0
- package/dist/forge/progress.js +7 -6
- package/dist/forge/progress.js.map +1 -1
- package/dist/forge/run-pipeline.d.ts +8 -0
- package/dist/forge/run-pipeline.js +37 -2
- package/dist/forge/run-pipeline.js.map +1 -1
- package/dist/forge/stream.d.ts +7 -1
- package/dist/forge/stream.js +5 -2
- package/dist/forge/stream.js.map +1 -1
- package/dist/forge/two-d-gate.d.ts +82 -0
- package/dist/forge/two-d-gate.js +232 -0
- package/dist/forge/two-d-gate.js.map +1 -0
- package/dist/generate/animation-from-video.d.ts +11 -3
- package/dist/generate/animation-from-video.js +12 -2
- package/dist/generate/animation-from-video.js.map +1 -1
- package/dist/generate/model.d.ts +11 -0
- package/dist/generate/model.js +41 -1
- package/dist/generate/model.js.map +1 -1
- package/dist/generate/prop.d.ts +9 -0
- package/dist/generate/prop.js +59 -9
- package/dist/generate/prop.js.map +1 -1
- package/dist/generate/video-review.d.ts +28 -0
- package/dist/generate/video-review.js +120 -0
- package/dist/generate/video-review.js.map +1 -0
- package/dist/project/art-style.d.ts +34 -0
- package/dist/project/art-style.js +63 -0
- package/dist/project/art-style.js.map +1 -0
- package/dist/prompt.d.ts +9 -0
- package/dist/prompt.js +36 -0
- package/dist/prompt.js.map +1 -0
- package/dist/publish/bundle.d.ts +12 -0
- package/dist/publish/bundle.js +32 -0
- package/dist/publish/bundle.js.map +1 -1
- package/dist/render/qr-png.d.ts +6 -3
- package/dist/render/qr-png.js +8 -8
- package/dist/render/qr-png.js.map +1 -1
- package/dist/scaffold/blender-level-skill-files.d.ts +26 -0
- package/dist/scaffold/blender-level-skill-files.js +570 -0
- package/dist/scaffold/blender-level-skill-files.js.map +1 -0
- package/dist/scaffold/claude-settings.js +2 -0
- package/dist/scaffold/claude-settings.js.map +1 -1
- package/dist/scaffold/project-files.d.ts +2 -1
- package/dist/scaffold/project-files.js +125 -42
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.d.ts +9 -0
- package/dist/scaffold/project.js +29 -3
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/reference-guidance.d.ts +1 -1
- package/dist/scaffold/reference-guidance.js +2 -1
- package/dist/scaffold/reference-guidance.js.map +1 -1
- package/dist/scaffold/skill-files.js +3 -1
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/scaffold/unity-skill-files.js +1 -2
- package/dist/scaffold/unity-skill-files.js.map +1 -1
- package/dist/tools/bundles.d.ts +21 -0
- package/dist/tools/bundles.js +67 -0
- package/dist/tools/bundles.js.map +1 -0
- package/dist/trailer/ffmpeg.d.ts +10 -0
- package/dist/trailer/ffmpeg.js +51 -6
- package/dist/trailer/ffmpeg.js.map +1 -1
- package/dist/trailer/hud-raster.d.ts +12 -12
- package/dist/trailer/hud-raster.js +85 -32
- package/dist/trailer/hud-raster.js.map +1 -1
- package/dist/trailer/hud-state.d.ts +75 -4
- package/dist/trailer/hud-state.js +132 -17
- package/dist/trailer/hud-state.js.map +1 -1
- package/dist/trailer/io.d.ts +2 -0
- package/dist/trailer/io.js +6 -1
- package/dist/trailer/io.js.map +1 -1
- package/dist/trailer/link.d.ts +1 -0
- package/dist/trailer/link.js +15 -0
- package/dist/trailer/link.js.map +1 -0
- package/dist/trailer/make.d.ts +2 -0
- package/dist/trailer/make.js +1 -0
- package/dist/trailer/make.js.map +1 -1
- package/dist/trailer/merge.js +32 -11
- package/dist/trailer/merge.js.map +1 -1
- package/dist/trailer/music-beats.js +4 -39
- package/dist/trailer/music-beats.js.map +1 -1
- package/dist/trailer/render.d.ts +2 -0
- package/dist/trailer/render.js +94 -48
- package/dist/trailer/render.js.map +1 -1
- package/dist/trailer/timeline-types.d.ts +19 -0
- package/dist/trailer/timeline-types.js +42 -2
- package/dist/trailer/timeline-types.js.map +1 -1
- package/dist/trailer/title-raster.js +2 -1
- package/dist/trailer/title-raster.js.map +1 -1
- package/dist/trailer/titles.js +6 -1
- package/dist/trailer/titles.js.map +1 -1
- package/dist/trailer/video-chain.d.ts +96 -8
- package/dist/trailer/video-chain.js +183 -0
- package/dist/trailer/video-chain.js.map +1 -1
- package/dist/verify/browser.js +4 -1
- package/dist/verify/browser.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The 2D pre-flight for `bitmagic forge` — the CLI mirror of the web lane's
|
|
3
|
+
* `runWorldForger` routing (that tool now ROUTES a side-view 2D game to the
|
|
4
|
+
* side-on pipeline and refuses only the shapes neither lane fits; until this
|
|
5
|
+
* existed the CLI had no gate at all, so a 2D project could pay for a full
|
|
6
|
+
* design+geometry pass and get a wrong 3D level written into world.json).
|
|
7
|
+
*
|
|
8
|
+
* Classification is the shared `classifyGame2D` rule from
|
|
9
|
+
* `@bitmagic/world-forger`, reading the same fields the web lane reads:
|
|
10
|
+
* game.json `gameGenre`/`gameDimension`/`physicsMode` and world.json
|
|
11
|
+
* `worldProfileData.cameraMode`. Runs BEFORE any request is sent — steps 1-2
|
|
12
|
+
* bill, so this refusal must cost nothing.
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
import { classifyGame2D, runsGroundPlanePhysics } from '@bitmagic/world-forger/physics-mode.js';
|
|
17
|
+
import { CliError } from '../errors.js';
|
|
18
|
+
import { projectWorldJsonPath } from './run-pipeline.js';
|
|
19
|
+
/**
|
|
20
|
+
* The project's 2D classification, from its work game.json + world.json.
|
|
21
|
+
*
|
|
22
|
+
* Missing or unreadable files classify as `not-2d` on purpose: the forge's own
|
|
23
|
+
* later reads produce the real, better-contextualized error for a broken
|
|
24
|
+
* project, and a gate must never block a healthy 3D game over a parse hiccup.
|
|
25
|
+
*/
|
|
26
|
+
export function readGame2DClass(root) {
|
|
27
|
+
let gameGenre = '';
|
|
28
|
+
let gameDimension;
|
|
29
|
+
let physicsMode;
|
|
30
|
+
let cameraMode;
|
|
31
|
+
try {
|
|
32
|
+
const game = JSON.parse(fs.readFileSync(path.join(root, 'src', 'work', 'game.json'), 'utf-8'));
|
|
33
|
+
if (typeof game.gameGenre === 'string')
|
|
34
|
+
gameGenre = game.gameGenre;
|
|
35
|
+
gameDimension = game.gameDimension;
|
|
36
|
+
physicsMode = game.physicsMode;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// Unreadable game.json → treat as not-2d; see the doc comment.
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const world = JSON.parse(fs.readFileSync(projectWorldJsonPath(root), 'utf-8'));
|
|
43
|
+
const profile = world.worldProfileData;
|
|
44
|
+
cameraMode = profile?.cameraMode;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Unreadable world.json → no camera signal; the game.json fields decide.
|
|
48
|
+
}
|
|
49
|
+
return classifyGame2D({ gameGenre, gameDimension, physicsMode, cameraMode });
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Route `bitmagic forge` by the project's dimension, before anything is sent
|
|
53
|
+
* or billed:
|
|
54
|
+
* - 3D projects → the 3D pipeline (unchanged);
|
|
55
|
+
* - side-view 2D projects (voxel lane, any template) → the SIDE-ON pipeline
|
|
56
|
+
* (a strip level: flat ground + placed buildings/platforms/pickups);
|
|
57
|
+
* - the Physics2D genre and top-down 2D projects → a refusal (neither a 3D
|
|
58
|
+
* roamable level nor a side-on strip fits them).
|
|
59
|
+
*/
|
|
60
|
+
export function resolveForgeLane(root) {
|
|
61
|
+
return resolveForgeLaneForRun({ root, frozen: null, resumeJobId: null });
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The resume-aware routing `commands/forge.ts` actually runs: a resumed job
|
|
65
|
+
* carries its lane frozen in the local `input` artifact, and that lane is the
|
|
66
|
+
* ONLY one its saved artifacts can continue on — both lanes share artifact
|
|
67
|
+
* names, so a project whose game.json dimension flipped between the failed run
|
|
68
|
+
* and the resume must be refused here (loud, free) rather than fed the other
|
|
69
|
+
* lane's cached spec. A resume with no local record (started elsewhere,
|
|
70
|
+
* `.bitmagic/` cleared) falls back to the project's own classification, and
|
|
71
|
+
* api-server's identical frozen-lane check backstops it before any charge.
|
|
72
|
+
*/
|
|
73
|
+
export function resolveForgeLaneForRun(options) {
|
|
74
|
+
const projectClass = readGame2DClass(options.root);
|
|
75
|
+
const projectLane = projectClass === 'not-2d' ? 'threed' : projectClass === 'sideon-eligible' ? 'sideon' : null;
|
|
76
|
+
if (options.frozen) {
|
|
77
|
+
// Jobs frozen before the lane field existed are all 3D by construction.
|
|
78
|
+
const frozenLane = options.frozen.lane === 'sideon' ? 'sideon' : 'threed';
|
|
79
|
+
if (projectLane !== frozenLane) {
|
|
80
|
+
const was = frozenLane === 'sideon' ? '2D side-view' : '3D';
|
|
81
|
+
const now = projectLane === null
|
|
82
|
+
? 'is a 2D game the forge has no fit for'
|
|
83
|
+
: `routes ${projectLane === 'sideon' ? '2D side-view' : '3D'}`;
|
|
84
|
+
throw new CliError(`Job "${options.resumeJobId}" is a ${was} forge, but this project now ${now} — its saved `
|
|
85
|
+
+ 'artifacts cannot continue on this lane. Nothing was sent or billed. Start a fresh forge '
|
|
86
|
+
+ 'for the project as it is now, or restore the game.json dimension the job was started '
|
|
87
|
+
+ 'with and resume again.');
|
|
88
|
+
}
|
|
89
|
+
return frozenLane;
|
|
90
|
+
}
|
|
91
|
+
if (projectLane === null) {
|
|
92
|
+
throw new CliError('This project is a 2D game the forge has no fit for (the Physics2D genre, or a top-down 2D '
|
|
93
|
+
+ 'camera): `bitmagic forge` builds 3D roamable levels and side-VIEW 2D strips only. Build '
|
|
94
|
+
+ 'the level in code instead (your WorldGenerator and placed assets). Nothing was sent or billed.');
|
|
95
|
+
}
|
|
96
|
+
return projectLane;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Refuse a side-on forge on an OPEN-WATER world, before anything is sent.
|
|
100
|
+
*
|
|
101
|
+
* `WorldGenerator.generateWorld` checks `worldProfileData.openWater` FIRST and
|
|
102
|
+
* returns — an open-water world builds no terrain at all. A side-on level is
|
|
103
|
+
* flat ground plus placed objects, so it would be paid for, reported as a
|
|
104
|
+
* success, and drop the player straight through a world with no floor. The flag
|
|
105
|
+
* cannot be cleared for them either: the schema types it as an object and the
|
|
106
|
+
* modification vocabulary has no "delete a key", so the only honest move is to
|
|
107
|
+
* refuse while it is still free.
|
|
108
|
+
*/
|
|
109
|
+
export function assertNotOpenWater(root) {
|
|
110
|
+
try {
|
|
111
|
+
const world = JSON.parse(fs.readFileSync(projectWorldJsonPath(root), 'utf-8'));
|
|
112
|
+
const profile = world.worldProfileData;
|
|
113
|
+
if (!profile?.openWater)
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return; // unreadable world.json → the forge's own later error is better
|
|
118
|
+
}
|
|
119
|
+
throw new CliError('This project is an OPEN-WATER world (`worldProfileData.openWater`), which generates no terrain at all — '
|
|
120
|
+
+ 'so a side-on level would have no ground to stand on and the player would fall straight through. Remove '
|
|
121
|
+
+ '`openWater` from src/work/world.json first, then forge. Nothing was sent or billed.');
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* What a side-on forge will DESTROY in this project, or null when nothing.
|
|
125
|
+
*
|
|
126
|
+
* A side-on level is not a registry entry, so the forge empties the registry and
|
|
127
|
+
* takes each discarded level's objects with it (see persist-sideon.ts). That is
|
|
128
|
+
* unavoidable for the lane, but the creator has to hear it BEFORE the bill, not
|
|
129
|
+
* from a note afterwards — this runs at the same free pre-flight as the lane
|
|
130
|
+
* gate. The registry itself is preserved on the carrier; the objects are not.
|
|
131
|
+
*/
|
|
132
|
+
export function describeSideonRegistryLoss(root) {
|
|
133
|
+
try {
|
|
134
|
+
const world = JSON.parse(fs.readFileSync(projectWorldJsonPath(root), 'utf-8'));
|
|
135
|
+
const profile = world.worldProfileData;
|
|
136
|
+
const levels = Array.isArray(profile?.levels) ? profile.levels : [];
|
|
137
|
+
if (levels.length === 0)
|
|
138
|
+
return null;
|
|
139
|
+
const objects = Array.isArray(world.environmentObjects) ? world.environmentObjects : [];
|
|
140
|
+
// Counted the SAME way persist-sideon removes them (taggedness, not registry
|
|
141
|
+
// membership) and across all three arrays — doors and key items are the part
|
|
142
|
+
// the stash does NOT preserve, so under-reporting them is the worst thing
|
|
143
|
+
// this message could do.
|
|
144
|
+
const scoped = (list) => (Array.isArray(list)
|
|
145
|
+
? list.filter((e) => e.levelId !== undefined).length
|
|
146
|
+
: 0);
|
|
147
|
+
const doomedObjects = objects.filter((o) => o.levelId !== undefined).length;
|
|
148
|
+
const doomedDoors = scoped(profile?.doors);
|
|
149
|
+
const doomedKeys = scoped(profile?.keyItems);
|
|
150
|
+
const extra = [
|
|
151
|
+
doomedDoors > 0 ? `${doomedDoors} door${doomedDoors === 1 ? '' : 's'}` : '',
|
|
152
|
+
doomedKeys > 0 ? `${doomedKeys} key item${doomedKeys === 1 ? '' : 's'}` : '',
|
|
153
|
+
].filter(Boolean).join(' and ');
|
|
154
|
+
const names = levels.map((l) => String(l.name ?? l.id ?? '?')).join(', ');
|
|
155
|
+
return `This project has ${levels.length} level${levels.length === 1 ? '' : 's'} (${names}). A 2D side-view level `
|
|
156
|
+
+ 'is a single flat strip and cannot live in the levels registry, so this forge REPLACES them: the registry is '
|
|
157
|
+
+ `emptied and ${doomedObjects} object${doomedObjects === 1 ? '' : 's'}`
|
|
158
|
+
+ `${extra ? ` (plus ${extra})` : ''} belonging to those levels are removed. The .vwld assets stay in the `
|
|
159
|
+
+ 'project and the registry is saved under worldForgerSideon.replacedLevels — but the placed objects, doors '
|
|
160
|
+
+ 'and key items are NOT recoverable. Stop here and back up world.json if that is not what you want.';
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The project's `characterConfig.runSpeed` (work world.json) — the one movement
|
|
168
|
+
* number the side-on designer reach-verifies against. Undefined when unset or
|
|
169
|
+
* unreadable (the server falls back to the generic kit's default).
|
|
170
|
+
*/
|
|
171
|
+
export function readCharacterRunSpeed(root) {
|
|
172
|
+
try {
|
|
173
|
+
const world = JSON.parse(fs.readFileSync(projectWorldJsonPath(root), 'utf-8'));
|
|
174
|
+
const profile = world.worldProfileData;
|
|
175
|
+
const character = profile?.characterConfig;
|
|
176
|
+
return typeof character?.runSpeed === 'number' && character.runSpeed > 0 ? character.runSpeed : undefined;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The project's `worldProfileData.voxelBlockSize` (work world.json) — the side-on
|
|
184
|
+
* expander anchors the level on the flat terrain's walkable TOP, which sits one
|
|
185
|
+
* voxel above the nominal ground plane, so this is a geometry input. Undefined
|
|
186
|
+
* when unset or unreadable (the server falls back to the 1 m default).
|
|
187
|
+
*/
|
|
188
|
+
export function readVoxelBlockSize(root) {
|
|
189
|
+
try {
|
|
190
|
+
const world = JSON.parse(fs.readFileSync(projectWorldJsonPath(root), 'utf-8'));
|
|
191
|
+
const profile = world.worldProfileData;
|
|
192
|
+
return typeof profile?.voxelBlockSize === 'number' && profile.voxelBlockSize > 0 ? profile.voxelBlockSize : undefined;
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Does this project collide on the engine's GROUND PLANE (top-down 2D physics)?
|
|
200
|
+
*
|
|
201
|
+
* The forge sends it so the designer builds FLAT terrain: that lane turns an
|
|
202
|
+
* unclimbable rise into a wall and a dug basin into a pit, so a normal 3D
|
|
203
|
+
* landscape is unplayable there. Same rule the web lane applies
|
|
204
|
+
* (`runsGroundPlanePhysics`); unreadable project files answer `false`, which is
|
|
205
|
+
* the ordinary 3D world.
|
|
206
|
+
*/
|
|
207
|
+
export function readGroundPlane(root) {
|
|
208
|
+
let gameGenre = '';
|
|
209
|
+
let physicsMode;
|
|
210
|
+
let physics2d;
|
|
211
|
+
let cameraMode;
|
|
212
|
+
try {
|
|
213
|
+
const game = JSON.parse(fs.readFileSync(path.join(root, 'src', 'work', 'game.json'), 'utf-8'));
|
|
214
|
+
if (typeof game.gameGenre === 'string')
|
|
215
|
+
gameGenre = game.gameGenre;
|
|
216
|
+
physicsMode = game.physicsMode;
|
|
217
|
+
physics2d = game.physics2d;
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
const world = JSON.parse(fs.readFileSync(path.join(root, 'src', 'work', 'world.json'), 'utf-8'));
|
|
224
|
+
const profile = world.worldProfileData;
|
|
225
|
+
cameraMode = profile?.cameraMode;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
// A project with no readable world.json has no camera to be top-down.
|
|
229
|
+
}
|
|
230
|
+
return runsGroundPlanePhysics({ gameGenre, physicsMode, physics2d, cameraMode });
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=two-d-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-d-gate.js","sourceRoot":"","sources":["../../src/forge/two-d-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAoB,MAAM,wCAAwC,CAAC;AAElH,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,aAAsB,CAAC;IAC3B,IAAI,WAAoB,CAAC;IACzB,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1H,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;YAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACnE,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1G,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,yEAAyE;IAC3E,CAAC;IACD,OAAO,cAAc,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;AAC/E,CAAC;AAKD;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,sBAAsB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAItC;IACC,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GACf,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9F,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,wEAAwE;QACxE,MAAM,UAAU,GAAiB,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxF,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,MAAM,GAAG,GAAG,WAAW,KAAK,IAAI;gBAC9B,CAAC,CAAC,uCAAuC;gBACzC,CAAC,CAAC,UAAU,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,IAAI,QAAQ,CAChB,QAAQ,OAAO,CAAC,WAAW,UAAU,GAAG,gCAAgC,GAAG,eAAe;kBACxF,0FAA0F;kBAC1F,uFAAuF;kBACvF,wBAAwB,CAC3B,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,4FAA4F;cACxF,0FAA0F;cAC1F,gGAAgG,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1G,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,IAAI,CAAC,OAAO,EAAE,SAAS;YAAE,OAAO;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,gEAAgE;IAC1E,CAAC;IACD,MAAM,IAAI,QAAQ,CAChB,0GAA0G;UACxG,yGAAyG;UACzG,qFAAqF,CACxF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACrD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1G,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAwC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAoD,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1H,6EAA6E;QAC7E,6EAA6E;QAC7E,0EAA0E;QAC1E,yBAAyB;QACzB,MAAM,MAAM,GAAG,CAAC,IAAa,EAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5D,CAAC,CAAE,IAAuC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM;YACxF,CAAC,CAAC,CAAC,CAAC,CAAC;QACP,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG;YACZ,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,QAAQ,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3E,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,YAAY,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;SAC7E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,oBAAoB,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,0BAA0B;cAC/G,8GAA8G;cAC9G,eAAe,aAAa,UAAU,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;cACtE,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,uEAAuE;cACzG,2GAA2G;cAC3G,mGAAmG,CAAC;IAC1G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1G,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,MAAM,SAAS,GAAG,OAAO,EAAE,eAAsD,CAAC;QAClF,OAAO,OAAO,SAAS,EAAE,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1G,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,OAAO,OAAO,OAAO,EAAE,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACxH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,WAAoB,CAAC;IACzB,IAAI,SAAkB,CAAC;IACvB,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC1H,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;YAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACnE,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CAA4B,CAAC;QAC5H,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAuD,CAAC;QAC9E,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,OAAO,sBAAsB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -6,10 +6,12 @@ import type { ProjectContext } from '../project/context.js';
|
|
|
6
6
|
export declare const MAX_VIDEO_BYTES: number;
|
|
7
7
|
export declare const JOBS_PATH = "/api/cli/v1/assets/animation-from-video/jobs";
|
|
8
8
|
export interface AnimationFromVideoRun {
|
|
9
|
-
|
|
9
|
+
/** Local file to upload. Omitted when the clip is already at a URL. */
|
|
10
|
+
videoPath?: string;
|
|
10
11
|
/**
|
|
11
|
-
* Already-uploaded source URL
|
|
12
|
-
* first
|
|
12
|
+
* Already-uploaded source URL: the sidecar's trim-analysis step uploads
|
|
13
|
+
* first, `--video <url>` is given one, and the prompt lane generates one.
|
|
14
|
+
* When set, the file at videoPath is not read or uploaded again.
|
|
13
15
|
*/
|
|
14
16
|
videoUrl?: string;
|
|
15
17
|
/** Asset display name; defaults to the file's stem. */
|
|
@@ -54,6 +56,12 @@ export declare function isLocomotionState(value: unknown): value is LocomotionSt
|
|
|
54
56
|
export declare function isVideoToMotionModel(value: unknown): value is VideoToMotionModel;
|
|
55
57
|
/** The creator-facing sentence for a failed job — `error.kind` decides it, never the raw JSON. */
|
|
56
58
|
export declare function describeJobFailure(error: JobStatus['error']): string;
|
|
59
|
+
/**
|
|
60
|
+
* The clip's display name when `--name` is absent. A local file names itself
|
|
61
|
+
* from its stem; a URL-sourced clip has no meaningful stem (the uploaded object
|
|
62
|
+
* is `motion-<timestamp>-…`), so it falls back to a plain label.
|
|
63
|
+
*/
|
|
64
|
+
export declare function defaultName(videoPath?: string): string;
|
|
57
65
|
export declare function generateAndInstallAnimationFromVideo(options: {
|
|
58
66
|
context: ProjectContext;
|
|
59
67
|
environment: Environment;
|
|
@@ -79,7 +79,14 @@ function readVideo(videoPath) {
|
|
|
79
79
|
const stem = path.basename(videoPath, path.extname(videoPath)).replace(/[^A-Za-z0-9_-]+/g, '_') || 'motion';
|
|
80
80
|
return { bytes, contentType, filename: `motion-${Date.now()}-${stem}.${extension}` };
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
/**
|
|
83
|
+
* The clip's display name when `--name` is absent. A local file names itself
|
|
84
|
+
* from its stem; a URL-sourced clip has no meaningful stem (the uploaded object
|
|
85
|
+
* is `motion-<timestamp>-…`), so it falls back to a plain label.
|
|
86
|
+
*/
|
|
87
|
+
export function defaultName(videoPath) {
|
|
88
|
+
if (videoPath === undefined)
|
|
89
|
+
return 'Recorded motion';
|
|
83
90
|
const stem = path.basename(videoPath, path.extname(videoPath)).replace(/[_-]+/g, ' ').trim();
|
|
84
91
|
return stem.length > 0 ? stem.slice(0, 80) : 'Recorded motion';
|
|
85
92
|
}
|
|
@@ -97,7 +104,7 @@ export async function generateAndInstallAnimationFromVideo(options) {
|
|
|
97
104
|
if (run.videoUrl !== undefined) {
|
|
98
105
|
videoUrl = run.videoUrl;
|
|
99
106
|
}
|
|
100
|
-
else {
|
|
107
|
+
else if (run.videoPath !== undefined) {
|
|
101
108
|
const video = readVideo(run.videoPath);
|
|
102
109
|
deps.log(`Uploading ${path.basename(run.videoPath)} (${Math.round(video.bytes.byteLength / 1024)} KB)…`);
|
|
103
110
|
const uploaded = await uploadProjectFile(environment, token, {
|
|
@@ -105,6 +112,9 @@ export async function generateAndInstallAnimationFromVideo(options) {
|
|
|
105
112
|
}, deps);
|
|
106
113
|
videoUrl = uploaded.url;
|
|
107
114
|
}
|
|
115
|
+
else {
|
|
116
|
+
throw new CliError('No video to work from: pass a file or a URL.');
|
|
117
|
+
}
|
|
108
118
|
const params = {
|
|
109
119
|
videoUrl,
|
|
110
120
|
name: run.name ?? defaultName(run.videoPath),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation-from-video.js","sourceRoot":"","sources":["../../src/generate/animation-from-video.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,4BAA4B,EAC5B,iBAAiB,EACjB,sBAAsB,GAKvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAgB,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,sGAAsG;AACtG,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,8CAA8C,CAAC;AAExE,0FAA0F;AAC1F,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,yFAAyF;AACzF,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"animation-from-video.js","sourceRoot":"","sources":["../../src/generate/animation-from-video.ts"],"names":[],"mappings":"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"}
|
package/dist/generate/model.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Environment } from '../config/environments.js';
|
|
2
2
|
import { type VoxelizeFlags, type VoxelizeGlb } from '../assets/voxelize-glb.js';
|
|
3
|
+
import { type KeepGlb } from '../assets/keep-glb.js';
|
|
3
4
|
import type { ProjectContext } from '../project/context.js';
|
|
4
5
|
export interface GenerateModelOptions {
|
|
5
6
|
context: ProjectContext;
|
|
@@ -18,6 +19,14 @@ export interface GenerateModelOptions {
|
|
|
18
19
|
fetchImpl?: typeof globalThis.fetch;
|
|
19
20
|
/** Injected in tests so the lane is exercised without Chrome. */
|
|
20
21
|
voxelize?: VoxelizeGlb;
|
|
22
|
+
/**
|
|
23
|
+
* Keep the generated mesh as a `glb` asset instead of voxelizing it — a low-poly project's
|
|
24
|
+
* default (game.json `artStyle`), or `--keep-glb`. Forces the mesh path; `masterUrl` is refused.
|
|
25
|
+
* `voxel.targetHeight` becomes the entry's `targetHeight` (2 m when absent, as `assets add`).
|
|
26
|
+
*/
|
|
27
|
+
keepGlb?: boolean;
|
|
28
|
+
/** Injected in tests so the kept-mesh lane runs without a network. */
|
|
29
|
+
keepGlbUpload?: KeepGlb;
|
|
21
30
|
/**
|
|
22
31
|
* Ask for a mesh rather than voxels (`--mesh`). The voxel path is the default; a vendored engine
|
|
23
32
|
* too old to bake a master takes the mesh path regardless of this.
|
|
@@ -46,6 +55,8 @@ export interface GenerateModelResult {
|
|
|
46
55
|
*/
|
|
47
56
|
glbUrl?: string;
|
|
48
57
|
masterUrl?: string;
|
|
58
|
+
/** True when the mesh was kept as a `glb` asset rather than baked to voxels. */
|
|
59
|
+
keptMesh?: boolean;
|
|
49
60
|
}
|
|
50
61
|
/**
|
|
51
62
|
* A usable asset name from the creator's sentence. Names are what game code places by, so this
|
package/dist/generate/model.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { mintAssetId, validateAssetName } from '../assets/file-kind.js';
|
|
2
2
|
import { assertEngineHonouredId, bakeSourceUrl, voxelizeGlbIntoAsset, } from '../assets/voxelize-glb.js';
|
|
3
|
+
import { DEFAULT_GLB_TARGET_HEIGHT, glbAssetEntry } from '../assets/entry.js';
|
|
4
|
+
import { reuploadGeneratedGlb } from '../assets/keep-glb.js';
|
|
5
|
+
import { CliError } from '../errors.js';
|
|
3
6
|
import { applyModificationsToWorld } from '../forge/apply-modifications.js';
|
|
4
7
|
import { projectWorldJsonPath } from '../forge/run-pipeline.js';
|
|
5
8
|
import { requestMesh, requestVoxelMaster, shouldTryVoxelPath } from './prop.js';
|
|
@@ -27,6 +30,10 @@ export async function generateAndInstallModel(options) {
|
|
|
27
30
|
log(`note: another asset is already named "${name}". Assets looked up by name resolve to the `
|
|
28
31
|
+ 'FIRST match — pass --name to give this one its own.');
|
|
29
32
|
}
|
|
33
|
+
if (options.keepGlb === true && options.masterUrl !== undefined) {
|
|
34
|
+
throw new CliError('A voxel master cannot be kept as a mesh: --master-url names voxels, and this project keeps meshes '
|
|
35
|
+
+ '(game.json artStyle is low-poly, or --keep-glb). Pass --voxelize to bake it. world.json is unchanged.');
|
|
36
|
+
}
|
|
30
37
|
const fetchImpl = options.fetchImpl ?? globalThis.fetch;
|
|
31
38
|
let source;
|
|
32
39
|
if (options.glbUrl !== undefined) {
|
|
@@ -47,7 +54,13 @@ export async function generateAndInstallModel(options) {
|
|
|
47
54
|
fetchImpl,
|
|
48
55
|
log,
|
|
49
56
|
...(options.creatorPrompt !== undefined ? { creatorPrompt: options.creatorPrompt } : {}),
|
|
50
|
-
}, options);
|
|
57
|
+
}, options.keepGlb === true ? { ...options, mesh: true } : options);
|
|
58
|
+
}
|
|
59
|
+
if (options.keepGlb === true) {
|
|
60
|
+
if (source.kind !== 'glb') {
|
|
61
|
+
throw new CliError('The generator returned voxels where a mesh was asked for. world.json is unchanged.');
|
|
62
|
+
}
|
|
63
|
+
return installKeptModel({ ...options, name, assetId, worldPath, glbUrl: source.glbUrl, fetchImpl, now });
|
|
51
64
|
}
|
|
52
65
|
// From here the source is PAID FOR, so every failure names the command that resumes without
|
|
53
66
|
// paying again — the same contract `generate prop` and `generate vehicle` make.
|
|
@@ -113,4 +126,31 @@ async function generateSource(request, options) {
|
|
|
113
126
|
}
|
|
114
127
|
return { kind: 'glb', glbUrl: await requestMesh(request) };
|
|
115
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* The kept-mesh install: re-upload the forger's GLB into the project and register it as the
|
|
131
|
+
* `glb` record `assets add --keep-glb` writes, plus the generation's provenance.
|
|
132
|
+
*/
|
|
133
|
+
async function installKeptModel(input) {
|
|
134
|
+
const { context, environment, token, name, assetId, glbUrl, prompt, log } = input;
|
|
135
|
+
const keep = input.keepGlbUpload ?? reuploadGeneratedGlb;
|
|
136
|
+
const kept = await keep({
|
|
137
|
+
environment, token, gameId: context.metadata.gameId, glbUrl, filename: `${name}.glb`, fetchImpl: input.fetchImpl, log,
|
|
138
|
+
});
|
|
139
|
+
const at = input.now().toISOString();
|
|
140
|
+
const targetHeight = input.voxel.targetHeight ?? DEFAULT_GLB_TARGET_HEIGHT;
|
|
141
|
+
const asset = {
|
|
142
|
+
...glbAssetEntry({ id: assetId, name, url: kept.url, size: kept.size, sourceName: `${name}.glb`, at }, targetHeight),
|
|
143
|
+
description: prompt,
|
|
144
|
+
production: { method: 'generated', at, prompt, sourceUrl: glbUrl },
|
|
145
|
+
};
|
|
146
|
+
const modification = {
|
|
147
|
+
type: 'upsertRoot',
|
|
148
|
+
path: ['assets'],
|
|
149
|
+
predicate: (item) => isJsonObject(item) && item.id === assetId,
|
|
150
|
+
value: asset,
|
|
151
|
+
};
|
|
152
|
+
applyModificationsToWorld(input.worldPath, [modification], { subject: 'The generated model' });
|
|
153
|
+
log(`Registered "${name}" as a polygon mesh (${targetHeight} m tall) — not voxelized.`);
|
|
154
|
+
return { assetId, assetName: name, assetUrl: kept.url, glbUrl, keptMesh: true };
|
|
155
|
+
}
|
|
116
156
|
//# sourceMappingURL=model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/generate/model.ts"],"names":[],"mappings":"AA+BA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EACL,sBAAsB,EAAE,aAAa,EAAE,oBAAoB,GAE5D,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAsB,MAAM,WAAW,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/generate/model.ts"],"names":[],"mappings":"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"}
|
package/dist/generate/prop.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Environment } from '../config/environments.js';
|
|
2
2
|
import type { BakeSource } from '../assets/voxelize-glb.js';
|
|
3
|
+
import { type KeepGlb } from '../assets/keep-glb.js';
|
|
3
4
|
import { withVoxelizeSession } from '../forge/voxelize-session.js';
|
|
4
5
|
import type { ProjectContext } from '../project/context.js';
|
|
5
6
|
import { type JsonObject } from '../project/world-json.js';
|
|
@@ -84,6 +85,14 @@ export interface GenerateAndInstallOptions {
|
|
|
84
85
|
* meaning on the mesh path, which the command refuses rather than ignoring.
|
|
85
86
|
*/
|
|
86
87
|
voxelGrid?: number;
|
|
88
|
+
/**
|
|
89
|
+
* Keep the generated mesh as a `glb` asset at the placeholder's fitBox height instead of
|
|
90
|
+
* voxelizing it — a low-poly project's default (game.json `artStyle`), or `--keep-glb`. Forces
|
|
91
|
+
* the mesh path; `masterUrl` is refused. No browser is needed.
|
|
92
|
+
*/
|
|
93
|
+
keepGlb?: boolean;
|
|
94
|
+
/** Injected in tests so the kept-mesh lane runs without a network. */
|
|
95
|
+
keepGlbUpload?: KeepGlb;
|
|
87
96
|
}
|
|
88
97
|
/**
|
|
89
98
|
* What the asset was made from, reported so callers do not have to guess.
|
package/dist/generate/prop.js
CHANGED
|
@@ -47,6 +47,8 @@
|
|
|
47
47
|
import * as fs from 'fs';
|
|
48
48
|
import * as path from 'path';
|
|
49
49
|
import { CliError } from '../errors.js';
|
|
50
|
+
import { glbAssetEntry } from '../assets/entry.js';
|
|
51
|
+
import { reuploadGeneratedGlb } from '../assets/keep-glb.js';
|
|
50
52
|
import { applyModificationsToWorld } from '../forge/apply-modifications.js';
|
|
51
53
|
import { projectWorldJsonPath } from '../forge/run-pipeline.js';
|
|
52
54
|
import { VOXELIZE_TIMEOUT_MS, withVoxelizeSession } from '../forge/voxelize-session.js';
|
|
@@ -219,6 +221,16 @@ export async function generateAndInstallProp(options) {
|
|
|
219
221
|
context, environment, token, assetId, prompt, source, log,
|
|
220
222
|
...(options.session ? { session: options.session } : {}),
|
|
221
223
|
});
|
|
224
|
+
if (options.keepGlb === true) {
|
|
225
|
+
if (options.masterUrl !== undefined) {
|
|
226
|
+
throw new CliError('A voxel master cannot be kept as a mesh: --master-url names voxels, and this project keeps meshes '
|
|
227
|
+
+ '(game.json artStyle is low-poly, or --keep-glb). Pass --voxelize to bake it. world.json is unchanged.');
|
|
228
|
+
}
|
|
229
|
+
const glbUrl = options.glbUrl ?? await requestMesh(meshRequest(options));
|
|
230
|
+
if (options.glbUrl !== undefined)
|
|
231
|
+
log(`Reusing the mesh at ${options.glbUrl} — skipping generation.`);
|
|
232
|
+
return { ...(await installKeptProp({ ...options, glbUrl })), glbUrl };
|
|
233
|
+
}
|
|
222
234
|
// Both retry flags skip generation entirely and bake what the caller already has in hand, so
|
|
223
235
|
// that a bake failure after a PAID generation costs the browser step again and not the
|
|
224
236
|
// generation. `--glb-url` is therefore always the mesh path, and `--master-url` the voxel one.
|
|
@@ -230,15 +242,7 @@ export async function generateAndInstallProp(options) {
|
|
|
230
242
|
log(`Reusing the voxel master at ${options.masterUrl} — skipping generation.`);
|
|
231
243
|
return { ...(await bake({ kind: 'master', masterUrl: options.masterUrl })), masterUrl: options.masterUrl };
|
|
232
244
|
}
|
|
233
|
-
const request =
|
|
234
|
-
environment,
|
|
235
|
-
token,
|
|
236
|
-
gameId: context.metadata.gameId,
|
|
237
|
-
prompt,
|
|
238
|
-
fetchImpl: options.fetchImpl ?? globalThis.fetch,
|
|
239
|
-
log,
|
|
240
|
-
...(options.creatorPrompt !== undefined ? { creatorPrompt: options.creatorPrompt } : {}),
|
|
241
|
-
};
|
|
245
|
+
const request = meshRequest(options);
|
|
242
246
|
if (shouldTryVoxelPath(context.root, options.mesh === true, log)) {
|
|
243
247
|
const masterUrl = await requestVoxelMaster(request, options.voxelGrid);
|
|
244
248
|
if (masterUrl)
|
|
@@ -347,4 +351,50 @@ export async function voxelizeAndInstall(options) {
|
|
|
347
351
|
};
|
|
348
352
|
});
|
|
349
353
|
}
|
|
354
|
+
function meshRequest(options) {
|
|
355
|
+
return {
|
|
356
|
+
environment: options.environment,
|
|
357
|
+
token: options.token,
|
|
358
|
+
gameId: options.context.metadata.gameId,
|
|
359
|
+
prompt: options.prompt,
|
|
360
|
+
fetchImpl: options.fetchImpl ?? globalThis.fetch,
|
|
361
|
+
log: options.log,
|
|
362
|
+
...(options.creatorPrompt !== undefined ? { creatorPrompt: options.creatorPrompt } : {}),
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* The kept-mesh upgrade: the placeholder's record becomes the `glb` entry `assets add --keep-glb`
|
|
367
|
+
* writes, scaled to the fitBox height every placed instance was positioned against, with the
|
|
368
|
+
* forger URL as the generation's provenance. The id is the same, so every instance upgrades.
|
|
369
|
+
*/
|
|
370
|
+
async function installKeptProp(options) {
|
|
371
|
+
const { context, environment, token, assetId, prompt, glbUrl, log } = options;
|
|
372
|
+
const worldPath = projectWorldJsonPath(context.root);
|
|
373
|
+
const world = readWorldJson(worldPath);
|
|
374
|
+
const { asset, fitBox } = findPropAsset(world, assetId);
|
|
375
|
+
const assetName = typeof asset.name === 'string' ? asset.name : assetId;
|
|
376
|
+
const keep = options.keepGlbUpload ?? reuploadGeneratedGlb;
|
|
377
|
+
const kept = await keep({
|
|
378
|
+
environment, token, gameId: context.metadata.gameId, glbUrl, filename: `${assetName}.glb`,
|
|
379
|
+
fetchImpl: options.fetchImpl ?? globalThis.fetch, log,
|
|
380
|
+
});
|
|
381
|
+
const at = new Date().toISOString();
|
|
382
|
+
const upgraded = {
|
|
383
|
+
...glbAssetEntry({ id: assetId, name: assetName, url: kept.url, size: kept.size, sourceName: `${assetName}.glb`, at }, fitBox.height),
|
|
384
|
+
description: prompt,
|
|
385
|
+
fitBox,
|
|
386
|
+
placeholder: false,
|
|
387
|
+
hqGeneratedAt: at,
|
|
388
|
+
production: { method: 'generated', at, prompt, sourceUrl: glbUrl },
|
|
389
|
+
};
|
|
390
|
+
const modification = {
|
|
391
|
+
type: 'upsertRoot',
|
|
392
|
+
path: ['assets'],
|
|
393
|
+
predicate: (item) => isJsonObject(item) && item.id === assetId,
|
|
394
|
+
value: upgraded,
|
|
395
|
+
};
|
|
396
|
+
applyModificationsToWorld(worldPath, [modification]);
|
|
397
|
+
log(`Registered "${assetName}" as a polygon mesh (${fitBox.height} m tall) — not voxelized.`);
|
|
398
|
+
return { assetId, assetName, assetUrl: kept.url, instanceCount: countInstances(world, assetId) };
|
|
399
|
+
}
|
|
350
400
|
//# sourceMappingURL=prop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop.js","sourceRoot":"","sources":["../../src/generate/prop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAA0B,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAmB,MAAM,0BAA0B,CAAC;AAExF;;;;GAIG;AACH,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,+DAA+D;AAC/D,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAW1C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,WAAmB;IACzD,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,0BAA0B,CAAC,CAAC,CAAC;AAC3G,CAAC;AAyED,+FAA+F;AAC/F,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAiB,EACjB,OAAe;IAEf,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC/E,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,qBAAqB,OAAO,kCAAkC;cAC5D,+DAA+D,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;WACpB,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACvG,MAAM,IAAI,QAAQ,CAChB,UAAU,OAAO,0DAA0D;cACzE,sDAAsD,CACzD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;AAChF,CAAC;AAED,8FAA8F;AAC9F,SAAS,cAAc,CAAC,KAAiB,EAAE,OAAe;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;AACzF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AAC1D,CAAC;AAuBD,SAAS,cAAc,CAAC,OAAsB;IAC5C,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,IAAa,EACb,GAA8B;IAE9B,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,uBAAuB,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,GAAG,CAAC,oFAAoF;UACpF,iDAAiD,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAsB,EACtB,SAAkB;IAElB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,OAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,oBAAoB,EAAE;YAC1E,GAAG,cAAc,CAAC,OAAO,CAAC;YAC1B,0FAA0F;YAC1F,iFAAiF;YACjF,IAAI,EAAE,SAAS,IAAI,mBAAmB;SACvC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,8FAA8F;QAC9F,2FAA2F;QAC3F,+FAA+F;QAC/F,6FAA6F;QAC7F,mBAAmB;QACnB,GAAG,CAAC,2CAA2C,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,2FAA2F;QAC3F,6FAA6F;QAC7F,6DAA6D;QAC7D,GAAG,CAAC,qDAAqD,OAAO,CAAC,OAAO,KAAK;cACzE,+EAA+E,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,qBAAqB,SAAS,EAAE,CAAC,CAAC;IACtC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAsB;IACtD,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,mBAAmB,EAAE,cAAc,CAAC,OAAO,CAAC,EAChF,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,CACtD,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,GAAG,OAAO,CAAC,OAAO,2BAA2B,CAAC,CAAC;IACxF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,QAAQ,CAAC,+EAA+E,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAkC;IAElC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAEtE,oFAAoF;IACpF,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAE1E,MAAM,IAAI,GAAG,CAAC,MAAkB,EAA+B,EAAE,CAAC,kBAAkB,CAAC;QACnF,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;QACzD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC;IAEH,6FAA6F;IAC7F,uFAAuF;IACvF,+FAA+F;IAC/F,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,uBAAuB,OAAO,CAAC,MAAM,yBAAyB,CAAC,CAAC;QACpE,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpC,GAAG,CAAC,+BAA+B,OAAO,CAAC,SAAS,yBAAyB,CAAC,CAAC;QAC/E,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;IAC7G,CAAC;IAED,MAAM,OAAO,GAAkB;QAC7B,WAAW;QACX,KAAK;QACL,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM;QAC/B,MAAM;QACN,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK;QAChD,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;IAEF,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;QACjE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,SAAS;YAAE,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACpF,+FAA+F;QAC/F,8DAA8D;QAC9D,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA4B;IACnE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAC9E,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,mBAAmB,CAAC;IAC1D,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAExE,+FAA+F;IAC/F,wFAAwF;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK;QAChC,CAAC,CAAC;YACA,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,iCAAiC,MAAM,CAAC,MAAM,EAAE;YACtD,KAAK,EAAE,6DAA6D;SACrE;QACD,CAAC,CAAC;YACA,OAAO,EAAE,YAAY;YACrB,IAAI,EAAE,yCAAyC,MAAM,CAAC,SAAS,EAAE;YACjE,KAAK,EAAE,gEAAgE;SACxE,CAAC;IAEJ,OAAO,UAAU,CAAC;QAChB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;KAChG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,GAAG,CAAC,WAAW,SAAS,2BAA2B,CAAC,CAAC;QACrD,4FAA4F;QAC5F,8FAA8F;QAC9F,iEAAiE;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK;YACnC,CAAC,CAAC;gBACA,IAAI,EAAE,2BAA2B;gBACjC,SAAS,EAAE,QAAQ,OAAO,IAAI,IAAI,EAAE;gBACpC,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,wFAAwF;gBACxF,mCAAmC;gBACnC,OAAO;gBACP,OAAO,EAAE;oBACP,YAAY,EAAE,cAAc;oBAC5B,YAAY,EAAE,cAAc;oBAC5B,MAAM;oBACN,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC;oBACxC,WAAW,EAAE,KAAK;iBACnB;aACF;YACD,CAAC,CAAC;gBACA,IAAI,EAAE,8BAA8B;gBACpC,SAAS,EAAE,QAAQ,OAAO,IAAI,IAAI,EAAE;gBACpC,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO;gBACP,sFAAsF;gBACtF,OAAO,EAAE;oBACP,YAAY,EAAE,cAAc;oBAC5B,YAAY,EAAE,cAAc;oBAC5B,MAAM;iBACP;aACF,CAAC;QAEJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAC7C,OAAO,EACP,2BAA2B,EAC3B,mBAAmB,EACnB,EAAE,UAAU,EAAE,CAAC,EAAE,CAClB,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAChB,WAAW,SAAS,gBAAgB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC;YACjF,MAAM,IAAI,QAAQ,CAChB,WAAW,SAAS,aAAa,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG,CACzD,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QACjC,+FAA+F;QAC/F,+FAA+F;QAC/F,gGAAgG;QAChG,sDAAsD;QACtD,MAAM,QAAQ,GAAe;YAC3B,GAAG,WAAW;YACd,WAAW,EAAE,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC/F,CAAC,CAAC,WAAW,CAAC,WAAW;gBACzB,CAAC,CAAC,MAAM;YACV,WAAW,EAAE,KAAK;YAClB,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACxC,CAAC;QAEF,MAAM,YAAY,GAA0B;YAC1C,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO;YACvE,KAAK,EAAE,QAAQ;SAChB,CAAC;QACF,yBAAyB,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;QAErD,OAAO;YACL,OAAO;YACP,SAAS;YACT,GAAG,CAAC,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,aAAa,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;SAC9C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"prop.js","sourceRoot":"","sources":["../../src/generate/prop.ts"],"names":[],"mappings":"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"}
|