@babylonjs/inspector 8.54.2 → 8.55.0
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/{extensionsListService--XzVqzeM.js → extensionsListService-DnOKIWRz.js} +2 -2
- package/lib/{extensionsListService--XzVqzeM.js.map → extensionsListService-DnOKIWRz.js.map} +1 -1
- package/lib/{index-CIc0CbG8.js → index-jSClUjQ1.js} +115 -54
- package/lib/index-jSClUjQ1.js.map +1 -0
- package/lib/index.d.ts +39 -11
- package/lib/index.js +1 -1
- package/lib/{quickCreateToolsService-D-cyDKNQ.js → quickCreateToolsService-C2KCEQS-.js} +2 -2
- package/lib/{quickCreateToolsService-D-cyDKNQ.js.map → quickCreateToolsService-C2KCEQS-.js.map} +1 -1
- package/lib/{reflectorService-DNf_o1rS.js → reflectorService-D1aC0qmT.js} +2 -2
- package/lib/{reflectorService-DNf_o1rS.js.map → reflectorService-D1aC0qmT.js.map} +1 -1
- package/package.json +1 -1
- package/lib/index-CIc0CbG8.js.map +0 -1
package/lib/{quickCreateToolsService-D-cyDKNQ.js.map → quickCreateToolsService-C2KCEQS-.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickCreateToolsService-D-cyDKNQ.js","sources":["../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/settingsPopover.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/quickCreateLayout.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/renderingPipelines.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/frameGraphs.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/spriteManagers.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\ntype SettingsPopoverProps = {\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n};\n\n/**\n * Settings popover component\n * @param props\n * @returns\n */\nexport const SettingsPopover: FunctionComponent<PropsWithChildren<SettingsPopoverProps>> = (props) => {\n return (\n <Popover icon={SettingsRegular} open={props.open} onOpenChange={props.onOpenChange}>\n {props.children}\n </Popover>\n );\n};\n","import type { FunctionComponent, ReactNode } from \"react\";\r\nimport { useState, useCallback } from \"react\";\r\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\r\nimport { useToast } from \"shared-ui-components/fluent/primitives/toast\";\r\nimport { SettingsPopover } from \"./settingsPopover\";\r\nimport { LinkToEntity } from \"../../components/properties/linkToEntityPropertyLine\";\r\n\r\ntype CreatedEntity = { name: string };\r\n\r\nconst useStyles = makeStyles({\r\n section: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n rowGap: tokens.spacingVerticalM,\r\n },\r\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\r\n rightAligned: { marginLeft: \"auto\" },\r\n});\r\n\r\ntype QuickCreateSectionProps = {\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Container component for quick create sections that provides consistent column layout with spacing\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const QuickCreateSection: FunctionComponent<QuickCreateSectionProps> = ({ children }) => {\r\n const classes = useStyles();\r\n return <div className={classes.section}>{children}</div>;\r\n};\r\n\r\ntype QuickCreateRowProps = {\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Container component for quick create rows that provides consistent row layout for button + settings popover\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const QuickCreateRow: FunctionComponent<QuickCreateRowProps> = ({ children }) => {\r\n const classes = useStyles();\r\n return <div className={classes.row}>{children}</div>;\r\n};\r\n\r\ntype QuickCreateItemProps = {\r\n /** The selection service used by the go-to-entity button */\r\n selectionService: ISelectionService;\r\n /** Label for the quick-create button */\r\n label: string;\r\n /** Called when the quick-create button is clicked. Return the created entity (or a Promise that resolves to it) for toast + go-to. */\r\n onCreate: () => CreatedEntity | Promise<CreatedEntity>;\r\n /** Optional override for the settings popover's Create button. If omitted, the popover's Create button calls `onCreate`. */\r\n onSettingsCreate?: () => CreatedEntity | Promise<CreatedEntity>;\r\n /** Optional settings popover content (form fields). When provided, a settings popover with a Create button is rendered next to the quick-create button. */\r\n children?: ReactNode;\r\n};\r\n\r\n/**\r\n * Reusable row component for entity creation. Renders a quick-create button, an optional settings popover\r\n * (with a baked-in Create button), and a \"go to entity\" button. Manages its own state for the last created entity\r\n * and shows a toast on creation.\r\n * @param props - The label, creation handler, selection service, and optional settings content\r\n * @returns A row with a button, optional settings popover, and go-to-entity button\r\n */\r\nexport const QuickCreateItem: FunctionComponent<QuickCreateItemProps> = ({ selectionService, label, onCreate, onSettingsCreate, children }) => {\r\n const [lastCreatedEntity, setLastCreatedEntity] = useState<{ name: string } | null>(null);\r\n const [popoverOpen, setPopoverOpen] = useState(false);\r\n const { showToast } = useToast();\r\n const classes = useStyles();\r\n\r\n const handleCreate = useCallback(\r\n async (factory: () => CreatedEntity | Promise<CreatedEntity>) => {\r\n try {\r\n const entity = await factory();\r\n setLastCreatedEntity(entity);\r\n showToast(`Created ${entity.name}`);\r\n } catch (e) {\r\n showToast(`Creation failed: ${e instanceof Error ? e.message : String(e)}`);\r\n }\r\n },\r\n [showToast]\r\n );\r\n\r\n return (\r\n <div className={classes.row}>\r\n <Button onClick={() => void handleCreate(onCreate)} label={label} />\r\n {children && (\r\n <SettingsPopover open={popoverOpen} onOpenChange={setPopoverOpen}>\r\n {children}\r\n <Button\r\n appearance=\"primary\"\r\n onClick={() => {\r\n setPopoverOpen(false);\r\n void handleCreate(onSettingsCreate ?? onCreate);\r\n }}\r\n label=\"Create\"\r\n />\r\n </SettingsPopover>\r\n )}\r\n <div className={classes.rightAligned}>\r\n <LinkToEntity entity={lastCreatedEntity} selectionService={selectionService} />\r\n </div>\r\n </div>\r\n );\r\n};\r\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 { 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\";\nimport { QuickCreateSection, QuickCreateRow, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\nimport { registerBuiltInLoaders } from \"loaders/dynamic\";\nimport { GetRegisteredSceneLoaderPluginMetadata } from \"core/Loading/sceneLoader\";\n\nregisterBuiltInLoaders();\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; selectionService: ISelectionService }> = ({ scene, selectionService }) => {\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 // Note: GetRegisteredSceneLoaderPluginMetadata includes extensions from all loaders,\n // including `.json` from the SPLAT loader, which is used for SOG (Sparse Octree Gaussian)\n // metadata files. To avoid suggesting that arbitrary JSON files can be imported as meshes,\n // we explicitly filter out the generic `.json` extension here.\n const supportedModelExtensions = GetRegisteredSceneLoaderPluginMetadata()\n .flatMap((plugin) => plugin.extensions.map((extension) => extension.extension))\n .filter((extension) => extension.toLowerCase() !== \".json\");\n\n return (\n <QuickCreateSection>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Sphere\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateSphere(\"Sphere\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const createParams: Partial<SphereParams> = {\n segments: sphereParams.segments,\n arc: sphereParams.arc,\n slice: sphereParams.slice,\n };\n\n if (sphereParams.uniform) {\n createParams.diameter = sphereParams.diameter;\n } else {\n createParams.diameterX = sphereParams.diameterX;\n createParams.diameterY = sphereParams.diameterY;\n createParams.diameterZ = sphereParams.diameterZ;\n }\n\n const mesh = MeshBuilder.CreateSphere(sphereParams.name, createParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Box\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateBox(\"Box\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateBox(boxParams.name, boxParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Cylinder\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(\"Cylinder\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(cylinderParams.name, cylinderParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Cone\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(\"Cone\", { diameterTop: 0 }, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const coneParamsToUse = {\n ...coneParams,\n diameterTop: coneUp ? 0 : coneParams.diameterTop,\n diameterBottom: coneUp ? coneParams.diameterBottom : 0,\n };\n const mesh = MeshBuilder.CreateCylinder(coneParams.name, coneParamsToUse, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Ground\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateGround(\"Ground\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateGround(groundParams.name, groundParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 label=\"Subdivisions\" value={groundParams.subdivisions} min={1} onChange={(val: number) => handleGroundParamChange(\"subdivisions\", val)} />\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 </QuickCreateItem>\n <QuickCreateRow>\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 ref={fileInputRef} type=\"file\" accept={supportedModelExtensions.join(\",\")} multiple style={{ display: \"none\" }} onChange={handleLocalMeshImport} />\n </QuickCreateRow>\n </QuickCreateSection>\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 { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype MaterialsContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Materials content component\n * @param props - Component props\n * @returns React component\n */\nexport const MaterialsContent: FunctionComponent<MaterialsContentProps> = ({ scene, selectionService }) => {\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 createPBRMaterial = () => {\n return new PBRMaterial(pbrMaterialName, scene);\n };\n\n const createStandardMaterial = () => {\n return new StandardMaterial(standardMaterialName, scene);\n };\n\n const handleCreateNodeMaterialAsync = async () => {\n if (nodeMaterialSnippetId) {\n const nodeMaterial = await NodeMaterial.ParseFromSnippetAsync(nodeMaterialSnippetId, scene);\n nodeMaterial.name = nodeMaterialName;\n return nodeMaterial;\n } else {\n const nodeMaterial = new NodeMaterial(nodeMaterialName, scene);\n nodeMaterial.setToDefault();\n nodeMaterial.build();\n return nodeMaterial;\n }\n };\n\n return (\n <QuickCreateSection>\n {/* Node Material */}\n <QuickCreateItem selectionService={selectionService} label=\"Node Material\" onCreate={handleCreateNodeMaterialAsync}>\n <TextInputPropertyLine label=\"Name\" value={nodeMaterialName} onChange={(value) => setNodeMaterialName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeMaterialSnippetId} onChange={(value) => setNodeMaterialSnippetId(value)} />\n </QuickCreateItem>\n\n {/* PBR Material */}\n <QuickCreateItem selectionService={selectionService} label=\"PBR Material\" onCreate={() => createPBRMaterial()}>\n <TextInputPropertyLine label=\"Name\" value={pbrMaterialName} onChange={(value) => setPbrMaterialName(value)} />\n </QuickCreateItem>\n\n {/* Standard Material */}\n <QuickCreateItem selectionService={selectionService} label=\"Standard Material\" onCreate={() => createStandardMaterial()}>\n <TextInputPropertyLine label=\"Name\" value={standardMaterialName} onChange={(value) => setStandardMaterialName(value)} />\n </QuickCreateItem>\n </QuickCreateSection>\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 { 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 { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype LightsContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Lights content component\n * @param props - Component props\n * @returns React component\n */\nexport const LightsContent: FunctionComponent<LightsContentProps> = ({ scene, selectionService }) => {\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 createPointLight = () => {\n const light = new PointLight(pointLightName, pointLightPosition, scene);\n light.intensity = 1.0;\n return light;\n };\n\n const createDirectionalLight = () => {\n const dirLight = new DirectionalLight(directionalLightName, directionalLightDirection, scene);\n dirLight.intensity = 1.0;\n return dirLight;\n };\n\n const createSpotlight = () => {\n const spotlight = new SpotLight(spotlightName, spotlightPosition, spotlightDirection, spotlightAngle, spotlightExponent, scene);\n spotlight.intensity = 1.0;\n return spotlight;\n };\n\n return (\n <QuickCreateSection>\n {/* Point Light */}\n <QuickCreateItem selectionService={selectionService} label=\"Point Light\" onCreate={() => createPointLight()}>\n <TextInputPropertyLine label=\"Name\" value={pointLightName} onChange={(value) => setPointLightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={pointLightPosition} onChange={(value) => setPointLightPosition(value)} />\n </QuickCreateItem>\n\n {/* Directional Light */}\n <QuickCreateItem selectionService={selectionService} label=\"Directional Light\" onCreate={() => createDirectionalLight()}>\n <TextInputPropertyLine label=\"Name\" value={directionalLightName} onChange={(value) => setDirectionalLightName(value)} />\n <Vector3PropertyLine label=\"Direction\" value={directionalLightDirection} onChange={(value) => setDirectionalLightDirection(value)} />\n </QuickCreateItem>\n\n {/* Spotlight */}\n <QuickCreateItem selectionService={selectionService} label=\"Spotlight\" onCreate={() => createSpotlight()}>\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 </QuickCreateItem>\n </QuickCreateSection>\n );\n};\n","import type { Camera } from \"core/Cameras/camera\";\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\nimport { UniversalCamera } from \"core/Cameras/universalCamera\";\nimport { FreeCamera } from \"core/Cameras/freeCamera\";\nimport { FollowCamera } from \"core/Cameras/followCamera\";\nimport { FlyCamera } from \"core/Cameras/flyCamera\";\nimport { GeospatialCamera } from \"core/Cameras/geospatialCamera\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\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 { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype CamerasContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Cameras content component\n * @param props - Component props\n * @returns React component\n */\nexport const CamerasContent: FunctionComponent<CamerasContentProps> = ({ scene, selectionService }) => {\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 // Free Camera state\n const [freeCameraName, setFreeCameraName] = useState(\"Free Camera\");\n const [freeCameraPosition, setFreeCameraPosition] = useState(new Vector3(0, 1, -10));\n\n // Follow Camera state\n const [followCameraName, setFollowCameraName] = useState(\"Follow Camera\");\n const [followCameraPosition, setFollowCameraPosition] = useState(new Vector3(0, 5, -10));\n const [followCameraRadius, setFollowCameraRadius] = useState(10);\n const [followCameraHeightOffset, setFollowCameraHeightOffset] = useState(4);\n const [followCameraRotationOffset, setFollowCameraRotationOffset] = useState(0);\n\n // Fly Camera state\n const [flyCameraName, setFlyCameraName] = useState(\"Fly Camera\");\n const [flyCameraPosition, setFlyCameraPosition] = useState(new Vector3(0, 1, -10));\n\n // Geospatial Camera state\n const [geospatialCameraName, setGeospatialCameraName] = useState(\"Geospatial Camera\");\n const [geospatialCameraPlanetRadius, setGeospatialCameraPlanetRadius] = useState(6371000);\n\n const setAsActiveIfNeeded = (camera: Camera) => {\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n const createArcRotateCamera = () => {\n const alpha = arcRotateCameraUseRadians ? arcRotateCameraAlpha : (arcRotateCameraAlpha * Math.PI) / 180;\n const beta = arcRotateCameraUseRadians ? arcRotateCameraBeta : (arcRotateCameraBeta * Math.PI) / 180;\n const camera = new ArcRotateCamera(arcRotateCameraName, alpha, beta, arcRotateCameraRadius, arcRotateCameraTarget, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createUniversalCamera = () => {\n const camera = new UniversalCamera(universalCameraName, universalCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFreeCamera = () => {\n const camera = new FreeCamera(freeCameraName, freeCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFollowCamera = () => {\n const camera = new FollowCamera(followCameraName, followCameraPosition, scene);\n camera.radius = followCameraRadius;\n camera.heightOffset = followCameraHeightOffset;\n camera.rotationOffset = followCameraRotationOffset;\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFlyCamera = () => {\n const camera = new FlyCamera(flyCameraName, flyCameraPosition, scene);\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createGeospatialCamera = () => {\n const camera = new GeospatialCamera(geospatialCameraName, scene, { planetRadius: geospatialCameraPlanetRadius });\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n return (\n <QuickCreateSection>\n {/* ArcRotate Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"ArcRotate Camera\" onCreate={() => createArcRotateCamera()}>\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 </QuickCreateItem>\n\n {/* Universal Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Universal Camera\" onCreate={() => createUniversalCamera()}>\n <TextInputPropertyLine label=\"Name\" value={universalCameraName} onChange={(value) => setUniversalCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={universalCameraPosition} onChange={(value) => setUniversalCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Free Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Free Camera\" onCreate={() => createFreeCamera()}>\n <TextInputPropertyLine label=\"Name\" value={freeCameraName} onChange={(value) => setFreeCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={freeCameraPosition} onChange={(value) => setFreeCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Follow Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Follow Camera\" onCreate={() => createFollowCamera()}>\n <TextInputPropertyLine label=\"Name\" value={followCameraName} onChange={(value) => setFollowCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={followCameraPosition} onChange={(value) => setFollowCameraPosition(value)} />\n <SpinButtonPropertyLine label=\"Radius\" value={followCameraRadius} onChange={(value) => setFollowCameraRadius(value)} min={0.1} max={1000} step={0.5} />\n <SpinButtonPropertyLine\n label=\"Height Offset\"\n value={followCameraHeightOffset}\n onChange={(value) => setFollowCameraHeightOffset(value)}\n min={-100}\n max={100}\n step={0.5}\n />\n <SpinButtonPropertyLine\n label=\"Rotation Offset (deg)\"\n value={followCameraRotationOffset}\n onChange={(value) => setFollowCameraRotationOffset(value)}\n min={-180}\n max={180}\n step={5}\n />\n </QuickCreateItem>\n\n {/* Fly Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Fly Camera\" onCreate={() => createFlyCamera()}>\n <TextInputPropertyLine label=\"Name\" value={flyCameraName} onChange={(value) => setFlyCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={flyCameraPosition} onChange={(value) => setFlyCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Geospatial Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Geospatial Camera\" onCreate={() => createGeospatialCamera()}>\n <TextInputPropertyLine label=\"Name\" value={geospatialCameraName} onChange={(value) => setGeospatialCameraName(value)} />\n <SpinButtonPropertyLine\n label=\"Planet Radius (m)\"\n value={geospatialCameraPlanetRadius}\n onChange={(value) => setGeospatialCameraPlanetRadius(value)}\n min={1000}\n max={100000000}\n step={1000}\n />\n </QuickCreateItem>\n </QuickCreateSection>\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 { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n\ntype ParticlesContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Particles content component\n * @param props - Component props\n * @returns React component\n */\nexport const ParticlesContent: FunctionComponent<ParticlesContentProps> = ({ scene, selectionService }) => {\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 handleCreateCPUAsync = async () => {\n return await new Promise<{ name: string }>((resolve) => {\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 resolve(system);\n }, 0);\n });\n };\n\n const handleCreateGPUAsync = async () => {\n if (!GPUParticleSystem.IsSupported) {\n alert(\"GPU Particle System is not supported.\");\n throw new Error(\"GPU Particle System is not supported.\");\n }\n return await new Promise<{ name: string }>((resolve) => {\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 resolve(system);\n }, 0);\n });\n };\n\n const handleCreateNodeAsync = async () => {\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 const systems = particleSystemSet.systems;\n if (systems.length === 0) {\n throw new Error(\"No particle systems were produced by the node particle system.\");\n }\n for (const system of systems) {\n system.name = nodeParticleSystemName;\n }\n particleSystemSet.start();\n return systems[0];\n };\n\n return (\n <QuickCreateSection>\n {/* CPU Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"CPU Particle System\" onCreate={handleCreateCPUAsync}>\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 </QuickCreateItem>\n\n {/* GPU Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"GPU Particle System\" onCreate={handleCreateGPUAsync}>\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 </QuickCreateItem>\n\n {/* Node Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"Node Particle System\" onCreate={handleCreateNodeAsync}>\n <TextInputPropertyLine label=\"Name\" value={nodeParticleSystemName} onChange={(value) => setNodeParticleSystemName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeParticleSystemSnippetId} onChange={(value) => setNodeParticleSystemSnippetId(value)} />\n </QuickCreateItem>\n </QuickCreateSection>\n );\n};\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { MessageBar } from \"shared-ui-components/fluent/primitives/messageBar\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { DefaultRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline\";\r\nimport { SSAORenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline\";\r\nimport { SSAO2RenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline\";\r\nimport { SSRRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline\";\r\nimport { IblShadowsRenderPipeline } from \"core/Rendering/IBLShadows/iblShadowsRenderPipeline\";\r\nimport { useProperty } from \"../../hooks/compoundPropertyHooks\";\r\n\r\ntype RenderingPipelinesContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\nconst GetUniquePipelineName = (baseName: string, scene: Scene): string => {\r\n const pipelines = scene.postProcessRenderPipelineManager.supportedPipelines;\r\n const existingNames = new Set(pipelines.map((p) => p._name));\r\n\r\n if (!existingNames.has(baseName)) {\r\n return baseName;\r\n }\r\n\r\n let counter = 1;\r\n let uniqueName = `${baseName} ${counter}`;\r\n while (existingNames.has(uniqueName)) {\r\n counter++;\r\n uniqueName = `${baseName} ${counter}`;\r\n }\r\n return uniqueName;\r\n};\r\n\r\n/**\r\n * Rendering Pipelines content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const RenderingPipelinesContent: FunctionComponent<RenderingPipelinesContentProps> = ({ scene, selectionService }) => {\r\n // Default Rendering Pipeline state\r\n const [defaultPipelineName, setDefaultPipelineName] = useState(\"Default rendering pipeline\");\r\n\r\n // SSAO Pipeline state\r\n const [ssaoPipelineName, setSsaoPipelineName] = useState(\"SSAO rendering pipeline\");\r\n\r\n // SSAO2 Pipeline state\r\n const [ssao2PipelineName, setSsao2PipelineName] = useState(\"SSAO2 rendering pipeline\");\r\n\r\n // SSR Pipeline state\r\n const [ssrPipelineName, setSsrPipelineName] = useState(\"SSR rendering pipeline\");\r\n\r\n // IBL Shadows Pipeline state\r\n const [iblShadowsPipelineName, setIblShadowsPipelineName] = useState(\"IBL Shadows rendering pipeline\");\r\n\r\n const createDefaultPipeline = () => {\r\n const name = GetUniquePipelineName(defaultPipelineName, scene);\r\n return new DefaultRenderingPipeline(name, true, scene, scene.cameras);\r\n };\r\n\r\n const createSSAOPipeline = () => {\r\n const name = GetUniquePipelineName(ssaoPipelineName, scene);\r\n return new SSAORenderingPipeline(name, scene, 1, scene.cameras);\r\n };\r\n\r\n const createSSAO2Pipeline = () => {\r\n const name = GetUniquePipelineName(ssao2PipelineName, scene);\r\n return new SSAO2RenderingPipeline(name, scene, 1, scene.cameras);\r\n };\r\n\r\n const createSSRPipeline = () => {\r\n const name = GetUniquePipelineName(ssrPipelineName, scene);\r\n return new SSRRenderingPipeline(name, scene, scene.cameras);\r\n };\r\n\r\n const createIBLShadowsPipeline = () => {\r\n const name = GetUniquePipelineName(iblShadowsPipelineName, scene);\r\n return new IblShadowsRenderPipeline(name, scene, {}, scene.cameras);\r\n };\r\n\r\n const caps = scene.getEngine().getCaps();\r\n const hasDrawBuffers = caps.drawBuffersExtension;\r\n const hasTexelFetch = caps.texelFetch;\r\n const camera = useProperty(scene, \"activeCamera\");\r\n return (\r\n <QuickCreateSection>\r\n {!camera ? (\r\n <MessageBar message=\"Cannot create rendering pipeline without an active camera.\" title=\"No active camera\" intent=\"info\"></MessageBar>\r\n ) : (\r\n <>\r\n {/* Default Rendering Pipeline */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Default Pipeline\" onCreate={() => createDefaultPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={defaultPipelineName} onChange={(value) => setDefaultPipelineName(value)} />\r\n </QuickCreateItem>\r\n\r\n {/* SSAO Pipeline */}\r\n <QuickCreateItem selectionService={selectionService} label=\"SSAO Pipeline\" onCreate={() => createSSAOPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssaoPipelineName} onChange={(value) => setSsaoPipelineName(value)} />\r\n </QuickCreateItem>\r\n\r\n {/* SSAO2 Pipeline */}\r\n {hasDrawBuffers && (\r\n <QuickCreateItem selectionService={selectionService} label=\"SSAO2 Pipeline\" onCreate={() => createSSAO2Pipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssao2PipelineName} onChange={(value) => setSsao2PipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n\r\n {/* SSR Pipeline */}\r\n {hasDrawBuffers && hasTexelFetch && (\r\n <QuickCreateItem selectionService={selectionService} label=\"SSR Pipeline\" onCreate={() => createSSRPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssrPipelineName} onChange={(value) => setSsrPipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n\r\n {/* IBL Shadows Pipeline */}\r\n {hasDrawBuffers && hasTexelFetch && (\r\n <QuickCreateItem selectionService={selectionService} label=\"IBL Shadows Pipeline\" onCreate={() => createIBLShadowsPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={iblShadowsPipelineName} onChange={(value) => setIblShadowsPipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n </>\r\n )}\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { NodeRenderGraph } from \"core/FrameGraph/Node/nodeRenderGraph\";\r\n\r\ntype FrameGraphsContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\n/**\r\n * Helper to generate a unique frame graph name\r\n * @param baseName - The base name to use\r\n * @param scene - The scene to check for existing frame graphs\r\n * @returns A unique name\r\n */\r\nfunction GetUniqueName(baseName: string, scene: Scene): string {\r\n let name = baseName;\r\n let idSubscript = 1;\r\n while (scene.getFrameGraphByName(name)) {\r\n name = baseName + \" \" + idSubscript++;\r\n }\r\n return name;\r\n}\r\n\r\n/**\r\n * Frame Graphs content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const FrameGraphsContent: FunctionComponent<FrameGraphsContentProps> = ({ scene, selectionService }) => {\r\n // Node Render Graph state\r\n const [frameGraphName, setFrameGraphName] = useState(\"Frame Graph\");\r\n\r\n const createFrameGraph = () => {\r\n const uniqueName = GetUniqueName(frameGraphName, scene);\r\n const newNodeRenderGraph = new NodeRenderGraph(uniqueName, scene);\r\n newNodeRenderGraph.setToDefault();\r\n void newNodeRenderGraph.buildAsync();\r\n // Return the underlying FrameGraph, which is what gets registered with the scene\r\n // and matched by the properties/explorer services via `instanceof FrameGraph`.\r\n return newNodeRenderGraph.frameGraph;\r\n };\r\n\r\n return (\r\n <QuickCreateSection>\r\n {/* Node Render Graph / Frame Graph */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Frame Graph\" onCreate={() => createFrameGraph()}>\r\n <TextInputPropertyLine label=\"Name\" value={frameGraphName} onChange={(value) => setFrameGraphName(value)} />\r\n </QuickCreateItem>\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { SpriteManager } from \"core/Sprites/spriteManager\";\r\n\r\ntype SpriteManagersContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\n/**\r\n * Sprite Managers content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const SpriteManagersContent: FunctionComponent<SpriteManagersContentProps> = ({ scene, selectionService }) => {\r\n // Sprite Manager state\r\n const [spriteManagerName, setSpriteManagerName] = useState(\"Sprite Manager\");\r\n const [spriteManagerCapacity, setSpriteManagerCapacity] = useState(500);\r\n const [spriteManagerCellSize, setSpriteManagerCellSize] = useState(64);\r\n const [spriteManagerTextureUrl, setSpriteManagerTextureUrl] = useState(\"https://assets.babylonjs.com/textures/player.png\");\r\n\r\n const createSpriteManager = () => {\r\n return new SpriteManager(spriteManagerName, spriteManagerTextureUrl, spriteManagerCapacity, spriteManagerCellSize, scene);\r\n };\r\n\r\n return (\r\n <QuickCreateSection>\r\n {/* Sprite Manager */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Sprite Manager\" onCreate={() => createSpriteManager()}>\r\n <TextInputPropertyLine label=\"Name\" value={spriteManagerName} onChange={(value) => setSpriteManagerName(value)} />\r\n <TextInputPropertyLine label=\"Texture URL\" value={spriteManagerTextureUrl} onChange={(value) => setSpriteManagerTextureUrl(value)} />\r\n <SpinButtonPropertyLine label=\"Capacity\" value={spriteManagerCapacity} onChange={(value) => setSpriteManagerCapacity(value)} min={1} max={10000} step={100} />\r\n <SpinButtonPropertyLine label=\"Cell Size\" value={spriteManagerCellSize} onChange={(value) => setSpriteManagerCellSize(value)} min={1} max={1024} step={1} />\r\n </QuickCreateItem>\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { ServiceDefinition } from \"../../modularity/serviceDefinition\";\nimport type { ISceneContext } from \"../../services/sceneContext\";\nimport type { ISelectionService } from \"../../services/selectionService\";\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 { SelectionServiceIdentity } from \"../../services/selectionService\";\nimport { useObservableState } from \"../../hooks/observableHooks\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n// Side-effect import needed for enablePrePassRenderer (used by SSAO2, SSR, etc.)\nimport \"core/Rendering/prePassRendererSceneComponent\";\nimport { MeshesContent } from \"./meshes\";\nimport { MaterialsContent } from \"./materials\";\nimport { LightsContent } from \"./lights\";\nimport { CamerasContent } from \"./cameras\";\nimport { ParticlesContent } from \"./particles\";\nimport { RenderingPipelinesContent } from \"./renderingPipelines\";\nimport { FrameGraphsContent } from \"./frameGraphs\";\nimport { SpriteManagersContent } from \"./spriteManagers\";\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, ISelectionService]> = {\n friendlyName: \"Creation Tools\",\n consumes: [ShellServiceIdentity, SceneContextIdentity, SelectionServiceIdentity],\n factory: (shellService, sceneContext, selectionService) => {\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} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Materials\">\n <MaterialsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Lights\">\n <LightsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Particles\">\n <ParticlesContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Cameras\">\n <CamerasContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Rendering Pipelines\">\n <RenderingPipelinesContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Frame Graphs\">\n <FrameGraphsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Sprite Managers\">\n <SpriteManagersContent scene={scene} selectionService={selectionService} />\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":["_jsx","_jsxs","_Fragment","BabylonAccordion","BabylonAccordionSection"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quickCreateToolsService-C2KCEQS-.js","sources":["../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/settingsPopover.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/quickCreateLayout.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/renderingPipelines.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/frameGraphs.tsx","../../../../../../../../dev/inspector-v2/src/extensions/quickCreate/spriteManagers.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\ntype SettingsPopoverProps = {\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n};\n\n/**\n * Settings popover component\n * @param props\n * @returns\n */\nexport const SettingsPopover: FunctionComponent<PropsWithChildren<SettingsPopoverProps>> = (props) => {\n return (\n <Popover icon={SettingsRegular} open={props.open} onOpenChange={props.onOpenChange}>\n {props.children}\n </Popover>\n );\n};\n","import type { FunctionComponent, ReactNode } from \"react\";\r\nimport { useState, useCallback } from \"react\";\r\nimport { makeStyles, tokens } from \"@fluentui/react-components\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { Button } from \"shared-ui-components/fluent/primitives/button\";\r\nimport { useToast } from \"shared-ui-components/fluent/primitives/toast\";\r\nimport { SettingsPopover } from \"./settingsPopover\";\r\nimport { LinkToEntity } from \"../../components/properties/linkToEntityPropertyLine\";\r\n\r\ntype CreatedEntity = { name: string };\r\n\r\nconst useStyles = makeStyles({\r\n section: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n rowGap: tokens.spacingVerticalM,\r\n },\r\n row: { display: \"flex\", alignItems: \"center\", gap: \"4px\" },\r\n rightAligned: { marginLeft: \"auto\" },\r\n});\r\n\r\ntype QuickCreateSectionProps = {\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Container component for quick create sections that provides consistent column layout with spacing\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const QuickCreateSection: FunctionComponent<QuickCreateSectionProps> = ({ children }) => {\r\n const classes = useStyles();\r\n return <div className={classes.section}>{children}</div>;\r\n};\r\n\r\ntype QuickCreateRowProps = {\r\n children: ReactNode;\r\n};\r\n\r\n/**\r\n * Container component for quick create rows that provides consistent row layout for button + settings popover\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const QuickCreateRow: FunctionComponent<QuickCreateRowProps> = ({ children }) => {\r\n const classes = useStyles();\r\n return <div className={classes.row}>{children}</div>;\r\n};\r\n\r\ntype QuickCreateItemProps = {\r\n /** The selection service used by the go-to-entity button */\r\n selectionService: ISelectionService;\r\n /** Label for the quick-create button */\r\n label: string;\r\n /** Called when the quick-create button is clicked. Return the created entity (or a Promise that resolves to it) for toast + go-to. */\r\n onCreate: () => CreatedEntity | Promise<CreatedEntity>;\r\n /** Optional override for the settings popover's Create button. If omitted, the popover's Create button calls `onCreate`. */\r\n onSettingsCreate?: () => CreatedEntity | Promise<CreatedEntity>;\r\n /** Optional settings popover content (form fields). When provided, a settings popover with a Create button is rendered next to the quick-create button. */\r\n children?: ReactNode;\r\n};\r\n\r\n/**\r\n * Reusable row component for entity creation. Renders a quick-create button, an optional settings popover\r\n * (with a baked-in Create button), and a \"go to entity\" button. Manages its own state for the last created entity\r\n * and shows a toast on creation.\r\n * @param props - The label, creation handler, selection service, and optional settings content\r\n * @returns A row with a button, optional settings popover, and go-to-entity button\r\n */\r\nexport const QuickCreateItem: FunctionComponent<QuickCreateItemProps> = ({ selectionService, label, onCreate, onSettingsCreate, children }) => {\r\n const [lastCreatedEntity, setLastCreatedEntity] = useState<{ name: string } | null>(null);\r\n const [popoverOpen, setPopoverOpen] = useState(false);\r\n const { showToast } = useToast();\r\n const classes = useStyles();\r\n\r\n const handleCreate = useCallback(\r\n async (factory: () => CreatedEntity | Promise<CreatedEntity>) => {\r\n try {\r\n const entity = await factory();\r\n setLastCreatedEntity(entity);\r\n showToast(`Created ${entity.name}`);\r\n } catch (e) {\r\n showToast(`Creation failed: ${e instanceof Error ? e.message : String(e)}`);\r\n }\r\n },\r\n [showToast]\r\n );\r\n\r\n return (\r\n <div className={classes.row}>\r\n <Button onClick={() => void handleCreate(onCreate)} label={label} />\r\n {children && (\r\n <SettingsPopover open={popoverOpen} onOpenChange={setPopoverOpen}>\r\n {children}\r\n <Button\r\n appearance=\"primary\"\r\n onClick={() => {\r\n setPopoverOpen(false);\r\n void handleCreate(onSettingsCreate ?? onCreate);\r\n }}\r\n label=\"Create\"\r\n />\r\n </SettingsPopover>\r\n )}\r\n <div className={classes.rightAligned}>\r\n <LinkToEntity entity={lastCreatedEntity} selectionService={selectionService} />\r\n </div>\r\n </div>\r\n );\r\n};\r\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 { 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\";\nimport { QuickCreateSection, QuickCreateRow, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\nimport { registerBuiltInLoaders } from \"loaders/dynamic\";\nimport { GetRegisteredSceneLoaderPluginMetadata } from \"core/Loading/sceneLoader\";\n\nregisterBuiltInLoaders();\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; selectionService: ISelectionService }> = ({ scene, selectionService }) => {\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 // Note: GetRegisteredSceneLoaderPluginMetadata includes extensions from all loaders,\n // including `.json` from the SPLAT loader, which is used for SOG (Sparse Octree Gaussian)\n // metadata files. To avoid suggesting that arbitrary JSON files can be imported as meshes,\n // we explicitly filter out the generic `.json` extension here.\n const supportedModelExtensions = GetRegisteredSceneLoaderPluginMetadata()\n .flatMap((plugin) => plugin.extensions.map((extension) => extension.extension))\n .filter((extension) => extension.toLowerCase() !== \".json\");\n\n return (\n <QuickCreateSection>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Sphere\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateSphere(\"Sphere\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const createParams: Partial<SphereParams> = {\n segments: sphereParams.segments,\n arc: sphereParams.arc,\n slice: sphereParams.slice,\n };\n\n if (sphereParams.uniform) {\n createParams.diameter = sphereParams.diameter;\n } else {\n createParams.diameterX = sphereParams.diameterX;\n createParams.diameterY = sphereParams.diameterY;\n createParams.diameterZ = sphereParams.diameterZ;\n }\n\n const mesh = MeshBuilder.CreateSphere(sphereParams.name, createParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Box\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateBox(\"Box\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateBox(boxParams.name, boxParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Cylinder\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(\"Cylinder\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(cylinderParams.name, cylinderParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Cone\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateCylinder(\"Cone\", { diameterTop: 0 }, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const coneParamsToUse = {\n ...coneParams,\n diameterTop: coneUp ? 0 : coneParams.diameterTop,\n diameterBottom: coneUp ? coneParams.diameterBottom : 0,\n };\n const mesh = MeshBuilder.CreateCylinder(coneParams.name, coneParamsToUse, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 </QuickCreateItem>\n <QuickCreateItem\n selectionService={selectionService}\n label=\"Ground\"\n onCreate={() => {\n const mesh = MeshBuilder.CreateGround(\"Ground\", {}, scene);\n SetCamera(scene);\n return mesh;\n }}\n onSettingsCreate={() => {\n const mesh = MeshBuilder.CreateGround(groundParams.name, groundParams, scene);\n SetCamera(scene);\n return mesh;\n }}\n >\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 label=\"Subdivisions\" value={groundParams.subdivisions} min={1} onChange={(val: number) => handleGroundParamChange(\"subdivisions\", val)} />\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 </QuickCreateItem>\n <QuickCreateRow>\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 ref={fileInputRef} type=\"file\" accept={supportedModelExtensions.join(\",\")} multiple style={{ display: \"none\" }} onChange={handleLocalMeshImport} />\n </QuickCreateRow>\n </QuickCreateSection>\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 { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype MaterialsContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Materials content component\n * @param props - Component props\n * @returns React component\n */\nexport const MaterialsContent: FunctionComponent<MaterialsContentProps> = ({ scene, selectionService }) => {\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 createPBRMaterial = () => {\n return new PBRMaterial(pbrMaterialName, scene);\n };\n\n const createStandardMaterial = () => {\n return new StandardMaterial(standardMaterialName, scene);\n };\n\n const handleCreateNodeMaterialAsync = async () => {\n if (nodeMaterialSnippetId) {\n const nodeMaterial = await NodeMaterial.ParseFromSnippetAsync(nodeMaterialSnippetId, scene);\n nodeMaterial.name = nodeMaterialName;\n return nodeMaterial;\n } else {\n const nodeMaterial = new NodeMaterial(nodeMaterialName, scene);\n nodeMaterial.setToDefault();\n nodeMaterial.build();\n return nodeMaterial;\n }\n };\n\n return (\n <QuickCreateSection>\n {/* Node Material */}\n <QuickCreateItem selectionService={selectionService} label=\"Node Material\" onCreate={handleCreateNodeMaterialAsync}>\n <TextInputPropertyLine label=\"Name\" value={nodeMaterialName} onChange={(value) => setNodeMaterialName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeMaterialSnippetId} onChange={(value) => setNodeMaterialSnippetId(value)} />\n </QuickCreateItem>\n\n {/* PBR Material */}\n <QuickCreateItem selectionService={selectionService} label=\"PBR Material\" onCreate={() => createPBRMaterial()}>\n <TextInputPropertyLine label=\"Name\" value={pbrMaterialName} onChange={(value) => setPbrMaterialName(value)} />\n </QuickCreateItem>\n\n {/* Standard Material */}\n <QuickCreateItem selectionService={selectionService} label=\"Standard Material\" onCreate={() => createStandardMaterial()}>\n <TextInputPropertyLine label=\"Name\" value={standardMaterialName} onChange={(value) => setStandardMaterialName(value)} />\n </QuickCreateItem>\n </QuickCreateSection>\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 { 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 { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype LightsContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Lights content component\n * @param props - Component props\n * @returns React component\n */\nexport const LightsContent: FunctionComponent<LightsContentProps> = ({ scene, selectionService }) => {\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 createPointLight = () => {\n const light = new PointLight(pointLightName, pointLightPosition, scene);\n light.intensity = 1.0;\n return light;\n };\n\n const createDirectionalLight = () => {\n const dirLight = new DirectionalLight(directionalLightName, directionalLightDirection, scene);\n dirLight.intensity = 1.0;\n return dirLight;\n };\n\n const createSpotlight = () => {\n const spotlight = new SpotLight(spotlightName, spotlightPosition, spotlightDirection, spotlightAngle, spotlightExponent, scene);\n spotlight.intensity = 1.0;\n return spotlight;\n };\n\n return (\n <QuickCreateSection>\n {/* Point Light */}\n <QuickCreateItem selectionService={selectionService} label=\"Point Light\" onCreate={() => createPointLight()}>\n <TextInputPropertyLine label=\"Name\" value={pointLightName} onChange={(value) => setPointLightName(value)} />\n <Vector3PropertyLine label=\"Position\" value={pointLightPosition} onChange={(value) => setPointLightPosition(value)} />\n </QuickCreateItem>\n\n {/* Directional Light */}\n <QuickCreateItem selectionService={selectionService} label=\"Directional Light\" onCreate={() => createDirectionalLight()}>\n <TextInputPropertyLine label=\"Name\" value={directionalLightName} onChange={(value) => setDirectionalLightName(value)} />\n <Vector3PropertyLine label=\"Direction\" value={directionalLightDirection} onChange={(value) => setDirectionalLightDirection(value)} />\n </QuickCreateItem>\n\n {/* Spotlight */}\n <QuickCreateItem selectionService={selectionService} label=\"Spotlight\" onCreate={() => createSpotlight()}>\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 </QuickCreateItem>\n </QuickCreateSection>\n );\n};\n","import type { Camera } from \"core/Cameras/camera\";\nimport { ArcRotateCamera } from \"core/Cameras/arcRotateCamera\";\nimport { UniversalCamera } from \"core/Cameras/universalCamera\";\nimport { FreeCamera } from \"core/Cameras/freeCamera\";\nimport { FollowCamera } from \"core/Cameras/followCamera\";\nimport { FlyCamera } from \"core/Cameras/flyCamera\";\nimport { GeospatialCamera } from \"core/Cameras/geospatialCamera\";\nimport { Vector3 } from \"core/Maths/math.vector\";\nimport type { Scene } from \"core/scene\";\nimport { useState } from \"react\";\nimport type { FunctionComponent } from \"react\";\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 { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\ntype CamerasContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Cameras content component\n * @param props - Component props\n * @returns React component\n */\nexport const CamerasContent: FunctionComponent<CamerasContentProps> = ({ scene, selectionService }) => {\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 // Free Camera state\n const [freeCameraName, setFreeCameraName] = useState(\"Free Camera\");\n const [freeCameraPosition, setFreeCameraPosition] = useState(new Vector3(0, 1, -10));\n\n // Follow Camera state\n const [followCameraName, setFollowCameraName] = useState(\"Follow Camera\");\n const [followCameraPosition, setFollowCameraPosition] = useState(new Vector3(0, 5, -10));\n const [followCameraRadius, setFollowCameraRadius] = useState(10);\n const [followCameraHeightOffset, setFollowCameraHeightOffset] = useState(4);\n const [followCameraRotationOffset, setFollowCameraRotationOffset] = useState(0);\n\n // Fly Camera state\n const [flyCameraName, setFlyCameraName] = useState(\"Fly Camera\");\n const [flyCameraPosition, setFlyCameraPosition] = useState(new Vector3(0, 1, -10));\n\n // Geospatial Camera state\n const [geospatialCameraName, setGeospatialCameraName] = useState(\"Geospatial Camera\");\n const [geospatialCameraPlanetRadius, setGeospatialCameraPlanetRadius] = useState(6371000);\n\n const setAsActiveIfNeeded = (camera: Camera) => {\n if (!scene.activeCamera) {\n scene.activeCamera = camera;\n }\n };\n\n const createArcRotateCamera = () => {\n const alpha = arcRotateCameraUseRadians ? arcRotateCameraAlpha : (arcRotateCameraAlpha * Math.PI) / 180;\n const beta = arcRotateCameraUseRadians ? arcRotateCameraBeta : (arcRotateCameraBeta * Math.PI) / 180;\n const camera = new ArcRotateCamera(arcRotateCameraName, alpha, beta, arcRotateCameraRadius, arcRotateCameraTarget, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createUniversalCamera = () => {\n const camera = new UniversalCamera(universalCameraName, universalCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFreeCamera = () => {\n const camera = new FreeCamera(freeCameraName, freeCameraPosition, scene);\n camera.attachControl(scene.getEngine().getRenderingCanvas(), true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFollowCamera = () => {\n const camera = new FollowCamera(followCameraName, followCameraPosition, scene);\n camera.radius = followCameraRadius;\n camera.heightOffset = followCameraHeightOffset;\n camera.rotationOffset = followCameraRotationOffset;\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createFlyCamera = () => {\n const camera = new FlyCamera(flyCameraName, flyCameraPosition, scene);\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n const createGeospatialCamera = () => {\n const camera = new GeospatialCamera(geospatialCameraName, scene, { planetRadius: geospatialCameraPlanetRadius });\n camera.attachControl(true);\n setAsActiveIfNeeded(camera);\n return camera;\n };\n\n return (\n <QuickCreateSection>\n {/* ArcRotate Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"ArcRotate Camera\" onCreate={() => createArcRotateCamera()}>\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 </QuickCreateItem>\n\n {/* Universal Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Universal Camera\" onCreate={() => createUniversalCamera()}>\n <TextInputPropertyLine label=\"Name\" value={universalCameraName} onChange={(value) => setUniversalCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={universalCameraPosition} onChange={(value) => setUniversalCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Free Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Free Camera\" onCreate={() => createFreeCamera()}>\n <TextInputPropertyLine label=\"Name\" value={freeCameraName} onChange={(value) => setFreeCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={freeCameraPosition} onChange={(value) => setFreeCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Follow Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Follow Camera\" onCreate={() => createFollowCamera()}>\n <TextInputPropertyLine label=\"Name\" value={followCameraName} onChange={(value) => setFollowCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={followCameraPosition} onChange={(value) => setFollowCameraPosition(value)} />\n <SpinButtonPropertyLine label=\"Radius\" value={followCameraRadius} onChange={(value) => setFollowCameraRadius(value)} min={0.1} max={1000} step={0.5} />\n <SpinButtonPropertyLine\n label=\"Height Offset\"\n value={followCameraHeightOffset}\n onChange={(value) => setFollowCameraHeightOffset(value)}\n min={-100}\n max={100}\n step={0.5}\n />\n <SpinButtonPropertyLine\n label=\"Rotation Offset (deg)\"\n value={followCameraRotationOffset}\n onChange={(value) => setFollowCameraRotationOffset(value)}\n min={-180}\n max={180}\n step={5}\n />\n </QuickCreateItem>\n\n {/* Fly Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Fly Camera\" onCreate={() => createFlyCamera()}>\n <TextInputPropertyLine label=\"Name\" value={flyCameraName} onChange={(value) => setFlyCameraName(value)} />\n <Vector3PropertyLine label=\"Position\" value={flyCameraPosition} onChange={(value) => setFlyCameraPosition(value)} />\n </QuickCreateItem>\n\n {/* Geospatial Camera */}\n <QuickCreateItem selectionService={selectionService} label=\"Geospatial Camera\" onCreate={() => createGeospatialCamera()}>\n <TextInputPropertyLine label=\"Name\" value={geospatialCameraName} onChange={(value) => setGeospatialCameraName(value)} />\n <SpinButtonPropertyLine\n label=\"Planet Radius (m)\"\n value={geospatialCameraPlanetRadius}\n onChange={(value) => setGeospatialCameraPlanetRadius(value)}\n min={1000}\n max={100000000}\n step={1000}\n />\n </QuickCreateItem>\n </QuickCreateSection>\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 { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\nimport type { ISelectionService } from \"../../services/selectionService\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n\ntype ParticlesContentProps = {\n scene: Scene;\n selectionService: ISelectionService;\n};\n\n/**\n * Particles content component\n * @param props - Component props\n * @returns React component\n */\nexport const ParticlesContent: FunctionComponent<ParticlesContentProps> = ({ scene, selectionService }) => {\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 handleCreateCPUAsync = async () => {\n return await new Promise<{ name: string }>((resolve) => {\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 resolve(system);\n }, 0);\n });\n };\n\n const handleCreateGPUAsync = async () => {\n if (!GPUParticleSystem.IsSupported) {\n alert(\"GPU Particle System is not supported.\");\n throw new Error(\"GPU Particle System is not supported.\");\n }\n return await new Promise<{ name: string }>((resolve) => {\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 resolve(system);\n }, 0);\n });\n };\n\n const handleCreateNodeAsync = async () => {\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 const systems = particleSystemSet.systems;\n if (systems.length === 0) {\n throw new Error(\"No particle systems were produced by the node particle system.\");\n }\n for (const system of systems) {\n system.name = nodeParticleSystemName;\n }\n particleSystemSet.start();\n return systems[0];\n };\n\n return (\n <QuickCreateSection>\n {/* CPU Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"CPU Particle System\" onCreate={handleCreateCPUAsync}>\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 </QuickCreateItem>\n\n {/* GPU Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"GPU Particle System\" onCreate={handleCreateGPUAsync}>\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 </QuickCreateItem>\n\n {/* Node Particle System */}\n <QuickCreateItem selectionService={selectionService} label=\"Node Particle System\" onCreate={handleCreateNodeAsync}>\n <TextInputPropertyLine label=\"Name\" value={nodeParticleSystemName} onChange={(value) => setNodeParticleSystemName(value)} />\n <TextInputPropertyLine label=\"Snippet ID\" value={nodeParticleSystemSnippetId} onChange={(value) => setNodeParticleSystemSnippetId(value)} />\n </QuickCreateItem>\n </QuickCreateSection>\n );\n};\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { MessageBar } from \"shared-ui-components/fluent/primitives/messageBar\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { DefaultRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline\";\r\nimport { SSAORenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline\";\r\nimport { SSAO2RenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline\";\r\nimport { SSRRenderingPipeline } from \"core/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline\";\r\nimport { IblShadowsRenderPipeline } from \"core/Rendering/IBLShadows/iblShadowsRenderPipeline\";\r\nimport { useProperty } from \"../../hooks/compoundPropertyHooks\";\r\n\r\ntype RenderingPipelinesContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\nconst GetUniquePipelineName = (baseName: string, scene: Scene): string => {\r\n const pipelines = scene.postProcessRenderPipelineManager.supportedPipelines;\r\n const existingNames = new Set(pipelines.map((p) => p._name));\r\n\r\n if (!existingNames.has(baseName)) {\r\n return baseName;\r\n }\r\n\r\n let counter = 1;\r\n let uniqueName = `${baseName} ${counter}`;\r\n while (existingNames.has(uniqueName)) {\r\n counter++;\r\n uniqueName = `${baseName} ${counter}`;\r\n }\r\n return uniqueName;\r\n};\r\n\r\n/**\r\n * Rendering Pipelines content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const RenderingPipelinesContent: FunctionComponent<RenderingPipelinesContentProps> = ({ scene, selectionService }) => {\r\n // Default Rendering Pipeline state\r\n const [defaultPipelineName, setDefaultPipelineName] = useState(\"Default rendering pipeline\");\r\n\r\n // SSAO Pipeline state\r\n const [ssaoPipelineName, setSsaoPipelineName] = useState(\"SSAO rendering pipeline\");\r\n\r\n // SSAO2 Pipeline state\r\n const [ssao2PipelineName, setSsao2PipelineName] = useState(\"SSAO2 rendering pipeline\");\r\n\r\n // SSR Pipeline state\r\n const [ssrPipelineName, setSsrPipelineName] = useState(\"SSR rendering pipeline\");\r\n\r\n // IBL Shadows Pipeline state\r\n const [iblShadowsPipelineName, setIblShadowsPipelineName] = useState(\"IBL Shadows rendering pipeline\");\r\n\r\n const createDefaultPipeline = () => {\r\n const name = GetUniquePipelineName(defaultPipelineName, scene);\r\n return new DefaultRenderingPipeline(name, true, scene, scene.cameras);\r\n };\r\n\r\n const createSSAOPipeline = () => {\r\n const name = GetUniquePipelineName(ssaoPipelineName, scene);\r\n return new SSAORenderingPipeline(name, scene, 1, scene.cameras);\r\n };\r\n\r\n const createSSAO2Pipeline = () => {\r\n const name = GetUniquePipelineName(ssao2PipelineName, scene);\r\n return new SSAO2RenderingPipeline(name, scene, 1, scene.cameras);\r\n };\r\n\r\n const createSSRPipeline = () => {\r\n const name = GetUniquePipelineName(ssrPipelineName, scene);\r\n return new SSRRenderingPipeline(name, scene, scene.cameras);\r\n };\r\n\r\n const createIBLShadowsPipeline = () => {\r\n const name = GetUniquePipelineName(iblShadowsPipelineName, scene);\r\n return new IblShadowsRenderPipeline(name, scene, {}, scene.cameras);\r\n };\r\n\r\n const caps = scene.getEngine().getCaps();\r\n const hasDrawBuffers = caps.drawBuffersExtension;\r\n const hasTexelFetch = caps.texelFetch;\r\n const camera = useProperty(scene, \"activeCamera\");\r\n return (\r\n <QuickCreateSection>\r\n {!camera ? (\r\n <MessageBar message=\"Cannot create rendering pipeline without an active camera.\" title=\"No active camera\" intent=\"info\"></MessageBar>\r\n ) : (\r\n <>\r\n {/* Default Rendering Pipeline */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Default Pipeline\" onCreate={() => createDefaultPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={defaultPipelineName} onChange={(value) => setDefaultPipelineName(value)} />\r\n </QuickCreateItem>\r\n\r\n {/* SSAO Pipeline */}\r\n <QuickCreateItem selectionService={selectionService} label=\"SSAO Pipeline\" onCreate={() => createSSAOPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssaoPipelineName} onChange={(value) => setSsaoPipelineName(value)} />\r\n </QuickCreateItem>\r\n\r\n {/* SSAO2 Pipeline */}\r\n {hasDrawBuffers && (\r\n <QuickCreateItem selectionService={selectionService} label=\"SSAO2 Pipeline\" onCreate={() => createSSAO2Pipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssao2PipelineName} onChange={(value) => setSsao2PipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n\r\n {/* SSR Pipeline */}\r\n {hasDrawBuffers && hasTexelFetch && (\r\n <QuickCreateItem selectionService={selectionService} label=\"SSR Pipeline\" onCreate={() => createSSRPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={ssrPipelineName} onChange={(value) => setSsrPipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n\r\n {/* IBL Shadows Pipeline */}\r\n {hasDrawBuffers && hasTexelFetch && (\r\n <QuickCreateItem selectionService={selectionService} label=\"IBL Shadows Pipeline\" onCreate={() => createIBLShadowsPipeline()}>\r\n <TextInputPropertyLine label=\"Name\" value={iblShadowsPipelineName} onChange={(value) => setIblShadowsPipelineName(value)} />\r\n </QuickCreateItem>\r\n )}\r\n </>\r\n )}\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { NodeRenderGraph } from \"core/FrameGraph/Node/nodeRenderGraph\";\r\n\r\ntype FrameGraphsContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\n/**\r\n * Helper to generate a unique frame graph name\r\n * @param baseName - The base name to use\r\n * @param scene - The scene to check for existing frame graphs\r\n * @returns A unique name\r\n */\r\nfunction GetUniqueName(baseName: string, scene: Scene): string {\r\n let name = baseName;\r\n let idSubscript = 1;\r\n while (scene.getFrameGraphByName(name)) {\r\n name = baseName + \" \" + idSubscript++;\r\n }\r\n return name;\r\n}\r\n\r\n/**\r\n * Frame Graphs content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const FrameGraphsContent: FunctionComponent<FrameGraphsContentProps> = ({ scene, selectionService }) => {\r\n // Node Render Graph state\r\n const [frameGraphName, setFrameGraphName] = useState(\"Frame Graph\");\r\n\r\n const createFrameGraph = () => {\r\n const uniqueName = GetUniqueName(frameGraphName, scene);\r\n const newNodeRenderGraph = new NodeRenderGraph(uniqueName, scene);\r\n newNodeRenderGraph.setToDefault();\r\n void newNodeRenderGraph.buildAsync();\r\n // Return the underlying FrameGraph, which is what gets registered with the scene\r\n // and matched by the properties/explorer services via `instanceof FrameGraph`.\r\n return newNodeRenderGraph.frameGraph;\r\n };\r\n\r\n return (\r\n <QuickCreateSection>\r\n {/* Node Render Graph / Frame Graph */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Frame Graph\" onCreate={() => createFrameGraph()}>\r\n <TextInputPropertyLine label=\"Name\" value={frameGraphName} onChange={(value) => setFrameGraphName(value)} />\r\n </QuickCreateItem>\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { Scene } from \"core/scene\";\r\nimport { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { SpinButtonPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/spinButtonPropertyLine\";\r\nimport { QuickCreateSection, QuickCreateItem } from \"./quickCreateLayout\";\r\nimport type { ISelectionService } from \"../../services/selectionService\";\r\nimport { SpriteManager } from \"core/Sprites/spriteManager\";\r\n\r\ntype SpriteManagersContentProps = {\r\n scene: Scene;\r\n selectionService: ISelectionService;\r\n};\r\n\r\n/**\r\n * Sprite Managers content component\r\n * @param props - Component props\r\n * @returns React component\r\n */\r\nexport const SpriteManagersContent: FunctionComponent<SpriteManagersContentProps> = ({ scene, selectionService }) => {\r\n // Sprite Manager state\r\n const [spriteManagerName, setSpriteManagerName] = useState(\"Sprite Manager\");\r\n const [spriteManagerCapacity, setSpriteManagerCapacity] = useState(500);\r\n const [spriteManagerCellSize, setSpriteManagerCellSize] = useState(64);\r\n const [spriteManagerTextureUrl, setSpriteManagerTextureUrl] = useState(\"https://assets.babylonjs.com/textures/player.png\");\r\n\r\n const createSpriteManager = () => {\r\n return new SpriteManager(spriteManagerName, spriteManagerTextureUrl, spriteManagerCapacity, spriteManagerCellSize, scene);\r\n };\r\n\r\n return (\r\n <QuickCreateSection>\r\n {/* Sprite Manager */}\r\n <QuickCreateItem selectionService={selectionService} label=\"Sprite Manager\" onCreate={() => createSpriteManager()}>\r\n <TextInputPropertyLine label=\"Name\" value={spriteManagerName} onChange={(value) => setSpriteManagerName(value)} />\r\n <TextInputPropertyLine label=\"Texture URL\" value={spriteManagerTextureUrl} onChange={(value) => setSpriteManagerTextureUrl(value)} />\r\n <SpinButtonPropertyLine label=\"Capacity\" value={spriteManagerCapacity} onChange={(value) => setSpriteManagerCapacity(value)} min={1} max={10000} step={100} />\r\n <SpinButtonPropertyLine label=\"Cell Size\" value={spriteManagerCellSize} onChange={(value) => setSpriteManagerCellSize(value)} min={1} max={1024} step={1} />\r\n </QuickCreateItem>\r\n </QuickCreateSection>\r\n );\r\n};\r\n","import type { ServiceDefinition } from \"../../modularity/serviceDefinition\";\nimport type { ISceneContext } from \"../../services/sceneContext\";\nimport type { ISelectionService } from \"../../services/selectionService\";\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 { SelectionServiceIdentity } from \"../../services/selectionService\";\nimport { useObservableState } from \"../../hooks/observableHooks\";\n\n// Side-effect import needed for GPUParticleSystem\nimport \"core/Particles/webgl2ParticleSystem\";\n// Side-effect import needed for enablePrePassRenderer (used by SSAO2, SSR, etc.)\nimport \"core/Rendering/prePassRendererSceneComponent\";\nimport { MeshesContent } from \"./meshes\";\nimport { MaterialsContent } from \"./materials\";\nimport { LightsContent } from \"./lights\";\nimport { CamerasContent } from \"./cameras\";\nimport { ParticlesContent } from \"./particles\";\nimport { RenderingPipelinesContent } from \"./renderingPipelines\";\nimport { FrameGraphsContent } from \"./frameGraphs\";\nimport { SpriteManagersContent } from \"./spriteManagers\";\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, ISelectionService]> = {\n friendlyName: \"Creation Tools\",\n consumes: [ShellServiceIdentity, SceneContextIdentity, SelectionServiceIdentity],\n factory: (shellService, sceneContext, selectionService) => {\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} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Materials\">\n <MaterialsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Lights\">\n <LightsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Particles\">\n <ParticlesContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Cameras\">\n <CamerasContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Rendering Pipelines\">\n <RenderingPipelinesContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Frame Graphs\">\n <FrameGraphsContent scene={scene} selectionService={selectionService} />\n </BabylonAccordionSection>\n <BabylonAccordionSection title=\"Sprite Managers\">\n <SpriteManagersContent scene={scene} selectionService={selectionService} />\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":["_jsx","_jsxs","_Fragment","BabylonAccordion","BabylonAccordionSection"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { T as TextInputPropertyLine, N as NumberInputPropertyLine, g as ButtonLine, h as ToolsServiceIdentity } from './index-
|
|
2
|
+
import { T as TextInputPropertyLine, N as NumberInputPropertyLine, g as ButtonLine, h as ToolsServiceIdentity } from './index-jSClUjQ1.js';
|
|
3
3
|
import { useState, useRef, useCallback } from 'react';
|
|
4
4
|
import { Reflector } from '@babylonjs/core/Misc/reflector.js';
|
|
5
5
|
import { PlugConnectedRegular } from '@fluentui/react-icons';
|
|
@@ -188,4 +188,4 @@ var reflectorService = {
|
|
|
188
188
|
};
|
|
189
189
|
|
|
190
190
|
export { ReflectorServiceDefinition, reflectorService as default };
|
|
191
|
-
//# sourceMappingURL=reflectorService-
|
|
191
|
+
//# sourceMappingURL=reflectorService-D1aC0qmT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflectorService-
|
|
1
|
+
{"version":3,"file":"reflectorService-D1aC0qmT.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/reflectorTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/reflectorService.tsx"],"sourcesContent":["import { ButtonLine } from \"shared-ui-components/fluent/hoc/buttonLine\";\r\nimport { useState, useCallback, useRef } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { TextInputPropertyLine, NumberInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\r\nimport { Reflector } from \"core/Misc/reflector\";\r\nimport { PlugConnectedRegular } from \"@fluentui/react-icons\";\r\n\r\nexport const ReflectorTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [hostname, setHostname] = useState(\"localhost\");\r\n const [port, setPort] = useState(1234);\r\n const reflectorRef = useRef<Reflector | null>(null);\r\n\r\n const connectReflector = useCallback(() => {\r\n if (reflectorRef.current) {\r\n reflectorRef.current.close();\r\n }\r\n\r\n reflectorRef.current = new Reflector(scene, hostname, port);\r\n }, [scene, hostname, port]);\r\n\r\n return (\r\n <>\r\n <TextInputPropertyLine label=\"Hostname\" value={hostname} onChange={(value) => setHostname(value)} />\r\n <NumberInputPropertyLine label=\"Port\" value={port} onChange={(value) => setPort(value)} forceInt />\r\n <ButtonLine label=\"Connect\" icon={PlugConnectedRegular} onClick={connectReflector} />\r\n </>\r\n );\r\n};\r\n","import type { ServiceDefinition } from \"../../../modularity/serviceDefinition\";\r\nimport { ToolsServiceIdentity } from \"../toolsService\";\r\nimport type { IToolsService } from \"../toolsService\";\r\nimport type { IDisposable } from \"core/scene\";\r\nimport { ReflectorTools } from \"../../../components/tools/reflectorTools\";\r\n\r\nexport const ReflectorServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Reflector Tools\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistrations: IDisposable[] = [];\r\n\r\n // Reflector content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"Reflector\",\r\n section: \"Reflector\",\r\n component: ({ context }) => <ReflectorTools scene={context} />,\r\n })\r\n );\r\n\r\n return {\r\n dispose: () => {\r\n contentRegistrations.forEach((registration) => registration.dispose());\r\n },\r\n };\r\n },\r\n};\r\n\r\nexport default {\r\n serviceDefinitions: [ReflectorServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQO,MAAM,cAAc,GAAwC,CAAC,EAAE,KAAK,EAAE,KAAI;IAC7E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC;IACrD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;AACtC,IAAA,MAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC;AAEnD,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAK;AACtC,QAAA,IAAI,YAAY,CAAC,OAAO,EAAE;AACtB,YAAA,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAChC;AAEA,QAAA,YAAY,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;IAC/D,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE3B,IAAA,QACIA,IAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CACIC,GAAA,CAAC,qBAAqB,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK,CAAC,EAAA,CAAI,EACpGA,GAAA,CAAC,uBAAuB,EAAA,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAA,IAAA,EAAA,CAAG,EACnGA,GAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAC,SAAS,EAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAA,CAAI,CAAA,EAAA,CACtF;AAEX,CAAC;;ACtBM,MAAM,0BAA0B,GAA2C;AAC9E,IAAA,YAAY,EAAE,iBAAiB;IAC/B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;AAChC,IAAA,OAAO,EAAE,CAAC,YAAY,KAAI;QACtB,MAAM,oBAAoB,GAAkB,EAAE;;AAG9C,QAAA,oBAAoB,CAAC,IAAI,CACrB,YAAY,CAAC,iBAAiB,CAAC;AAC3B,YAAA,GAAG,EAAE,WAAW;AAChB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,GAAA,CAAC,cAAc,EAAA,EAAC,KAAK,EAAE,OAAO,EAAA,CAAI;AACjE,SAAA,CAAC,CACL;QAED,OAAO;YACH,OAAO,EAAE,MAAK;AACV,gBAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1E,CAAC;SACJ;IACL,CAAC;;AAGL,uBAAe;IACX,kBAAkB,EAAE,CAAC,0BAA0B,CAAC;CAC1C;;;;"}
|