babylonjs-editor 5.4.2-alpha.2 → 5.4.2-alpha.3
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/declaration/src/editor/layout/assets-browser/items/javascript-item.d.ts +13 -0
- package/declaration/src/editor/layout/inspector/material/pbr.d.ts +4 -0
- package/declaration/src/editor/layout/marketplace.d.ts +12 -0
- package/declaration/src/editor/layout/preview/play.d.ts +1 -1
- package/declaration/src/editor/layout/preview.d.ts +8 -1
- package/declaration/src/loader/animation.d.ts +12 -0
- package/declaration/src/loader/convert.d.ts +28 -0
- package/declaration/src/loader/mesh.d.ts +8 -3
- package/declaration/src/loader/node.d.ts +16 -3
- package/declaration/src/loader/skeleton.d.ts +17 -0
- package/declaration/src/loader/types.d.ts +47 -1
- package/declaration/src/mcp/action.d.ts +4 -0
- package/declaration/src/mcp/animations/animations.d.ts +23 -0
- package/declaration/src/mcp/batch.d.ts +17 -0
- package/declaration/src/mcp/cameras/cameras.d.ts +10 -0
- package/declaration/src/mcp/lights/lights.d.ts +29 -0
- package/declaration/src/mcp/marketplace/marketplace.d.ts +19 -0
- package/declaration/src/mcp/materials/materials.d.ts +27 -0
- package/declaration/src/mcp/mcp.d.ts +23 -0
- package/declaration/src/mcp/meshes/meshes.d.ts +37 -0
- package/declaration/src/mcp/nodes/nodes.d.ts +38 -0
- package/declaration/src/mcp/particles/particles.d.ts +10 -0
- package/declaration/src/mcp/rendering/post-process.d.ts +13 -0
- package/declaration/src/mcp/scene/hierarchy.d.ts +8 -0
- package/declaration/src/mcp/scene/scene.d.ts +22 -0
- package/declaration/src/mcp/screenshot.d.ts +14 -0
- package/declaration/src/mcp/scripts/editor-scripts.d.ts +22 -0
- package/declaration/src/mcp/scripts/scripts.d.ts +34 -0
- package/declaration/src/mcp/sounds/sounds.d.ts +16 -0
- package/declaration/src/mcp/tools/resolve.d.ts +73 -0
- package/declaration/src/tools/compile.d.ts +7 -0
- package/declaration/src/tools/marketplaces/types.d.ts +1 -0
- package/package.json +15 -15
- package/declaration/src/tools/scene/play/compile.d.ts +0 -4
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { AssetsBrowserItem } from "./item";
|
|
3
|
+
export declare class AssetBrowserJavaScriptItem extends AssetsBrowserItem {
|
|
4
|
+
/**
|
|
5
|
+
* @override
|
|
6
|
+
*/
|
|
7
|
+
protected getIcon(): ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* @override
|
|
10
|
+
*/
|
|
11
|
+
protected getContextMenuContent(): ReactNode;
|
|
12
|
+
private _runScript;
|
|
13
|
+
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Component, ReactNode } from "react";
|
|
2
2
|
import { PBRMaterial, AbstractMesh } from "babylonjs";
|
|
3
|
+
import { Editor } from "../../../main";
|
|
3
4
|
export interface IEditorPBRMaterialInspectorProps {
|
|
4
5
|
mesh?: AbstractMesh;
|
|
5
6
|
material: PBRMaterial;
|
|
7
|
+
editor: Editor;
|
|
6
8
|
}
|
|
7
9
|
export interface IEditorPBRMaterialInspectorState {
|
|
8
10
|
subSurfaceEnabled: boolean;
|
|
@@ -11,4 +13,6 @@ export declare class EditorPBRMaterialInspector extends Component<IEditorPBRMate
|
|
|
11
13
|
constructor(props: IEditorPBRMaterialInspectorProps);
|
|
12
14
|
render(): ReactNode;
|
|
13
15
|
private _handleSubSurfaceEnabledChange;
|
|
16
|
+
private _getMaterialTexturesOptimizations;
|
|
17
|
+
private _createAndAssignORMTexture;
|
|
14
18
|
}
|
|
@@ -32,6 +32,18 @@ export declare class EditorMarketplaceBrowser extends Component<IMarketplaceBrow
|
|
|
32
32
|
private _handleNextPage;
|
|
33
33
|
private _handleAssetClicked;
|
|
34
34
|
setSearchQuery(query: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Returns the registered marketplace provider matching the given source id (e.g. "polyhaven").
|
|
37
|
+
* @param source defines the id of the provider to retrieve.
|
|
38
|
+
*/
|
|
39
|
+
getProviderBySource(source: string): MarketplaceProvider | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* Selects the marketplace provider matching the given source id and optionally runs a search.
|
|
42
|
+
* Used by the MCP integration so downloads/searches are driven through the visible browser.
|
|
43
|
+
* @param source defines the id of the provider to select.
|
|
44
|
+
* @param query defines the optional query to search for once the provider is selected.
|
|
45
|
+
*/
|
|
46
|
+
selectProviderAndSearch(source: string, query?: string): Promise<boolean>;
|
|
35
47
|
private _handleSearch;
|
|
36
48
|
private _getDefaultFilters;
|
|
37
49
|
}
|
|
@@ -76,7 +76,7 @@ export declare class EditorPreviewPlayComponent extends Component<IEditorPreview
|
|
|
76
76
|
/**
|
|
77
77
|
* The script that is required and executed is a bundled version of the "src/scripts.ts" file.
|
|
78
78
|
* Here we use esbuild to bundle the scripts and transform the imports to use the correct paths.
|
|
79
|
-
* @see
|
|
79
|
+
* @see compileScript for more information.
|
|
80
80
|
*/
|
|
81
81
|
private _compileScripts;
|
|
82
82
|
private _createAndLoadScene;
|
|
@@ -145,7 +145,14 @@ export declare class EditorPreview extends Component<IEditorPreviewProps, IEdito
|
|
|
145
145
|
private _getToolbar;
|
|
146
146
|
updateGizmoSnapPreferences(prefs: IGizmoSnapPreferences): void;
|
|
147
147
|
private _getEditToolbar;
|
|
148
|
-
|
|
148
|
+
/**
|
|
149
|
+
* Makes the given camera the editor's active camera, saving the rendering configurations of the
|
|
150
|
+
* previously active camera and restoring those associated to the new one. This is the supported way
|
|
151
|
+
* to switch cameras so that per-camera post-processes are set up correctly (and exported for runtime).
|
|
152
|
+
* @param camera defines the reference to the camera to activate.
|
|
153
|
+
*/
|
|
154
|
+
switchToCamera(camera: Camera): void;
|
|
155
|
+
private _switchToCameraById;
|
|
149
156
|
/**
|
|
150
157
|
* Sets the currently active gizmo. Set "none" to deactivate the gizmo.
|
|
151
158
|
* @param gizmo defines the type of gizmo to activate.
|
|
@@ -1,2 +1,14 @@
|
|
|
1
1
|
import { AssimpJSRuntime } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Parses the animations of the file into Babylon.js `AnimationGroup`s.
|
|
4
|
+
*
|
|
5
|
+
* Each Assimp animation becomes one `AnimationGroup`. Every channel targets a node by name and animates its
|
|
6
|
+
* `position`, `rotationQuaternion` and `scaling`. Because bones are linked to their transform nodes (see
|
|
7
|
+
* `skeleton.ts`), animating the transform nodes drives the skeleton as well — so skinned and non-skinned animations
|
|
8
|
+
* are handled the exact same way, and a node animation does not require the file to have a skeleton at all.
|
|
9
|
+
*
|
|
10
|
+
* Key times are expressed in Assimp ticks, which map directly to Babylon frames; setting the animation frame rate to
|
|
11
|
+
* `tickspersecond` plays the animation back at the correct real-time speed.
|
|
12
|
+
* @param runtime defines the current import runtime.
|
|
13
|
+
*/
|
|
2
14
|
export declare function parseAnimations(runtime: AssimpJSRuntime): void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Matrix, Quaternion, Vector3 } from "babylonjs";
|
|
2
|
+
/**
|
|
3
|
+
* Converts an Assimp transformation matrix (flat array of 16 numbers) to a Babylon.js matrix.
|
|
4
|
+
*
|
|
5
|
+
* Two conversions are applied:
|
|
6
|
+
* - Assimp matrices are **row-major** whereas Babylon.js stores matrices **column-major**, so the raw array is transposed.
|
|
7
|
+
* - Assimp data is **right-handed** whereas Babylon.js is **left-handed**, so the matrix is mirrored along Z (`F * M * F`).
|
|
8
|
+
*
|
|
9
|
+
* @param transformation defines the flat 16-number transformation array as exported by Assimp.
|
|
10
|
+
*/
|
|
11
|
+
export declare function assimpMatrixToBabylon(transformation?: number[]): Matrix;
|
|
12
|
+
/**
|
|
13
|
+
* Converts an Assimp position keyframe value `[x, y, z]` (right-handed) to a left-handed Babylon.js vector.
|
|
14
|
+
* @param value defines the position array as exported by Assimp.
|
|
15
|
+
*/
|
|
16
|
+
export declare function convertPositionKey(value: number[]): Vector3;
|
|
17
|
+
/**
|
|
18
|
+
* Converts an Assimp scaling keyframe value `[x, y, z]` to a Babylon.js vector. Scaling is invariant to the Z mirror.
|
|
19
|
+
* @param value defines the scaling array as exported by Assimp.
|
|
20
|
+
*/
|
|
21
|
+
export declare function convertScalingKey(value: number[]): Vector3;
|
|
22
|
+
/**
|
|
23
|
+
* Converts an Assimp rotation keyframe value to a left-handed Babylon.js quaternion.
|
|
24
|
+
* Assimp exports quaternions in `[w, x, y, z]` order in a right-handed system. Mirroring the rotation along Z turns
|
|
25
|
+
* the quaternion `(w, x, y, z)` into `(w, -x, -y, z)`, which is `(-x, -y, z, w)` in Babylon's `(x, y, z, w)` order.
|
|
26
|
+
* @param value defines the rotation array as exported by Assimp (`[w, x, y, z]`).
|
|
27
|
+
*/
|
|
28
|
+
export declare function convertRotationKey(value: number[]): Quaternion;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { AssimpJSRuntime, IAssimpMeshNode } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the geometry (and skinning data) of a mesh node. This is the second pass of the import: it runs after the
|
|
4
|
+
* skeleton has been created so the per-vertex bone indices can be resolved to the final skeleton bone indices.
|
|
5
|
+
* @param runtime defines the current import runtime.
|
|
6
|
+
* @param meshNode defines the mesh node (Babylon mesh + Assimp data) to build the geometry for.
|
|
7
|
+
*/
|
|
8
|
+
export declare function buildMeshGeometry(runtime: AssimpJSRuntime, meshNode: IAssimpMeshNode): void;
|
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Matrix, TransformNode } from "babylonjs";
|
|
2
2
|
import { AssimpJSRuntime, IAssimpJSNodeData } from "./types";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Builds the Babylon.js node hierarchy from the Assimp node tree.
|
|
5
|
+
*
|
|
6
|
+
* This is the first pass of the import: every *real* Assimp node becomes either a `Mesh` (geometry is built later, once
|
|
7
|
+
* the skeleton is available) or a `TransformNode`. The `$AssimpFbx$` helper nodes are collapsed into the next real
|
|
8
|
+
* descendant (their transforms are accumulated into `pending`). The local transform of each node is converted to
|
|
9
|
+
* Babylon.js' left-handed/column-major convention and the hierarchy is recorded so that skeletons and animations can be
|
|
10
|
+
* resolved afterwards.
|
|
11
|
+
* @param runtime defines the current import runtime.
|
|
12
|
+
* @param nodes defines the Assimp nodes to parse at the current level.
|
|
13
|
+
* @param parent defines the Babylon.js parent (real) node (or null at the root).
|
|
14
|
+
* @param parentName defines the Assimp name of the parent (real) node (or null at the root).
|
|
15
|
+
* @param pending defines the accumulated transform of the `$AssimpFbx$` helper nodes collapsed so far (identity by default).
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildNodeGraph(runtime: AssimpJSRuntime, nodes: IAssimpJSNodeData[], parent: TransformNode | null, parentName: string | null, pending?: Matrix): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AssimpJSRuntime } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the skeleton (if the file contains skinned meshes) from the previously parsed node hierarchy.
|
|
4
|
+
*
|
|
5
|
+
* Assimp/FBX encodes bone offsets in intermediate `$AssimpFbx$` helper nodes that sit *between* the actual bones in the
|
|
6
|
+
* node tree (translation, pre-rotation, etc.). To keep the bind pose correct, every node on the path from a skinning
|
|
7
|
+
* bone up to the common root is turned into a Babylon.js bone. The bones referenced by the meshes' vertex weights are a
|
|
8
|
+
* subset of those bones; the helper bones simply carry the in-between transforms so the absolute (world) bind matrices
|
|
9
|
+
* match the mesh's bind pose.
|
|
10
|
+
*
|
|
11
|
+
* Each bone is linked to its corresponding `TransformNode`. Animating those transform nodes (see `animation.ts`) makes
|
|
12
|
+
* the skeleton follow along, which also unifies skinned and non-skinned animation handling.
|
|
13
|
+
*
|
|
14
|
+
* On return, `runtime.skeleton` and `runtime.boneIndexByName` are populated.
|
|
15
|
+
* @param runtime defines the current import runtime.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildSkeleton(runtime: AssimpJSRuntime): void;
|
|
@@ -1,4 +1,30 @@
|
|
|
1
|
-
import { AssetContainer, PBRMaterial, Scene, VertexData } from "babylonjs";
|
|
1
|
+
import { AssetContainer, Matrix, Mesh, PBRMaterial, Scene, Skeleton, TransformNode, VertexData } from "babylonjs";
|
|
2
|
+
/**
|
|
3
|
+
* Defines the data associated to a node that has been parsed into a Babylon.js node.
|
|
4
|
+
* Stored so that skeletons and animations can be resolved once the entire hierarchy is available.
|
|
5
|
+
*/
|
|
6
|
+
export interface IAssimpParsedNode {
|
|
7
|
+
name: string;
|
|
8
|
+
/**
|
|
9
|
+
* The Babylon.js node created for this Assimp node (a `Mesh` for mesh nodes, a `TransformNode` otherwise).
|
|
10
|
+
*/
|
|
11
|
+
node: TransformNode;
|
|
12
|
+
/**
|
|
13
|
+
* The local transformation matrix, already converted to Babylon.js' left-handed/column-major convention.
|
|
14
|
+
*/
|
|
15
|
+
localMatrix: Matrix;
|
|
16
|
+
/**
|
|
17
|
+
* The name of the parent node in the Assimp hierarchy, or `null` for the root node.
|
|
18
|
+
*/
|
|
19
|
+
parentName: string | null;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Defines a mesh node whose geometry is built once the skeleton (if any) is available.
|
|
23
|
+
*/
|
|
24
|
+
export interface IAssimpMeshNode {
|
|
25
|
+
mesh: Mesh;
|
|
26
|
+
data: IAssimpJSNodeData;
|
|
27
|
+
}
|
|
2
28
|
export type AssimpJSRuntime = {
|
|
3
29
|
data: IAssimpJSRootData;
|
|
4
30
|
scene: Scene;
|
|
@@ -6,6 +32,26 @@ export type AssimpJSRuntime = {
|
|
|
6
32
|
container: AssetContainer;
|
|
7
33
|
geometries: Record<number, VertexData>;
|
|
8
34
|
materials: Record<number, PBRMaterial>;
|
|
35
|
+
/**
|
|
36
|
+
* All parsed nodes indexed by their Assimp name.
|
|
37
|
+
*/
|
|
38
|
+
nodes: Map<string, IAssimpParsedNode>;
|
|
39
|
+
/**
|
|
40
|
+
* Names of the parsed nodes in depth-first order (parents always appear before their children).
|
|
41
|
+
*/
|
|
42
|
+
orderedNodeNames: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Mesh nodes whose geometry is built in a second pass, once the skeleton is available.
|
|
45
|
+
*/
|
|
46
|
+
meshNodes: IAssimpMeshNode[];
|
|
47
|
+
/**
|
|
48
|
+
* The skeleton shared by all skinned meshes of this file, or `null` if the file has no bones.
|
|
49
|
+
*/
|
|
50
|
+
skeleton: Skeleton | null;
|
|
51
|
+
/**
|
|
52
|
+
* Maps a bone name to its index in `skeleton.bones` (used to fill the meshes' matrices indices).
|
|
53
|
+
*/
|
|
54
|
+
boneIndexByName: Map<string, number>;
|
|
9
55
|
};
|
|
10
56
|
export interface IAssimpJSNodeData {
|
|
11
57
|
name: string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists the scene's animation groups (imported clips + authored ones).
|
|
5
|
+
*/
|
|
6
|
+
export declare function listAnimationGroups(scene: Scene): any;
|
|
7
|
+
/**
|
|
8
|
+
* Plays an animation group in the editor preview (e.g. to preview a character's idle clip).
|
|
9
|
+
*/
|
|
10
|
+
export declare function playAnimationGroup(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
11
|
+
/**
|
|
12
|
+
* Stops a playing animation group, or all groups when no name is provided.
|
|
13
|
+
*/
|
|
14
|
+
export declare function stopAnimationGroup(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
15
|
+
/**
|
|
16
|
+
* Authors a keyframe `AnimationGroup` targeting a node property (e.g. a door opening animates `rotation.y`).
|
|
17
|
+
* Builds a Babylon `Animation` from the provided keys, wraps it in a named `AnimationGroup` and adds it to the scene.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createAnimation(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
20
|
+
/**
|
|
21
|
+
* Removes an animation group from the scene (disposes it).
|
|
22
|
+
*/
|
|
23
|
+
export declare function deleteAnimationGroup(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "./action";
|
|
3
|
+
/**
|
|
4
|
+
* Defines the shape of a single action in an execute_batch request.
|
|
5
|
+
*/
|
|
6
|
+
export interface IMCPBatchAction {
|
|
7
|
+
endpoint: string;
|
|
8
|
+
data: any;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Executes an ordered list of actions in a single round-trip.
|
|
12
|
+
* Each action runs the same handler as its standalone endpoint.
|
|
13
|
+
* Stops on the first error unless `continueOnError` is true.
|
|
14
|
+
* A single graph + assets refresh is performed at the end for performance.
|
|
15
|
+
* @param endpoints defines the map of all registered MCP endpoints.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createBatchHandler(endpoints: Record<string, (scene: Scene, data: any, options: IMCPActionOptions) => any>): (scene: Scene, data: any, options: IMCPActionOptions) => Promise<any>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a camera in the scene reusing the editor's "add" functions where available.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createCamera(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the scene's active camera.
|
|
9
|
+
*/
|
|
10
|
+
export declare function setActiveCamera(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a light in the scene reusing the editor's "add" functions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createLight(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
7
|
+
/**
|
|
8
|
+
* Enables/disables a shadow generator on a light and configures it.
|
|
9
|
+
*/
|
|
10
|
+
export declare function setLightShadows(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
11
|
+
/**
|
|
12
|
+
* Removes the shadow generator (if any) from a light, so it stops casting shadows.
|
|
13
|
+
* After this, a non-shadow light can be moved into the ClusteredLightContainer for performance.
|
|
14
|
+
*/
|
|
15
|
+
export declare function removeLightShadows(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
16
|
+
/**
|
|
17
|
+
* Creates the scene's ClusteredLightContainer (or returns the existing one).
|
|
18
|
+
* The container is always present in the editor preview, so this returns its summary.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createClusteredLightContainer(_scene: Scene, _data: any, options: IMCPActionOptions): any;
|
|
21
|
+
/**
|
|
22
|
+
* Moves a non-shadow light into the scene's ClusteredLightContainer.
|
|
23
|
+
*/
|
|
24
|
+
export declare function addLightToClusteredContainer(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
25
|
+
/**
|
|
26
|
+
* Removes a light from the scene's ClusteredLightContainer.
|
|
27
|
+
* The light is automatically added back to the scene as a regular light.
|
|
28
|
+
*/
|
|
29
|
+
export declare function removeLightFromClusteredContainer(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Opens the marketplace browser tab in the editor.
|
|
5
|
+
*/
|
|
6
|
+
export declare function openMarketplaceAndSelectAsset(_: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Searches a marketplace, driven through the editor's marketplace browser so it is visible.
|
|
9
|
+
*/
|
|
10
|
+
export declare function openMarketplaceAndSearch(_: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Triggers a visible download into the project through the editor marketplace browser.
|
|
13
|
+
*
|
|
14
|
+
* TODO: The per-asset quality/type selection normally happens in the marketplace asset inspector UI.
|
|
15
|
+
* Here we pick the first available quality/type from the asset's download options. To make the
|
|
16
|
+
* selection itself visible in the inspector, the marketplace asset inspector would need to expose a
|
|
17
|
+
* public "downloadSelectedAsset" method that the MCP server could drive directly.
|
|
18
|
+
*/
|
|
19
|
+
export declare function downloadMarketplaceAsset(_scene: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists all the materials available in the scene/project.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listMaterials(scene: Scene): any;
|
|
7
|
+
/**
|
|
8
|
+
* Lists the material types the editor can create (including the Materials Library) and their key
|
|
9
|
+
* controllable properties, so the agent knows what is available and how to tune each one.
|
|
10
|
+
*/
|
|
11
|
+
export declare function listMaterialTypes(): any;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a material and persists it as a `.material` asset so it appears in the assets browser.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createMaterial(scene: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
16
|
+
/**
|
|
17
|
+
* Sets deep properties on a material using dotted property paths.
|
|
18
|
+
*/
|
|
19
|
+
export declare function setMaterialProperties(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
20
|
+
/**
|
|
21
|
+
* Loads a texture asset and assigns it to a material channel.
|
|
22
|
+
*/
|
|
23
|
+
export declare function assignTextureToMaterial(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
24
|
+
/**
|
|
25
|
+
* Sets the scene environment/skybox texture from a `.env`/`.hdr` cube texture asset.
|
|
26
|
+
*/
|
|
27
|
+
export declare function setEnvironmentTexture(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { Editor } from "../editor/main";
|
|
3
|
+
import { IMCPActionOptions } from "./action";
|
|
4
|
+
export interface IEditorMCPDataType {
|
|
5
|
+
endpoint: string;
|
|
6
|
+
[index: string]: any;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The port the editor MCP HTTP server listens on.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MCPServerPort = 3712;
|
|
12
|
+
/**
|
|
13
|
+
* Map of all the MCP endpoints to their handler.
|
|
14
|
+
* Each handler has the signature `(scene, data, options) => any | Promise<any>`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const MCPEndpoints: Record<string, (scene: Scene, data: any, options: IMCPActionOptions) => any>;
|
|
17
|
+
/**
|
|
18
|
+
* Initializes the editor MCP HTTP server.
|
|
19
|
+
* Resilient: if the port is already in use (e.g. a second editor window), the error is caught
|
|
20
|
+
* and logged in the editor console instead of crashing the application.
|
|
21
|
+
* @param editor defines the reference to the editor.
|
|
22
|
+
*/
|
|
23
|
+
export declare function initializeMcpServer(editor: Editor): void;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Creates a primitive mesh in the scene reusing the editor's "add" functions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createPrimitiveMesh(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
7
|
+
/**
|
|
8
|
+
* Creates one or more InstancedMesh from a source mesh.
|
|
9
|
+
* Uses the editor's `createMeshInstance` helper so each instance gets a proper id/uniqueId, copied
|
|
10
|
+
* transform/visibility/enabled state, and is correctly wired into collision meshes and shadow maps
|
|
11
|
+
* (this is what the editor inspector relies on to display the instance's properties).
|
|
12
|
+
* By default each instance shares the source mesh's parent so the scene hierarchy stays easy to read.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createInstance(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
15
|
+
/**
|
|
16
|
+
* Clones a mesh. When `cloneGeometry` is false (default), the geometry is shared with the source.
|
|
17
|
+
*/
|
|
18
|
+
export declare function cloneMesh(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
19
|
+
/**
|
|
20
|
+
* Assigns an existing material to a mesh.
|
|
21
|
+
*/
|
|
22
|
+
export declare function setMeshMaterial(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
23
|
+
/**
|
|
24
|
+
* Toggles the visibility/enabled state of a mesh.
|
|
25
|
+
*/
|
|
26
|
+
export declare function setMeshVisibility(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
27
|
+
/**
|
|
28
|
+
* Enables, disables and configures the Havok physics body of a mesh (mass, motion type, shape, friction, restitution).
|
|
29
|
+
* This is the way to give a mesh real gameplay physics (gravity, collisions, impulses at runtime).
|
|
30
|
+
*/
|
|
31
|
+
export declare function setMeshPhysics(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
32
|
+
/**
|
|
33
|
+
* Returns the bounding information of a mesh, in local and world space, plus the world-space bounds of
|
|
34
|
+
* its whole hierarchy (children included). Useful to scatter objects without overlap (e.g. forests) and
|
|
35
|
+
* to place meshes on the ground precisely.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getMeshBoundingInfo(scene: Scene, data: any): any;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Returns the full details of a node, including transform, camera and light specific properties.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getNode(scene: Scene, data: any): any;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the transform of a node. Supports meshes/transform nodes (position/rotation/scaling),
|
|
9
|
+
* lights (position/direction) and cameras (position/rotation/target). Only the provided and
|
|
10
|
+
* supported properties are applied.
|
|
11
|
+
*/
|
|
12
|
+
export declare function setNodeTransform(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
13
|
+
/**
|
|
14
|
+
* Sets generic deep properties on a node using dotted property paths.
|
|
15
|
+
*/
|
|
16
|
+
export declare function setNodeProperties(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
17
|
+
/**
|
|
18
|
+
* Reparents a node, preserving its world transform by default.
|
|
19
|
+
* When reparenting a non-shadow light into a ClusteredLightContainer, uses `addLight`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function setNodeParent(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
22
|
+
/**
|
|
23
|
+
* Renames a node.
|
|
24
|
+
*/
|
|
25
|
+
export declare function renameNode(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
26
|
+
/**
|
|
27
|
+
* Removes a node (and its descendants) from the scene.
|
|
28
|
+
*/
|
|
29
|
+
export declare function deleteNode(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
30
|
+
/**
|
|
31
|
+
* Selects/focuses a node in the editor (UX only).
|
|
32
|
+
*/
|
|
33
|
+
export declare function selectNode(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
34
|
+
/**
|
|
35
|
+
* Returns the nodes currently selected by the user in the editor's graph (scene tree).
|
|
36
|
+
* Useful to act on "the selected node" requested by the user (e.g. instantiate it many times to build a forest).
|
|
37
|
+
*/
|
|
38
|
+
export declare function getSelectedNodes(_scene: Scene, _data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists all the `.npss` node particle system assets in the project.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listParticleAssets(): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Instantiates a `.npss` asset into the scene, or creates a default particle system.
|
|
9
|
+
*/
|
|
10
|
+
export declare function instantiateParticleSystem(scene: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Returns the post-process / rendering pipeline configurations associated to the given camera.
|
|
5
|
+
* When the camera is the active one, the live configurations are serialized; otherwise the
|
|
6
|
+
* configurations saved for that camera are returned (null when the post-process is disabled).
|
|
7
|
+
*/
|
|
8
|
+
export declare function getCameraPostProcesses(scene: Scene, data: any): any;
|
|
9
|
+
/**
|
|
10
|
+
* Enables/disables and customizes a per-camera post-process in realtime. The editor's active camera is
|
|
11
|
+
* switched to the target camera first so the pipeline is attached to it and will be available at runtime.
|
|
12
|
+
*/
|
|
13
|
+
export declare function setCameraPostProcess(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the hierarchy of the scene nodes as a tree.
|
|
4
|
+
* Each node is described by its id, name, type (class name) and its children.
|
|
5
|
+
* @param scene defines the reference to the scene to get the hierarchy from.
|
|
6
|
+
* @param rootNodeName defines the optional name of the root node to start from.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getSceneHierarchy(scene: Scene, rootNodeName?: string): any;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists all the `.scene` assets available in the project.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listScenes(_scene: Scene, _data: any, options: IMCPActionOptions): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Returns the name/path of the currently edited scene with entity counts.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getActiveScene(scene: Scene, _data: any, options: IMCPActionOptions): any;
|
|
11
|
+
/**
|
|
12
|
+
* Saves the current scene/project.
|
|
13
|
+
*/
|
|
14
|
+
export declare function saveScene(_scene: Scene, _data: any, options: IMCPActionOptions): Promise<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the current scene-level settings.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getSceneSettings(scene: Scene): any;
|
|
19
|
+
/**
|
|
20
|
+
* Sets scene-level settings using dotted property paths.
|
|
21
|
+
*/
|
|
22
|
+
export declare function setSceneSettings(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "./action";
|
|
3
|
+
/**
|
|
4
|
+
* Takes a screenshot of the preview for visual verification.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getScreenshot(scene: Scene, data: any): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Frames the editor camera on a node to help screenshots.
|
|
9
|
+
*/
|
|
10
|
+
export declare function focusNode(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
11
|
+
/**
|
|
12
|
+
* Starts the project dev/run process.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runProject(_scene: Scene, _data: any, options: IMCPActionOptions): Promise<any>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Writes (or overwrites) a `.js` automation script into the project's "agentdata" folder.
|
|
5
|
+
* The script must export `main(editor)`. It can later be executed with `run_agent_script`.
|
|
6
|
+
*/
|
|
7
|
+
export declare function writeAgentScript(_scene: Scene, data: any): Promise<any>;
|
|
8
|
+
/**
|
|
9
|
+
* Lists the `.js` automation scripts available in the project's "agentdata" folder.
|
|
10
|
+
*/
|
|
11
|
+
export declare function listAgentScripts(): Promise<any>;
|
|
12
|
+
/**
|
|
13
|
+
* Compiles and executes an "agentdata" automation script by calling its `main(editor)` export.
|
|
14
|
+
* Accepts either an existing script `name`, or inline `content` (written first, then executed).
|
|
15
|
+
* The script runs with full access to the `editor` mediator; see `get_editor_api`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runAgentScript(_scene: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns a reference describing the `editor` mediator object available to agent scripts, so the agent
|
|
20
|
+
* knows what it can do. Derived from the editor sources under /editor/src/editor.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getEditorApi(): any;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists all the TypeScript scripts under the project "src" directory.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listScripts(): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new TypeScript script with the editor's default skeleton under "src/".
|
|
9
|
+
*/
|
|
10
|
+
export declare function createScript(_scene: Scene, data: any): Promise<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Reads a script's content.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readScript(_scene: Scene, data: any): Promise<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Overwrites/updates a script's content.
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeScript(_scene: Scene, data: any): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Attaches a script file to a node, writing the node script metadata as the inspector does.
|
|
21
|
+
*/
|
|
22
|
+
export declare function attachScript(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
23
|
+
/**
|
|
24
|
+
* Lists the scripts attached to a node and their exported values.
|
|
25
|
+
*/
|
|
26
|
+
export declare function listAttachedScripts(scene: Scene, data: any): any;
|
|
27
|
+
/**
|
|
28
|
+
* Sets an exported/inspector value of an attached script on a node.
|
|
29
|
+
*/
|
|
30
|
+
export declare function setScriptExportedValue(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
31
|
+
/**
|
|
32
|
+
* Removes an attached script from a node.
|
|
33
|
+
*/
|
|
34
|
+
export declare function detachScript(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Scene } from "babylonjs";
|
|
2
|
+
import { IMCPActionOptions } from "../action";
|
|
3
|
+
/**
|
|
4
|
+
* Lists all the `.mp3`, `.ogg` and `.wav` sound assets in the project.
|
|
5
|
+
*/
|
|
6
|
+
export declare function listSoundAssets(): Promise<any>;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a `SoundNode` in the scene from a sound asset and loads it.
|
|
9
|
+
* Use `spatial: true` (default) with `parentId`/`parentName`/`position` for 3D positional ambience,
|
|
10
|
+
* or `spatial: false` for a global 2D ambience/music bed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createSound(scene: Scene, data: any, options: IMCPActionOptions): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Updates the properties of an existing `SoundNode`. Only the provided fields are applied.
|
|
15
|
+
*/
|
|
16
|
+
export declare function setSoundProperties(scene: Scene, data: any, options: IMCPActionOptions): any;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Scene, Node, Material, Color3, Vector3 } from "babylonjs";
|
|
2
|
+
/**
|
|
3
|
+
* Defines the shape of the options used to resolve a node from the scene.
|
|
4
|
+
*/
|
|
5
|
+
export interface IResolveNodeOptions {
|
|
6
|
+
scene: Scene;
|
|
7
|
+
nodeId?: string;
|
|
8
|
+
nodeName?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Defines the shape of the options used to resolve a material from the scene.
|
|
12
|
+
*/
|
|
13
|
+
export interface IResolveMaterialOptions {
|
|
14
|
+
scene: Scene;
|
|
15
|
+
materialId?: string;
|
|
16
|
+
materialName?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Defines the shape of a node summary as defined by the MCP tools contract.
|
|
20
|
+
*/
|
|
21
|
+
export interface INodeSummary {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string;
|
|
24
|
+
className: string;
|
|
25
|
+
position?: [number, number, number];
|
|
26
|
+
rotation?: [number, number, number];
|
|
27
|
+
scaling?: [number, number, number];
|
|
28
|
+
direction?: [number, number, number];
|
|
29
|
+
parentId?: string | null;
|
|
30
|
+
materialId?: string | null;
|
|
31
|
+
isEnabled: boolean;
|
|
32
|
+
isVisible?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolves a node from the given scene using its id first, then its name.
|
|
36
|
+
* @param options defines the scene and the id/name to resolve the node from.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveNode(options: IResolveNodeOptions): Node;
|
|
39
|
+
/**
|
|
40
|
+
* Resolves a material from the given scene using its id first, then its name.
|
|
41
|
+
* @param options defines the scene and the id/name to resolve the material from.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolveMaterial(options: IResolveMaterialOptions): Material;
|
|
44
|
+
/**
|
|
45
|
+
* Produces the contract's node-summary shape for the given node.
|
|
46
|
+
* @param node defines the reference to the node to summarize.
|
|
47
|
+
*/
|
|
48
|
+
export declare function toNodeSummary(node: Node): INodeSummary;
|
|
49
|
+
/**
|
|
50
|
+
* Coerces the given value to a Color3 instance.
|
|
51
|
+
* @param value defines the value to coerce ([r,g,b] array or Color3).
|
|
52
|
+
*/
|
|
53
|
+
export declare function toColor3(value: any): Color3;
|
|
54
|
+
/**
|
|
55
|
+
* Coerces the given value to a Vector3 instance.
|
|
56
|
+
* @param value defines the value to coerce ([x,y,z] array or Vector3).
|
|
57
|
+
*/
|
|
58
|
+
export declare function toVector3(value: any): Vector3;
|
|
59
|
+
/**
|
|
60
|
+
* Deeply sets a property on the given target using a dotted path (e.g. "material.albedoColor").
|
|
61
|
+
* Arrays are coerced to Color3/Vector3/Color4/Vector2/Vector4 based on the existing property type.
|
|
62
|
+
* @param target defines the root object on which to set the property.
|
|
63
|
+
* @param path defines the dotted path to the property to set.
|
|
64
|
+
* @param value defines the value to set.
|
|
65
|
+
*/
|
|
66
|
+
export declare function deepSet(target: any, path: string, value: any): void;
|
|
67
|
+
/**
|
|
68
|
+
* Coerces the given value to match the type of the existing property value when relevant
|
|
69
|
+
* (Color3/Color4/Vector2/Vector3/Vector4). Otherwise returns the value as-is.
|
|
70
|
+
* @param existing defines the current value of the property.
|
|
71
|
+
* @param value defines the new value to coerce.
|
|
72
|
+
*/
|
|
73
|
+
export declare function coerceValueForExistingProperty(existing: any, value: any): any;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function compileScriptFromAssets(absolutePath: string): Promise<string>;
|
|
2
|
+
export interface ICompilePlayScriptOptions {
|
|
3
|
+
entryPoints: string[];
|
|
4
|
+
outfile: string;
|
|
5
|
+
onTransformSource?: (path: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function compileScript(options: ICompilePlayScriptOptions): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "babylonjs-editor",
|
|
3
|
-
"version": "5.4.2-alpha.
|
|
3
|
+
"version": "5.4.2-alpha.3",
|
|
4
4
|
"description": "Babylon.js Editor is a Web Application helping artists to work with Babylon.js",
|
|
5
5
|
"productName": "Babylon.js Editor",
|
|
6
6
|
"main": "build/src/index.js",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"vitest": "4.0.17"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@babylonjs/addons": "9.
|
|
44
|
-
"@babylonjs/core": "9.
|
|
43
|
+
"@babylonjs/addons": "9.12.1",
|
|
44
|
+
"@babylonjs/core": "9.12.1",
|
|
45
45
|
"@babylonjs/havok": "1.3.12",
|
|
46
|
-
"@babylonjs/ktx2decoder": "9.
|
|
46
|
+
"@babylonjs/ktx2decoder": "9.12.1",
|
|
47
47
|
"@blueprintjs/core": "^5.10.0",
|
|
48
48
|
"@blueprintjs/select": "^5.1.2",
|
|
49
49
|
"@emotion/react": "^11.13.3",
|
|
@@ -76,19 +76,19 @@
|
|
|
76
76
|
"@xterm/xterm": "6.1.0-beta.22",
|
|
77
77
|
"assimpjs": "0.0.10",
|
|
78
78
|
"axios": "1.16.1",
|
|
79
|
-
"babylonjs": "9.
|
|
80
|
-
"babylonjs-addons": "9.
|
|
79
|
+
"babylonjs": "9.12.1",
|
|
80
|
+
"babylonjs-addons": "9.12.1",
|
|
81
81
|
"babylonjs-editor-cli": "latest",
|
|
82
82
|
"babylonjs-editor-tools": "latest",
|
|
83
|
-
"babylonjs-gui": "9.
|
|
84
|
-
"babylonjs-gui-editor": "9.
|
|
85
|
-
"babylonjs-ktx2decoder": "9.
|
|
86
|
-
"babylonjs-loaders": "9.
|
|
87
|
-
"babylonjs-materials": "9.
|
|
88
|
-
"babylonjs-node-editor": "9.
|
|
89
|
-
"babylonjs-node-particle-editor": "9.
|
|
90
|
-
"babylonjs-post-process": "9.
|
|
91
|
-
"babylonjs-procedural-textures": "9.
|
|
83
|
+
"babylonjs-gui": "9.12.1",
|
|
84
|
+
"babylonjs-gui-editor": "9.12.1",
|
|
85
|
+
"babylonjs-ktx2decoder": "9.12.1",
|
|
86
|
+
"babylonjs-loaders": "9.12.1",
|
|
87
|
+
"babylonjs-materials": "9.12.1",
|
|
88
|
+
"babylonjs-node-editor": "9.12.1",
|
|
89
|
+
"babylonjs-node-particle-editor": "9.12.1",
|
|
90
|
+
"babylonjs-post-process": "9.12.1",
|
|
91
|
+
"babylonjs-procedural-textures": "9.12.1",
|
|
92
92
|
"chokidar": "^4.0.3",
|
|
93
93
|
"class-variance-authority": "^0.7.0",
|
|
94
94
|
"clsx": "^2.1.0",
|