@babylonjs/inspector 8.30.3-preview → 8.30.4-preview

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -99,6 +99,7 @@ import '@babylonjs/core/Materials/Textures/baseTexture.js';
99
99
  import '@babylonjs/core/Materials/Textures/multiRenderTarget.js';
100
100
  import '@babylonjs/core/Materials/Textures/renderTargetTexture.js';
101
101
  import '@babylonjs/core/Materials/Textures/thinTexture.js';
102
+ import '@babylonjs/core/Misc/textureTools.js';
102
103
  import '@babylonjs/core/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js';
103
104
  import '@babylonjs/core/Sprites/spriteSceneComponent.js';
104
105
  import '@babylonjs/core/Materials/Textures/dynamicTexture.js';
@@ -183,4 +184,4 @@ var captureService = {
183
184
  };
184
185
 
185
186
  export { CaptureServiceDefinition, captureService as default };
186
- //# sourceMappingURL=captureService-BaLg4gki.js.map
187
+ //# sourceMappingURL=captureService-Br4kaEaT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"captureService-BaLg4gki.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/captureTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/captureService.tsx"],"sourcesContent":["import { ButtonLine } from \"shared-ui-components/fluent/hoc/buttonLine\";\r\nimport { useState, useRef, useCallback } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { SyncedSliderPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/syncedSliderPropertyLine\";\r\nimport type { IScreenshotSize } from \"core/Misc/interfaces/screenshotSize\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\nimport { VideoRecorder } from \"core/Misc/videoRecorder\";\r\nimport { captureEquirectangularFromScene } from \"core/Misc/equirectangularCapture\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\nimport { CameraRegular, RecordRegular, RecordStopRegular } from \"@fluentui/react-icons\";\r\nimport { FrameGraphUtils } from \"core/FrameGraph/frameGraphUtils\";\r\n\r\nexport const CaptureRttTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [useWidthHeight, setUseWidthHeight] = useState(false);\r\n const [screenshotSize, setScreenshotSize] = useState<IScreenshotSize>({ precision: 1 });\r\n\r\n const captureRender = useCallback(async () => {\r\n const sizeToUse: IScreenshotSize = { ...screenshotSize };\r\n if (!useWidthHeight) {\r\n sizeToUse.width = undefined;\r\n sizeToUse.height = undefined;\r\n }\r\n\r\n if (scene.activeCamera) {\r\n Tools.CreateScreenshotUsingRenderTarget(scene.getEngine(), scene.activeCamera, sizeToUse, undefined, undefined, 4);\r\n }\r\n }, [scene, screenshotSize, useWidthHeight]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Capture\" icon={CameraRegular} onClick={captureRender} />\r\n <SyncedSliderPropertyLine\r\n label=\"Precision\"\r\n value={screenshotSize.precision ?? 1}\r\n onChange={(value) => setScreenshotSize({ ...screenshotSize, precision: value ?? 1 })}\r\n min={0.1}\r\n max={10}\r\n step={0.1}\r\n />\r\n <SwitchPropertyLine label=\"Use Custom Width/Height\" value={useWidthHeight} onChange={(value) => setUseWidthHeight(value)} />\r\n <Collapse visible={useWidthHeight}>\r\n <SyncedSliderPropertyLine\r\n label=\"Width\"\r\n value={screenshotSize.width ?? 512}\r\n onChange={(data) => setScreenshotSize({ ...screenshotSize, width: data ?? 512 })}\r\n min={1}\r\n step={1}\r\n />\r\n <SyncedSliderPropertyLine\r\n label=\"Height\"\r\n value={screenshotSize.height ?? 512}\r\n onChange={(data) => setScreenshotSize({ ...screenshotSize, height: data ?? 512 })}\r\n min={1}\r\n step={1}\r\n />\r\n </Collapse>\r\n </>\r\n );\r\n};\r\n\r\nexport const CaptureScreenshotTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [isRecording, setIsRecording] = useState(false);\r\n const videoRecorder = useRef<VideoRecorder>();\r\n\r\n const captureScreenshot = useCallback(() => {\r\n const camera = scene.frameGraph ? FrameGraphUtils.FindMainCamera(scene.frameGraph) : scene.activeCamera;\r\n if (camera) {\r\n Tools.CreateScreenshot(scene.getEngine(), camera, { precision: 1 });\r\n }\r\n }, [scene]);\r\n\r\n const captureEquirectangularAsync = useCallback(async () => {\r\n const currentActiveCamera = scene.activeCamera;\r\n if (!currentActiveCamera && scene.frameGraph) {\r\n scene.activeCamera = FrameGraphUtils.FindMainCamera(scene.frameGraph);\r\n }\r\n if (scene.activeCamera) {\r\n await captureEquirectangularFromScene(scene, { size: 1024, filename: \"equirectangular_capture.png\" });\r\n }\r\n // eslint-disable-next-line require-atomic-updates\r\n scene.activeCamera = currentActiveCamera;\r\n }, [scene]);\r\n\r\n const recordVideoAsync = useCallback(async () => {\r\n if (videoRecorder.current && videoRecorder.current.isRecording) {\r\n videoRecorder.current.stopRecording();\r\n setIsRecording(false);\r\n return;\r\n }\r\n\r\n if (!videoRecorder.current) {\r\n videoRecorder.current = new VideoRecorder(scene.getEngine());\r\n }\r\n\r\n void videoRecorder.current.startRecording();\r\n setIsRecording(true);\r\n }, [scene]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Capture\" icon={CameraRegular} onClick={captureScreenshot} />\r\n <ButtonLine label=\"Capture Equirectangular\" icon={CameraRegular} onClick={captureEquirectangularAsync} />\r\n <ButtonLine label={isRecording ? \"Stop Recording\" : \"Record Video\"} icon={isRecording ? RecordStopRegular : RecordRegular} onClick={recordVideoAsync} />\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 { CaptureRttTools, CaptureScreenshotTools } from \"../../../components/tools/captureTools\";\r\n\r\nexport const CaptureServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Capture Tools\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistrations: IDisposable[] = [];\r\n\r\n // Screenshot capture content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"Screenshot Capture\",\r\n section: \"Screenshot Capture\",\r\n component: ({ context }) => <CaptureScreenshotTools scene={context} />,\r\n })\r\n );\r\n\r\n // RTT capture content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"RTT Capture\",\r\n section: \"RTT Capture\",\r\n component: ({ context }) => <CaptureRttTools 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: [CaptureServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"captureService-Br4kaEaT.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/captureTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/captureService.tsx"],"sourcesContent":["import { ButtonLine } from \"shared-ui-components/fluent/hoc/buttonLine\";\r\nimport { useState, useRef, useCallback } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { SyncedSliderPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/syncedSliderPropertyLine\";\r\nimport type { IScreenshotSize } from \"core/Misc/interfaces/screenshotSize\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\nimport { VideoRecorder } from \"core/Misc/videoRecorder\";\r\nimport { captureEquirectangularFromScene } from \"core/Misc/equirectangularCapture\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\nimport { CameraRegular, RecordRegular, RecordStopRegular } from \"@fluentui/react-icons\";\r\nimport { FrameGraphUtils } from \"core/FrameGraph/frameGraphUtils\";\r\n\r\nexport const CaptureRttTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [useWidthHeight, setUseWidthHeight] = useState(false);\r\n const [screenshotSize, setScreenshotSize] = useState<IScreenshotSize>({ precision: 1 });\r\n\r\n const captureRender = useCallback(async () => {\r\n const sizeToUse: IScreenshotSize = { ...screenshotSize };\r\n if (!useWidthHeight) {\r\n sizeToUse.width = undefined;\r\n sizeToUse.height = undefined;\r\n }\r\n\r\n if (scene.activeCamera) {\r\n Tools.CreateScreenshotUsingRenderTarget(scene.getEngine(), scene.activeCamera, sizeToUse, undefined, undefined, 4);\r\n }\r\n }, [scene, screenshotSize, useWidthHeight]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Capture\" icon={CameraRegular} onClick={captureRender} />\r\n <SyncedSliderPropertyLine\r\n label=\"Precision\"\r\n value={screenshotSize.precision ?? 1}\r\n onChange={(value) => setScreenshotSize({ ...screenshotSize, precision: value ?? 1 })}\r\n min={0.1}\r\n max={10}\r\n step={0.1}\r\n />\r\n <SwitchPropertyLine label=\"Use Custom Width/Height\" value={useWidthHeight} onChange={(value) => setUseWidthHeight(value)} />\r\n <Collapse visible={useWidthHeight}>\r\n <SyncedSliderPropertyLine\r\n label=\"Width\"\r\n value={screenshotSize.width ?? 512}\r\n onChange={(data) => setScreenshotSize({ ...screenshotSize, width: data ?? 512 })}\r\n min={1}\r\n step={1}\r\n />\r\n <SyncedSliderPropertyLine\r\n label=\"Height\"\r\n value={screenshotSize.height ?? 512}\r\n onChange={(data) => setScreenshotSize({ ...screenshotSize, height: data ?? 512 })}\r\n min={1}\r\n step={1}\r\n />\r\n </Collapse>\r\n </>\r\n );\r\n};\r\n\r\nexport const CaptureScreenshotTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [isRecording, setIsRecording] = useState(false);\r\n const videoRecorder = useRef<VideoRecorder>();\r\n\r\n const captureScreenshot = useCallback(() => {\r\n const camera = scene.frameGraph ? FrameGraphUtils.FindMainCamera(scene.frameGraph) : scene.activeCamera;\r\n if (camera) {\r\n Tools.CreateScreenshot(scene.getEngine(), camera, { precision: 1 });\r\n }\r\n }, [scene]);\r\n\r\n const captureEquirectangularAsync = useCallback(async () => {\r\n const currentActiveCamera = scene.activeCamera;\r\n if (!currentActiveCamera && scene.frameGraph) {\r\n scene.activeCamera = FrameGraphUtils.FindMainCamera(scene.frameGraph);\r\n }\r\n if (scene.activeCamera) {\r\n await captureEquirectangularFromScene(scene, { size: 1024, filename: \"equirectangular_capture.png\" });\r\n }\r\n // eslint-disable-next-line require-atomic-updates\r\n scene.activeCamera = currentActiveCamera;\r\n }, [scene]);\r\n\r\n const recordVideoAsync = useCallback(async () => {\r\n if (videoRecorder.current && videoRecorder.current.isRecording) {\r\n videoRecorder.current.stopRecording();\r\n setIsRecording(false);\r\n return;\r\n }\r\n\r\n if (!videoRecorder.current) {\r\n videoRecorder.current = new VideoRecorder(scene.getEngine());\r\n }\r\n\r\n void videoRecorder.current.startRecording();\r\n setIsRecording(true);\r\n }, [scene]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Capture\" icon={CameraRegular} onClick={captureScreenshot} />\r\n <ButtonLine label=\"Capture Equirectangular\" icon={CameraRegular} onClick={captureEquirectangularAsync} />\r\n <ButtonLine label={isRecording ? \"Stop Recording\" : \"Record Video\"} icon={isRecording ? RecordStopRegular : RecordRegular} onClick={recordVideoAsync} />\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 { CaptureRttTools, CaptureScreenshotTools } from \"../../../components/tools/captureTools\";\r\n\r\nexport const CaptureServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Capture Tools\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistrations: IDisposable[] = [];\r\n\r\n // Screenshot capture content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"Screenshot Capture\",\r\n section: \"Screenshot Capture\",\r\n component: ({ context }) => <CaptureScreenshotTools scene={context} />,\r\n })\r\n );\r\n\r\n // RTT capture content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"RTT Capture\",\r\n section: \"RTT Capture\",\r\n component: ({ context }) => <CaptureRttTools 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: [CaptureServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
@@ -99,6 +99,7 @@ import '@babylonjs/core/Materials/Textures/baseTexture.js';
99
99
  import '@babylonjs/core/Materials/Textures/multiRenderTarget.js';
