@womp/spark-agent 5.10.0 → 5.11.1
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/capabilities/assets.d.ts +2 -1
- package/dist/capabilities/assets.js +5 -1
- package/dist/capabilities/scene.js +3 -1
- package/dist/capabilities/texture-imports.d.ts +32 -0
- package/dist/capabilities/texture-imports.js +43 -0
- package/dist/capabilities.d.ts +2 -0
- package/dist/capabilities.js +2 -0
- package/dist/generated/asset-import-declarations.d.ts +1 -1
- package/dist/generated/asset-import-declarations.js +1 -1
- package/dist/generated/scene-declarations.d.ts +1 -1
- package/dist/generated/scene-declarations.js +1 -1
- package/dist/generated/texture-import-declarations.d.ts +1 -0
- package/dist/generated/texture-import-declarations.js +3 -0
- package/dist/scene-camera.d.ts +24 -0
- package/dist/scene-camera.js +86 -0
- package/dist/sdk-scene-host.d.ts +13 -0
- package/dist/texture-import-host.d.ts +20 -0
- package/dist/texture-import-host.js +169 -0
- package/dist/womp-scene-api.d.ts +15 -0
- package/dist/womp-scene-api.js +23 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ArtifactRef, SparkCapability, SparkInvocationContext } from "../capabilities.js";
|
|
2
|
+
import { type TextureImportsHost, type WompTextureImportsApi } from "./texture-imports.js";
|
|
2
3
|
import { type AssetImportsHost, type WompAssetImportsApi } from "./asset-imports.js";
|
|
3
4
|
export type AssetListOptions = {
|
|
4
5
|
from?: number;
|
|
@@ -26,4 +27,4 @@ export interface AssetsHost {
|
|
|
26
27
|
count: number;
|
|
27
28
|
}, context: SparkInvocationContext): Promise<AssetPage>;
|
|
28
29
|
}
|
|
29
|
-
export declare function createAssetsCapability(host: AssetsHost, imports?: AssetImportsHost): SparkCapability<WompAssetsApi & Partial<WompAssetImportsApi>>;
|
|
30
|
+
export declare function createAssetsCapability(host: AssetsHost, imports?: AssetImportsHost, textures?: TextureImportsHost): SparkCapability<WompAssetsApi & Partial<WompAssetImportsApi & WompTextureImportsApi>>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { WOMP_ASSETS_DECLARATIONS } from "../generated/assets-declarations.js";
|
|
3
|
+
import { createTextureImportsCapability } from "./texture-imports.js";
|
|
3
4
|
import { createAssetImportsCapability, } from "./asset-imports.js";
|
|
4
5
|
const listSchema = z
|
|
5
6
|
.object({
|
|
@@ -10,11 +11,13 @@ const listSchema = z
|
|
|
10
11
|
source: z.enum(["uploaded", "input", "generated", "agent"]).optional(),
|
|
11
12
|
})
|
|
12
13
|
.strict();
|
|
13
|
-
export function createAssetsCapability(host, imports) {
|
|
14
|
+
export function createAssetsCapability(host, imports, textures) {
|
|
14
15
|
const importCapability = imports ? createAssetImportsCapability(imports) : undefined;
|
|
16
|
+
const textureCapability = textures ? createTextureImportsCapability(textures) : undefined;
|
|
15
17
|
return {
|
|
16
18
|
skills: [
|
|
17
19
|
...(importCapability?.skills ?? []),
|
|
20
|
+
...(textureCapability?.skills ?? []),
|
|
18
21
|
{
|
|
19
22
|
name: "assets",
|
|
20
23
|
version: "2",
|
|
@@ -39,6 +42,7 @@ Unavailable/deleted sources are errors; ask for clarification if several images
|
|
|
39
42
|
],
|
|
40
43
|
createApi: (context) => ({
|
|
41
44
|
...importCapability?.createApi(context),
|
|
45
|
+
...textureCapability?.createApi(context),
|
|
42
46
|
list: (options) => {
|
|
43
47
|
context.signal.throwIfAborted();
|
|
44
48
|
return host.list(listSchema.parse(options ?? {}), context);
|
|
@@ -39,7 +39,7 @@ export function createSceneCapability(host) {
|
|
|
39
39
|
skills: [
|
|
40
40
|
{
|
|
41
41
|
name: "scene-editing",
|
|
42
|
-
version: "
|
|
42
|
+
version: "46",
|
|
43
43
|
description: "Inspect the open scene and edit its objects, materials, curves, and environment.",
|
|
44
44
|
instructions: `Use womp.scene.access(callback) for both inspection and edits. Inspect targets inside each callback using scene.nodes({ name, type, parentId, ids, offset, limit }) and detailed getters; filters are optional, name is a case-insensitive substring, and results default to 100 (maximum 1000). Page with offset as needed. Inspection reflects changes made in the callback. scene.unitMultiplier gives project units. Do not reuse an earlier inspection as current state.
|
|
45
45
|
Use womp.scene.health() to refresh whole-scene health or womp.scene.health(objectIds) to check specific objects (mapped to their owning Areas).
|
|
@@ -59,6 +59,8 @@ The SDK-backed draft clamps dimension writes to 0.01–1000 mm per component bef
|
|
|
59
59
|
Area size is a dimensionless scale; Group size stays fixed at one. Lights must be created at root (parentId 0); their size has x/y dimensions.
|
|
60
60
|
Light power is linear emitted intensity before collimation, not a percentage or physical unit: doubling it doubles emission, not tone-mapped pixel brightness. Valid ranges are 0–${maxLightIntensity("rect")} for Rect/Sphere and 0–${maxLightIntensity("distant")} for Distant; these limits are not brightness targets. A light-type change preserves intensity and rejects values outside the new type's range; lower intensity first if needed. Rect size is width/height; Sphere uses x as diameter; Distant uses direction, not position or size.
|
|
61
61
|
Use nodeSetFacing(id, target - position) to aim light emission or the readable face of text/decals at a target in the same parent-local space. It keeps Y up (Z up for vertical directions); generic lookAt aligns a different axis and does not aim these faces.
|
|
62
|
+
Rect/Sphere lights support nodeSetCollimation(id, value) in 0..1 (broad to collimated) and nodeSetLightTextureFile(id, resourceName). Use the exact renderer resource name returned by texture import; an empty string clears the pattern. Neither control applies to Distant lights. Inspect the converged render after editing.
|
|
63
|
+
cameraReadDepthOfField() inspects the current camera. cameraSetDepthOfField({enabled, mode, focusDistance, aperturePercent}) changes only supplied DoF fields and the acting user's active saved camera. mode is physical or post-process; physical DoF requires perspective projection and production rendering. Focus distance uses project units; aperturePercent is Womp's 0..100 blur strength, not an f-number. Use a converged production render to evaluate bokeh and focus.
|
|
62
64
|
For text, nodeSetTextSize(id, {fontSize, depth}) sets font em size and extrusion in project units, not a bounding box. Layout width and additional letter spacing also use project units; spacing clamps to ±25 mm. Line height is a multiplier clamped to 0.5–3. The origin anchors the first baseline; alignment uses the layout width. Empty text clears its geometry.
|
|
63
65
|
Decals require an existing loaded image and receiving geometry. Projection is a uniform cube: native scale.x (public size.z) controls all dimensions, not independent width/height/depth. Restriction to an Area requires that parent Area; root decals project globally. Missing image data can yield no projection even when no resource is pending.
|
|
64
66
|
nodeCreate(Curve, parentId) creates an empty curve with zero blend. curvePointAdd(curveId, point, index?) returns the new index; omit index to append or supply an integer from 0 through point count to insert before that position.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { ArtifactRef, SparkCapability, SparkInvocationContext } from "../capabilities.js";
|
|
3
|
+
export type TextureImportRequest = {
|
|
4
|
+
key: string;
|
|
5
|
+
source: ArtifactRef;
|
|
6
|
+
};
|
|
7
|
+
export type TextureImportResult = {
|
|
8
|
+
key: string;
|
|
9
|
+
status: "ready" | "completed" | "unknown";
|
|
10
|
+
texture?: {
|
|
11
|
+
assetId: number;
|
|
12
|
+
resourceName: string;
|
|
13
|
+
};
|
|
14
|
+
reason?: string;
|
|
15
|
+
};
|
|
16
|
+
export type WompTextureImportsApi = {
|
|
17
|
+
importTexture(request: TextureImportRequest): Promise<TextureImportResult>;
|
|
18
|
+
readTextureImport(key: string): Promise<TextureImportResult>;
|
|
19
|
+
};
|
|
20
|
+
export interface TextureImportsHost {
|
|
21
|
+
importTexture(request: TextureImportRequest, context: SparkInvocationContext): Promise<TextureImportResult>;
|
|
22
|
+
readTextureImport(key: string, context: SparkInvocationContext): Promise<TextureImportResult>;
|
|
23
|
+
}
|
|
24
|
+
export declare const textureImportRequestSchema: z.ZodObject<{
|
|
25
|
+
key: z.ZodString;
|
|
26
|
+
source: z.ZodObject<{
|
|
27
|
+
id: z.ZodString;
|
|
28
|
+
mediaType: z.ZodString;
|
|
29
|
+
name: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strict>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
export declare function createTextureImportsCapability(host: TextureImportsHost): SparkCapability<WompTextureImportsApi>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { WOMP_TEXTURE_IMPORT_DECLARATIONS } from "../generated/texture-import-declarations.js";
|
|
3
|
+
export const textureImportRequestSchema = z
|
|
4
|
+
.object({
|
|
5
|
+
key: z.string().trim().min(1).max(120),
|
|
6
|
+
source: z
|
|
7
|
+
.object({
|
|
8
|
+
id: z.string().min(1),
|
|
9
|
+
mediaType: z.string().startsWith("image/"),
|
|
10
|
+
name: z.string().optional(),
|
|
11
|
+
})
|
|
12
|
+
.strict(),
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
export function createTextureImportsCapability(host) {
|
|
16
|
+
return {
|
|
17
|
+
skills: [
|
|
18
|
+
{
|
|
19
|
+
name: "texture-import",
|
|
20
|
+
version: "1",
|
|
21
|
+
description: "Import an uploaded or generated image as a renderer texture for materials and lights.",
|
|
22
|
+
instructions: `Use womp.assets.importTexture({key, source}) with the exact image artifact from assets.list. The host uploads a texture into the current editable project, without creating an image plane or sticker.
|
|
23
|
+
Reuse the same key to continue the same source and destination. readTextureImport(key) refreshes resource availability without uploading again. unknown means the upload outcome is uncertain; report known effects and do not resubmit under a new key. ready means the asset exists but its renderer resource is not yet listed; call readTextureImport again.
|
|
24
|
+
completed supplies texture.resourceName for scene.nodeSetLightTextureFile or a material graph's PredefinedTexture. Refresh the material texture catalogue before building a graph. Importing does not assign the texture or prove rendered appearance. Inspect the rendered result after assignment. Generated color images are not automatically seamless textures or calibrated normal/roughness maps.`,
|
|
25
|
+
declarations: WOMP_TEXTURE_IMPORT_DECLARATIONS,
|
|
26
|
+
examples: [
|
|
27
|
+
'const source = (await womp.assets.list({kind:"image",source:"generated"})).items[0].artifact; print(await womp.assets.importTexture({key:"product-texture",source}));',
|
|
28
|
+
'print(await womp.assets.readTextureImport("product-texture"));',
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
createApi: (context) => ({
|
|
33
|
+
importTexture: (request) => {
|
|
34
|
+
context.signal.throwIfAborted();
|
|
35
|
+
return host.importTexture(textureImportRequestSchema.parse(request), context);
|
|
36
|
+
},
|
|
37
|
+
readTextureImport: (key) => {
|
|
38
|
+
context.signal.throwIfAborted();
|
|
39
|
+
return host.readTextureImport(textureImportRequestSchema.shape.key.parse(key), context);
|
|
40
|
+
},
|
|
41
|
+
}),
|
|
42
|
+
};
|
|
43
|
+
}
|
package/dist/capabilities.d.ts
CHANGED
package/dist/capabilities.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"
|
|
1
|
+
export declare const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"retryMeshImport\": ((request: {\n\"key\": string;\n\"fileName\": string;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"importImage\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n} & {\n\"kind\": \"image-plane\" | \"sticker\";\n\"removeBackground\"?: undefined | false | true;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"readImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"finishImport\": ((key: string, options?: undefined | {\n\"timeoutMs\"?: undefined | number;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by scripts/generate-skill-declarations.mjs.
|
|
2
2
|
// prettier-ignore
|
|
3
|
-
export const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"
|
|
3
|
+
export const WOMP_ASSET_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importMesh\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"retryMeshImport\": ((request: {\n\"key\": string;\n\"fileName\": string;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"importImage\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n\"destination\": \"scene\" | \"library\";\n} & {\n\"kind\": \"image-plane\" | \"sticker\";\n\"removeBackground\"?: undefined | false | true;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"readImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n\"finishImport\": ((key: string, options?: undefined | {\n\"timeoutMs\"?: undefined | number;\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\" | \"processing\" | \"partial\" | \"cancelled\" | \"failed\";\n\"tasks\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"status\": string;\n\"fileName\"?: undefined | string;\n\"error\"?: undefined | string;\n}>;\n\"assets\": Array<{\n\"id\": number;\n\"projectId\": null | number;\n\"type\": \"mesh\" | \"field\" | \"decal\";\n}>;\n\"objectIds\": Array<number>;\n\"omittedFiles\"?: undefined | Array<{\n\"fileName\": string;\n\"projectId\": null | number;\n}>;\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const WOMP_SCENE_DECLARATIONS = "declare const womp: { scene: {\n\"health\": ((objectIds?: undefined | Array<number>) => Promise<{\n\"status\": \"within_limits\" | \"overflow\" | \"unverified\";\n\"freshness\": \"unverified\" | \"snapshot\" | \"post_ack_event\";\n\"revisionVerified\": false;\n\"affectedAreaIds\": Array<string>;\n\"emptyAreaIds\"?: undefined | Array<string>;\n\"thermometer\"?: undefined | {\n\"objects\": {\n[key: string]: {\n\"num_prims\": number;\n\"flag_prim_overflow\": number;\n\"flag_depth_overflow\": number;\n\"flag_vox_overflow\": number;\n\"voxels\": number;\n};\n};\n\"max_num_prims\": number;\n\"max_total_depth\": number;\n\"max_per_object\": number;\n\"total\": number;\n\"max_total\": number;\n\"assets_budget_used\": number;\n\"assets_budget_total\": number;\n\"mesh_instances_used\"?: undefined | number;\n\"mesh_instances_total\"?: undefined | number;\n\"decal_instances_used\"?: undefined | number;\n\"decal_instances_total\"?: undefined | number;\n\"field_instances_used\"?: undefined | number;\n\"field_instances_total\"?: undefined | number;\n};\n\"reason\"?: undefined | string;\n}>);\n\"access\": (<T>(callback: ((draft: {\n\"listSuperMaterials\": (() => Array<string>);\n\"_getParentId\": ((childId: number) => number);\n\"_getScaleProductUpTo\": ((nodeId: number, includeNodeSelfUnion?: false | true) => number);\n\"NodeType\": {\n\"Primitive\": 0;\n\"Union\": 1;\n\"Light\": 2;\n\"Curve\": 3;\n\"Group\": 4;\n\"Text\": 5;\n\"Field\": 6;\n\"SVG\": 7;\n\"Mesh\": 8;\n\"Decal\": 9;\n\"OpenSCAD\": 10;\n\"Socket\": 11;\n} & {\n[key: number]: string;\n};\n\"PrimitiveType\": {\n\"Sphere\": 0;\n\"Cylinder\": 1;\n\"Cube\": 2;\n\"Cone\": 3;\n\"Torus\": 4;\n\"Pyramid\": 9;\n} & {\n[key: number]: string;\n};\n\"OperationType\": {\n\"Subtract\": 0;\n\"Union\": 1;\n\"Stain\": 2;\n\"Intersect\": 3;\n} & {\n[key: number]: string;\n};\n\"LightType\": {\n\"Rect\": 0;\n\"Sphere\": 1;\n\"Distant\": 2;\n} & {\n[key: number]: string;\n};\n\"nodeCreate\": ((type: number, parentId?: number) => number);\n\"nodeDelete\": ((id: number) => void);\n\"nodeClone\": ((id: number) => number);\n\"cloneSubtree\": ((id: number, options?: {\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"index\"?: undefined | number;\n}) => Promise<number>);\n\"nodeList\": (() => Array<number>);\n\"nodeChildren\": ((parentId: number) => Array<number>);\n\"nodeSetParent\": ((id: number, parentId: number, index?: undefined | number) => void);\n\"nodeGetType\": ((id: number) => number);\n\"nodeGetName\": ((id: number) => string);\n\"nodeSetName\": ((id: number, name: string) => void);\n\"nodeGetParentId\": ((id: number) => number);\n\"nodeGetPos\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeGetLock\": ((id: number) => false | true);\n\"nodeSetLock\": ((id: number, locked: false | true) => void);\n\"nodeSetPos\": ((id: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetRot\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetRot\": ((id: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetSize\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetSize\": ((id: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetHide\": ((id: number) => false | true);\n\"nodeSetHide\": ((id: number, hidden: false | true) => void);\n\"nodeGetOp\": ((id: number) => number);\n\"nodeSetOp\": ((id: number, operation: number) => void);\n\"nodeGetBlend\": ((id: number) => number);\n\"nodeSetBlend\": ((id: number, blend: number) => void);\n\"nodeGetRound\": ((id: number) => number);\n\"nodeSetRound\": ((id: number, round: number) => void);\n\"nodeGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"nodeSetColor\": ((id: number, rgb255: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n} | {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"nodeGetMaterialId\": ((id: number) => null | number);\n\"nodeSetMaterialId\": ((id: number, materialId: number) => void);\n\"nodeGetResolution\": ((id: number) => number);\n\"nodeSetUnionResolution\": ((unionId: number, resolution: number) => void);\n\"nodeGetLightType\": ((id: number) => number);\n\"nodeSetLightType\": ((id: number, lightType: number) => void);\n\"nodeGetPower\": ((id: number) => number);\n\"nodeSetPower\": ((id: number, power: number) => void);\n\"nodeGetText\": ((id: number) => string);\n\"nodeSetFacing\": ((id: number, direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeSetTextSize\": ((id: number, size: {\n\"fontSize\": number;\n\"depth\": number;\n}) => void);\n\"nodeGetTextSize\": ((id: number) => {\n\"fontSize\": number;\n\"depth\": number;\n});\n\"nodeSetText\": ((id: number, text: string) => void);\n\"nodeGetFont\": ((id: number) => string);\n\"nodeSetFont\": ((id: number, font: string) => void);\n\"nodeGetWeight\": ((id: number) => number);\n\"nodeSetWeight\": ((id: number, weight: number) => void);\n\"nodeGetItalic\": ((id: number) => false | true);\n\"nodeSetItalic\": ((id: number, italic: false | true) => void);\n\"nodeGetAlign\": ((id: number) => number);\n\"nodeSetAlign\": ((id: number, align: number) => void);\n\"nodeGetWrap\": ((id: number) => number);\n\"nodeSetWrap\": ((id: number, wrap: number) => void);\n\"nodeGetWidth\": ((id: number) => number);\n\"nodeSetWidth\": ((id: number, width: number) => void);\n\"nodeGetSpacing\": ((id: number) => number);\n\"nodeSetSpacing\": ((id: number, spacing: number) => void);\n\"nodeGetLineHeight\": ((id: number) => number);\n\"nodeSetLineHeight\": ((id: number, lineHeight: number) => void);\n\"nodeGetDensity\": ((id: number) => number);\n\"nodeSetDensity\": ((id: number, density: number) => void);\n\"nodeGetRoundness\": ((id: number) => number);\n\"nodeSetRoundness\": ((id: number, roundness: number) => void);\n\"nodeGetSmoothing\": ((id: number) => number);\n\"nodeSetSmoothing\": ((id: number, smoothing: number) => void);\n\"nodeGetPrimType\": ((id: number) => number);\n\"nodeSetPrimType\": ((id: number, primitive: number) => void);\n\"nodeGetMirror\": ((id: number, slot: number) => {\n\"axis\": \"custom\" | \"x\" | \"y\" | \"z\" | \"disabled\";\n\"planePosition\": number;\n\"goop\": number;\n});\n\"nodeSetMirror\": ((id: number, slot: number, axis: \"x\" | \"y\" | \"z\" | \"disabled\", planePosition?: number, goop?: number) => void);\n\"nodeGetThickness\": ((id: number) => number);\n\"nodeSetThickness\": ((id: number, thickness: number) => void);\n\"curveGetClosed\": ((curveId: number) => false | true);\n\"curveSetClosed\": ((curveId: number, closed: false | true) => void);\n\"curvePointGetHandleIn\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointGetHandleOut\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetHandleIn\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointSetHandleOut\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointCount\": ((curveId: number) => number);\n\"curvePointAdd\": ((curveId: number, point: {\n\"name\"?: undefined | string;\n\"pos\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"rot\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"size\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"fixed\"?: undefined | false | true;\n\"round\"?: undefined | number;\n\"materialId\"?: undefined | number;\n}, pointIndex?: undefined | number) => number);\n\"curvePointRemove\": ((curveId: number, pointIndex: number) => void);\n\"curvePointGetName\": ((curveId: number, pointIndex: number) => string);\n\"curvePointSetName\": ((curveId: number, pointIndex: number, name: string) => void);\n\"curvePointGetPos\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetPos\": ((curveId: number, pointIndex: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetRot\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetRot\": ((curveId: number, pointIndex: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetSize\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetSize\": ((curveId: number, pointIndex: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetFixed\": ((curveId: number, pointIndex: number) => false | true);\n\"curvePointSetFixed\": ((curveId: number, pointIndex: number, fixed: false | true) => void);\n\"curvePointGetRound\": ((curveId: number, pointIndex: number) => number);\n\"curvePointSetRound\": ((curveId: number, pointIndex: number, round: number) => void);\n\"curvePointGetMaterialId\": ((curveId: number, pointIndex: number) => null | number);\n\"curvePointSetMaterialId\": ((curveId: number, pointIndex: number, materialId: number) => void);\n\"materialImport\": ((name: string) => Promise<number>);\n\"materialCreate\": (() => number);\n\"materialDelete\": ((id: number) => void);\n\"materialList\": (() => Array<number>);\n\"materialGetName\": ((id: number) => string);\n\"materialSetName\": ((id: number, name: string) => void);\n\"materialGetTier\": ((id: number) => number);\n\"materialSetTier\": ((id: number, tier: number) => void);\n\"materialGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSecondaryColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSecondaryColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSubsurfaceColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSubsurfaceColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetRoughness\": ((id: number) => number);\n\"materialSetRoughness\": ((id: number, value: number) => void);\n\"materialGetMetalness\": ((id: number) => number);\n\"materialSetMetalness\": ((id: number, value: number) => void);\n\"materialGetTransmittance\": ((id: number) => number);\n\"materialSetTransmittance\": ((id: number, value: number) => void);\n\"materialGetTranslucency\": ((id: number) => number);\n\"materialSetTranslucency\": ((id: number, value: number) => void);\n\"materialGetIor\": ((id: number) => number);\n\"materialSetIor\": ((id: number, value: number) => void);\n\"materialGetSheen\": ((id: number) => number);\n\"materialSetSheen\": ((id: number, value: number) => void);\n\"materialGetSheenRoughness\": ((id: number) => number);\n\"materialSetSheenRoughness\": ((id: number, value: number) => void);\n\"materialGetSpecularTint\": ((id: number) => number);\n\"materialSetSpecularTint\": ((id: number, value: number) => void);\n\"materialGetAbsorption\": ((id: number) => number);\n\"materialSetAbsorption\": ((id: number, value: number) => void);\n\"materialGetEmission\": ((id: number) => number);\n\"materialSetEmission\": ((id: number, value: number) => void);\n\"materialGetIridescence\": ((id: number) => number);\n\"materialSetIridescence\": ((id: number, value: number) => void);\n\"materialGetTranslucencyWeight\": ((id: number) => number);\n\"materialSetTranslucencyWeight\": ((id: number, value: number) => void);\n\"materialGetDispersion\": ((id: number) => number);\n\"materialSetDispersion\": ((id: number, value: number) => void);\n\"materialGetSurfaceOpacity\": ((id: number) => number);\n\"materialSetSurfaceOpacity\": ((id: number, value: number) => void);\n\"listFontFamilies\": (() => Array<{\n\"name\": string;\n\"variants\": Array<{\n\"weight\": string;\n\"italic\": false | true;\n}>;\n}>);\n\"print\": ((...values: Array<unknown>) => void);\n\"nodeGetAABB\": ((id: number) => Promise<{\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}>);\n\"nodeResize\": ((id: number, dimensions: {\n\"x\"?: undefined | number;\n\"y\"?: undefined | number;\n\"z\"?: undefined | number;\n}) => Promise<void>);\n\"aabbCenter\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"aabbRadius\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => number);\n\"lookAt\": ((origin: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, target: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"alignAxis\": ((direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, axis: \"x\" | \"y\" | \"z\") => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"scenePropertiesRead\": (() => {\n\"hdr_name\": undefined | string;\n\"hdr_multiplier\": undefined | number;\n\"hdr_orientation\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n\"backdrop_color1\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_color2\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_grad_offset\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n});\n\"listHDRs\": (() => Array<string>);\n\"setHdrName\": ((name: string) => void);\n\"setHdrMultiplier\": ((multiplier: number) => void);\n\"setHdrOrientation\": ((orientation: {\n\"x\": number;\n\"y\": number;\n}) => void);\n\"setBackgroundColor\": ((rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"unitMultiplier\": number;\n\"nodes\": ((options?: {\n\"ids\"?: undefined | Array<number>;\n\"type\"?: undefined | number;\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"offset\"?: undefined | number;\n\"limit\"?: undefined | number;\n}) => Array<{\n\"id\": number;\n\"name\": string;\n\"type\": number;\n\"parentId\": number;\n}>);\n}) => T | Promise<T>)) => Promise<T>);\n\"screenshot\": ((options?: undefined | {\n\"camera\"?: undefined | {\n\"position\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"target\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"projection\"?: undefined | \"perspective\" | \"orthographic\";\n\"horizontalFovDegrees\"?: undefined | number;\n\"orthographicWidth\"?: undefined | number;\n};\n}) => Promise<{\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
1
|
+
export declare const WOMP_SCENE_DECLARATIONS = "declare const womp: { scene: {\n\"health\": ((objectIds?: undefined | Array<number>) => Promise<{\n\"status\": \"within_limits\" | \"overflow\" | \"unverified\";\n\"freshness\": \"unverified\" | \"snapshot\" | \"post_ack_event\";\n\"revisionVerified\": false;\n\"affectedAreaIds\": Array<string>;\n\"emptyAreaIds\"?: undefined | Array<string>;\n\"thermometer\"?: undefined | {\n\"objects\": {\n[key: string]: {\n\"num_prims\": number;\n\"flag_prim_overflow\": number;\n\"flag_depth_overflow\": number;\n\"flag_vox_overflow\": number;\n\"voxels\": number;\n};\n};\n\"max_num_prims\": number;\n\"max_total_depth\": number;\n\"max_per_object\": number;\n\"total\": number;\n\"max_total\": number;\n\"assets_budget_used\": number;\n\"assets_budget_total\": number;\n\"mesh_instances_used\"?: undefined | number;\n\"mesh_instances_total\"?: undefined | number;\n\"decal_instances_used\"?: undefined | number;\n\"decal_instances_total\"?: undefined | number;\n\"field_instances_used\"?: undefined | number;\n\"field_instances_total\"?: undefined | number;\n};\n\"reason\"?: undefined | string;\n}>);\n\"access\": (<T>(callback: ((draft: {\n\"listSuperMaterials\": (() => Array<string>);\n\"_getParentId\": ((childId: number) => number);\n\"_getScaleProductUpTo\": ((nodeId: number, includeNodeSelfUnion?: false | true) => number);\n\"NodeType\": {\n\"Primitive\": 0;\n\"Union\": 1;\n\"Light\": 2;\n\"Curve\": 3;\n\"Group\": 4;\n\"Text\": 5;\n\"Field\": 6;\n\"SVG\": 7;\n\"Mesh\": 8;\n\"Decal\": 9;\n\"OpenSCAD\": 10;\n\"Socket\": 11;\n} & {\n[key: number]: string;\n};\n\"PrimitiveType\": {\n\"Sphere\": 0;\n\"Cylinder\": 1;\n\"Cube\": 2;\n\"Cone\": 3;\n\"Torus\": 4;\n\"Pyramid\": 9;\n} & {\n[key: number]: string;\n};\n\"OperationType\": {\n\"Subtract\": 0;\n\"Union\": 1;\n\"Stain\": 2;\n\"Intersect\": 3;\n} & {\n[key: number]: string;\n};\n\"LightType\": {\n\"Rect\": 0;\n\"Sphere\": 1;\n\"Distant\": 2;\n} & {\n[key: number]: string;\n};\n\"nodeCreate\": ((type: number, parentId?: number) => number);\n\"nodeDelete\": ((id: number) => void);\n\"nodeClone\": ((id: number) => number);\n\"cloneSubtree\": ((id: number, options?: {\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"index\"?: undefined | number;\n}) => Promise<number>);\n\"nodeList\": (() => Array<number>);\n\"nodeChildren\": ((parentId: number) => Array<number>);\n\"nodeSetParent\": ((id: number, parentId: number, index?: undefined | number) => void);\n\"nodeGetType\": ((id: number) => number);\n\"nodeGetName\": ((id: number) => string);\n\"nodeSetName\": ((id: number, name: string) => void);\n\"nodeGetParentId\": ((id: number) => number);\n\"nodeGetPos\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeGetLock\": ((id: number) => false | true);\n\"nodeSetLock\": ((id: number, locked: false | true) => void);\n\"nodeSetPos\": ((id: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetRot\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetRot\": ((id: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetSize\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetSize\": ((id: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetHide\": ((id: number) => false | true);\n\"nodeSetHide\": ((id: number, hidden: false | true) => void);\n\"nodeGetOp\": ((id: number) => number);\n\"nodeSetOp\": ((id: number, operation: number) => void);\n\"nodeGetBlend\": ((id: number) => number);\n\"nodeSetBlend\": ((id: number, blend: number) => void);\n\"nodeGetRound\": ((id: number) => number);\n\"nodeSetRound\": ((id: number, round: number) => void);\n\"nodeGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"nodeSetColor\": ((id: number, rgb255: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n} | {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"nodeGetMaterialId\": ((id: number) => null | number);\n\"nodeSetMaterialId\": ((id: number, materialId: number) => void);\n\"nodeGetResolution\": ((id: number) => number);\n\"nodeSetUnionResolution\": ((unionId: number, resolution: number) => void);\n\"nodeGetLightType\": ((id: number) => number);\n\"nodeSetLightType\": ((id: number, lightType: number) => void);\n\"nodeGetPower\": ((id: number) => number);\n\"nodeGetCollimation\": ((id: number) => number);\n\"nodeSetCollimation\": ((id: number, collimation: number) => void);\n\"nodeGetLightTextureFile\": ((id: number) => string);\n\"nodeSetLightTextureFile\": ((id: number, textureFile: string) => void);\n\"nodeSetPower\": ((id: number, power: number) => void);\n\"nodeGetText\": ((id: number) => string);\n\"nodeSetFacing\": ((id: number, direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeSetTextSize\": ((id: number, size: {\n\"fontSize\": number;\n\"depth\": number;\n}) => void);\n\"nodeGetTextSize\": ((id: number) => {\n\"fontSize\": number;\n\"depth\": number;\n});\n\"nodeSetText\": ((id: number, text: string) => void);\n\"nodeGetFont\": ((id: number) => string);\n\"nodeSetFont\": ((id: number, font: string) => void);\n\"nodeGetWeight\": ((id: number) => number);\n\"nodeSetWeight\": ((id: number, weight: number) => void);\n\"nodeGetItalic\": ((id: number) => false | true);\n\"nodeSetItalic\": ((id: number, italic: false | true) => void);\n\"nodeGetAlign\": ((id: number) => number);\n\"nodeSetAlign\": ((id: number, align: number) => void);\n\"nodeGetWrap\": ((id: number) => number);\n\"nodeSetWrap\": ((id: number, wrap: number) => void);\n\"nodeGetWidth\": ((id: number) => number);\n\"nodeSetWidth\": ((id: number, width: number) => void);\n\"nodeGetSpacing\": ((id: number) => number);\n\"nodeSetSpacing\": ((id: number, spacing: number) => void);\n\"nodeGetLineHeight\": ((id: number) => number);\n\"nodeSetLineHeight\": ((id: number, lineHeight: number) => void);\n\"nodeGetDensity\": ((id: number) => number);\n\"nodeSetDensity\": ((id: number, density: number) => void);\n\"nodeGetRoundness\": ((id: number) => number);\n\"nodeSetRoundness\": ((id: number, roundness: number) => void);\n\"nodeGetSmoothing\": ((id: number) => number);\n\"nodeSetSmoothing\": ((id: number, smoothing: number) => void);\n\"nodeGetPrimType\": ((id: number) => number);\n\"nodeSetPrimType\": ((id: number, primitive: number) => void);\n\"nodeGetMirror\": ((id: number, slot: number) => {\n\"axis\": \"custom\" | \"x\" | \"y\" | \"z\" | \"disabled\";\n\"planePosition\": number;\n\"goop\": number;\n});\n\"nodeSetMirror\": ((id: number, slot: number, axis: \"x\" | \"y\" | \"z\" | \"disabled\", planePosition?: number, goop?: number) => void);\n\"nodeGetThickness\": ((id: number) => number);\n\"nodeSetThickness\": ((id: number, thickness: number) => void);\n\"curveGetClosed\": ((curveId: number) => false | true);\n\"curveSetClosed\": ((curveId: number, closed: false | true) => void);\n\"curvePointGetHandleIn\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointGetHandleOut\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetHandleIn\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointSetHandleOut\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointCount\": ((curveId: number) => number);\n\"curvePointAdd\": ((curveId: number, point: {\n\"name\"?: undefined | string;\n\"pos\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"rot\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"size\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"fixed\"?: undefined | false | true;\n\"round\"?: undefined | number;\n\"materialId\"?: undefined | number;\n}, pointIndex?: undefined | number) => number);\n\"curvePointRemove\": ((curveId: number, pointIndex: number) => void);\n\"curvePointGetName\": ((curveId: number, pointIndex: number) => string);\n\"curvePointSetName\": ((curveId: number, pointIndex: number, name: string) => void);\n\"curvePointGetPos\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetPos\": ((curveId: number, pointIndex: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetRot\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetRot\": ((curveId: number, pointIndex: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetSize\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetSize\": ((curveId: number, pointIndex: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetFixed\": ((curveId: number, pointIndex: number) => false | true);\n\"curvePointSetFixed\": ((curveId: number, pointIndex: number, fixed: false | true) => void);\n\"curvePointGetRound\": ((curveId: number, pointIndex: number) => number);\n\"curvePointSetRound\": ((curveId: number, pointIndex: number, round: number) => void);\n\"curvePointGetMaterialId\": ((curveId: number, pointIndex: number) => null | number);\n\"curvePointSetMaterialId\": ((curveId: number, pointIndex: number, materialId: number) => void);\n\"materialImport\": ((name: string) => Promise<number>);\n\"materialCreate\": (() => number);\n\"materialDelete\": ((id: number) => void);\n\"materialList\": (() => Array<number>);\n\"materialGetName\": ((id: number) => string);\n\"materialSetName\": ((id: number, name: string) => void);\n\"materialGetTier\": ((id: number) => number);\n\"materialSetTier\": ((id: number, tier: number) => void);\n\"materialGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSecondaryColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSecondaryColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSubsurfaceColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSubsurfaceColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetRoughness\": ((id: number) => number);\n\"materialSetRoughness\": ((id: number, value: number) => void);\n\"materialGetMetalness\": ((id: number) => number);\n\"materialSetMetalness\": ((id: number, value: number) => void);\n\"materialGetTransmittance\": ((id: number) => number);\n\"materialSetTransmittance\": ((id: number, value: number) => void);\n\"materialGetTranslucency\": ((id: number) => number);\n\"materialSetTranslucency\": ((id: number, value: number) => void);\n\"materialGetIor\": ((id: number) => number);\n\"materialSetIor\": ((id: number, value: number) => void);\n\"materialGetSheen\": ((id: number) => number);\n\"materialSetSheen\": ((id: number, value: number) => void);\n\"materialGetSheenRoughness\": ((id: number) => number);\n\"materialSetSheenRoughness\": ((id: number, value: number) => void);\n\"materialGetSpecularTint\": ((id: number) => number);\n\"materialSetSpecularTint\": ((id: number, value: number) => void);\n\"materialGetAbsorption\": ((id: number) => number);\n\"materialSetAbsorption\": ((id: number, value: number) => void);\n\"materialGetEmission\": ((id: number) => number);\n\"materialSetEmission\": ((id: number, value: number) => void);\n\"materialGetIridescence\": ((id: number) => number);\n\"materialSetIridescence\": ((id: number, value: number) => void);\n\"materialGetTranslucencyWeight\": ((id: number) => number);\n\"materialSetTranslucencyWeight\": ((id: number, value: number) => void);\n\"materialGetDispersion\": ((id: number) => number);\n\"materialSetDispersion\": ((id: number, value: number) => void);\n\"materialGetSurfaceOpacity\": ((id: number) => number);\n\"materialSetSurfaceOpacity\": ((id: number, value: number) => void);\n\"listFontFamilies\": (() => Array<{\n\"name\": string;\n\"variants\": Array<{\n\"weight\": string;\n\"italic\": false | true;\n}>;\n}>);\n\"print\": ((...values: Array<unknown>) => void);\n\"nodeGetAABB\": ((id: number) => Promise<{\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}>);\n\"nodeResize\": ((id: number, dimensions: {\n\"x\"?: undefined | number;\n\"y\"?: undefined | number;\n\"z\"?: undefined | number;\n}) => Promise<void>);\n\"aabbCenter\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"aabbRadius\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => number);\n\"lookAt\": ((origin: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, target: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"alignAxis\": ((direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, axis: \"x\" | \"y\" | \"z\") => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"cameraReadDepthOfField\": (() => {\n\"enabled\": false | true;\n\"mode\": \"physical\" | \"post-process\";\n\"focusDistance\": number;\n\"aperturePercent\": number;\n\"projection\": \"perspective\" | \"orthographic\";\n});\n\"cameraSetDepthOfField\": ((input: {\n\"enabled\"?: undefined | false | true;\n\"mode\"?: undefined | \"physical\" | \"post-process\";\n\"focusDistance\"?: undefined | number;\n\"aperturePercent\"?: undefined | number;\n}) => void);\n\"scenePropertiesRead\": (() => {\n\"hdr_name\": undefined | string;\n\"hdr_multiplier\": undefined | number;\n\"hdr_orientation\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n\"backdrop_color1\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_color2\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_grad_offset\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n});\n\"listHDRs\": (() => Array<string>);\n\"setHdrName\": ((name: string) => void);\n\"setHdrMultiplier\": ((multiplier: number) => void);\n\"setHdrOrientation\": ((orientation: {\n\"x\": number;\n\"y\": number;\n}) => void);\n\"setBackgroundColor\": ((rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"unitMultiplier\": number;\n\"nodes\": ((options?: {\n\"ids\"?: undefined | Array<number>;\n\"type\"?: undefined | number;\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"offset\"?: undefined | number;\n\"limit\"?: undefined | number;\n}) => Array<{\n\"id\": number;\n\"name\": string;\n\"type\": number;\n\"parentId\": number;\n}>);\n}) => T | Promise<T>)) => Promise<T>);\n\"screenshot\": ((options?: undefined | {\n\"camera\"?: undefined | {\n\"position\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"target\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"projection\"?: undefined | \"perspective\" | \"orthographic\";\n\"horizontalFovDegrees\"?: undefined | number;\n\"orthographicWidth\"?: undefined | number;\n};\n}) => Promise<{\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Generated by scripts/generate-skill-declarations.mjs.
|
|
2
2
|
// prettier-ignore
|
|
3
|
-
export const WOMP_SCENE_DECLARATIONS = "declare const womp: { scene: {\n\"health\": ((objectIds?: undefined | Array<number>) => Promise<{\n\"status\": \"within_limits\" | \"overflow\" | \"unverified\";\n\"freshness\": \"unverified\" | \"snapshot\" | \"post_ack_event\";\n\"revisionVerified\": false;\n\"affectedAreaIds\": Array<string>;\n\"emptyAreaIds\"?: undefined | Array<string>;\n\"thermometer\"?: undefined | {\n\"objects\": {\n[key: string]: {\n\"num_prims\": number;\n\"flag_prim_overflow\": number;\n\"flag_depth_overflow\": number;\n\"flag_vox_overflow\": number;\n\"voxels\": number;\n};\n};\n\"max_num_prims\": number;\n\"max_total_depth\": number;\n\"max_per_object\": number;\n\"total\": number;\n\"max_total\": number;\n\"assets_budget_used\": number;\n\"assets_budget_total\": number;\n\"mesh_instances_used\"?: undefined | number;\n\"mesh_instances_total\"?: undefined | number;\n\"decal_instances_used\"?: undefined | number;\n\"decal_instances_total\"?: undefined | number;\n\"field_instances_used\"?: undefined | number;\n\"field_instances_total\"?: undefined | number;\n};\n\"reason\"?: undefined | string;\n}>);\n\"access\": (<T>(callback: ((draft: {\n\"listSuperMaterials\": (() => Array<string>);\n\"_getParentId\": ((childId: number) => number);\n\"_getScaleProductUpTo\": ((nodeId: number, includeNodeSelfUnion?: false | true) => number);\n\"NodeType\": {\n\"Primitive\": 0;\n\"Union\": 1;\n\"Light\": 2;\n\"Curve\": 3;\n\"Group\": 4;\n\"Text\": 5;\n\"Field\": 6;\n\"SVG\": 7;\n\"Mesh\": 8;\n\"Decal\": 9;\n\"OpenSCAD\": 10;\n\"Socket\": 11;\n} & {\n[key: number]: string;\n};\n\"PrimitiveType\": {\n\"Sphere\": 0;\n\"Cylinder\": 1;\n\"Cube\": 2;\n\"Cone\": 3;\n\"Torus\": 4;\n\"Pyramid\": 9;\n} & {\n[key: number]: string;\n};\n\"OperationType\": {\n\"Subtract\": 0;\n\"Union\": 1;\n\"Stain\": 2;\n\"Intersect\": 3;\n} & {\n[key: number]: string;\n};\n\"LightType\": {\n\"Rect\": 0;\n\"Sphere\": 1;\n\"Distant\": 2;\n} & {\n[key: number]: string;\n};\n\"nodeCreate\": ((type: number, parentId?: number) => number);\n\"nodeDelete\": ((id: number) => void);\n\"nodeClone\": ((id: number) => number);\n\"cloneSubtree\": ((id: number, options?: {\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"index\"?: undefined | number;\n}) => Promise<number>);\n\"nodeList\": (() => Array<number>);\n\"nodeChildren\": ((parentId: number) => Array<number>);\n\"nodeSetParent\": ((id: number, parentId: number, index?: undefined | number) => void);\n\"nodeGetType\": ((id: number) => number);\n\"nodeGetName\": ((id: number) => string);\n\"nodeSetName\": ((id: number, name: string) => void);\n\"nodeGetParentId\": ((id: number) => number);\n\"nodeGetPos\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeGetLock\": ((id: number) => false | true);\n\"nodeSetLock\": ((id: number, locked: false | true) => void);\n\"nodeSetPos\": ((id: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetRot\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetRot\": ((id: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetSize\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetSize\": ((id: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetHide\": ((id: number) => false | true);\n\"nodeSetHide\": ((id: number, hidden: false | true) => void);\n\"nodeGetOp\": ((id: number) => number);\n\"nodeSetOp\": ((id: number, operation: number) => void);\n\"nodeGetBlend\": ((id: number) => number);\n\"nodeSetBlend\": ((id: number, blend: number) => void);\n\"nodeGetRound\": ((id: number) => number);\n\"nodeSetRound\": ((id: number, round: number) => void);\n\"nodeGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"nodeSetColor\": ((id: number, rgb255: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n} | {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"nodeGetMaterialId\": ((id: number) => null | number);\n\"nodeSetMaterialId\": ((id: number, materialId: number) => void);\n\"nodeGetResolution\": ((id: number) => number);\n\"nodeSetUnionResolution\": ((unionId: number, resolution: number) => void);\n\"nodeGetLightType\": ((id: number) => number);\n\"nodeSetLightType\": ((id: number, lightType: number) => void);\n\"nodeGetPower\": ((id: number) => number);\n\"nodeSetPower\": ((id: number, power: number) => void);\n\"nodeGetText\": ((id: number) => string);\n\"nodeSetFacing\": ((id: number, direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeSetTextSize\": ((id: number, size: {\n\"fontSize\": number;\n\"depth\": number;\n}) => void);\n\"nodeGetTextSize\": ((id: number) => {\n\"fontSize\": number;\n\"depth\": number;\n});\n\"nodeSetText\": ((id: number, text: string) => void);\n\"nodeGetFont\": ((id: number) => string);\n\"nodeSetFont\": ((id: number, font: string) => void);\n\"nodeGetWeight\": ((id: number) => number);\n\"nodeSetWeight\": ((id: number, weight: number) => void);\n\"nodeGetItalic\": ((id: number) => false | true);\n\"nodeSetItalic\": ((id: number, italic: false | true) => void);\n\"nodeGetAlign\": ((id: number) => number);\n\"nodeSetAlign\": ((id: number, align: number) => void);\n\"nodeGetWrap\": ((id: number) => number);\n\"nodeSetWrap\": ((id: number, wrap: number) => void);\n\"nodeGetWidth\": ((id: number) => number);\n\"nodeSetWidth\": ((id: number, width: number) => void);\n\"nodeGetSpacing\": ((id: number) => number);\n\"nodeSetSpacing\": ((id: number, spacing: number) => void);\n\"nodeGetLineHeight\": ((id: number) => number);\n\"nodeSetLineHeight\": ((id: number, lineHeight: number) => void);\n\"nodeGetDensity\": ((id: number) => number);\n\"nodeSetDensity\": ((id: number, density: number) => void);\n\"nodeGetRoundness\": ((id: number) => number);\n\"nodeSetRoundness\": ((id: number, roundness: number) => void);\n\"nodeGetSmoothing\": ((id: number) => number);\n\"nodeSetSmoothing\": ((id: number, smoothing: number) => void);\n\"nodeGetPrimType\": ((id: number) => number);\n\"nodeSetPrimType\": ((id: number, primitive: number) => void);\n\"nodeGetMirror\": ((id: number, slot: number) => {\n\"axis\": \"custom\" | \"x\" | \"y\" | \"z\" | \"disabled\";\n\"planePosition\": number;\n\"goop\": number;\n});\n\"nodeSetMirror\": ((id: number, slot: number, axis: \"x\" | \"y\" | \"z\" | \"disabled\", planePosition?: number, goop?: number) => void);\n\"nodeGetThickness\": ((id: number) => number);\n\"nodeSetThickness\": ((id: number, thickness: number) => void);\n\"curveGetClosed\": ((curveId: number) => false | true);\n\"curveSetClosed\": ((curveId: number, closed: false | true) => void);\n\"curvePointGetHandleIn\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointGetHandleOut\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetHandleIn\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointSetHandleOut\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointCount\": ((curveId: number) => number);\n\"curvePointAdd\": ((curveId: number, point: {\n\"name\"?: undefined | string;\n\"pos\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"rot\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"size\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"fixed\"?: undefined | false | true;\n\"round\"?: undefined | number;\n\"materialId\"?: undefined | number;\n}, pointIndex?: undefined | number) => number);\n\"curvePointRemove\": ((curveId: number, pointIndex: number) => void);\n\"curvePointGetName\": ((curveId: number, pointIndex: number) => string);\n\"curvePointSetName\": ((curveId: number, pointIndex: number, name: string) => void);\n\"curvePointGetPos\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetPos\": ((curveId: number, pointIndex: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetRot\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetRot\": ((curveId: number, pointIndex: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetSize\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetSize\": ((curveId: number, pointIndex: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetFixed\": ((curveId: number, pointIndex: number) => false | true);\n\"curvePointSetFixed\": ((curveId: number, pointIndex: number, fixed: false | true) => void);\n\"curvePointGetRound\": ((curveId: number, pointIndex: number) => number);\n\"curvePointSetRound\": ((curveId: number, pointIndex: number, round: number) => void);\n\"curvePointGetMaterialId\": ((curveId: number, pointIndex: number) => null | number);\n\"curvePointSetMaterialId\": ((curveId: number, pointIndex: number, materialId: number) => void);\n\"materialImport\": ((name: string) => Promise<number>);\n\"materialCreate\": (() => number);\n\"materialDelete\": ((id: number) => void);\n\"materialList\": (() => Array<number>);\n\"materialGetName\": ((id: number) => string);\n\"materialSetName\": ((id: number, name: string) => void);\n\"materialGetTier\": ((id: number) => number);\n\"materialSetTier\": ((id: number, tier: number) => void);\n\"materialGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSecondaryColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSecondaryColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSubsurfaceColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSubsurfaceColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetRoughness\": ((id: number) => number);\n\"materialSetRoughness\": ((id: number, value: number) => void);\n\"materialGetMetalness\": ((id: number) => number);\n\"materialSetMetalness\": ((id: number, value: number) => void);\n\"materialGetTransmittance\": ((id: number) => number);\n\"materialSetTransmittance\": ((id: number, value: number) => void);\n\"materialGetTranslucency\": ((id: number) => number);\n\"materialSetTranslucency\": ((id: number, value: number) => void);\n\"materialGetIor\": ((id: number) => number);\n\"materialSetIor\": ((id: number, value: number) => void);\n\"materialGetSheen\": ((id: number) => number);\n\"materialSetSheen\": ((id: number, value: number) => void);\n\"materialGetSheenRoughness\": ((id: number) => number);\n\"materialSetSheenRoughness\": ((id: number, value: number) => void);\n\"materialGetSpecularTint\": ((id: number) => number);\n\"materialSetSpecularTint\": ((id: number, value: number) => void);\n\"materialGetAbsorption\": ((id: number) => number);\n\"materialSetAbsorption\": ((id: number, value: number) => void);\n\"materialGetEmission\": ((id: number) => number);\n\"materialSetEmission\": ((id: number, value: number) => void);\n\"materialGetIridescence\": ((id: number) => number);\n\"materialSetIridescence\": ((id: number, value: number) => void);\n\"materialGetTranslucencyWeight\": ((id: number) => number);\n\"materialSetTranslucencyWeight\": ((id: number, value: number) => void);\n\"materialGetDispersion\": ((id: number) => number);\n\"materialSetDispersion\": ((id: number, value: number) => void);\n\"materialGetSurfaceOpacity\": ((id: number) => number);\n\"materialSetSurfaceOpacity\": ((id: number, value: number) => void);\n\"listFontFamilies\": (() => Array<{\n\"name\": string;\n\"variants\": Array<{\n\"weight\": string;\n\"italic\": false | true;\n}>;\n}>);\n\"print\": ((...values: Array<unknown>) => void);\n\"nodeGetAABB\": ((id: number) => Promise<{\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}>);\n\"nodeResize\": ((id: number, dimensions: {\n\"x\"?: undefined | number;\n\"y\"?: undefined | number;\n\"z\"?: undefined | number;\n}) => Promise<void>);\n\"aabbCenter\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"aabbRadius\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => number);\n\"lookAt\": ((origin: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, target: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"alignAxis\": ((direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, axis: \"x\" | \"y\" | \"z\") => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"scenePropertiesRead\": (() => {\n\"hdr_name\": undefined | string;\n\"hdr_multiplier\": undefined | number;\n\"hdr_orientation\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n\"backdrop_color1\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_color2\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_grad_offset\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n});\n\"listHDRs\": (() => Array<string>);\n\"setHdrName\": ((name: string) => void);\n\"setHdrMultiplier\": ((multiplier: number) => void);\n\"setHdrOrientation\": ((orientation: {\n\"x\": number;\n\"y\": number;\n}) => void);\n\"setBackgroundColor\": ((rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"unitMultiplier\": number;\n\"nodes\": ((options?: {\n\"ids\"?: undefined | Array<number>;\n\"type\"?: undefined | number;\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"offset\"?: undefined | number;\n\"limit\"?: undefined | number;\n}) => Array<{\n\"id\": number;\n\"name\": string;\n\"type\": number;\n\"parentId\": number;\n}>);\n}) => T | Promise<T>)) => Promise<T>);\n\"screenshot\": ((options?: undefined | {\n\"camera\"?: undefined | {\n\"position\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"target\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"projection\"?: undefined | \"perspective\" | \"orthographic\";\n\"horizontalFovDegrees\"?: undefined | number;\n\"orthographicWidth\"?: undefined | number;\n};\n}) => Promise<{\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
3
|
+
export const WOMP_SCENE_DECLARATIONS = "declare const womp: { scene: {\n\"health\": ((objectIds?: undefined | Array<number>) => Promise<{\n\"status\": \"within_limits\" | \"overflow\" | \"unverified\";\n\"freshness\": \"unverified\" | \"snapshot\" | \"post_ack_event\";\n\"revisionVerified\": false;\n\"affectedAreaIds\": Array<string>;\n\"emptyAreaIds\"?: undefined | Array<string>;\n\"thermometer\"?: undefined | {\n\"objects\": {\n[key: string]: {\n\"num_prims\": number;\n\"flag_prim_overflow\": number;\n\"flag_depth_overflow\": number;\n\"flag_vox_overflow\": number;\n\"voxels\": number;\n};\n};\n\"max_num_prims\": number;\n\"max_total_depth\": number;\n\"max_per_object\": number;\n\"total\": number;\n\"max_total\": number;\n\"assets_budget_used\": number;\n\"assets_budget_total\": number;\n\"mesh_instances_used\"?: undefined | number;\n\"mesh_instances_total\"?: undefined | number;\n\"decal_instances_used\"?: undefined | number;\n\"decal_instances_total\"?: undefined | number;\n\"field_instances_used\"?: undefined | number;\n\"field_instances_total\"?: undefined | number;\n};\n\"reason\"?: undefined | string;\n}>);\n\"access\": (<T>(callback: ((draft: {\n\"listSuperMaterials\": (() => Array<string>);\n\"_getParentId\": ((childId: number) => number);\n\"_getScaleProductUpTo\": ((nodeId: number, includeNodeSelfUnion?: false | true) => number);\n\"NodeType\": {\n\"Primitive\": 0;\n\"Union\": 1;\n\"Light\": 2;\n\"Curve\": 3;\n\"Group\": 4;\n\"Text\": 5;\n\"Field\": 6;\n\"SVG\": 7;\n\"Mesh\": 8;\n\"Decal\": 9;\n\"OpenSCAD\": 10;\n\"Socket\": 11;\n} & {\n[key: number]: string;\n};\n\"PrimitiveType\": {\n\"Sphere\": 0;\n\"Cylinder\": 1;\n\"Cube\": 2;\n\"Cone\": 3;\n\"Torus\": 4;\n\"Pyramid\": 9;\n} & {\n[key: number]: string;\n};\n\"OperationType\": {\n\"Subtract\": 0;\n\"Union\": 1;\n\"Stain\": 2;\n\"Intersect\": 3;\n} & {\n[key: number]: string;\n};\n\"LightType\": {\n\"Rect\": 0;\n\"Sphere\": 1;\n\"Distant\": 2;\n} & {\n[key: number]: string;\n};\n\"nodeCreate\": ((type: number, parentId?: number) => number);\n\"nodeDelete\": ((id: number) => void);\n\"nodeClone\": ((id: number) => number);\n\"cloneSubtree\": ((id: number, options?: {\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"index\"?: undefined | number;\n}) => Promise<number>);\n\"nodeList\": (() => Array<number>);\n\"nodeChildren\": ((parentId: number) => Array<number>);\n\"nodeSetParent\": ((id: number, parentId: number, index?: undefined | number) => void);\n\"nodeGetType\": ((id: number) => number);\n\"nodeGetName\": ((id: number) => string);\n\"nodeSetName\": ((id: number, name: string) => void);\n\"nodeGetParentId\": ((id: number) => number);\n\"nodeGetPos\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeGetLock\": ((id: number) => false | true);\n\"nodeSetLock\": ((id: number, locked: false | true) => void);\n\"nodeSetPos\": ((id: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetRot\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetRot\": ((id: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetSize\": ((id: number) => {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"nodeSetSize\": ((id: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n} | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeGetHide\": ((id: number) => false | true);\n\"nodeSetHide\": ((id: number, hidden: false | true) => void);\n\"nodeGetOp\": ((id: number) => number);\n\"nodeSetOp\": ((id: number, operation: number) => void);\n\"nodeGetBlend\": ((id: number) => number);\n\"nodeSetBlend\": ((id: number, blend: number) => void);\n\"nodeGetRound\": ((id: number) => number);\n\"nodeSetRound\": ((id: number, round: number) => void);\n\"nodeGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"nodeSetColor\": ((id: number, rgb255: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n} | {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"nodeGetMaterialId\": ((id: number) => null | number);\n\"nodeSetMaterialId\": ((id: number, materialId: number) => void);\n\"nodeGetResolution\": ((id: number) => number);\n\"nodeSetUnionResolution\": ((unionId: number, resolution: number) => void);\n\"nodeGetLightType\": ((id: number) => number);\n\"nodeSetLightType\": ((id: number, lightType: number) => void);\n\"nodeGetPower\": ((id: number) => number);\n\"nodeGetCollimation\": ((id: number) => number);\n\"nodeSetCollimation\": ((id: number, collimation: number) => void);\n\"nodeGetLightTextureFile\": ((id: number) => string);\n\"nodeSetLightTextureFile\": ((id: number, textureFile: string) => void);\n\"nodeSetPower\": ((id: number, power: number) => void);\n\"nodeGetText\": ((id: number) => string);\n\"nodeSetFacing\": ((id: number, direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"nodeSetTextSize\": ((id: number, size: {\n\"fontSize\": number;\n\"depth\": number;\n}) => void);\n\"nodeGetTextSize\": ((id: number) => {\n\"fontSize\": number;\n\"depth\": number;\n});\n\"nodeSetText\": ((id: number, text: string) => void);\n\"nodeGetFont\": ((id: number) => string);\n\"nodeSetFont\": ((id: number, font: string) => void);\n\"nodeGetWeight\": ((id: number) => number);\n\"nodeSetWeight\": ((id: number, weight: number) => void);\n\"nodeGetItalic\": ((id: number) => false | true);\n\"nodeSetItalic\": ((id: number, italic: false | true) => void);\n\"nodeGetAlign\": ((id: number) => number);\n\"nodeSetAlign\": ((id: number, align: number) => void);\n\"nodeGetWrap\": ((id: number) => number);\n\"nodeSetWrap\": ((id: number, wrap: number) => void);\n\"nodeGetWidth\": ((id: number) => number);\n\"nodeSetWidth\": ((id: number, width: number) => void);\n\"nodeGetSpacing\": ((id: number) => number);\n\"nodeSetSpacing\": ((id: number, spacing: number) => void);\n\"nodeGetLineHeight\": ((id: number) => number);\n\"nodeSetLineHeight\": ((id: number, lineHeight: number) => void);\n\"nodeGetDensity\": ((id: number) => number);\n\"nodeSetDensity\": ((id: number, density: number) => void);\n\"nodeGetRoundness\": ((id: number) => number);\n\"nodeSetRoundness\": ((id: number, roundness: number) => void);\n\"nodeGetSmoothing\": ((id: number) => number);\n\"nodeSetSmoothing\": ((id: number, smoothing: number) => void);\n\"nodeGetPrimType\": ((id: number) => number);\n\"nodeSetPrimType\": ((id: number, primitive: number) => void);\n\"nodeGetMirror\": ((id: number, slot: number) => {\n\"axis\": \"custom\" | \"x\" | \"y\" | \"z\" | \"disabled\";\n\"planePosition\": number;\n\"goop\": number;\n});\n\"nodeSetMirror\": ((id: number, slot: number, axis: \"x\" | \"y\" | \"z\" | \"disabled\", planePosition?: number, goop?: number) => void);\n\"nodeGetThickness\": ((id: number) => number);\n\"nodeSetThickness\": ((id: number, thickness: number) => void);\n\"curveGetClosed\": ((curveId: number) => false | true);\n\"curveSetClosed\": ((curveId: number, closed: false | true) => void);\n\"curvePointGetHandleIn\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointGetHandleOut\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetHandleIn\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointSetHandleOut\": ((curveId: number, pointIndex: number, value: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointCount\": ((curveId: number) => number);\n\"curvePointAdd\": ((curveId: number, point: {\n\"name\"?: undefined | string;\n\"pos\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"rot\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"size\"?: undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"fixed\"?: undefined | false | true;\n\"round\"?: undefined | number;\n\"materialId\"?: undefined | number;\n}, pointIndex?: undefined | number) => number);\n\"curvePointRemove\": ((curveId: number, pointIndex: number) => void);\n\"curvePointGetName\": ((curveId: number, pointIndex: number) => string);\n\"curvePointSetName\": ((curveId: number, pointIndex: number, name: string) => void);\n\"curvePointGetPos\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetPos\": ((curveId: number, pointIndex: number, position: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetRot\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetRot\": ((curveId: number, pointIndex: number, rotation: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetSize\": ((curveId: number, pointIndex: number) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"curvePointSetSize\": ((curveId: number, pointIndex: number, sizeValue: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => void);\n\"curvePointGetFixed\": ((curveId: number, pointIndex: number) => false | true);\n\"curvePointSetFixed\": ((curveId: number, pointIndex: number, fixed: false | true) => void);\n\"curvePointGetRound\": ((curveId: number, pointIndex: number) => number);\n\"curvePointSetRound\": ((curveId: number, pointIndex: number, round: number) => void);\n\"curvePointGetMaterialId\": ((curveId: number, pointIndex: number) => null | number);\n\"curvePointSetMaterialId\": ((curveId: number, pointIndex: number, materialId: number) => void);\n\"materialImport\": ((name: string) => Promise<number>);\n\"materialCreate\": (() => number);\n\"materialDelete\": ((id: number) => void);\n\"materialList\": (() => Array<number>);\n\"materialGetName\": ((id: number) => string);\n\"materialSetName\": ((id: number, name: string) => void);\n\"materialGetTier\": ((id: number) => number);\n\"materialSetTier\": ((id: number, tier: number) => void);\n\"materialGetColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSecondaryColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSecondaryColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetSubsurfaceColor\": ((id: number) => {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n});\n\"materialSetSubsurfaceColor\": ((id: number, rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"materialGetRoughness\": ((id: number) => number);\n\"materialSetRoughness\": ((id: number, value: number) => void);\n\"materialGetMetalness\": ((id: number) => number);\n\"materialSetMetalness\": ((id: number, value: number) => void);\n\"materialGetTransmittance\": ((id: number) => number);\n\"materialSetTransmittance\": ((id: number, value: number) => void);\n\"materialGetTranslucency\": ((id: number) => number);\n\"materialSetTranslucency\": ((id: number, value: number) => void);\n\"materialGetIor\": ((id: number) => number);\n\"materialSetIor\": ((id: number, value: number) => void);\n\"materialGetSheen\": ((id: number) => number);\n\"materialSetSheen\": ((id: number, value: number) => void);\n\"materialGetSheenRoughness\": ((id: number) => number);\n\"materialSetSheenRoughness\": ((id: number, value: number) => void);\n\"materialGetSpecularTint\": ((id: number) => number);\n\"materialSetSpecularTint\": ((id: number, value: number) => void);\n\"materialGetAbsorption\": ((id: number) => number);\n\"materialSetAbsorption\": ((id: number, value: number) => void);\n\"materialGetEmission\": ((id: number) => number);\n\"materialSetEmission\": ((id: number, value: number) => void);\n\"materialGetIridescence\": ((id: number) => number);\n\"materialSetIridescence\": ((id: number, value: number) => void);\n\"materialGetTranslucencyWeight\": ((id: number) => number);\n\"materialSetTranslucencyWeight\": ((id: number, value: number) => void);\n\"materialGetDispersion\": ((id: number) => number);\n\"materialSetDispersion\": ((id: number, value: number) => void);\n\"materialGetSurfaceOpacity\": ((id: number) => number);\n\"materialSetSurfaceOpacity\": ((id: number, value: number) => void);\n\"listFontFamilies\": (() => Array<{\n\"name\": string;\n\"variants\": Array<{\n\"weight\": string;\n\"italic\": false | true;\n}>;\n}>);\n\"print\": ((...values: Array<unknown>) => void);\n\"nodeGetAABB\": ((id: number) => Promise<{\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}>);\n\"nodeResize\": ((id: number, dimensions: {\n\"x\"?: undefined | number;\n\"y\"?: undefined | number;\n\"z\"?: undefined | number;\n}) => Promise<void>);\n\"aabbCenter\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"aabbRadius\": ((box: {\n\"min\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"max\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n}) => number);\n\"lookAt\": ((origin: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, target: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}) => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"alignAxis\": ((direction: {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n}, axis: \"x\" | \"y\" | \"z\") => {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n});\n\"cameraReadDepthOfField\": (() => {\n\"enabled\": false | true;\n\"mode\": \"physical\" | \"post-process\";\n\"focusDistance\": number;\n\"aperturePercent\": number;\n\"projection\": \"perspective\" | \"orthographic\";\n});\n\"cameraSetDepthOfField\": ((input: {\n\"enabled\"?: undefined | false | true;\n\"mode\"?: undefined | \"physical\" | \"post-process\";\n\"focusDistance\"?: undefined | number;\n\"aperturePercent\"?: undefined | number;\n}) => void);\n\"scenePropertiesRead\": (() => {\n\"hdr_name\": undefined | string;\n\"hdr_multiplier\": undefined | number;\n\"hdr_orientation\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n\"backdrop_color1\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_color2\": undefined | {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"backdrop_grad_offset\": undefined | {\n\"x\": number;\n\"y\": number;\n};\n});\n\"listHDRs\": (() => Array<string>);\n\"setHdrName\": ((name: string) => void);\n\"setHdrMultiplier\": ((multiplier: number) => void);\n\"setHdrOrientation\": ((orientation: {\n\"x\": number;\n\"y\": number;\n}) => void);\n\"setBackgroundColor\": ((rgb255: {\n\"r\": number;\n\"g\": number;\n\"b\": number;\n}) => void);\n\"unitMultiplier\": number;\n\"nodes\": ((options?: {\n\"ids\"?: undefined | Array<number>;\n\"type\"?: undefined | number;\n\"parentId\"?: undefined | number;\n\"name\"?: undefined | string;\n\"offset\"?: undefined | number;\n\"limit\"?: undefined | number;\n}) => Array<{\n\"id\": number;\n\"name\": string;\n\"type\": number;\n\"parentId\": number;\n}>);\n}) => T | Promise<T>)) => Promise<T>);\n\"screenshot\": ((options?: undefined | {\n\"camera\"?: undefined | {\n\"position\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"target\": {\n\"x\": number;\n\"y\": number;\n\"z\": number;\n};\n\"projection\"?: undefined | \"perspective\" | \"orthographic\";\n\"horizontalFovDegrees\"?: undefined | number;\n\"orthographicWidth\"?: undefined | number;\n};\n}) => Promise<{\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const WOMP_TEXTURE_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importTexture\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\";\n\"texture\"?: undefined | {\n\"assetId\": number;\n\"resourceName\": string;\n};\n\"reason\"?: undefined | string;\n}>);\n\"readTextureImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\";\n\"texture\"?: undefined | {\n\"assetId\": number;\n\"resourceName\": string;\n};\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Generated by scripts/generate-skill-declarations.mjs.
|
|
2
|
+
// prettier-ignore
|
|
3
|
+
export const WOMP_TEXTURE_IMPORT_DECLARATIONS = "declare const womp: { assets: {\n\"importTexture\": ((request: {\n\"key\": string;\n\"source\": {\n\"id\": string;\n\"mediaType\": string;\n\"name\"?: undefined | string;\n};\n}) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\";\n\"texture\"?: undefined | {\n\"assetId\": number;\n\"resourceName\": string;\n};\n\"reason\"?: undefined | string;\n}>);\n\"readTextureImport\": ((key: string) => Promise<{\n\"key\": string;\n\"status\": \"ready\" | \"completed\" | \"unknown\";\n\"texture\"?: undefined | {\n\"assetId\": number;\n\"resourceName\": string;\n};\n\"reason\"?: undefined | string;\n}>);\n} };\ndeclare function print(...values: unknown[]): void;\ndeclare function emitImage(ref: { id: string; mediaType: string; name?: string }, options?: { inspect?: boolean }): Promise<void>;\ndeclare function emitFile(ref: { id: string; mediaType: string; name?: string }): Promise<void>;\n";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { SceneEdit } from "@womp/kakapo-sdk";
|
|
3
|
+
declare const settingsSchema: z.ZodObject<{
|
|
4
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
5
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
physical: "physical";
|
|
7
|
+
"post-process": "post-process";
|
|
8
|
+
}>>;
|
|
9
|
+
focusDistance: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
aperturePercent: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, z.core.$strict>;
|
|
12
|
+
export type DepthOfFieldSettings = z.infer<typeof settingsSchema>;
|
|
13
|
+
export declare function createSceneCamera(scene: SceneEdit, unitMultiplier: number, userId: string | undefined): {
|
|
14
|
+
cameraReadDepthOfField: () => {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
mode: "physical" | "post-process";
|
|
17
|
+
focusDistance: number;
|
|
18
|
+
aperturePercent: number;
|
|
19
|
+
projection: "perspective" | "orthographic";
|
|
20
|
+
};
|
|
21
|
+
/** Focus distance uses project units; aperturePercent is Womp strength, not photographic f-number. */
|
|
22
|
+
cameraSetDepthOfField: (input: DepthOfFieldSettings) => void;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { INTERNAL_UNITS_PER_MM } from "./coordinates.js";
|
|
3
|
+
import { metadataObject } from "./scene-metadata.js";
|
|
4
|
+
const settingsSchema = z
|
|
5
|
+
.object({
|
|
6
|
+
enabled: z.boolean().optional(),
|
|
7
|
+
mode: z.enum(["physical", "post-process"]).optional(),
|
|
8
|
+
focusDistance: z.number().finite().positive().optional(),
|
|
9
|
+
aperturePercent: z.number().finite().min(0).max(100).optional(),
|
|
10
|
+
})
|
|
11
|
+
.strict();
|
|
12
|
+
const MAX_APERTURE = 0.002; // Womp's aperture-strength UI maps 100% to this native lens value.
|
|
13
|
+
export function createSceneCamera(scene, unitMultiplier, userId) {
|
|
14
|
+
const read = () => scene.getScene().camera;
|
|
15
|
+
return {
|
|
16
|
+
cameraReadDepthOfField: () => {
|
|
17
|
+
const camera = read();
|
|
18
|
+
return {
|
|
19
|
+
enabled: camera.dof,
|
|
20
|
+
mode: camera.physical_dof
|
|
21
|
+
? "physical"
|
|
22
|
+
: "post-process",
|
|
23
|
+
focusDistance: (camera.lens.y * unitMultiplier) / INTERNAL_UNITS_PER_MM,
|
|
24
|
+
aperturePercent: (camera.lens.z * 100) / MAX_APERTURE,
|
|
25
|
+
projection: camera.ortho === false
|
|
26
|
+
? "perspective"
|
|
27
|
+
: "orthographic",
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
/** Focus distance uses project units; aperturePercent is Womp strength, not photographic f-number. */
|
|
31
|
+
cameraSetDepthOfField: (input) => {
|
|
32
|
+
const settings = settingsSchema.parse(input);
|
|
33
|
+
const camera = read();
|
|
34
|
+
const enabled = settings.enabled ?? camera.dof;
|
|
35
|
+
const physical = settings.mode === undefined
|
|
36
|
+
? camera.physical_dof
|
|
37
|
+
: settings.mode === "physical";
|
|
38
|
+
const focus = settings.focusDistance === undefined
|
|
39
|
+
? camera.lens.y
|
|
40
|
+
: (settings.focusDistance * INTERNAL_UNITS_PER_MM) / unitMultiplier;
|
|
41
|
+
if (!Number.isFinite(focus))
|
|
42
|
+
throw new Error("Focus distance is outside the supported range");
|
|
43
|
+
if (enabled && physical && camera.ortho)
|
|
44
|
+
throw new Error("Physical DoF requires a perspective camera");
|
|
45
|
+
if (enabled && physical && focus <= 0)
|
|
46
|
+
throw new Error("Physical DoF requires a positive focus distance");
|
|
47
|
+
const edits = [];
|
|
48
|
+
if (settings.enabled !== undefined)
|
|
49
|
+
edits.push({ path: "dof", value: settings.enabled });
|
|
50
|
+
if (settings.mode !== undefined)
|
|
51
|
+
edits.push({ path: "physical_dof", value: physical });
|
|
52
|
+
if (settings.focusDistance !== undefined)
|
|
53
|
+
edits.push({ path: "lens/y", value: focus });
|
|
54
|
+
if (settings.aperturePercent !== undefined)
|
|
55
|
+
edits.push({
|
|
56
|
+
path: "lens/z",
|
|
57
|
+
value: (settings.aperturePercent * MAX_APERTURE) / 100,
|
|
58
|
+
});
|
|
59
|
+
const patches = edits.map(({ path, value }) => ({
|
|
60
|
+
op: "add",
|
|
61
|
+
path: `/camera/${path}`,
|
|
62
|
+
value,
|
|
63
|
+
}));
|
|
64
|
+
if (userId && edits.length) {
|
|
65
|
+
const perUser = metadataObject(scene.getSceneExt(["perUserExt"]).perUserExt);
|
|
66
|
+
const cameras = metadataObject(metadataObject(perUser[userId]).camerasExt);
|
|
67
|
+
const entries = Object.entries(cameras);
|
|
68
|
+
const active = entries.find(([, value]) => metadataObject(value).active === true) ??
|
|
69
|
+
entries[0];
|
|
70
|
+
if (active) {
|
|
71
|
+
const escaped = userId.replaceAll("~", "~0").replaceAll("/", "~1");
|
|
72
|
+
const cameraId = active[0]
|
|
73
|
+
.replaceAll("~", "~0")
|
|
74
|
+
.replaceAll("/", "~1");
|
|
75
|
+
patches.push(...edits.map(({ path, value }) => ({
|
|
76
|
+
op: "add",
|
|
77
|
+
path: `/ext/perUserExt/${escaped}/camerasExt/${cameraId}/data/${path}`,
|
|
78
|
+
value,
|
|
79
|
+
})));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (patches.length)
|
|
83
|
+
scene.applyScenePatch(patches, { returnScene: false });
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
package/dist/sdk-scene-host.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type SdkSceneServices = {
|
|
|
14
14
|
libraryId: number;
|
|
15
15
|
}>;
|
|
16
16
|
enableCurveV3?: boolean;
|
|
17
|
+
cameraUserId?: string;
|
|
17
18
|
};
|
|
18
19
|
export type SdkSceneEditorOptions = {
|
|
19
20
|
targetKey: string;
|
|
@@ -133,6 +134,10 @@ export declare function createSdkSceneDraft(api: KakapoAPI, scene: SceneEdit, se
|
|
|
133
134
|
nodeGetLightType: (id: number) => number;
|
|
134
135
|
nodeSetLightType: (id: number, lightType: number) => void;
|
|
135
136
|
nodeGetPower: (id: number) => number;
|
|
137
|
+
nodeGetCollimation: (id: number) => number;
|
|
138
|
+
nodeSetCollimation: (id: number, collimation: number) => void;
|
|
139
|
+
nodeGetLightTextureFile: (id: number) => string;
|
|
140
|
+
nodeSetLightTextureFile: (id: number, textureFile: string) => void;
|
|
136
141
|
nodeSetPower: (id: number, power: number) => void;
|
|
137
142
|
nodeGetText: (id: number) => string;
|
|
138
143
|
nodeSetFacing: (id: number, direction: import("@womp/kakapo-sdk").Vec3) => void;
|
|
@@ -297,6 +302,14 @@ export declare function createSdkSceneDraft(api: KakapoAPI, scene: SceneEdit, se
|
|
|
297
302
|
}) => number;
|
|
298
303
|
lookAt: (origin: import("@womp/kakapo-sdk").Vec3, target: import("@womp/kakapo-sdk").Vec3) => import("@womp/kakapo-sdk").Vec3;
|
|
299
304
|
alignAxis: (direction: import("@womp/kakapo-sdk").Vec3, axis: "x" | "y" | "z") => import("@womp/kakapo-sdk").Vec3;
|
|
305
|
+
cameraReadDepthOfField: () => {
|
|
306
|
+
enabled: boolean;
|
|
307
|
+
mode: "physical" | "post-process";
|
|
308
|
+
focusDistance: number;
|
|
309
|
+
aperturePercent: number;
|
|
310
|
+
projection: "perspective" | "orthographic";
|
|
311
|
+
};
|
|
312
|
+
cameraSetDepthOfField: (input: import("./scene-camera.js").DepthOfFieldSettings) => void;
|
|
300
313
|
scenePropertiesRead: () => {
|
|
301
314
|
hdr_name: string | undefined;
|
|
302
315
|
hdr_multiplier: number | undefined;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { ArtifactRef, ExecutionReceipt, SparkInvocationContext } from "./capabilities.js";
|
|
3
|
+
import { type TextureImportsHost } from "./capabilities/texture-imports.js";
|
|
4
|
+
declare const scopeSchema: z.ZodObject<{
|
|
5
|
+
actorId: z.ZodString;
|
|
6
|
+
teamId: z.ZodString;
|
|
7
|
+
projectId: z.ZodNumber;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
export type TextureImportHostOptions = {
|
|
10
|
+
scope: z.infer<typeof scopeSchema>;
|
|
11
|
+
readReceipts(): readonly ExecutionReceipt[];
|
|
12
|
+
assertWritable(context: SparkInvocationContext): void | Promise<void>;
|
|
13
|
+
prepareUpload(source: ArtifactRef, context: SparkInvocationContext): Promise<() => Promise<unknown>>;
|
|
14
|
+
readAsset(assetId: number, context: SparkInvocationContext): Promise<unknown>;
|
|
15
|
+
/** Refresh the renderer's texture catalogue and check the exact resource name. */
|
|
16
|
+
register(resourceName: string, context: SparkInvocationContext): Promise<boolean>;
|
|
17
|
+
};
|
|
18
|
+
/** Shared durable upload semantics; hosts own authorization, transport and renderer access. */
|
|
19
|
+
export declare function createTextureImportsHost(options: TextureImportHostOptions): TextureImportsHost;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { textureImportRequestSchema, } from "./capabilities/texture-imports.js";
|
|
3
|
+
const scopeSchema = z.object({
|
|
4
|
+
actorId: z.string().min(1),
|
|
5
|
+
teamId: z.string(),
|
|
6
|
+
projectId: z.number().int().positive(),
|
|
7
|
+
});
|
|
8
|
+
const textureAssetSchema = z.object({
|
|
9
|
+
id: z.number().int().positive(),
|
|
10
|
+
type: z.literal("texture"),
|
|
11
|
+
projectId: z.number().int().positive(),
|
|
12
|
+
userId: z.string().nullable(),
|
|
13
|
+
teamId: z.string().nullable(),
|
|
14
|
+
fileName: z.string().min(1),
|
|
15
|
+
hash: z.string().min(1),
|
|
16
|
+
deleted: z.literal(false),
|
|
17
|
+
});
|
|
18
|
+
const stateSchema = z.object({
|
|
19
|
+
version: z.literal(1),
|
|
20
|
+
scope: scopeSchema,
|
|
21
|
+
request: textureImportRequestSchema,
|
|
22
|
+
status: z.enum(["ready", "completed", "unknown"]),
|
|
23
|
+
texture: z
|
|
24
|
+
.object({
|
|
25
|
+
assetId: z.number().int().positive(),
|
|
26
|
+
resourceName: z.string().min(1),
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
reason: z.string().optional(),
|
|
30
|
+
});
|
|
31
|
+
/** Shared durable upload semantics; hosts own authorization, transport and renderer access. */
|
|
32
|
+
export function createTextureImportsHost(options) {
|
|
33
|
+
const scope = options.scope;
|
|
34
|
+
const states = new Map();
|
|
35
|
+
const pending = new Map();
|
|
36
|
+
const id = (key) => `spark:texture-import:${key}`;
|
|
37
|
+
const check = async (context) => {
|
|
38
|
+
context.signal.throwIfAborted();
|
|
39
|
+
await options.assertWritable(context);
|
|
40
|
+
context.signal.throwIfAborted();
|
|
41
|
+
};
|
|
42
|
+
const result = ({ request, status, texture, reason, }) => ({
|
|
43
|
+
key: request.key,
|
|
44
|
+
status,
|
|
45
|
+
...(texture ? { texture: { ...texture } } : {}),
|
|
46
|
+
...(reason ? { reason } : {}),
|
|
47
|
+
});
|
|
48
|
+
const load = (key) => {
|
|
49
|
+
const receipt = [...options.readReceipts()]
|
|
50
|
+
.reverse()
|
|
51
|
+
.find((item) => item.capability === "assets" &&
|
|
52
|
+
item.operation === "importTexture" &&
|
|
53
|
+
item.id === id(key));
|
|
54
|
+
const state = states.get(key) ??
|
|
55
|
+
(receipt ? stateSchema.parse(receipt.details) : undefined);
|
|
56
|
+
if (state &&
|
|
57
|
+
(state.scope.actorId !== scope.actorId ||
|
|
58
|
+
state.scope.teamId !== scope.teamId ||
|
|
59
|
+
state.scope.projectId !== scope.projectId))
|
|
60
|
+
throw new Error("This texture import belongs to a different account or project.");
|
|
61
|
+
return state;
|
|
62
|
+
};
|
|
63
|
+
const save = async (state, context) => {
|
|
64
|
+
const snapshot = structuredClone(state);
|
|
65
|
+
// Keep accepted uploads recoverable even if writing their receipt fails.
|
|
66
|
+
if (state.texture)
|
|
67
|
+
states.set(state.request.key, snapshot);
|
|
68
|
+
await context.recordReceipt({
|
|
69
|
+
id: id(state.request.key),
|
|
70
|
+
capability: "assets",
|
|
71
|
+
operation: "importTexture",
|
|
72
|
+
status: state.status === "completed"
|
|
73
|
+
? "committed"
|
|
74
|
+
: state.texture
|
|
75
|
+
? "submitted"
|
|
76
|
+
: "unknown",
|
|
77
|
+
target: { projectId: scope.projectId },
|
|
78
|
+
details: snapshot,
|
|
79
|
+
});
|
|
80
|
+
if (!state.texture)
|
|
81
|
+
states.set(state.request.key, snapshot);
|
|
82
|
+
};
|
|
83
|
+
const assetTexture = (input) => {
|
|
84
|
+
const asset = textureAssetSchema.parse(input);
|
|
85
|
+
if (asset.projectId !== scope.projectId ||
|
|
86
|
+
(asset.teamId ?? "") !== scope.teamId ||
|
|
87
|
+
(!scope.teamId && asset.userId !== scope.actorId))
|
|
88
|
+
throw new Error("The texture asset is outside this import's account or project.");
|
|
89
|
+
const dot = asset.fileName.lastIndexOf(".");
|
|
90
|
+
if (dot <= 0 ||
|
|
91
|
+
/[/\\\u0000-\u001f]/.test(asset.fileName) ||
|
|
92
|
+
dot === asset.fileName.length - 1)
|
|
93
|
+
throw new Error("The texture service returned an invalid filename.");
|
|
94
|
+
return {
|
|
95
|
+
assetId: asset.id,
|
|
96
|
+
resourceName: `textures/${asset.fileName.slice(0, dot)}_${asset.hash.slice(-6)}${asset.fileName.slice(dot).toLowerCase()}`,
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
const finish = async (state, context) => {
|
|
100
|
+
await check(context);
|
|
101
|
+
if (!state.texture)
|
|
102
|
+
return result(state);
|
|
103
|
+
const texture = assetTexture(await options.readAsset(state.texture.assetId, context));
|
|
104
|
+
state.texture = texture;
|
|
105
|
+
await check(context);
|
|
106
|
+
const registered = await options.register(texture.resourceName, context);
|
|
107
|
+
await check(context);
|
|
108
|
+
state.status = registered ? "completed" : "ready";
|
|
109
|
+
state.reason = registered
|
|
110
|
+
? undefined
|
|
111
|
+
: "The texture asset exists but is not yet listed by the renderer.";
|
|
112
|
+
await save(state, context);
|
|
113
|
+
return result(state);
|
|
114
|
+
};
|
|
115
|
+
const exclusive = (key, source, action) => {
|
|
116
|
+
const prior = pending.get(key);
|
|
117
|
+
if (prior) {
|
|
118
|
+
if (prior.source !== source)
|
|
119
|
+
throw new Error("This texture import key already identifies a different source.");
|
|
120
|
+
return prior.result.then((value) => structuredClone(value));
|
|
121
|
+
}
|
|
122
|
+
const work = action().finally(() => pending.delete(key));
|
|
123
|
+
pending.set(key, { source, result: work });
|
|
124
|
+
return work;
|
|
125
|
+
};
|
|
126
|
+
return {
|
|
127
|
+
importTexture: async (request, context) => {
|
|
128
|
+
await check(context);
|
|
129
|
+
const source = `${request.source.id}\n${request.source.mediaType}`;
|
|
130
|
+
return exclusive(request.key, source, async () => {
|
|
131
|
+
const existing = load(request.key);
|
|
132
|
+
if (existing) {
|
|
133
|
+
if (existing.request.source.id !== request.source.id ||
|
|
134
|
+
existing.request.source.mediaType !== request.source.mediaType)
|
|
135
|
+
throw new Error("This texture import key already identifies a different source.");
|
|
136
|
+
return finish(existing, context);
|
|
137
|
+
}
|
|
138
|
+
const upload = await options.prepareUpload(request.source, context);
|
|
139
|
+
await check(context);
|
|
140
|
+
const state = {
|
|
141
|
+
version: 1,
|
|
142
|
+
scope,
|
|
143
|
+
request,
|
|
144
|
+
status: "unknown",
|
|
145
|
+
reason: "The texture upload outcome is unconfirmed. Do not upload it again under another key.",
|
|
146
|
+
};
|
|
147
|
+
await save(state, context);
|
|
148
|
+
await check(context);
|
|
149
|
+
const response = z
|
|
150
|
+
.array(z.unknown())
|
|
151
|
+
.length(1)
|
|
152
|
+
.parse(await upload());
|
|
153
|
+
state.texture = assetTexture(response[0]);
|
|
154
|
+
state.status = "ready";
|
|
155
|
+
state.reason =
|
|
156
|
+
"The texture asset was uploaded; renderer registration is pending.";
|
|
157
|
+
await save(state, context);
|
|
158
|
+
return finish(state, context);
|
|
159
|
+
});
|
|
160
|
+
},
|
|
161
|
+
readTextureImport: async (key, context) => {
|
|
162
|
+
await check(context);
|
|
163
|
+
const state = load(key);
|
|
164
|
+
if (!state)
|
|
165
|
+
throw new Error("No texture import with this key exists in this conversation.");
|
|
166
|
+
return exclusive(key, `${state.request.source.id}\n${state.request.source.mediaType}`, () => finish(state, context));
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
package/dist/womp-scene-api.d.ts
CHANGED
|
@@ -64,6 +64,7 @@ export type WompSceneApiContext = {
|
|
|
64
64
|
rootId: number;
|
|
65
65
|
enableCurveV3?: boolean;
|
|
66
66
|
hdrs?: readonly SceneHdr[];
|
|
67
|
+
cameraUserId?: string;
|
|
67
68
|
superMaterialNames?: readonly string[];
|
|
68
69
|
importLibraryMaterial?(name: string): Promise<number>;
|
|
69
70
|
getDefaultMaterialId(): number;
|
|
@@ -164,6 +165,12 @@ export declare function createWompSceneApi(context: WompSceneApiContext): {
|
|
|
164
165
|
nodeGetLightType: (id: number) => number;
|
|
165
166
|
nodeSetLightType: (id: number, lightType: number) => void;
|
|
166
167
|
nodeGetPower: (id: number) => number;
|
|
168
|
+
nodeGetCollimation: (id: number) => number;
|
|
169
|
+
/** Beam focus from 0 (broad emission) to 1 (collimated), for Rect/Sphere lights. */
|
|
170
|
+
nodeSetCollimation: (id: number, collimation: number) => void;
|
|
171
|
+
nodeGetLightTextureFile: (id: number) => string;
|
|
172
|
+
/** Renderer resource name returned by texture import; an empty string clears the pattern. */
|
|
173
|
+
nodeSetLightTextureFile: (id: number, textureFile: string) => void;
|
|
167
174
|
/** Linear emitted intensity before collimation; not a percentage or physical unit. */
|
|
168
175
|
nodeSetPower: (id: number, power: number) => void;
|
|
169
176
|
nodeGetText: (id: number) => string;
|
|
@@ -289,6 +296,14 @@ export declare function createWompSceneApi(context: WompSceneApiContext): {
|
|
|
289
296
|
/** Align local +Z from origin toward target, not a light's emission or a text/decal face; use nodeSetFacing for those. */
|
|
290
297
|
lookAt: typeof lookAt;
|
|
291
298
|
alignAxis: typeof alignAxis;
|
|
299
|
+
cameraReadDepthOfField: () => {
|
|
300
|
+
enabled: boolean;
|
|
301
|
+
mode: "physical" | "post-process";
|
|
302
|
+
focusDistance: number;
|
|
303
|
+
aperturePercent: number;
|
|
304
|
+
projection: "perspective" | "orthographic";
|
|
305
|
+
};
|
|
306
|
+
cameraSetDepthOfField: (input: import("./scene-camera.js").DepthOfFieldSettings) => void;
|
|
292
307
|
scenePropertiesRead: () => {
|
|
293
308
|
hdr_name: string | undefined;
|
|
294
309
|
hdr_multiplier: number | undefined;
|
package/dist/womp-scene-api.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { xyzRotationFromMatrix, MAX_BLEND_RADIUS_MM, MAX_MIRROR_BLEND_RADIUS_MM, maxLightIntensity } from "@womp/kakapo-sdk";
|
|
2
2
|
import { metadataObject, readMaterialMetadata, removeMaterialMetadata, shiftCurvePointMetadata, writeMaterialMetadata, } from "./scene-metadata.js";
|
|
3
3
|
import { createSceneEnvironment } from "./scene-environment.js";
|
|
4
|
+
import { createSceneCamera } from "./scene-camera.js";
|
|
4
5
|
import { assertColor255 } from "./color.js";
|
|
5
6
|
import { INTERNAL_UNITS_PER_MM, convertRotationBasis, sceneUnitMultiplier, fromEngineDimensions, fromEngineMirrorRotation, fromEnginePosition, toEngineDimensions, toEngineMirrorRotation, toEnginePosition, } from "./coordinates.js";
|
|
6
7
|
export const NodeType = {
|
|
@@ -454,6 +455,7 @@ export function createWompSceneApi(context) {
|
|
|
454
455
|
}));
|
|
455
456
|
},
|
|
456
457
|
...createSceneEnvironment(scene, context.hdrs, context.print),
|
|
458
|
+
...createSceneCamera(scene, unitMultiplier, context.cameraUserId),
|
|
457
459
|
listSuperMaterials: () => {
|
|
458
460
|
if (!context.superMaterialNames)
|
|
459
461
|
throw new Error("The super material catalog is unavailable in this host");
|
|
@@ -727,6 +729,27 @@ export function createWompSceneApi(context) {
|
|
|
727
729
|
update(id, { lightType: value });
|
|
728
730
|
},
|
|
729
731
|
nodeGetPower: (id) => requireLight(id).power,
|
|
732
|
+
nodeGetCollimation: (id) => requireLight(id).collimation,
|
|
733
|
+
/** Beam focus from 0 (broad emission) to 1 (collimated), for Rect/Sphere lights. */
|
|
734
|
+
nodeSetCollimation: (id, collimation) => {
|
|
735
|
+
const light = requireLight(id);
|
|
736
|
+
if (light.lightType === "distant")
|
|
737
|
+
throw new Error("Collimation requires a Rect or Sphere light");
|
|
738
|
+
if (!Number.isFinite(collimation) || collimation < 0 || collimation > 1)
|
|
739
|
+
throw new Error("Collimation must be a finite number from 0 to 1");
|
|
740
|
+
update(id, { collimation });
|
|
741
|
+
},
|
|
742
|
+
nodeGetLightTextureFile: (id) => requireLight(id).textureFile,
|
|
743
|
+
/** Renderer resource name returned by texture import; an empty string clears the pattern. */
|
|
744
|
+
nodeSetLightTextureFile: (id, textureFile) => {
|
|
745
|
+
const light = requireLight(id);
|
|
746
|
+
if (light.lightType === "distant")
|
|
747
|
+
throw new Error("A light texture requires a Rect or Sphere light");
|
|
748
|
+
if (typeof textureFile !== "string" || /[\\:\u0000-\u001f]/.test(textureFile) ||
|
|
749
|
+
(textureFile !== "" && (!/^textures\/[^/]+$/.test(textureFile) || ["textures/.", "textures/.."].includes(textureFile))))
|
|
750
|
+
throw new Error("Light texture must be a renderer resource name or an empty string");
|
|
751
|
+
update(id, { textureFile });
|
|
752
|
+
},
|
|
730
753
|
/** Linear emitted intensity before collimation; not a percentage or physical unit. */
|
|
731
754
|
nodeSetPower: (id, power) => {
|
|
732
755
|
const light = requireLight(id);
|