@babylonjs/inspector 8.45.4-preview → 8.45.5-preview
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/lib/{captureService-C4KzF-3L.js → captureService-c_Nc-JkH.js} +3 -2
- package/lib/{captureService-C4KzF-3L.js.map → captureService-c_Nc-JkH.js.map} +1 -1
- package/lib/{exportService-D19rsLCQ.js → exportService-BvQmBhyv.js} +3 -2
- package/lib/{exportService-D19rsLCQ.js.map → exportService-BvQmBhyv.js.map} +1 -1
- package/lib/{extensionsListService-BPIryMmP.js → extensionsListService-DxjhVAwt.js} +3 -2
- package/lib/{extensionsListService-BPIryMmP.js.map → extensionsListService-DxjhVAwt.js.map} +1 -1
- package/lib/{importService-xoACJHME.js → importService-DxFxT2li.js} +3 -2
- package/lib/{importService-xoACJHME.js.map → importService-DxFxT2li.js.map} +1 -1
- package/lib/{index-upm3WBf8.js → index-C7ey_J-r.js} +415 -124
- package/lib/index-C7ey_J-r.js.map +1 -0
- package/lib/index.d.ts +89 -20
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/{quickCreateToolsService-ROfMXsQm.js → quickCreateToolsService-Cu0BSIWb.js} +2 -2
- package/lib/{quickCreateToolsService-ROfMXsQm.js.map → quickCreateToolsService-Cu0BSIWb.js.map} +1 -1
- package/package.json +2 -1
- package/lib/index-upm3WBf8.js.map +0 -1
package/lib/index.d.ts
CHANGED
|
@@ -13220,6 +13220,17 @@ declare module "../../Engines/abstractEngine" {
|
|
|
13220
13220
|
}
|
|
13221
13221
|
}
|
|
13222
13222
|
|
|
13223
|
+
declare module "../abstractEngine" {
|
|
13224
|
+
interface AbstractEngine {
|
|
13225
|
+
/**
|
|
13226
|
+
* @internal
|
|
13227
|
+
*/
|
|
13228
|
+
_loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: false): Promise<string>;
|
|
13229
|
+
_loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: true): Promise<ArrayBuffer>;
|
|
13230
|
+
_loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: boolean): Promise<string | ArrayBuffer>;
|
|
13231
|
+
}
|
|
13232
|
+
}
|
|
13233
|
+
|
|
13223
13234
|
/**
|
|
13224
13235
|
* The engine class is responsible for interfacing with all lower-level APIs such as WebGL and Audio
|
|
13225
13236
|
*/
|
|
@@ -13551,11 +13562,6 @@ declare class Engine extends ThinEngine {
|
|
|
13551
13562
|
* Disable previously set scissor test rectangle
|
|
13552
13563
|
*/
|
|
13553
13564
|
disableScissor(): void;
|
|
13554
|
-
/**
|
|
13555
|
-
* @internal
|
|
13556
|
-
*/
|
|
13557
|
-
_loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: false): Promise<string>;
|
|
13558
|
-
_loadFileAsync(url: string, offlineProvider?: IOfflineProvider, useArrayBuffer?: true): Promise<ArrayBuffer>;
|
|
13559
13565
|
/**
|
|
13560
13566
|
* Gets the source code of the vertex shader associated with a specific webGL program
|
|
13561
13567
|
* @param program defines the program to use
|
|
@@ -48285,6 +48291,24 @@ interface EngineCapabilities {
|
|
|
48285
48291
|
dualSourceBlending: boolean;
|
|
48286
48292
|
}
|
|
48287
48293
|
|
|
48294
|
+
/**
|
|
48295
|
+
* @internal
|
|
48296
|
+
**/
|
|
48297
|
+
declare class _TimeToken {
|
|
48298
|
+
_startTimeQuery: Nullable<WebGLQuery>;
|
|
48299
|
+
_endTimeQuery: Nullable<WebGLQuery>;
|
|
48300
|
+
_timeElapsedQuery: Nullable<WebGLQuery>;
|
|
48301
|
+
_timeElapsedQueryEnded: boolean;
|
|
48302
|
+
}
|
|
48303
|
+
|
|
48304
|
+
declare module "../Materials/effect" {
|
|
48305
|
+
/** internal */
|
|
48306
|
+
interface Effect {
|
|
48307
|
+
/** internal */
|
|
48308
|
+
_checkedNonFloatVertexBuffers?: boolean;
|
|
48309
|
+
}
|
|
48310
|
+
}
|
|
48311
|
+
|
|
48288
48312
|
declare module "../../Engines/abstractEngine" {
|
|
48289
48313
|
interface AbstractEngine {
|
|
48290
48314
|
/** @internal */
|
|
@@ -48389,16 +48413,6 @@ declare module "../../Engines/abstractEngine" {
|
|
|
48389
48413
|
}
|
|
48390
48414
|
}
|
|
48391
48415
|
|
|
48392
|
-
/**
|
|
48393
|
-
* @internal
|
|
48394
|
-
**/
|
|
48395
|
-
declare class _TimeToken {
|
|
48396
|
-
_startTimeQuery: Nullable<WebGLQuery>;
|
|
48397
|
-
_endTimeQuery: Nullable<WebGLQuery>;
|
|
48398
|
-
_timeElapsedQuery: Nullable<WebGLQuery>;
|
|
48399
|
-
_timeElapsedQueryEnded: boolean;
|
|
48400
|
-
}
|
|
48401
|
-
|
|
48402
48416
|
declare module "../../Engines/thinEngine" {
|
|
48403
48417
|
interface ThinEngine {
|
|
48404
48418
|
/**
|
|
@@ -48704,11 +48718,28 @@ declare module "../../abstractEngine" {
|
|
|
48704
48718
|
}
|
|
48705
48719
|
}
|
|
48706
48720
|
|
|
48707
|
-
declare module "
|
|
48708
|
-
|
|
48709
|
-
|
|
48710
|
-
|
|
48711
|
-
|
|
48721
|
+
declare module "../../../Engines/thinNativeEngine" {
|
|
48722
|
+
interface ThinNativeEngine {
|
|
48723
|
+
/**
|
|
48724
|
+
* Creates a cube texture
|
|
48725
|
+
* @param rootUrl defines the url where the files to load is located
|
|
48726
|
+
* @param scene defines the current scene
|
|
48727
|
+
* @param files defines the list of files to load (1 per face)
|
|
48728
|
+
* @param noMipmap defines a boolean indicating that no mipmaps shall be generated (false by default)
|
|
48729
|
+
* @param onLoad defines an optional callback raised when the texture is loaded
|
|
48730
|
+
* @param onError defines an optional callback raised if there is an issue to load the texture
|
|
48731
|
+
* @param format defines the format of the data
|
|
48732
|
+
* @param forcedExtension defines the extension to use to pick the right loader
|
|
48733
|
+
* @param createPolynomials if a polynomial sphere should be created for the cube texture
|
|
48734
|
+
* @param lodScale defines the scale applied to environment texture. This manages the range of LOD level used for IBL according to the roughness
|
|
48735
|
+
* @param lodOffset defines the offset applied to environment texture. This manages first LOD level used for IBL according to the roughness
|
|
48736
|
+
* @param fallback defines texture to use while falling back when (compressed) texture file not found.
|
|
48737
|
+
* @param loaderOptions options to be passed to the loader
|
|
48738
|
+
* @param useSRGBBuffer defines if the texture must be loaded in a sRGB GPU buffer (if supported by the GPU).
|
|
48739
|
+
* @param buffer defines the data buffer to load instead of loading the rootUrl
|
|
48740
|
+
* @returns the cube texture as an InternalTexture
|
|
48741
|
+
*/
|
|
48742
|
+
createCubeTexture(rootUrl: string, scene: Nullable<Scene>, files: Nullable<string[]>, noMipmap?: boolean, onLoad?: Nullable<(data?: any) => void>, onError?: Nullable<(message?: string, exception?: any) => void>, format?: number, forcedExtension?: any, createPolynomials?: boolean, lodScale?: number, lodOffset?: number, fallback?: Nullable<InternalTexture>, loaderOptions?: any, useSRGBBuffer?: boolean, buffer?: Nullable<ArrayBufferView>): InternalTexture;
|
|
48712
48743
|
}
|
|
48713
48744
|
}
|
|
48714
48745
|
|
|
@@ -54256,6 +54287,34 @@ declare class EnvironmentHelper {
|
|
|
54256
54287
|
dispose(): void;
|
|
54257
54288
|
}
|
|
54258
54289
|
|
|
54290
|
+
/**
|
|
54291
|
+
* This represents the required contract to create a new type of texture loader.
|
|
54292
|
+
*/
|
|
54293
|
+
interface IInternalTextureLoader {
|
|
54294
|
+
/**
|
|
54295
|
+
* Defines whether the loader supports cascade loading the different faces.
|
|
54296
|
+
*/
|
|
54297
|
+
supportCascades: boolean;
|
|
54298
|
+
/**
|
|
54299
|
+
* Uploads the cube texture data to the WebGL texture. It has already been bound.
|
|
54300
|
+
* @param data contains the texture data
|
|
54301
|
+
* @param texture defines the BabylonJS internal texture
|
|
54302
|
+
* @param createPolynomials will be true if polynomials have been requested
|
|
54303
|
+
* @param onLoad defines the callback to trigger once the texture is ready
|
|
54304
|
+
* @param onError defines the callback to trigger in case of error
|
|
54305
|
+
* @param options options to be passed to the loader
|
|
54306
|
+
*/
|
|
54307
|
+
loadCubeData(data: ArrayBufferView | ArrayBufferView[], texture: InternalTexture, createPolynomials: boolean, onLoad: Nullable<(data?: any) => void>, onError: Nullable<(message?: string, exception?: any) => void>, options?: any): void;
|
|
54308
|
+
/**
|
|
54309
|
+
* Uploads the 2D texture data to the WebGL texture. It has already been bound once in the callback.
|
|
54310
|
+
* @param data contains the texture data
|
|
54311
|
+
* @param texture defines the BabylonJS internal texture
|
|
54312
|
+
* @param callback defines the method to call once ready to upload
|
|
54313
|
+
* @param options options to be passed to the loader
|
|
54314
|
+
*/
|
|
54315
|
+
loadData(data: ArrayBufferView, texture: InternalTexture, callback: (width: number, height: number, loadMipmap: boolean, isCompressed: boolean, done: () => void, loadFailed?: boolean) => void, options?: any): void;
|
|
54316
|
+
}
|
|
54317
|
+
|
|
54259
54318
|
declare module "../scene" {
|
|
54260
54319
|
interface Scene {
|
|
54261
54320
|
/**
|
|
@@ -61310,6 +61369,14 @@ declare abstract class AbstractEngine {
|
|
|
61310
61369
|
* @returns frame number
|
|
61311
61370
|
*/
|
|
61312
61371
|
static QueueNewFrame: (func: () => void, requester?: any) => number;
|
|
61372
|
+
/**
|
|
61373
|
+
* @internal
|
|
61374
|
+
* Function used to get the correct texture loader for a specific extension.
|
|
61375
|
+
* @param extension defines the file extension of the file being loaded
|
|
61376
|
+
* @param mimeType defines the optional mime type of the file being loaded
|
|
61377
|
+
* @returns the IInternalTextureLoader or null if it wasn't found
|
|
61378
|
+
*/
|
|
61379
|
+
static GetCompatibleTextureLoader(_extension: string, _mimeType?: string): Nullable<Promise<IInternalTextureLoader>>;
|
|
61313
61380
|
}
|
|
61314
61381
|
|
|
61315
61382
|
/**
|
|
@@ -72531,6 +72598,8 @@ type SyncedSliderProps = PrimitiveProps<number> & {
|
|
|
72531
72598
|
unit?: string;
|
|
72532
72599
|
/** When true, onChange is only called when the user releases the slider, not during drag */
|
|
72533
72600
|
notifyOnlyOnRelease?: boolean;
|
|
72601
|
+
/** When true, slider grows to fill space and SpinButton is fixed at 70px */
|
|
72602
|
+
compact?: boolean;
|
|
72534
72603
|
};
|
|
72535
72604
|
/**
|
|
72536
72605
|
* Component which synchronizes a slider and an input field, allowing the user to change the value using either control
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as Accordion, h as AccordionSection, r as AttachDebugLayer, aH as BooleanBadgePropertyLine, v as BoundProperty, y as BuiltInsExtensionFeed, b as Button, B as ButtonLine, ad as Checkbox, e as CheckboxPropertyLine, aC as ChildWindow, C as Collapse, an as Color3GradientComponent, aE as Color3GradientList, aI as Color3PropertyLine, ao as Color4GradientComponent, aF as Color4GradientList, aJ as Color4PropertyLine, ae as ColorPickerPopup, ap as ColorStepGradientComponent, ah as ComboBox, a8 as ConstructorFactory, q as ConvertOptions, D as DebugServiceIdentity, s as DetachDebugLayer, ai as DraggableLine, aj as Dropdown, E as ExtensibleAccordion, am as FactorGradientComponent, aD as FactorGradientList, F as FileUploadLine, a4 as GetPropertyDescriptor, aK as HexPropertyLine, aq as InfoLabel, af as InputHexField, ag as InputHsvField, I as Inspector, a3 as InterceptFunction, a6 as InterceptProperty, a5 as IsPropertyReadonly, aO as LineContainer, L as Link, aM as LinkPropertyLine, w as LinkToEntityPropertyLine, ar as List, a2 as MakeDialogTeachingMoment, M as MakeLazyComponent, j as MakePopoverTeachingMoment, O as MakePropertyHook, a1 as MakeTeachingMoment, as as MessageBar, ak as NumberDropdown, N as NumberDropdownPropertyLine, aL as NumberInputPropertyLine, a7 as ObservableCollection, aG as Pane, aP as PlaceholderPropertyLine, at as PositionedPopover, m as PropertiesServiceIdentity, aN as PropertyLine, aU as QuaternionPropertyLine, aT as RotationVectorPropertyLine, g as SceneContextIdentity, n as SceneExplorerServiceIdentity, au as SearchBar, av as SearchBox, aa as SelectionServiceDefinition, a9 as SelectionServiceIdentity, ab as SettingsContextIdentity, o as SettingsServiceIdentity, f as ShellServiceIdentity, ac as ShowInspector, l as SidePaneContainer, aw as SpinButton, d as SpinButtonPropertyLine, p as StatsServiceIdentity, al as StringDropdown, t as StringDropdownPropertyLine, aQ as StringifiedPropertyLine, ax as Switch, S as SwitchPropertyLine, ay as SyncedSliderInput, a as SyncedSliderPropertyLine, k as TeachingMoment, aR as TextAreaPropertyLine, aA as TextInput, c as TextInputPropertyLine, aS as TextPropertyLine, az as Textarea, x as Theme, aB as ToggleButton, T as ToolsServiceIdentity, aV as Vector2PropertyLine, V as Vector3PropertyLine, aW as Vector4PropertyLine, a0 as useAngleConverters, Z as useAsyncResource, H as useColor3Property, J as useColor4Property, _ as useCompactMode, R as useEventfulState, Q as useInterceptObservable, U as useObservableCollection, u as useObservableState, W as useOrderedObservableCollection, X as usePollingObservable, z as useProperty, K as useQuaternionProperty, Y as useResource, $ as useSidePaneDockOverrides, G as useVector3Property } from './index-
|
|
1
|
+
export { A as Accordion, h as AccordionSection, r as AttachDebugLayer, aH as BooleanBadgePropertyLine, v as BoundProperty, y as BuiltInsExtensionFeed, b as Button, B as ButtonLine, ad as Checkbox, e as CheckboxPropertyLine, aC as ChildWindow, C as Collapse, an as Color3GradientComponent, aE as Color3GradientList, aI as Color3PropertyLine, ao as Color4GradientComponent, aF as Color4GradientList, aJ as Color4PropertyLine, ae as ColorPickerPopup, ap as ColorStepGradientComponent, ah as ComboBox, a8 as ConstructorFactory, q as ConvertOptions, D as DebugServiceIdentity, s as DetachDebugLayer, ai as DraggableLine, aj as Dropdown, E as ExtensibleAccordion, am as FactorGradientComponent, aD as FactorGradientList, F as FileUploadLine, a4 as GetPropertyDescriptor, aK as HexPropertyLine, aq as InfoLabel, af as InputHexField, ag as InputHsvField, I as Inspector, a3 as InterceptFunction, a6 as InterceptProperty, a5 as IsPropertyReadonly, aO as LineContainer, L as Link, aM as LinkPropertyLine, w as LinkToEntityPropertyLine, ar as List, a2 as MakeDialogTeachingMoment, M as MakeLazyComponent, j as MakePopoverTeachingMoment, O as MakePropertyHook, a1 as MakeTeachingMoment, as as MessageBar, ak as NumberDropdown, N as NumberDropdownPropertyLine, aL as NumberInputPropertyLine, a7 as ObservableCollection, aG as Pane, aP as PlaceholderPropertyLine, at as PositionedPopover, m as PropertiesServiceIdentity, aN as PropertyLine, aU as QuaternionPropertyLine, aT as RotationVectorPropertyLine, g as SceneContextIdentity, n as SceneExplorerServiceIdentity, au as SearchBar, av as SearchBox, aa as SelectionServiceDefinition, a9 as SelectionServiceIdentity, ab as SettingsContextIdentity, o as SettingsServiceIdentity, f as ShellServiceIdentity, ac as ShowInspector, l as SidePaneContainer, aw as SpinButton, d as SpinButtonPropertyLine, p as StatsServiceIdentity, al as StringDropdown, t as StringDropdownPropertyLine, aQ as StringifiedPropertyLine, ax as Switch, S as SwitchPropertyLine, ay as SyncedSliderInput, a as SyncedSliderPropertyLine, k as TeachingMoment, aR as TextAreaPropertyLine, aA as TextInput, c as TextInputPropertyLine, aS as TextPropertyLine, az as Textarea, x as Theme, aB as ToggleButton, T as ToolsServiceIdentity, aV as Vector2PropertyLine, V as Vector3PropertyLine, aW as Vector4PropertyLine, a0 as useAngleConverters, Z as useAsyncResource, H as useColor3Property, J as useColor4Property, _ as useCompactMode, R as useEventfulState, Q as useInterceptObservable, U as useObservableCollection, u as useObservableState, W as useOrderedObservableCollection, X as usePollingObservable, z as useProperty, K as useQuaternionProperty, Y as useResource, $ as useSidePaneDockOverrides, G as useVector3Property } from './index-C7ey_J-r.js';
|
|
2
2
|
import 'react/jsx-runtime';
|
|
3
3
|
import 'react';
|
|
4
4
|
import '@babylonjs/core/Maths/math.color.js';
|
|
@@ -91,6 +91,7 @@ import '@babylonjs/core/Particles/EmitterTypes/meshParticleEmitter.js';
|
|
|
91
91
|
import '@babylonjs/core/Particles/EmitterTypes/pointParticleEmitter.js';
|
|
92
92
|
import '@babylonjs/core/Particles/EmitterTypes/sphereParticleEmitter.js';
|
|
93
93
|
import '@babylonjs/core/Particles/Node/nodeParticleSystemSet.helper.js';
|
|
94
|
+
import '@babylonjs/core/Particles/gpuParticleSystem.js';
|
|
94
95
|
import '@babylonjs/core/Particles/particleHelper.js';
|
|
95
96
|
import '@babylonjs/core/Misc/gradients.js';
|
|
96
97
|
import '@babylonjs/core/Materials/Node/Blocks/gradientBlock.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { P as Popover, b as Button, c as TextInputPropertyLine, d as SpinButtonPropertyLine, e as CheckboxPropertyLine, V as Vector3PropertyLine, f as ShellServiceIdentity, g as SceneContextIdentity, u as useObservableState, A as Accordion, h as AccordionSection } from './index-
|
|
2
|
+
import { P as Popover, b as Button, c as TextInputPropertyLine, d as SpinButtonPropertyLine, e as CheckboxPropertyLine, V as Vector3PropertyLine, f as ShellServiceIdentity, g as SceneContextIdentity, u as useObservableState, A as Accordion, h as AccordionSection } from './index-C7ey_J-r.js';
|
|
3
3
|
import { SettingsRegular, CollectionsAdd20Regular } from '@fluentui/react-icons';
|
|
4
4
|
import '@babylonjs/core/Particles/webgl2ParticleSystem.js';
|
|
5
5
|
import { MeshBuilder } from '@babylonjs/core/Meshes/meshBuilder.js';
|
|
@@ -544,4 +544,4 @@ var quickCreateToolsService = {
|
|
|
544
544
|
};
|
|
545
545
|
|
|
546
546
|
export { CreateToolsServiceDefinition, quickCreateToolsService as default };
|
|
547
|
-
//# sourceMappingURL=quickCreateToolsService-
|
|
547
|
+
//# sourceMappingURL=quickCreateToolsService-Cu0BSIWb.js.map
|
package/lib/{quickCreateToolsService-ROfMXsQm.js.map → quickCreateToolsService-Cu0BSIWb.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickCreateToolsService-ROfMXsQm.js","sources":["../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/settingsPopover.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/meshes.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/materials.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/lights.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/cameras.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/particles.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/quickCreateToolsService.tsx"],"sourcesContent":["import type { FunctionComponent, PropsWithChildren } from \"react\";\nimport { Popover } from \"shared-ui-components/fluent/primitives/popover\";\nimport { SettingsRegular } from \"@fluentui/react-icons\";\n\n/**\n * Settings popover component\n * @param props\n * @returns\n */\nexport const SettingsPopover: FunctionComponent<PropsWithChildren<{}>> = (props) => {\n return <Popover icon={SettingsRegular}> {props.children} </Popover>;\n};\n","import { MeshBuilder } from \"core/Meshes/meshBuilder\";\nimport type { Scene } from \"core/scene\";\nimport { useState, useRef, type ChangeEvent } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { FilesInput } from \"core/Misc/filesInput\";\nimport { SettingsPopover } from \"./settingsPopover\";\nimport { CheckboxPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/checkboxPropertyLine\";\nimport type { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\nconst SetCamera = function (scene: Scene) {\n const camera = scene.activeCamera as ArcRotateCamera;\n if (camera && camera.radius !== undefined) {\n camera.radius = 5;\n }\n};\n\ntype SphereParams = {\n name: string;\n segments: number;\n diameter: number;\n diameterX: number;\n diameterY: number;\n diameterZ: number;\n arc: number;\n slice: number;\n uniform: boolean;\n};\n\ntype BoxParams = {\n name: string;\n size: number;\n width: number;\n height: number;\n depth: number;\n};\n\ntype CylinderParams = {\n name: string;\n height: number;\n diameterTop: number;\n diameterBottom: number;\n diameter: number;\n tessellation: number;\n subdivisions: number;\n arc: number;\n};\n\ntype ConeParams = {\n name: string;\n height: number;\n diameter: number;\n diameterTop: number;\n diameterBottom: number;\n tessellation: number;\n subdivisions: number;\n arc: number;\n};\n\ntype GroundParams = {\n name: string;\n width: number;\n height: number;\n subdivisions: number;\n subdivisionsX: number;\n subdivisionsY: number;\n};\n\n/**\n * @internal\n */\nexport const MeshesContent: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\n const classes = useStyles();\n const [sphereParams, setSphereParams] = useState<SphereParams>({\n name: \"Sphere\",\n segments: 32,\n diameter: 1,\n diameterX: 1,\n diameterY: 1,\n diameterZ: 1,\n arc: 1,\n slice: 1,\n uniform: true,\n });\n\n const handleSphereParamChange = <K extends keyof SphereParams>(key: K, value: SphereParams[K]) => {\n setSphereParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [boxParams, setBoxParams] = useState<BoxParams>({\n name: \"Box\",\n size: 1,\n width: 1,\n height: 1,\n depth: 1,\n });\n\n const handleBoxParamChange = <K extends keyof BoxParams>(key: K, value: BoxParams[K]) => {\n setBoxParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [cylinderParams, setCylinderParams] = useState<CylinderParams>({\n name: \"Cylinder\",\n height: 2,\n diameterTop: 1,\n diameterBottom: 1,\n diameter: 1,\n tessellation: 32,\n subdivisions: 1,\n arc: 1,\n });\n\n const handleCylinderParamChange = <K extends keyof CylinderParams>(key: K, value: CylinderParams[K]) => {\n setCylinderParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [coneParams, setConeParams] = useState<ConeParams>({\n name: \"Cone\",\n height: 2,\n diameter: 1,\n diameterTop: 0,\n diameterBottom: 1,\n tessellation: 32,\n subdivisions: 1,\n arc: 1,\n });\n\n const [coneUp, setConeUp] = useState(true);\n\n const handleConeParamChange = <K extends keyof ConeParams>(key: K, value: ConeParams[K]) => {\n setConeParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [groundParams, setGroundParams] = useState<GroundParams>({\n name: \"Ground\",\n width: 10,\n height: 10,\n subdivisions: 1,\n subdivisionsX: 1,\n subdivisionsY: 1,\n });\n\n const handleGroundParamChange = <K extends keyof GroundParams>(key: K, value: GroundParams[K]) => {\n setGroundParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [importMeshName, setImportMeshName] = useState(\"ImportedMesh\");\n\n const handleLocalMeshImport = (event: ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (!files || files.length === 0) {\n return;\n }\n\n const filesArray = Array.from(files);\n if (importMeshName.trim().length > 0 && filesArray.length > 0) {\n const originalFile = filesArray[0];\n const extensionIndex = originalFile.name.lastIndexOf(\".\");\n const extension = extensionIndex >= 0 ? originalFile.name.substring(extensionIndex) : \"\";\n const sanitizedName = importMeshName.trim();\n const desiredFileName = sanitizedName.toLowerCase().endsWith(extension.toLowerCase()) ? sanitizedName : `${sanitizedName}${extension}`;\n filesArray[0] = new File([originalFile], desiredFileName, { type: originalFile.type, lastModified: originalFile.lastModified });\n }\n\n const filesInput = new FilesInput(\n scene.getEngine(),\n scene,\n null,\n null,\n null,\n null,\n null,\n null,\n (_sceneFile, _scene, message) => {\n alert(message ? `Failed to import mesh: ${message}` : \"Failed to import mesh.\");\n },\n true\n );\n\n filesInput.displayLoadingUI = false;\n filesInput.loadFiles({ target: { files: filesArray } });\n filesInput.dispose();\n\n event.target.value = \"\";\n };\n\n return (\n <div className={classes.section}>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateSphere(\"Sphere\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Sphere\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={sphereParams.name} onChange={(val: string) => handleSphereParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Segments\" value={sphereParams.segments} min={0} onChange={(val: number) => handleSphereParamChange(\"segments\", val)} />\n <SpinButtonPropertyLine\n label=\"Diameter\"\n value={sphereParams.diameter}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameter\", val)}\n disabled={!sphereParams.uniform}\n />\n <CheckboxPropertyLine label=\"Uniform\" value={sphereParams.uniform} onChange={(checked) => handleSphereParamChange(\"uniform\", checked)} />\n <SpinButtonPropertyLine\n label=\"Diameter X\"\n value={sphereParams.diameterX}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterX\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Y\"\n value={sphereParams.diameterY}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterY\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Z\"\n value={sphereParams.diameterZ}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterZ\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine label=\"Arc\" value={sphereParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleSphereParamChange(\"arc\", val)} />\n <SpinButtonPropertyLine label=\"Slice\" value={sphereParams.slice} min={0} max={1} step={0.1} onChange={(val: number) => handleSphereParamChange(\"slice\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n // Create params object based on uniform checkbox\n const createParams: Partial<SphereParams> = {\n segments: sphereParams.segments,\n arc: sphereParams.arc,\n slice: sphereParams.slice,\n };\n\n if (sphereParams.uniform) {\n // If uniform is checked, use diameter\n createParams.diameter = sphereParams.diameter;\n } else {\n // If uniform is unchecked, use individual diameters\n createParams.diameterX = sphereParams.diameterX;\n createParams.diameterY = sphereParams.diameterY;\n createParams.diameterZ = sphereParams.diameterZ;\n }\n\n MeshBuilder.CreateSphere(sphereParams.name, createParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateBox(\"Box\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Box\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={boxParams.name} onChange={(val: string) => handleBoxParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Size\" value={boxParams.size} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"size\", val)} />\n <SpinButtonPropertyLine label=\"Width\" value={boxParams.width} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"width\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={boxParams.height} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"height\", val)} />\n <SpinButtonPropertyLine label=\"Depth\" value={boxParams.depth} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"depth\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateBox(boxParams.name, boxParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateCylinder(\"Cylinder\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Cylinder\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={cylinderParams.name} onChange={(val: string) => handleCylinderParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={cylinderParams.height} min={0} step={0.1} onChange={(val: number) => handleCylinderParamChange(\"height\", val)} />\n <SpinButtonPropertyLine\n label=\"Diameter Top\"\n value={cylinderParams.diameterTop}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameterTop\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Bottom\"\n value={cylinderParams.diameterBottom}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameterBottom\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Diameter\"\n value={cylinderParams.diameter}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameter\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Tessellation\"\n value={cylinderParams.tessellation}\n min={3}\n onChange={(val: number) => handleCylinderParamChange(\"tessellation\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions\"\n value={cylinderParams.subdivisions}\n min={1}\n onChange={(val: number) => handleCylinderParamChange(\"subdivisions\", val)}\n />\n <SpinButtonPropertyLine label=\"Arc\" value={cylinderParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleCylinderParamChange(\"arc\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateCylinder(cylinderParams.name, cylinderParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateCylinder(\"Cone\", { diameterTop: 0 }, scene);\n SetCamera(scene);\n }}\n label=\"Cone\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={coneParams.name} onChange={(val: string) => handleConeParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={coneParams.height} min={0} step={0.1} onChange={(val: number) => handleConeParamChange(\"height\", val)} />\n <SpinButtonPropertyLine label=\"Diameter\" value={coneParams.diameter} min={0} step={0.1} onChange={(val: number) => handleConeParamChange(\"diameter\", val)} />\n <SpinButtonPropertyLine label=\"Tessellation\" value={coneParams.tessellation} min={3} onChange={(val: number) => handleConeParamChange(\"tessellation\", val)} />\n <SpinButtonPropertyLine label=\"Subdivisions\" value={coneParams.subdivisions} min={1} onChange={(val: number) => handleConeParamChange(\"subdivisions\", val)} />\n <SpinButtonPropertyLine label=\"Arc\" value={coneParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleConeParamChange(\"arc\", val)} />\n <CheckboxPropertyLine label=\"Up\" value={coneUp} onChange={(val: boolean) => setConeUp(val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n const coneParamsToUse = {\n ...coneParams,\n diameterTop: coneUp ? 0 : coneParams.diameterTop,\n diameterBottom: coneUp ? coneParams.diameterBottom : 0,\n };\n MeshBuilder.CreateCylinder(coneParams.name, coneParamsToUse, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateGround(\"Ground\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Ground\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={groundParams.name} onChange={(val: string) => handleGroundParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Width\" value={groundParams.width} min={0} step={0.1} onChange={(val: number) => handleGroundParamChange(\"width\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={groundParams.height} min={0} step={0.1} onChange={(val: number) => handleGroundParamChange(\"height\", val)} />\n <SpinButtonPropertyLine\n label=\"Subdivisions\"\n value={groundParams.subdivisions}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisions\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions X\"\n value={groundParams.subdivisionsX}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisionsX\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions Y\"\n value={groundParams.subdivisionsY}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisionsY\", val)}\n />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateGround(groundParams.name, groundParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n fileInputRef.current?.click();\n }}\n label=\"Import Mesh\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={importMeshName} onChange={(val: string) => setImportMeshName(val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n fileInputRef.current?.click();\n }}\n label=\"Import\"\n />\n </div>\n </SettingsPopover>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".babylon,.glb,.gltf,.obj,.stl,.ply,.mesh,.babylonmeshdata\"\n multiple\n style={{ display: \"none\" }}\n onChange={handleLocalMeshImport}\n />\n </div>\n </div>\n );\n};\n","import { NodeMaterial } from \"core/Materials/Node/nodeMaterial\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype MaterialsContentProps = {\n scene: Scene;\n};\n\n/**\n * Materials content component\n * @param props - Component props\n * @returns React component\n */\nexport const MaterialsContent: FunctionComponent<MaterialsContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // Node Material state\n const [nodeMaterialName, setNodeMaterialName] = useState(\"Node Material\");\n const [nodeMaterialSnippetId, setNodeMaterialSnippetId] = useState(\"\");\n\n // PBR Material state\n const [pbrMaterialName, setPbrMaterialName] = useState(\"PBR Material\");\n\n // Standard Material state\n const [standardMaterialName, setStandardMaterialName] = useState(\"Standard Material\");\n\n const handleCreateNodeMaterialAsync = async () => {\n if (nodeMaterialSnippetId) {\n try {\n const nodeMaterial = await NodeMaterial.ParseFromSnippetAsync(nodeMaterialSnippetId, scene);\n nodeMaterial.name = nodeMaterialName;\n } catch (e) {\n alert(\"Failed to load Node Material from snippet: \" + e);\n }\n } else {\n const nodeMaterial = new NodeMaterial(nodeMaterialName, scene);\n nodeMaterial.build();\n }\n };\n\n const handleCreatePBRMaterial = () => {\n new PBRMaterial(pbrMaterialName, scene);\n };\n\n const handleCreateStandardMaterial = () => {\n new StandardMaterial(standardMaterialName, scene);\n };\n\n return (\n <div className={classes.section}>\n {/* Node Material */}\n <div className={classes.row}>\n <Button onClick={handleCreateNodeMaterialAsync} label=\"Node Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={nodeMaterialName} onChange={(value) => setNodeMaterialName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeMaterialSnippetId} onChange={(value) => setNodeMaterialSnippetId(value)} />\n <Button appearance=\"primary\" onClick={handleCreateNodeMaterialAsync} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* PBR Material */}\n <div className={classes.row}>\n <Button onClick={handleCreatePBRMaterial} label=\"PBR Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={pbrMaterialName} onChange={(value) => setPbrMaterialName(value)} />\n <Button appearance=\"primary\" onClick={handleCreatePBRMaterial} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Standard Material */}\n <div className={classes.row}>\n <Button onClick={handleCreateStandardMaterial} label=\"Standard Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={standardMaterialName} onChange={(value) => setStandardMaterialName(value)} />\n <Button appearance=\"primary\" onClick={handleCreateStandardMaterial} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { PointLight } from \"core/Lights/pointLight\";\nimport { DirectionalLight } from \"core/Lights/directionalLight\";\nimport { SpotLight } from \"core/Lights/spotLight\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { Vector3PropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/vectorPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype LightsContentProps = {\n scene: Scene;\n};\n\n/**\n * Lights content component\n * @param props - Component props\n * @returns React component\n */\nexport const LightsContent: FunctionComponent<LightsContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // Point Light state\n const [pointLightName, setPointLightName] = useState(\"Point Light\");\n const [pointLightPosition, setPointLightPosition] = useState(new Vector3(0, 5, 0));\n\n // Directional Light state\n const [directionalLightName, setDirectionalLightName] = useState(\"Directional Light\");\n const [directionalLightDirection, setDirectionalLightDirection] = useState(new Vector3(1, -1, 0));\n\n // Spotlight state\n const [spotlightName, setSpotlightName] = useState(\"Spotlight\");\n const [spotlightPosition, setSpotlightPosition] = useState(new Vector3(0, 5, 0));\n const [spotlightDirection, setSpotlightDirection] = useState(new Vector3(0, -1, 0));\n const [spotlightAngle, setSpotlightAngle] = useState(1);\n const [spotlightExponent, setSpotlightExponent] = useState(1);\n\n const handleCreatePointLight = () => {\n const light = new PointLight(pointLightName, pointLightPosition, scene);\n light.intensity = 1.0;\n };\n\n const handleCreateDirectionalLight = () => {\n const dirLight = new DirectionalLight(directionalLightName, directionalLightDirection, scene);\n dirLight.intensity = 1.0;\n };\n\n const handleCreateSpotlight = () => {\n const spotlight = new SpotLight(spotlightName, spotlightPosition, spotlightDirection, spotlightAngle, spotlightExponent, scene);\n spotlight.intensity = 1.0;\n };\n\n return (\n <div className={classes.section}>\n {/* Point Light */}\n <div className={classes.row}>\n <Button onClick={handleCreatePointLight} label=\"Point Light\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={pointLightName} onChange={(value) => setPointLightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={pointLightPosition} onChange={(value) => setPointLightPosition(value)} />\n <Button appearance=\"primary\" onClick={handleCreatePointLight} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Directional Light */}\n <div className={classes.row}>\n <Button onClick={handleCreateDirectionalLight} label=\"Directional Light\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={directionalLightName} onChange={(value) => setDirectionalLightName(value)} />\n <Vector3PropertyLine label=\"Direction\" value={directionalLightDirection} onChange={(value) => setDirectionalLightDirection(value)} />\n <Button appearance=\"primary\" onClick={handleCreateDirectionalLight} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Spotlight */}\n <div className={classes.row}>\n <Button onClick={handleCreateSpotlight} label=\"Spotlight\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={spotlightName} onChange={(value) => setSpotlightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={spotlightPosition} onChange={(value) => setSpotlightPosition(value)} />\n <Vector3PropertyLine label=\"Direction\" value={spotlightDirection} onChange={(value) => setSpotlightDirection(value)} />\n <SpinButtonPropertyLine label=\"Angle\" value={spotlightAngle} onChange={(value) => setSpotlightAngle(value)} min={0} max={Math.PI} step={0.1} />\n <SpinButtonPropertyLine label=\"Exponent\" value={spotlightExponent} onChange={(value) => setSpotlightExponent(value)} min={0} max={10} step={0.1} />\n <Button appearance=\"primary\" onClick={handleCreateSpotlight} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\nimport { UniversalCamera } from \"core/Cameras/universalCamera\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { Vector3PropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/vectorPropertyLine\";\nimport { CheckboxPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/checkboxPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype CamerasContentProps = {\n scene: Scene;\n};\n\n/**\n * Cameras content component\n * @param props - Component props\n * @returns React component\n */\nexport const CamerasContent: FunctionComponent<CamerasContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // ArcRotate Camera state\n const [arcRotateCameraName, setArcRotateCameraName] = useState(\"ArcRotate Camera\");\n const [arcRotateCameraTarget, setArcRotateCameraTarget] = useState(new Vector3(0, 0, 0));\n const [arcRotateCameraRadius, setArcRotateCameraRadius] = useState(10);\n const [arcRotateCameraAlpha, setArcRotateCameraAlpha] = useState(0);\n const [arcRotateCameraBeta, setArcRotateCameraBeta] = useState(45);\n const [arcRotateCameraUseRadians, setArcRotateCameraUseRadians] = useState(false);\n\n // Universal Camera state\n const [universalCameraName, setUniversalCameraName] = useState(\"Universal Camera\");\n const [universalCameraPosition, setUniversalCameraPosition] = useState(new Vector3(0, 1, -10));\n\n const handleCreateArcRotateCamera = () => {\n const alpha = arcRotateCameraUseRadians ? arcRotateCameraAlpha : (arcRotateCameraAlpha * Math.PI) / 180;\n const beta = arcRotateCameraUseRadians ? arcRotateCameraBeta : (arcRotateCameraBeta * Math.PI) / 180;\n\n const camera = new ArcRotateCamera(arcRotateCameraName, alpha, beta, arcRotateCameraRadius, arcRotateCameraTarget, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n const handleCreateUniversalCamera = () => {\n const camera = new UniversalCamera(universalCameraName, universalCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n return (\n <div className={classes.section}>\n {/* ArcRotate Camera */}\n <div className={classes.row}>\n <Button onClick={handleCreateArcRotateCamera} label=\"ArcRotate Camera\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={arcRotateCameraName} onChange={(value) => setArcRotateCameraName(value)} />\n <Vector3PropertyLine label=\"Target\" value={arcRotateCameraTarget} onChange={(value) => setArcRotateCameraTarget(value)} />\n <SpinButtonPropertyLine label=\"Radius\" value={arcRotateCameraRadius} onChange={(value) => setArcRotateCameraRadius(value)} min={0.1} max={1000} step={0.5} />\n <SpinButtonPropertyLine\n label={`Alpha ${arcRotateCameraUseRadians ? \"(rad)\" : \"(deg)\"}`}\n value={arcRotateCameraAlpha}\n onChange={(value) => setArcRotateCameraAlpha(value)}\n min={arcRotateCameraUseRadians ? -Math.PI * 2 : -360}\n max={arcRotateCameraUseRadians ? Math.PI * 2 : 360}\n step={arcRotateCameraUseRadians ? 0.1 : 5}\n />\n <SpinButtonPropertyLine\n label={`Beta ${arcRotateCameraUseRadians ? \"(rad)\" : \"(deg)\"}`}\n value={arcRotateCameraBeta}\n onChange={(value) => setArcRotateCameraBeta(value)}\n min={arcRotateCameraUseRadians ? 0 : 0}\n max={arcRotateCameraUseRadians ? Math.PI : 180}\n step={arcRotateCameraUseRadians ? 0.1 : 5}\n />\n <CheckboxPropertyLine label=\"Use Radians\" value={arcRotateCameraUseRadians} onChange={(value) => setArcRotateCameraUseRadians(value)} />\n <Button appearance=\"primary\" onClick={handleCreateArcRotateCamera} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Universal Camera */}\n <div className={classes.row}>\n <Button onClick={handleCreateUniversalCamera} label=\"Universal Camera\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={universalCameraName} onChange={(value) => setUniversalCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={universalCameraPosition} onChange={(value) => setUniversalCameraPosition(value)} />\n <Button appearance=\"primary\" onClick={handleCreateUniversalCamera} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { ParticleSystem } from \"core/Particles/particleSystem\";\nimport { GPUParticleSystem } from \"core/Particles/gpuParticleSystem\";\nimport { NodeParticleSystemSet } from \"core/Particles/Node/nodeParticleSystemSet\";\nimport { Texture } from \"core/Materials/Textures/texture\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype ParticlesContentProps = {\n scene: Scene;\n};\n\n/**\n * Particles content component\n * @param props - Component props\n * @returns React component\n */\nexport const ParticlesContent: FunctionComponent<ParticlesContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // CPU Particle System state\n const [cpuParticleSystemName, setCpuParticleSystemName] = useState(\"Particle System\");\n const [cpuParticleSystemCapacity, setCpuParticleSystemCapacity] = useState(2000);\n\n // GPU Particle System state\n const [gpuParticleSystemName, setGpuParticleSystemName] = useState(\"GPU Particle System\");\n const [gpuParticleSystemCapacity, setGpuParticleSystemCapacity] = useState(2000);\n\n // Node Particle System state\n const [nodeParticleSystemName, setNodeParticleSystemName] = useState(\"Node Particle System\");\n const [nodeParticleSystemSnippetId, setNodeParticleSystemSnippetId] = useState(\"\");\n\n const handleCreateCPUParticleSystem = () => {\n setTimeout(() => {\n const system = new ParticleSystem(cpuParticleSystemName, cpuParticleSystemCapacity, scene);\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", scene);\n system.start();\n }, 0);\n };\n\n const handleCreateGPUParticleSystem = () => {\n if (GPUParticleSystem.IsSupported) {\n setTimeout(() => {\n const system = new GPUParticleSystem(gpuParticleSystemName, { capacity: gpuParticleSystemCapacity }, scene);\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", scene);\n system.start();\n }, 0);\n } else {\n alert(\"GPU Particle System is not supported.\");\n }\n };\n\n const handleCreateNodeParticleSystemAsync = async () => {\n try {\n let nodeParticleSet;\n const snippetId = nodeParticleSystemSnippetId.trim();\n if (snippetId) {\n nodeParticleSet = await NodeParticleSystemSet.ParseFromSnippetAsync(snippetId);\n nodeParticleSet.name = nodeParticleSystemName;\n } else {\n nodeParticleSet = NodeParticleSystemSet.CreateDefault(nodeParticleSystemName);\n }\n const particleSystemSet = await nodeParticleSet.buildAsync(scene);\n for (const system of particleSystemSet.systems) {\n system.name = nodeParticleSystemName;\n }\n particleSystemSet.start();\n } catch (e) {\n global.console.error(\"Error creating Node Particle System:\", e);\n alert(\"Failed to create Node Particle System: \" + e);\n }\n };\n\n return (\n <div className={classes.section}>\n {/* CPU Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateCPUParticleSystem} label=\"CPU Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={cpuParticleSystemName} onChange={(value) => setCpuParticleSystemName(value)} />\n <SpinButtonPropertyLine\n label=\"Capacity\"\n value={cpuParticleSystemCapacity}\n onChange={(value) => setCpuParticleSystemCapacity(value)}\n min={1}\n max={100000}\n step={100}\n />\n <Button appearance=\"primary\" onClick={handleCreateCPUParticleSystem} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* GPU Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateGPUParticleSystem} label=\"GPU Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={gpuParticleSystemName} onChange={(value) => setGpuParticleSystemName(value)} />\n <SpinButtonPropertyLine\n label=\"Capacity\"\n value={gpuParticleSystemCapacity}\n onChange={(value) => setGpuParticleSystemCapacity(value)}\n min={1}\n max={1000000}\n step={1000}\n />\n <Button appearance=\"primary\" onClick={handleCreateGPUParticleSystem} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Node Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateNodeParticleSystemAsync} label=\"Node Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={nodeParticleSystemName} onChange={(value) => setNodeParticleSystemName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeParticleSystemSnippetId} onChange={(value) => setNodeParticleSystemSnippetId(value)} />\n <Button appearance=\"primary\" onClick={handleCreateNodeParticleSystemAsync} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import type { ServiceDefinition } from \"../../modularity/serviceDefinition\";\nimport type { ISceneContext } from \"../../services/sceneContext\";\nimport type { IShellService } from \"../../services/shellService\";\nimport { Accordion as BabylonAccordion, AccordionSection as BabylonAccordionSection } from \"shared-ui-components/fluent/primitives/accordion\";\nimport { ShellServiceIdentity } from \"../../services/shellService\";\n\nimport { CollectionsAdd20Regular } from \"@fluentui/react-icons\";\nimport { SceneContextIdentity } from \"../../services/sceneContext\";\nimport { useObservableState } from \"../../hooks/observableHooks\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\nimport { MeshesContent } from \"./meshes\";\nimport { MaterialsContent } from \"./materials\";\nimport { LightsContent } from \"./lights\";\nimport { CamerasContent } from \"./cameras\";\nimport { ParticlesContent } from \"./particles\";\n\n// TODO: This is just a placeholder for a dynamically installed extension that brings in asset creation tools (node materials, etc.).\nexport const CreateToolsServiceDefinition: ServiceDefinition<[], [IShellService, ISceneContext]> = {\n friendlyName: \"Creation Tools\",\n consumes: [ShellServiceIdentity, SceneContextIdentity],\n factory: (shellService, sceneContext) => {\n const registration = shellService.addSidePane({\n key: \"Create\",\n title: \"Creation Tools\",\n icon: CollectionsAdd20Regular,\n horizontalLocation: \"left\",\n verticalLocation: \"top\",\n content: () => {\n const scene = useObservableState(() => sceneContext.currentScene, sceneContext.currentSceneObservable);\n\n return (\n scene && (\n <>\n <BabylonAccordion>\n <BabylonAccordionSection title=\"Meshes\">\n <MeshesContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Materials\">\n <MaterialsContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Lights\">\n <LightsContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Particles\">\n <ParticlesContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Cameras\">\n <CamerasContent scene={scene} />\n </BabylonAccordionSection>\n </BabylonAccordion>\n </>\n )\n );\n },\n });\n return {\n dispose: () => registration.dispose(),\n };\n },\n};\n\nexport default {\n serviceDefinitions: [CreateToolsServiceDefinition],\n} as const;\n"],"names":["_jsxs","useStyles","_jsx","_Fragment","BabylonAccordion","BabylonAccordionSection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quickCreateToolsService-Cu0BSIWb.js","sources":["../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/settingsPopover.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/meshes.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/materials.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/lights.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/cameras.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/particles.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/quickCreateToolsService.tsx"],"sourcesContent":["import type { FunctionComponent, PropsWithChildren } from \"react\";\nimport { Popover } from \"shared-ui-components/fluent/primitives/popover\";\nimport { SettingsRegular } from \"@fluentui/react-icons\";\n\n/**\n * Settings popover component\n * @param props\n * @returns\n */\nexport const SettingsPopover: FunctionComponent<PropsWithChildren<{}>> = (props) => {\n return <Popover icon={SettingsRegular}> {props.children} </Popover>;\n};\n","import { MeshBuilder } from \"core/Meshes/meshBuilder\";\nimport type { Scene } from \"core/scene\";\nimport { useState, useRef, type ChangeEvent } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { FilesInput } from \"core/Misc/filesInput\";\nimport { SettingsPopover } from \"./settingsPopover\";\nimport { CheckboxPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/checkboxPropertyLine\";\nimport type { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\nconst SetCamera = function (scene: Scene) {\n const camera = scene.activeCamera as ArcRotateCamera;\n if (camera && camera.radius !== undefined) {\n camera.radius = 5;\n }\n};\n\ntype SphereParams = {\n name: string;\n segments: number;\n diameter: number;\n diameterX: number;\n diameterY: number;\n diameterZ: number;\n arc: number;\n slice: number;\n uniform: boolean;\n};\n\ntype BoxParams = {\n name: string;\n size: number;\n width: number;\n height: number;\n depth: number;\n};\n\ntype CylinderParams = {\n name: string;\n height: number;\n diameterTop: number;\n diameterBottom: number;\n diameter: number;\n tessellation: number;\n subdivisions: number;\n arc: number;\n};\n\ntype ConeParams = {\n name: string;\n height: number;\n diameter: number;\n diameterTop: number;\n diameterBottom: number;\n tessellation: number;\n subdivisions: number;\n arc: number;\n};\n\ntype GroundParams = {\n name: string;\n width: number;\n height: number;\n subdivisions: number;\n subdivisionsX: number;\n subdivisionsY: number;\n};\n\n/**\n * @internal\n */\nexport const MeshesContent: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\n const classes = useStyles();\n const [sphereParams, setSphereParams] = useState<SphereParams>({\n name: \"Sphere\",\n segments: 32,\n diameter: 1,\n diameterX: 1,\n diameterY: 1,\n diameterZ: 1,\n arc: 1,\n slice: 1,\n uniform: true,\n });\n\n const handleSphereParamChange = <K extends keyof SphereParams>(key: K, value: SphereParams[K]) => {\n setSphereParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [boxParams, setBoxParams] = useState<BoxParams>({\n name: \"Box\",\n size: 1,\n width: 1,\n height: 1,\n depth: 1,\n });\n\n const handleBoxParamChange = <K extends keyof BoxParams>(key: K, value: BoxParams[K]) => {\n setBoxParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [cylinderParams, setCylinderParams] = useState<CylinderParams>({\n name: \"Cylinder\",\n height: 2,\n diameterTop: 1,\n diameterBottom: 1,\n diameter: 1,\n tessellation: 32,\n subdivisions: 1,\n arc: 1,\n });\n\n const handleCylinderParamChange = <K extends keyof CylinderParams>(key: K, value: CylinderParams[K]) => {\n setCylinderParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [coneParams, setConeParams] = useState<ConeParams>({\n name: \"Cone\",\n height: 2,\n diameter: 1,\n diameterTop: 0,\n diameterBottom: 1,\n tessellation: 32,\n subdivisions: 1,\n arc: 1,\n });\n\n const [coneUp, setConeUp] = useState(true);\n\n const handleConeParamChange = <K extends keyof ConeParams>(key: K, value: ConeParams[K]) => {\n setConeParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const [groundParams, setGroundParams] = useState<GroundParams>({\n name: \"Ground\",\n width: 10,\n height: 10,\n subdivisions: 1,\n subdivisionsX: 1,\n subdivisionsY: 1,\n });\n\n const handleGroundParamChange = <K extends keyof GroundParams>(key: K, value: GroundParams[K]) => {\n setGroundParams((prev) => ({\n ...prev,\n [key]: value,\n }));\n };\n\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [importMeshName, setImportMeshName] = useState(\"ImportedMesh\");\n\n const handleLocalMeshImport = (event: ChangeEvent<HTMLInputElement>) => {\n const files = event.target.files;\n if (!files || files.length === 0) {\n return;\n }\n\n const filesArray = Array.from(files);\n if (importMeshName.trim().length > 0 && filesArray.length > 0) {\n const originalFile = filesArray[0];\n const extensionIndex = originalFile.name.lastIndexOf(\".\");\n const extension = extensionIndex >= 0 ? originalFile.name.substring(extensionIndex) : \"\";\n const sanitizedName = importMeshName.trim();\n const desiredFileName = sanitizedName.toLowerCase().endsWith(extension.toLowerCase()) ? sanitizedName : `${sanitizedName}${extension}`;\n filesArray[0] = new File([originalFile], desiredFileName, { type: originalFile.type, lastModified: originalFile.lastModified });\n }\n\n const filesInput = new FilesInput(\n scene.getEngine(),\n scene,\n null,\n null,\n null,\n null,\n null,\n null,\n (_sceneFile, _scene, message) => {\n alert(message ? `Failed to import mesh: ${message}` : \"Failed to import mesh.\");\n },\n true\n );\n\n filesInput.displayLoadingUI = false;\n filesInput.loadFiles({ target: { files: filesArray } });\n filesInput.dispose();\n\n event.target.value = \"\";\n };\n\n return (\n <div className={classes.section}>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateSphere(\"Sphere\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Sphere\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={sphereParams.name} onChange={(val: string) => handleSphereParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Segments\" value={sphereParams.segments} min={0} onChange={(val: number) => handleSphereParamChange(\"segments\", val)} />\n <SpinButtonPropertyLine\n label=\"Diameter\"\n value={sphereParams.diameter}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameter\", val)}\n disabled={!sphereParams.uniform}\n />\n <CheckboxPropertyLine label=\"Uniform\" value={sphereParams.uniform} onChange={(checked) => handleSphereParamChange(\"uniform\", checked)} />\n <SpinButtonPropertyLine\n label=\"Diameter X\"\n value={sphereParams.diameterX}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterX\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Y\"\n value={sphereParams.diameterY}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterY\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Z\"\n value={sphereParams.diameterZ}\n min={0}\n step={0.1}\n onChange={(val: number) => handleSphereParamChange(\"diameterZ\", val)}\n disabled={sphereParams.uniform}\n />\n <SpinButtonPropertyLine label=\"Arc\" value={sphereParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleSphereParamChange(\"arc\", val)} />\n <SpinButtonPropertyLine label=\"Slice\" value={sphereParams.slice} min={0} max={1} step={0.1} onChange={(val: number) => handleSphereParamChange(\"slice\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n // Create params object based on uniform checkbox\n const createParams: Partial<SphereParams> = {\n segments: sphereParams.segments,\n arc: sphereParams.arc,\n slice: sphereParams.slice,\n };\n\n if (sphereParams.uniform) {\n // If uniform is checked, use diameter\n createParams.diameter = sphereParams.diameter;\n } else {\n // If uniform is unchecked, use individual diameters\n createParams.diameterX = sphereParams.diameterX;\n createParams.diameterY = sphereParams.diameterY;\n createParams.diameterZ = sphereParams.diameterZ;\n }\n\n MeshBuilder.CreateSphere(sphereParams.name, createParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateBox(\"Box\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Box\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={boxParams.name} onChange={(val: string) => handleBoxParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Size\" value={boxParams.size} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"size\", val)} />\n <SpinButtonPropertyLine label=\"Width\" value={boxParams.width} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"width\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={boxParams.height} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"height\", val)} />\n <SpinButtonPropertyLine label=\"Depth\" value={boxParams.depth} min={0} step={0.1} onChange={(val: number) => handleBoxParamChange(\"depth\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateBox(boxParams.name, boxParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateCylinder(\"Cylinder\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Cylinder\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={cylinderParams.name} onChange={(val: string) => handleCylinderParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={cylinderParams.height} min={0} step={0.1} onChange={(val: number) => handleCylinderParamChange(\"height\", val)} />\n <SpinButtonPropertyLine\n label=\"Diameter Top\"\n value={cylinderParams.diameterTop}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameterTop\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Diameter Bottom\"\n value={cylinderParams.diameterBottom}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameterBottom\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Diameter\"\n value={cylinderParams.diameter}\n min={0}\n step={0.1}\n onChange={(val: number) => handleCylinderParamChange(\"diameter\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Tessellation\"\n value={cylinderParams.tessellation}\n min={3}\n onChange={(val: number) => handleCylinderParamChange(\"tessellation\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions\"\n value={cylinderParams.subdivisions}\n min={1}\n onChange={(val: number) => handleCylinderParamChange(\"subdivisions\", val)}\n />\n <SpinButtonPropertyLine label=\"Arc\" value={cylinderParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleCylinderParamChange(\"arc\", val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateCylinder(cylinderParams.name, cylinderParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateCylinder(\"Cone\", { diameterTop: 0 }, scene);\n SetCamera(scene);\n }}\n label=\"Cone\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={coneParams.name} onChange={(val: string) => handleConeParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={coneParams.height} min={0} step={0.1} onChange={(val: number) => handleConeParamChange(\"height\", val)} />\n <SpinButtonPropertyLine label=\"Diameter\" value={coneParams.diameter} min={0} step={0.1} onChange={(val: number) => handleConeParamChange(\"diameter\", val)} />\n <SpinButtonPropertyLine label=\"Tessellation\" value={coneParams.tessellation} min={3} onChange={(val: number) => handleConeParamChange(\"tessellation\", val)} />\n <SpinButtonPropertyLine label=\"Subdivisions\" value={coneParams.subdivisions} min={1} onChange={(val: number) => handleConeParamChange(\"subdivisions\", val)} />\n <SpinButtonPropertyLine label=\"Arc\" value={coneParams.arc} min={0} max={1} step={0.1} onChange={(val: number) => handleConeParamChange(\"arc\", val)} />\n <CheckboxPropertyLine label=\"Up\" value={coneUp} onChange={(val: boolean) => setConeUp(val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n const coneParamsToUse = {\n ...coneParams,\n diameterTop: coneUp ? 0 : coneParams.diameterTop,\n diameterBottom: coneUp ? coneParams.diameterBottom : 0,\n };\n MeshBuilder.CreateCylinder(coneParams.name, coneParamsToUse, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n MeshBuilder.CreateGround(\"Ground\", {}, scene);\n SetCamera(scene);\n }}\n label=\"Ground\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={groundParams.name} onChange={(val: string) => handleGroundParamChange(\"name\", val)} />\n <SpinButtonPropertyLine label=\"Width\" value={groundParams.width} min={0} step={0.1} onChange={(val: number) => handleGroundParamChange(\"width\", val)} />\n <SpinButtonPropertyLine label=\"Height\" value={groundParams.height} min={0} step={0.1} onChange={(val: number) => handleGroundParamChange(\"height\", val)} />\n <SpinButtonPropertyLine\n label=\"Subdivisions\"\n value={groundParams.subdivisions}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisions\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions X\"\n value={groundParams.subdivisionsX}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisionsX\", val)}\n />\n <SpinButtonPropertyLine\n label=\"Subdivisions Y\"\n value={groundParams.subdivisionsY}\n min={1}\n onChange={(val: number) => handleGroundParamChange(\"subdivisionsY\", val)}\n />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8, marginTop: 16 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n MeshBuilder.CreateGround(groundParams.name, groundParams, scene);\n SetCamera(scene);\n }}\n label=\"Create\"\n />\n </div>\n </SettingsPopover>\n </div>\n <div className={classes.row}>\n <Button\n onClick={() => {\n fileInputRef.current?.click();\n }}\n label=\"Import Mesh\"\n />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={importMeshName} onChange={(val: string) => setImportMeshName(val)} />\n <div style={{ display: \"flex\", justifyContent: \"flex-end\", gap: 8 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n fileInputRef.current?.click();\n }}\n label=\"Import\"\n />\n </div>\n </SettingsPopover>\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\".babylon,.glb,.gltf,.obj,.stl,.ply,.mesh,.babylonmeshdata\"\n multiple\n style={{ display: \"none\" }}\n onChange={handleLocalMeshImport}\n />\n </div>\n </div>\n );\n};\n","import { NodeMaterial } from \"core/Materials/Node/nodeMaterial\";\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype MaterialsContentProps = {\n scene: Scene;\n};\n\n/**\n * Materials content component\n * @param props - Component props\n * @returns React component\n */\nexport const MaterialsContent: FunctionComponent<MaterialsContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // Node Material state\n const [nodeMaterialName, setNodeMaterialName] = useState(\"Node Material\");\n const [nodeMaterialSnippetId, setNodeMaterialSnippetId] = useState(\"\");\n\n // PBR Material state\n const [pbrMaterialName, setPbrMaterialName] = useState(\"PBR Material\");\n\n // Standard Material state\n const [standardMaterialName, setStandardMaterialName] = useState(\"Standard Material\");\n\n const handleCreateNodeMaterialAsync = async () => {\n if (nodeMaterialSnippetId) {\n try {\n const nodeMaterial = await NodeMaterial.ParseFromSnippetAsync(nodeMaterialSnippetId, scene);\n nodeMaterial.name = nodeMaterialName;\n } catch (e) {\n alert(\"Failed to load Node Material from snippet: \" + e);\n }\n } else {\n const nodeMaterial = new NodeMaterial(nodeMaterialName, scene);\n nodeMaterial.build();\n }\n };\n\n const handleCreatePBRMaterial = () => {\n new PBRMaterial(pbrMaterialName, scene);\n };\n\n const handleCreateStandardMaterial = () => {\n new StandardMaterial(standardMaterialName, scene);\n };\n\n return (\n <div className={classes.section}>\n {/* Node Material */}\n <div className={classes.row}>\n <Button onClick={handleCreateNodeMaterialAsync} label=\"Node Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={nodeMaterialName} onChange={(value) => setNodeMaterialName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeMaterialSnippetId} onChange={(value) => setNodeMaterialSnippetId(value)} />\n <Button appearance=\"primary\" onClick={handleCreateNodeMaterialAsync} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* PBR Material */}\n <div className={classes.row}>\n <Button onClick={handleCreatePBRMaterial} label=\"PBR Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={pbrMaterialName} onChange={(value) => setPbrMaterialName(value)} />\n <Button appearance=\"primary\" onClick={handleCreatePBRMaterial} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Standard Material */}\n <div className={classes.row}>\n <Button onClick={handleCreateStandardMaterial} label=\"Standard Material\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={standardMaterialName} onChange={(value) => setStandardMaterialName(value)} />\n <Button appearance=\"primary\" onClick={handleCreateStandardMaterial} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { PointLight } from \"core/Lights/pointLight\";\nimport { DirectionalLight } from \"core/Lights/directionalLight\";\nimport { SpotLight } from \"core/Lights/spotLight\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { Vector3PropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/vectorPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype LightsContentProps = {\n scene: Scene;\n};\n\n/**\n * Lights content component\n * @param props - Component props\n * @returns React component\n */\nexport const LightsContent: FunctionComponent<LightsContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // Point Light state\n const [pointLightName, setPointLightName] = useState(\"Point Light\");\n const [pointLightPosition, setPointLightPosition] = useState(new Vector3(0, 5, 0));\n\n // Directional Light state\n const [directionalLightName, setDirectionalLightName] = useState(\"Directional Light\");\n const [directionalLightDirection, setDirectionalLightDirection] = useState(new Vector3(1, -1, 0));\n\n // Spotlight state\n const [spotlightName, setSpotlightName] = useState(\"Spotlight\");\n const [spotlightPosition, setSpotlightPosition] = useState(new Vector3(0, 5, 0));\n const [spotlightDirection, setSpotlightDirection] = useState(new Vector3(0, -1, 0));\n const [spotlightAngle, setSpotlightAngle] = useState(1);\n const [spotlightExponent, setSpotlightExponent] = useState(1);\n\n const handleCreatePointLight = () => {\n const light = new PointLight(pointLightName, pointLightPosition, scene);\n light.intensity = 1.0;\n };\n\n const handleCreateDirectionalLight = () => {\n const dirLight = new DirectionalLight(directionalLightName, directionalLightDirection, scene);\n dirLight.intensity = 1.0;\n };\n\n const handleCreateSpotlight = () => {\n const spotlight = new SpotLight(spotlightName, spotlightPosition, spotlightDirection, spotlightAngle, spotlightExponent, scene);\n spotlight.intensity = 1.0;\n };\n\n return (\n <div className={classes.section}>\n {/* Point Light */}\n <div className={classes.row}>\n <Button onClick={handleCreatePointLight} label=\"Point Light\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={pointLightName} onChange={(value) => setPointLightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={pointLightPosition} onChange={(value) => setPointLightPosition(value)} />\n <Button appearance=\"primary\" onClick={handleCreatePointLight} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Directional Light */}\n <div className={classes.row}>\n <Button onClick={handleCreateDirectionalLight} label=\"Directional Light\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={directionalLightName} onChange={(value) => setDirectionalLightName(value)} />\n <Vector3PropertyLine label=\"Direction\" value={directionalLightDirection} onChange={(value) => setDirectionalLightDirection(value)} />\n <Button appearance=\"primary\" onClick={handleCreateDirectionalLight} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Spotlight */}\n <div className={classes.row}>\n <Button onClick={handleCreateSpotlight} label=\"Spotlight\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={spotlightName} onChange={(value) => setSpotlightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={spotlightPosition} onChange={(value) => setSpotlightPosition(value)} />\n <Vector3PropertyLine label=\"Direction\" value={spotlightDirection} onChange={(value) => setSpotlightDirection(value)} />\n <SpinButtonPropertyLine label=\"Angle\" value={spotlightAngle} onChange={(value) => setSpotlightAngle(value)} min={0} max={Math.PI} step={0.1} />\n <SpinButtonPropertyLine label=\"Exponent\" value={spotlightExponent} onChange={(value) => setSpotlightExponent(value)} min={0} max={10} step={0.1} />\n <Button appearance=\"primary\" onClick={handleCreateSpotlight} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\nimport { UniversalCamera } from \"core/Cameras/universalCamera\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { Vector3PropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/vectorPropertyLine\";\nimport { CheckboxPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/checkboxPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype CamerasContentProps = {\n scene: Scene;\n};\n\n/**\n * Cameras content component\n * @param props - Component props\n * @returns React component\n */\nexport const CamerasContent: FunctionComponent<CamerasContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // ArcRotate Camera state\n const [arcRotateCameraName, setArcRotateCameraName] = useState(\"ArcRotate Camera\");\n const [arcRotateCameraTarget, setArcRotateCameraTarget] = useState(new Vector3(0, 0, 0));\n const [arcRotateCameraRadius, setArcRotateCameraRadius] = useState(10);\n const [arcRotateCameraAlpha, setArcRotateCameraAlpha] = useState(0);\n const [arcRotateCameraBeta, setArcRotateCameraBeta] = useState(45);\n const [arcRotateCameraUseRadians, setArcRotateCameraUseRadians] = useState(false);\n\n // Universal Camera state\n const [universalCameraName, setUniversalCameraName] = useState(\"Universal Camera\");\n const [universalCameraPosition, setUniversalCameraPosition] = useState(new Vector3(0, 1, -10));\n\n const handleCreateArcRotateCamera = () => {\n const alpha = arcRotateCameraUseRadians ? arcRotateCameraAlpha : (arcRotateCameraAlpha * Math.PI) / 180;\n const beta = arcRotateCameraUseRadians ? arcRotateCameraBeta : (arcRotateCameraBeta * Math.PI) / 180;\n\n const camera = new ArcRotateCamera(arcRotateCameraName, alpha, beta, arcRotateCameraRadius, arcRotateCameraTarget, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n const handleCreateUniversalCamera = () => {\n const camera = new UniversalCamera(universalCameraName, universalCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n return (\n <div className={classes.section}>\n {/* ArcRotate Camera */}\n <div className={classes.row}>\n <Button onClick={handleCreateArcRotateCamera} label=\"ArcRotate Camera\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={arcRotateCameraName} onChange={(value) => setArcRotateCameraName(value)} />\n <Vector3PropertyLine label=\"Target\" value={arcRotateCameraTarget} onChange={(value) => setArcRotateCameraTarget(value)} />\n <SpinButtonPropertyLine label=\"Radius\" value={arcRotateCameraRadius} onChange={(value) => setArcRotateCameraRadius(value)} min={0.1} max={1000} step={0.5} />\n <SpinButtonPropertyLine\n label={`Alpha ${arcRotateCameraUseRadians ? \"(rad)\" : \"(deg)\"}`}\n value={arcRotateCameraAlpha}\n onChange={(value) => setArcRotateCameraAlpha(value)}\n min={arcRotateCameraUseRadians ? -Math.PI * 2 : -360}\n max={arcRotateCameraUseRadians ? Math.PI * 2 : 360}\n step={arcRotateCameraUseRadians ? 0.1 : 5}\n />\n <SpinButtonPropertyLine\n label={`Beta ${arcRotateCameraUseRadians ? \"(rad)\" : \"(deg)\"}`}\n value={arcRotateCameraBeta}\n onChange={(value) => setArcRotateCameraBeta(value)}\n min={arcRotateCameraUseRadians ? 0 : 0}\n max={arcRotateCameraUseRadians ? Math.PI : 180}\n step={arcRotateCameraUseRadians ? 0.1 : 5}\n />\n <CheckboxPropertyLine label=\"Use Radians\" value={arcRotateCameraUseRadians} onChange={(value) => setArcRotateCameraUseRadians(value)} />\n <Button appearance=\"primary\" onClick={handleCreateArcRotateCamera} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Universal Camera */}\n <div className={classes.row}>\n <Button onClick={handleCreateUniversalCamera} label=\"Universal Camera\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={universalCameraName} onChange={(value) => setUniversalCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={universalCameraPosition} onChange={(value) => setUniversalCameraPosition(value)} />\n <Button appearance=\"primary\" onClick={handleCreateUniversalCamera} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import { ParticleSystem } from \"core/Particles/particleSystem\";\nimport { GPUParticleSystem } from \"core/Particles/gpuParticleSystem\";\nimport { NodeParticleSystemSet } from \"core/Particles/Node/nodeParticleSystemSet\";\nimport { Texture } from \"core/Materials/Textures/texture\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { SettingsPopover } from \"./settingsPopover\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n\nconst useStyles = makeStyles({\n section: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: tokens.spacingVerticalM,\n },\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\n});\n\ntype ParticlesContentProps = {\n scene: Scene;\n};\n\n/**\n * Particles content component\n * @param props - Component props\n * @returns React component\n */\nexport const ParticlesContent: FunctionComponent<ParticlesContentProps> = ({ scene }) => {\n const classes = useStyles();\n\n // CPU Particle System state\n const [cpuParticleSystemName, setCpuParticleSystemName] = useState(\"Particle System\");\n const [cpuParticleSystemCapacity, setCpuParticleSystemCapacity] = useState(2000);\n\n // GPU Particle System state\n const [gpuParticleSystemName, setGpuParticleSystemName] = useState(\"GPU Particle System\");\n const [gpuParticleSystemCapacity, setGpuParticleSystemCapacity] = useState(2000);\n\n // Node Particle System state\n const [nodeParticleSystemName, setNodeParticleSystemName] = useState(\"Node Particle System\");\n const [nodeParticleSystemSnippetId, setNodeParticleSystemSnippetId] = useState(\"\");\n\n const handleCreateCPUParticleSystem = () => {\n setTimeout(() => {\n const system = new ParticleSystem(cpuParticleSystemName, cpuParticleSystemCapacity, scene);\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", scene);\n system.start();\n }, 0);\n };\n\n const handleCreateGPUParticleSystem = () => {\n if (GPUParticleSystem.IsSupported) {\n setTimeout(() => {\n const system = new GPUParticleSystem(gpuParticleSystemName, { capacity: gpuParticleSystemCapacity }, scene);\n system.particleTexture = new Texture(\"https://assets.babylonjs.com/textures/flare.png\", scene);\n system.start();\n }, 0);\n } else {\n alert(\"GPU Particle System is not supported.\");\n }\n };\n\n const handleCreateNodeParticleSystemAsync = async () => {\n try {\n let nodeParticleSet;\n const snippetId = nodeParticleSystemSnippetId.trim();\n if (snippetId) {\n nodeParticleSet = await NodeParticleSystemSet.ParseFromSnippetAsync(snippetId);\n nodeParticleSet.name = nodeParticleSystemName;\n } else {\n nodeParticleSet = NodeParticleSystemSet.CreateDefault(nodeParticleSystemName);\n }\n const particleSystemSet = await nodeParticleSet.buildAsync(scene);\n for (const system of particleSystemSet.systems) {\n system.name = nodeParticleSystemName;\n }\n particleSystemSet.start();\n } catch (e) {\n global.console.error(\"Error creating Node Particle System:\", e);\n alert(\"Failed to create Node Particle System: \" + e);\n }\n };\n\n return (\n <div className={classes.section}>\n {/* CPU Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateCPUParticleSystem} label=\"CPU Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={cpuParticleSystemName} onChange={(value) => setCpuParticleSystemName(value)} />\n <SpinButtonPropertyLine\n label=\"Capacity\"\n value={cpuParticleSystemCapacity}\n onChange={(value) => setCpuParticleSystemCapacity(value)}\n min={1}\n max={100000}\n step={100}\n />\n <Button appearance=\"primary\" onClick={handleCreateCPUParticleSystem} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* GPU Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateGPUParticleSystem} label=\"GPU Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={gpuParticleSystemName} onChange={(value) => setGpuParticleSystemName(value)} />\n <SpinButtonPropertyLine\n label=\"Capacity\"\n value={gpuParticleSystemCapacity}\n onChange={(value) => setGpuParticleSystemCapacity(value)}\n min={1}\n max={1000000}\n step={1000}\n />\n <Button appearance=\"primary\" onClick={handleCreateGPUParticleSystem} label=\"Create\" />\n </SettingsPopover>\n </div>\n\n {/* Node Particle System */}\n <div className={classes.row}>\n <Button onClick={handleCreateNodeParticleSystemAsync} label=\"Node Particle System\" />\n <SettingsPopover>\n <TextInputPropertyLine label=\"Name\" value={nodeParticleSystemName} onChange={(value) => setNodeParticleSystemName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeParticleSystemSnippetId} onChange={(value) => setNodeParticleSystemSnippetId(value)} />\n <Button appearance=\"primary\" onClick={handleCreateNodeParticleSystemAsync} label=\"Create\" />\n </SettingsPopover>\n </div>\n </div>\n );\n};\n","import type { ServiceDefinition } from \"../../modularity/serviceDefinition\";\nimport type { ISceneContext } from \"../../services/sceneContext\";\nimport type { IShellService } from \"../../services/shellService\";\nimport { Accordion as BabylonAccordion, AccordionSection as BabylonAccordionSection } from \"shared-ui-components/fluent/primitives/accordion\";\nimport { ShellServiceIdentity } from \"../../services/shellService\";\n\nimport { CollectionsAdd20Regular } from \"@fluentui/react-icons\";\nimport { SceneContextIdentity } from \"../../services/sceneContext\";\nimport { useObservableState } from \"../../hooks/observableHooks\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\nimport { MeshesContent } from \"./meshes\";\nimport { MaterialsContent } from \"./materials\";\nimport { LightsContent } from \"./lights\";\nimport { CamerasContent } from \"./cameras\";\nimport { ParticlesContent } from \"./particles\";\n\n// TODO: This is just a placeholder for a dynamically installed extension that brings in asset creation tools (node materials, etc.).\nexport const CreateToolsServiceDefinition: ServiceDefinition<[], [IShellService, ISceneContext]> = {\n friendlyName: \"Creation Tools\",\n consumes: [ShellServiceIdentity, SceneContextIdentity],\n factory: (shellService, sceneContext) => {\n const registration = shellService.addSidePane({\n key: \"Create\",\n title: \"Creation Tools\",\n icon: CollectionsAdd20Regular,\n horizontalLocation: \"left\",\n verticalLocation: \"top\",\n content: () => {\n const scene = useObservableState(() => sceneContext.currentScene, sceneContext.currentSceneObservable);\n\n return (\n scene && (\n <>\n <BabylonAccordion>\n <BabylonAccordionSection title=\"Meshes\">\n <MeshesContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Materials\">\n <MaterialsContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Lights\">\n <LightsContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Particles\">\n <ParticlesContent scene={scene} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Cameras\">\n <CamerasContent scene={scene} />\n </BabylonAccordionSection>\n </BabylonAccordion>\n </>\n )\n );\n },\n });\n return {\n dispose: () => registration.dispose(),\n };\n },\n};\n\nexport default {\n serviceDefinitions: [CreateToolsServiceDefinition],\n} as const;\n"],"names":["_jsxs","useStyles","_jsx","_Fragment","BabylonAccordion","BabylonAccordionSection"],"mappings":"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"}
|