100
100
  import '@babylonjs/core/Materials/Textures/renderTargetTexture.js';
101
101
  import '@babylonjs/core/Materials/Textures/thinTexture.js';
102
+ import '@babylonjs/core/Misc/textureTools.js';
102
103
  import '@babylonjs/core/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js';
103
104
  import '@babylonjs/core/Sprites/spriteSceneComponent.js';
104
105
  import '@babylonjs/core/Materials/Textures/dynamicTexture.js';
@@ -229,4 +230,4 @@ var exportService = {
229
230
  };
230
231
 
231
232
  export { ExportServiceDefinition, exportService as default };
232
- //# sourceMappingURL=exportService-DEj9QNTe.js.map
233
+ //# sourceMappingURL=exportService-nwkeBa_W.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exportService-DEj9QNTe.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/exportTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/exportService.tsx"],"sourcesContent":["import { NumberDropdownPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/dropdownPropertyLine\";\r\nimport { SceneSerializer } from \"core/Misc/sceneSerializer\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { EnvironmentTextureTools } from \"core/Misc/environmentTextureTools\";\r\nimport type { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { useCallback, useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { ButtonLine } from \"shared-ui-components/fluent/hoc/buttonLine\";\r\nimport { SyncedSliderPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/syncedSliderPropertyLine\";\r\nimport type { Node } from \"core/node\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport type { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport type { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport type { BackgroundMaterial } from \"core/Materials/Background/backgroundMaterial\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Camera } from \"core/Cameras/camera\";\r\nimport { Light } from \"core/Lights/light\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\n\r\nimport { MakeLazyComponent } from \"shared-ui-components/fluent/primitives/lazyComponent\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\nimport { ArrowDownloadRegular } from \"@fluentui/react-icons\";\r\n\r\nconst EnvExportImageTypes = [\r\n { label: \"PNG\", value: 0, imageType: \"image/png\" },\r\n { label: \"WebP\", value: 1, imageType: \"image/webp\" },\r\n] as const;\r\n\r\ninterface IBabylonExportOptionsState {\r\n imageTypeIndex: number;\r\n imageQuality: number;\r\n iblDiffuse: boolean;\r\n}\r\n\r\nexport const ExportBabylonTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [babylonExportOptions, setBabylonExportOptions] = useState<Readonly<IBabylonExportOptionsState>>({\r\n imageTypeIndex: 0,\r\n imageQuality: 0.8,\r\n iblDiffuse: false,\r\n });\r\n\r\n const exportBabylon = useCallback(async () => {\r\n const strScene = JSON.stringify(SceneSerializer.Serialize(scene));\r\n const blob = new Blob([strScene], { type: \"octet/stream\" });\r\n Tools.Download(blob, \"scene.babylon\");\r\n }, [scene]);\r\n\r\n const createEnvTexture = useCallback(async () => {\r\n if (!scene.environmentTexture) {\r\n return;\r\n }\r\n\r\n try {\r\n const buffer = await EnvironmentTextureTools.CreateEnvTextureAsync(scene.environmentTexture as CubeTexture, {\r\n imageType: EnvExportImageTypes[babylonExportOptions.imageTypeIndex].imageType,\r\n imageQuality: babylonExportOptions.imageQuality,\r\n disableIrradianceTexture: !babylonExportOptions.iblDiffuse,\r\n });\r\n const blob = new Blob([buffer], { type: \"octet/stream\" });\r\n Tools.Download(blob, \"environment.env\");\r\n } catch (error: any) {\r\n Logger.Error(error);\r\n alert(error);\r\n }\r\n }, [scene, babylonExportOptions]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Export to Babylon\" icon={ArrowDownloadRegular} onClick={exportBabylon} />\r\n {!scene.getEngine().premultipliedAlpha && scene.environmentTexture && scene.environmentTexture._prefiltered && scene.activeCamera && (\r\n <>\r\n <ButtonLine label=\"Generate .env texture\" icon={ArrowDownloadRegular} onClick={createEnvTexture} />\r\n {scene.environmentTexture.irradianceTexture && (\r\n <SwitchPropertyLine\r\n key=\"iblDiffuse\"\r\n label=\"Diffuse Texture\"\r\n description=\"Export diffuse texture for IBL\"\r\n value={babylonExportOptions.iblDiffuse}\r\n onChange={(value: boolean) => {\r\n setBabylonExportOptions((prev) => ({ ...prev, iblDiffuse: value }));\r\n }}\r\n />\r\n )}\r\n <NumberDropdownPropertyLine\r\n label=\"Image type\"\r\n options={EnvExportImageTypes}\r\n value={babylonExportOptions.imageTypeIndex}\r\n onChange={(val) => {\r\n setBabylonExportOptions((prev) => ({ ...prev, imageTypeIndex: val as number }));\r\n }}\r\n />\r\n <Collapse visible={babylonExportOptions.imageTypeIndex > 0}>\r\n <SyncedSliderPropertyLine\r\n label=\"Quality\"\r\n value={babylonExportOptions.imageQuality}\r\n onChange={(value) => setBabylonExportOptions((prev) => ({ ...prev, imageQuality: value }))}\r\n min={0}\r\n max={1}\r\n />\r\n </Collapse>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\ninterface IGltfExportOptionsState {\r\n exportDisabledNodes: boolean;\r\n exportSkyboxes: boolean;\r\n exportCameras: boolean;\r\n exportLights: boolean;\r\n}\r\n\r\nexport const ExportGltfTools = MakeLazyComponent(async () => {\r\n // Defer importing anything from the serializers package until this component is actually mounted.\r\n const { GLTF2Export } = await import(\"serializers/glTF/2.0/glTFSerializer\");\r\n\r\n return (props: { scene: Scene }) => {\r\n const [isExportingGltf, setIsExportingGltf] = useState(false);\r\n const [gltfExportOptions, setGltfExportOptions] = useState<Readonly<IGltfExportOptionsState>>({\r\n exportDisabledNodes: false,\r\n exportSkyboxes: false,\r\n exportCameras: false,\r\n exportLights: false,\r\n });\r\n\r\n const exportGLTF = useCallback(async () => {\r\n setIsExportingGltf(true);\r\n\r\n const shouldExport = (node: Node): boolean => {\r\n if (!gltfExportOptions.exportDisabledNodes) {\r\n if (!node.isEnabled()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportSkyboxes) {\r\n if (node instanceof Mesh) {\r\n if (node.material) {\r\n const material = node.material as PBRMaterial | StandardMaterial | BackgroundMaterial;\r\n const reflectionTexture = material.reflectionTexture;\r\n if (reflectionTexture && reflectionTexture.coordinatesMode === Texture.SKYBOX_MODE) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportCameras) {\r\n if (node instanceof Camera) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportLights) {\r\n if (node instanceof Light) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n try {\r\n const glb = await GLTF2Export.GLBAsync(props.scene, \"scene\", { shouldExportNode: (node) => shouldExport(node) });\r\n glb.downloadFiles();\r\n } catch (reason) {\r\n Logger.Error(`Failed to export GLB: ${reason}`);\r\n } finally {\r\n setIsExportingGltf(false);\r\n }\r\n }, [gltfExportOptions, props.scene]);\r\n\r\n return (\r\n <>\r\n <SwitchPropertyLine\r\n key=\"GLTFExportDisabledNodes\"\r\n label=\"Export Disabled Nodes\"\r\n description=\"Whether to export nodes that are disabled in the scene.\"\r\n value={gltfExportOptions.exportDisabledNodes}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportDisabledNodes: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportSkyboxes\"\r\n label=\"Export Skyboxes\"\r\n description=\"Whether to export skybox nodes in the scene.\"\r\n value={gltfExportOptions.exportSkyboxes}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportSkyboxes: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportCameras\"\r\n label=\"Export Cameras\"\r\n description=\"Whether to export cameras in the scene.\"\r\n value={gltfExportOptions.exportCameras}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportCameras: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportLights\"\r\n label=\"Export Lights\"\r\n description=\"Whether to export lights in the scene.\"\r\n value={gltfExportOptions.exportLights}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportLights: checked })}\r\n />\r\n <ButtonLine label=\"Export to GLB\" icon={ArrowDownloadRegular} onClick={exportGLTF} disabled={isExportingGltf} />\r\n </>\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 { ExportBabylonTools, ExportGltfTools } from \"../../../components/tools/exportTools\";\r\n\r\nexport const ExportServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Export Tools\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistrations: IDisposable[] = [];\r\n\r\n // glTF export content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"glTF Export\",\r\n section: \"glTF Export\",\r\n component: ({ context }) => <ExportGltfTools scene={context} />,\r\n })\r\n );\r\n\r\n // Babylon export content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"Babylon Export\",\r\n section: \"Babylon Export\",\r\n component: ({ context }) => <ExportBabylonTools 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: [ExportServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAM,mBAAmB,GAAG;IACxB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;IAClD,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE;CAC9C;AAQH,MAAM,kBAAkB,GAAwC,CAAC,EAAE,KAAK,EAAE,KAAI;AACjF,IAAA,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAuC;AACnG,QAAA,cAAc,EAAE,CAAC;AACjB,QAAA,YAAY,EAAE,GAAG;AACjB,QAAA,UAAU,EAAE,KAAK;AACpB,KAAA,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,YAAW;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjE,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AAC3D,QAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;AACzC,KAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAEX,IAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAW;AAC5C,QAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;YAC3B;;AAGJ,QAAA,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,qBAAqB,CAAC,KAAK,CAAC,kBAAiC,EAAE;gBACxG,SAAS,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,SAAS;gBAC7E,YAAY,EAAE,oBAAoB,CAAC,YAAY;AAC/C,gBAAA,wBAAwB,EAAE,CAAC,oBAAoB,CAAC,UAAU;AAC7D,aAAA,CAAC;AACF,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AACzD,YAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;;QACzC,OAAO,KAAU,EAAE;AACjB,YAAA,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACnB,KAAK,CAAC,KAAK,CAAC;;AAEpB,KAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;AAEjC,IAAA,QACIA,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,UAAU,EAAC,EAAA,KAAK,EAAC,mBAAmB,EAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,EAAA,CAAI,EAC3F,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAC7HF,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,UAAU,EAAA,EAAC,KAAK,EAAC,uBAAuB,EAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,gBAAgB,EAAA,CAAI,EAClG,KAAK,CAAC,kBAAkB,CAAC,iBAAiB,KACvCA,GAAA,CAAC,kBAAkB,EAAA,EAEf,KAAK,EAAC,iBAAiB,EACvB,WAAW,EAAC,gCAAgC,EAC5C,KAAK,EAAE,oBAAoB,CAAC,UAAU,EACtC,QAAQ,EAAE,CAAC,KAAc,KAAI;AACzB,4BAAA,uBAAuB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;yBACtE,EAAA,EANG,YAAY,CAOlB,CACL,EACDA,GAAC,CAAA,0BAA0B,EACvB,EAAA,KAAK,EAAC,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,oBAAoB,CAAC,cAAc,EAC1C,QAAQ,EAAE,CAAC,GAAG,KAAI;AACd,4BAAA,uBAAuB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,GAAa,EAAE,CAAC,CAAC;AACnF,yBAAC,EACH,CAAA,EACFA,GAAC,CAAA,QAAQ,EAAC,EAAA,OAAO,EAAE,oBAAoB,CAAC,cAAc,GAAG,CAAC,YACtDA,GAAC,CAAA,wBAAwB,EACrB,EAAA,KAAK,EAAC,SAAS,EACf,KAAK,EAAE,oBAAoB,CAAC,YAAY,EACxC,QAAQ,EAAE,CAAC,KAAK,KAAK,uBAAuB,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAC1F,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EAAA,CACR,EACK,CAAA,CAAA,EAAA,CACZ,CACN,CAAA,EAAA,CACF;AAEX,CAAC;AASM,MAAM,eAAe,GAAG,iBAAiB,CAAC,YAAW;;AAExD,IAAA,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,2DAA6C;IAE3E,OAAO,CAAC,KAAuB,KAAI;QAC/B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AAC7D,QAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAoC;AAC1F,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,cAAc,EAAE,KAAK;AACrB,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,YAAW;YACtC,kBAAkB,CAAC,IAAI,CAAC;AAExB,YAAA,MAAM,YAAY,GAAG,CAAC,IAAU,KAAa;AACzC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,EAAE;AACxC,oBAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACnB,wBAAA,OAAO,KAAK;;;AAIpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE;AACnC,oBAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACtB,wBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,4BAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAA+D;AACrF,4BAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB;4BACpD,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,eAAe,KAAK,OAAO,CAAC,WAAW,EAAE;AAChF,gCAAA,OAAO,KAAK;;;;;AAM5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;AAClC,oBAAA,IAAI,IAAI,YAAY,MAAM,EAAE;AACxB,wBAAA,OAAO,KAAK;;;AAIpB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACjC,oBAAA,IAAI,IAAI,YAAY,KAAK,EAAE;AACvB,wBAAA,OAAO,KAAK;;;AAIpB,gBAAA,OAAO,IAAI;AACf,aAAC;AAED,YAAA,IAAI;gBACA,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAAE,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChH,GAAG,CAAC,aAAa,EAAE;;YACrB,OAAO,MAAM,EAAE;AACb,gBAAA,MAAM,CAAC,KAAK,CAAC,yBAAyB,MAAM,CAAA,CAAE,CAAC;;oBACzC;gBACN,kBAAkB,CAAC,KAAK,CAAC;;SAEhC,EAAE,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;AAEpC,QAAA,QACIF,IACI,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAA,CAAAC,GAAA,CAAC,kBAAkB,EAEf,EAAA,KAAK,EAAC,uBAAuB,EAC7B,WAAW,EAAC,yDAAyD,EACrE,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,EAC5C,QAAQ,EAAE,CAAC,OAAgB,KAAK,oBAAoB,CAAC,EAAE,GAAG,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,IAJxG,yBAAyB,CAK/B,EACFA,GAAC,CAAA,kBAAkB,EAEf,EAAA,KAAK,EAAC,iBAAiB,EACvB,WAAW,EAAC,8CAA8C,EAC1D,KAAK,EAAE,iBAAiB,CAAC,cAAc,EACvC,QAAQ,EAAE,CAAC,OAAgB,KAAK,oBAAoB,CAAC,EAAE,GAAG,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAA,EAJnG,oBAAoB,CAK1B,EACFA,IAAC,kBAAkB,EAAA,EAEf,KAAK,EAAC,gBAAgB,EACtB,WAAW,EAAC,yCAAyC,EACrD,KAAK,EAAE,iBAAiB,CAAC,aAAa,EACtC,QAAQ,EAAE,CAAC,OAAgB,KAAK,oBAAoB,CAAC,EAAE,GAAG,iBAAiB,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,EAJlG,EAAA,mBAAmB,CAKzB,EACFA,GAAA,CAAC,kBAAkB,EAEf,EAAA,KAAK,EAAC,eAAe,EACrB,WAAW,EAAC,wCAAwC,EACpD,KAAK,EAAE,iBAAiB,CAAC,YAAY,EACrC,QAAQ,EAAE,CAAC,OAAgB,KAAK,oBAAoB,CAAC,EAAE,GAAG,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,EAAA,EAJjG,kBAAkB,CAKxB,EACFA,GAAC,CAAA,UAAU,IAAC,KAAK,EAAC,eAAe,EAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAI,CAAA,CAAA,EAAA,CACjH;AAEX,KAAC;AACL,CAAC,CAAC;;AC3MW,MAAA,uBAAuB,GAA2C;AAC3E,IAAA,YAAY,EAAE,cAAc;IAC5B,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,aAAa;AAClB,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,GAAA,CAAC,eAAe,EAAA,EAAC,KAAK,EAAE,OAAO,EAAI,CAAA;AAClE,SAAA,CAAC,CACL;;AAGD,QAAA,oBAAoB,CAAC,IAAI,CACrB,YAAY,CAAC,iBAAiB,CAAC;AAC3B,YAAA,GAAG,EAAE,gBAAgB;AACrB,YAAA,OAAO,EAAE,gBAAgB;AACzB,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,GAAA,CAAC,kBAAkB,EAAA,EAAC,KAAK,EAAE,OAAO,EAAI,CAAA;AACrE,SAAA,CAAC,CACL;QAED,OAAO;YACH,OAAO,EAAE,MAAK;AACV,gBAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC;aACzE;SACJ;KACJ;;AAGL,oBAAe;IACX,kBAAkB,EAAE,CAAC,uBAAuB,CAAC;CACvC;;;;"}
1
+ {"version":3,"file":"exportService-nwkeBa_W.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/exportTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/exportService.tsx"],"sourcesContent":["import { NumberDropdownPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/dropdownPropertyLine\";\r\nimport { SceneSerializer } from \"core/Misc/sceneSerializer\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { EnvironmentTextureTools } from \"core/Misc/environmentTextureTools\";\r\nimport type { CubeTexture } from \"core/Materials/Textures/cubeTexture\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { useCallback, useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { ButtonLine } from \"shared-ui-components/fluent/hoc/buttonLine\";\r\nimport { SyncedSliderPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/syncedSliderPropertyLine\";\r\nimport type { Node } from \"core/node\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport type { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\nimport type { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport type { BackgroundMaterial } from \"core/Materials/Background/backgroundMaterial\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { Camera } from \"core/Cameras/camera\";\r\nimport { Light } from \"core/Lights/light\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\n\r\nimport { MakeLazyComponent } from \"shared-ui-components/fluent/primitives/lazyComponent\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\nimport { ArrowDownloadRegular } from \"@fluentui/react-icons\";\r\n\r\nconst EnvExportImageTypes = [\r\n { label: \"PNG\", value: 0, imageType: \"image/png\" },\r\n { label: \"WebP\", value: 1, imageType: \"image/webp\" },\r\n] as const;\r\n\r\ninterface IBabylonExportOptionsState {\r\n imageTypeIndex: number;\r\n imageQuality: number;\r\n iblDiffuse: boolean;\r\n}\r\n\r\nexport const ExportBabylonTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [babylonExportOptions, setBabylonExportOptions] = useState<Readonly<IBabylonExportOptionsState>>({\r\n imageTypeIndex: 0,\r\n imageQuality: 0.8,\r\n iblDiffuse: false,\r\n });\r\n\r\n const exportBabylon = useCallback(async () => {\r\n const strScene = JSON.stringify(SceneSerializer.Serialize(scene));\r\n const blob = new Blob([strScene], { type: \"octet/stream\" });\r\n Tools.Download(blob, \"scene.babylon\");\r\n }, [scene]);\r\n\r\n const createEnvTexture = useCallback(async () => {\r\n if (!scene.environmentTexture) {\r\n return;\r\n }\r\n\r\n try {\r\n const buffer = await EnvironmentTextureTools.CreateEnvTextureAsync(scene.environmentTexture as CubeTexture, {\r\n imageType: EnvExportImageTypes[babylonExportOptions.imageTypeIndex].imageType,\r\n imageQuality: babylonExportOptions.imageQuality,\r\n disableIrradianceTexture: !babylonExportOptions.iblDiffuse,\r\n });\r\n const blob = new Blob([buffer], { type: \"octet/stream\" });\r\n Tools.Download(blob, \"environment.env\");\r\n } catch (error: any) {\r\n Logger.Error(error);\r\n alert(error);\r\n }\r\n }, [scene, babylonExportOptions]);\r\n\r\n return (\r\n <>\r\n <ButtonLine label=\"Export to Babylon\" icon={ArrowDownloadRegular} onClick={exportBabylon} />\r\n {!scene.getEngine().premultipliedAlpha && scene.environmentTexture && scene.environmentTexture._prefiltered && scene.activeCamera && (\r\n <>\r\n <ButtonLine label=\"Generate .env texture\" icon={ArrowDownloadRegular} onClick={createEnvTexture} />\r\n {scene.environmentTexture.irradianceTexture && (\r\n <SwitchPropertyLine\r\n key=\"iblDiffuse\"\r\n label=\"Diffuse Texture\"\r\n description=\"Export diffuse texture for IBL\"\r\n value={babylonExportOptions.iblDiffuse}\r\n onChange={(value: boolean) => {\r\n setBabylonExportOptions((prev) => ({ ...prev, iblDiffuse: value }));\r\n }}\r\n />\r\n )}\r\n <NumberDropdownPropertyLine\r\n label=\"Image type\"\r\n options={EnvExportImageTypes}\r\n value={babylonExportOptions.imageTypeIndex}\r\n onChange={(val) => {\r\n setBabylonExportOptions((prev) => ({ ...prev, imageTypeIndex: val as number }));\r\n }}\r\n />\r\n <Collapse visible={babylonExportOptions.imageTypeIndex > 0}>\r\n <SyncedSliderPropertyLine\r\n label=\"Quality\"\r\n value={babylonExportOptions.imageQuality}\r\n onChange={(value) => setBabylonExportOptions((prev) => ({ ...prev, imageQuality: value }))}\r\n min={0}\r\n max={1}\r\n />\r\n </Collapse>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\ninterface IGltfExportOptionsState {\r\n exportDisabledNodes: boolean;\r\n exportSkyboxes: boolean;\r\n exportCameras: boolean;\r\n exportLights: boolean;\r\n}\r\n\r\nexport const ExportGltfTools = MakeLazyComponent(async () => {\r\n // Defer importing anything from the serializers package until this component is actually mounted.\r\n const { GLTF2Export } = await import(\"serializers/glTF/2.0/glTFSerializer\");\r\n\r\n return (props: { scene: Scene }) => {\r\n const [isExportingGltf, setIsExportingGltf] = useState(false);\r\n const [gltfExportOptions, setGltfExportOptions] = useState<Readonly<IGltfExportOptionsState>>({\r\n exportDisabledNodes: false,\r\n exportSkyboxes: false,\r\n exportCameras: false,\r\n exportLights: false,\r\n });\r\n\r\n const exportGLTF = useCallback(async () => {\r\n setIsExportingGltf(true);\r\n\r\n const shouldExport = (node: Node): boolean => {\r\n if (!gltfExportOptions.exportDisabledNodes) {\r\n if (!node.isEnabled()) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportSkyboxes) {\r\n if (node instanceof Mesh) {\r\n if (node.material) {\r\n const material = node.material as PBRMaterial | StandardMaterial | BackgroundMaterial;\r\n const reflectionTexture = material.reflectionTexture;\r\n if (reflectionTexture && reflectionTexture.coordinatesMode === Texture.SKYBOX_MODE) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportCameras) {\r\n if (node instanceof Camera) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!gltfExportOptions.exportLights) {\r\n if (node instanceof Light) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n try {\r\n const glb = await GLTF2Export.GLBAsync(props.scene, \"scene\", { shouldExportNode: (node) => shouldExport(node) });\r\n glb.downloadFiles();\r\n } catch (reason) {\r\n Logger.Error(`Failed to export GLB: ${reason}`);\r\n } finally {\r\n setIsExportingGltf(false);\r\n }\r\n }, [gltfExportOptions, props.scene]);\r\n\r\n return (\r\n <>\r\n <SwitchPropertyLine\r\n key=\"GLTFExportDisabledNodes\"\r\n label=\"Export Disabled Nodes\"\r\n description=\"Whether to export nodes that are disabled in the scene.\"\r\n value={gltfExportOptions.exportDisabledNodes}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportDisabledNodes: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportSkyboxes\"\r\n label=\"Export Skyboxes\"\r\n description=\"Whether to export skybox nodes in the scene.\"\r\n value={gltfExportOptions.exportSkyboxes}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportSkyboxes: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportCameras\"\r\n label=\"Export Cameras\"\r\n description=\"Whether to export cameras in the scene.\"\r\n value={gltfExportOptions.exportCameras}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportCameras: checked })}\r\n />\r\n <SwitchPropertyLine\r\n key=\"GLTFExportLights\"\r\n label=\"Export Lights\"\r\n description=\"Whether to export lights in the scene.\"\r\n value={gltfExportOptions.exportLights}\r\n onChange={(checked: boolean) => setGltfExportOptions({ ...gltfExportOptions, exportLights: checked })}\r\n />\r\n <ButtonLine label=\"Export to GLB\" icon={ArrowDownloadRegular} onClick={exportGLTF} disabled={isExportingGltf} />\r\n </>\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 { ExportBabylonTools, ExportGltfTools } from \"../../../components/tools/exportTools\";\r\n\r\nexport const ExportServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Export Tools\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistrations: IDisposable[] = [];\r\n\r\n // glTF export content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"glTF Export\",\r\n section: \"glTF Export\",\r\n component: ({ context }) => <ExportGltfTools scene={context} />,\r\n })\r\n );\r\n\r\n // Babylon export content\r\n contentRegistrations.push(\r\n toolsService.addSectionContent({\r\n key: \"Babylon Export\",\r\n section: \"Babylon Export\",\r\n component: ({ context }) => <ExportBabylonTools 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: [ExportServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
@@ -99,6 +99,7 @@ import '@babylonjs/core/Materials/Textures/baseTexture.js';
99
99
  import '@babylonjs/core/Materials/Textures/multiRenderTarget.js';
100
100
  import '@babylonjs/core/Materials/Textures/renderTargetTexture.js';
101
101
  import '@babylonjs/core/Materials/Textures/thinTexture.js';
102
+ import '@babylonjs/core/Misc/textureTools.js';
102
103
  import '@babylonjs/core/PostProcesses/RenderPipeline/postProcessRenderPipelineManagerSceneComponent.js';
103
104
  import '@babylonjs/core/Sprites/spriteSceneComponent.js';
104
105
  import '@babylonjs/core/Materials/Textures/dynamicTexture.js';
@@ -165,4 +166,4 @@ var importService = {
165
166
  };
166
167
 
167
168
  export { SceneImportServiceDefinition, importService as default };
168
- //# sourceMappingURL=importService-BoR1TPvc.js.map
169
+ //# sourceMappingURL=importService-DtPZclnY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"importService-BoR1TPvc.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/importTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/importService.tsx"],"sourcesContent":["import { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { DropdownOption } from \"shared-ui-components/fluent/primitives/dropdown\";\r\nimport { ImportAnimationsAsync, SceneLoaderAnimationGroupLoadingMode } from \"core/Loading/sceneLoader\";\r\nimport { FilesInput } from \"core/Misc/filesInput\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\nimport { NumberDropdownPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/dropdownPropertyLine\";\r\nimport { FileUploadLine } from \"shared-ui-components/fluent/hoc/fileUploadLine\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\n\r\nconst AnimationGroupLoadingModes = [\r\n { label: \"Clean\", value: SceneLoaderAnimationGroupLoadingMode.Clean },\r\n { label: \"Stop\", value: SceneLoaderAnimationGroupLoadingMode.Stop },\r\n { label: \"Sync\", value: SceneLoaderAnimationGroupLoadingMode.Sync },\r\n { label: \"NoSync\", value: SceneLoaderAnimationGroupLoadingMode.NoSync },\r\n] as const satisfies DropdownOption<number>[];\r\n\r\nexport const ImportAnimationsTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [importDefaults, setImportDefaults] = useState({\r\n overwriteAnimations: true,\r\n animationGroupLoadingMode: SceneLoaderAnimationGroupLoadingMode.Clean,\r\n });\r\n\r\n const importAnimations = (event: FileList) => {\r\n const reloadAsync = async function (sceneFile: File) {\r\n if (sceneFile) {\r\n try {\r\n await ImportAnimationsAsync(sceneFile, scene, {\r\n overwriteAnimations: importDefaults.overwriteAnimations,\r\n animationGroupLoadingMode: importDefaults.animationGroupLoadingMode,\r\n });\r\n\r\n if (scene.animationGroups.length > 0) {\r\n const currentGroup = scene.animationGroups[0];\r\n currentGroup.play(true);\r\n }\r\n } catch (error) {\r\n Logger.Error(`Error importing animations: ${error}`);\r\n }\r\n }\r\n };\r\n\r\n const filesInputAnimation = new FilesInput(scene.getEngine(), scene, null, null, null, null, null, reloadAsync, null);\r\n filesInputAnimation.loadFiles(event);\r\n filesInputAnimation.dispose();\r\n };\r\n\r\n return (\r\n <>\r\n <FileUploadLine label=\"Import Animations\" accept=\"gltf\" onClick={(evt: FileList) => importAnimations(evt)} />\r\n <SwitchPropertyLine\r\n label=\"Overwrite Animations\"\r\n value={importDefaults.overwriteAnimations}\r\n onChange={(value) => {\r\n setImportDefaults({ ...importDefaults, overwriteAnimations: value });\r\n }}\r\n />\r\n <Collapse visible={!importDefaults.overwriteAnimations}>\r\n <NumberDropdownPropertyLine\r\n label=\"Animation Merge Mode\"\r\n options={AnimationGroupLoadingModes}\r\n value={importDefaults.animationGroupLoadingMode}\r\n onChange={(value) => {\r\n setImportDefaults({ ...importDefaults, animationGroupLoadingMode: value });\r\n }}\r\n />\r\n </Collapse>\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 { ImportAnimationsTools } from \"../../../components/tools/importTools\";\r\n\r\nexport const SceneImportServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Import Tool\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistration = toolsService.addSectionContent({\r\n key: \"AnimationImport\",\r\n section: \"Animation Import\",\r\n component: ({ context }) => <ImportAnimationsTools scene={context} />,\r\n });\r\n\r\n return {\r\n dispose: () => {\r\n contentRegistration.dispose();\r\n },\r\n };\r\n },\r\n};\r\n\r\nexport default {\r\n serviceDefinitions: [SceneImportServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,0BAA0B,GAAG;AAC/B,IAAA,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,sDAA8C;AACrE,IAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,qDAA6C;AACnE,IAAA,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,qDAA6C;AACnE,IAAA,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,uDAA+C;CAC9B;AAEtC,MAAM,qBAAqB,GAAwC,CAAC,EAAE,KAAK,EAAE,KAAI;AACpF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC;AACjD,QAAA,mBAAmB,EAAE,IAAI;AACzB,QAAA,yBAAyB,EAA4C,CAAA;AACxE,KAAA,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,CAAC,KAAe,KAAI;AACzC,QAAA,MAAM,WAAW,GAAG,gBAAgB,SAAe,EAAA;YAC/C,IAAI,SAAS,EAAE;AACX,gBAAA,IAAI;AACA,oBAAA,MAAM,qBAAqB,CAAC,SAAS,EAAE,KAAK,EAAE;wBAC1C,mBAAmB,EAAE,cAAc,CAAC,mBAAmB;wBACvD,yBAAyB,EAAE,cAAc,CAAC,yBAAyB;AACtE,qBAAA,CAAC;oBAEF,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;wBAClC,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;AAC7C,wBAAA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;;gBAE7B,OAAO,KAAK,EAAE;AACZ,oBAAA,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,CAAA,CAAE,CAAC;;;AAGhE,SAAC;QAED,MAAM,mBAAmB,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC;AACrH,QAAA,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC;QACpC,mBAAmB,CAAC,OAAO,EAAE;AACjC,KAAC;IAED,QACIA,4BACIC,GAAC,CAAA,cAAc,IAAC,KAAK,EAAC,mBAAmB,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAE,CAAC,GAAa,KAAK,gBAAgB,CAAC,GAAG,CAAC,EAAA,CAAI,EAC7GA,GAAC,CAAA,kBAAkB,IACf,KAAK,EAAC,sBAAsB,EAC5B,KAAK,EAAE,cAAc,CAAC,mBAAmB,EACzC,QAAQ,EAAE,CAAC,KAAK,KAAI;oBAChB,iBAAiB,CAAC,EAAE,GAAG,cAAc,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;AACxE,iBAAC,EACH,CAAA,EACFA,GAAC,CAAA,QAAQ,IAAC,OAAO,EAAE,CAAC,cAAc,CAAC,mBAAmB,EAAA,QAAA,EAClDA,GAAC,CAAA,0BAA0B,IACvB,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,cAAc,CAAC,yBAAyB,EAC/C,QAAQ,EAAE,CAAC,KAAK,KAAI;wBAChB,iBAAiB,CAAC,EAAE,GAAG,cAAc,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC;AAC9E,qBAAC,EACH,CAAA,EAAA,CACK,CACZ,EAAA,CAAA;AAEX,CAAC;;AClEY,MAAA,4BAA4B,GAA2C;AAChF,IAAA,YAAY,EAAE,aAAa;IAC3B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;AAChC,IAAA,OAAO,EAAE,CAAC,YAAY,KAAI;AACtB,QAAA,MAAM,mBAAmB,GAAG,YAAY,CAAC,iBAAiB,CAAC;AACvD,YAAA,GAAG,EAAE,iBAAiB;AACtB,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,KAAKA,GAAA,CAAC,qBAAqB,EAAA,EAAC,KAAK,EAAE,OAAO,EAAI,CAAA;AACxE,SAAA,CAAC;QAEF,OAAO;YACH,OAAO,EAAE,MAAK;gBACV,mBAAmB,CAAC,OAAO,EAAE;aAChC;SACJ;KACJ;;AAGL,oBAAe;IACX,kBAAkB,EAAE,CAAC,4BAA4B,CAAC;CAC5C;;;;"}
1
+ {"version":3,"file":"importService-DtPZclnY.js","sources":["../../../../../../../../dev/inspector-v2/src/components/tools/importTools.tsx","../../../../../../../../dev/inspector-v2/src/services/panes/tools/importService.tsx"],"sourcesContent":["import { useState } from \"react\";\r\nimport type { FunctionComponent } from \"react\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { DropdownOption } from \"shared-ui-components/fluent/primitives/dropdown\";\r\nimport { ImportAnimationsAsync, SceneLoaderAnimationGroupLoadingMode } from \"core/Loading/sceneLoader\";\r\nimport { FilesInput } from \"core/Misc/filesInput\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\r\nimport { NumberDropdownPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/dropdownPropertyLine\";\r\nimport { FileUploadLine } from \"shared-ui-components/fluent/hoc/fileUploadLine\";\r\nimport { Collapse } from \"shared-ui-components/fluent/primitives/collapse\";\r\n\r\nconst AnimationGroupLoadingModes = [\r\n { label: \"Clean\", value: SceneLoaderAnimationGroupLoadingMode.Clean },\r\n { label: \"Stop\", value: SceneLoaderAnimationGroupLoadingMode.Stop },\r\n { label: \"Sync\", value: SceneLoaderAnimationGroupLoadingMode.Sync },\r\n { label: \"NoSync\", value: SceneLoaderAnimationGroupLoadingMode.NoSync },\r\n] as const satisfies DropdownOption<number>[];\r\n\r\nexport const ImportAnimationsTools: FunctionComponent<{ scene: Scene }> = ({ scene }) => {\r\n const [importDefaults, setImportDefaults] = useState({\r\n overwriteAnimations: true,\r\n animationGroupLoadingMode: SceneLoaderAnimationGroupLoadingMode.Clean,\r\n });\r\n\r\n const importAnimations = (event: FileList) => {\r\n const reloadAsync = async function (sceneFile: File) {\r\n if (sceneFile) {\r\n try {\r\n await ImportAnimationsAsync(sceneFile, scene, {\r\n overwriteAnimations: importDefaults.overwriteAnimations,\r\n animationGroupLoadingMode: importDefaults.animationGroupLoadingMode,\r\n });\r\n\r\n if (scene.animationGroups.length > 0) {\r\n const currentGroup = scene.animationGroups[0];\r\n currentGroup.play(true);\r\n }\r\n } catch (error) {\r\n Logger.Error(`Error importing animations: ${error}`);\r\n }\r\n }\r\n };\r\n\r\n const filesInputAnimation = new FilesInput(scene.getEngine(), scene, null, null, null, null, null, reloadAsync, null);\r\n filesInputAnimation.loadFiles(event);\r\n filesInputAnimation.dispose();\r\n };\r\n\r\n return (\r\n <>\r\n <FileUploadLine label=\"Import Animations\" accept=\"gltf\" onClick={(evt: FileList) => importAnimations(evt)} />\r\n <SwitchPropertyLine\r\n label=\"Overwrite Animations\"\r\n value={importDefaults.overwriteAnimations}\r\n onChange={(value) => {\r\n setImportDefaults({ ...importDefaults, overwriteAnimations: value });\r\n }}\r\n />\r\n <Collapse visible={!importDefaults.overwriteAnimations}>\r\n <NumberDropdownPropertyLine\r\n label=\"Animation Merge Mode\"\r\n options={AnimationGroupLoadingModes}\r\n value={importDefaults.animationGroupLoadingMode}\r\n onChange={(value) => {\r\n setImportDefaults({ ...importDefaults, animationGroupLoadingMode: value });\r\n }}\r\n />\r\n </Collapse>\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 { ImportAnimationsTools } from \"../../../components/tools/importTools\";\r\n\r\nexport const SceneImportServiceDefinition: ServiceDefinition<[], [IToolsService]> = {\r\n friendlyName: \"Import Tool\",\r\n consumes: [ToolsServiceIdentity],\r\n factory: (toolsService) => {\r\n const contentRegistration = toolsService.addSectionContent({\r\n key: \"AnimationImport\",\r\n section: \"Animation Import\",\r\n component: ({ context }) => <ImportAnimationsTools scene={context} />,\r\n });\r\n\r\n return {\r\n dispose: () => {\r\n contentRegistration.dispose();\r\n },\r\n };\r\n },\r\n};\r\n\r\nexport default {\r\n serviceDefinitions: [SceneImportServiceDefinition],\r\n} as const;\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -46579,8 +46579,9 @@ declare class NodeRenderGraph {
46579
46579
  private _createNodeEditor;
46580
46580
  /**
46581
46581
  * Build the final list of blocks that will be executed by the "execute" method
46582
+ * @param dontBuildFrameGraph If the underlying frame graph should not be built (default: false)
46582
46583
  */
46583
- build(): void;
46584
+ build(dontBuildFrameGraph?: boolean): void;
46584
46585
  private _autoFillExternalInputs;
46585
46586
  /**
46586
46587
  * Returns a promise that resolves when the node render graph is ready to be executed