@babylonjs/inspector 9.30.0 → 9.31.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/bin/inspector-bridge.mjs +4730 -4446
- package/bin/inspector-cli.mjs +4765 -3866
- package/lib/components/curveEditor/animatableAnimations.d.ts +27 -0
- package/lib/components/properties/nodes/gaussianSplattingProperties.d.ts +13 -2
- package/lib/{extensionsListService-DfE1ZOnF.js → extensionsListService-O8zrOnmL.js} +5 -2
- package/lib/{extensionsListService-DfE1ZOnF.js.map → extensionsListService-O8zrOnmL.js.map} +1 -1
- package/lib/gif-ut7hgn9U.js +45 -0
- package/lib/gif-ut7hgn9U.js.map +1 -0
- package/lib/{index-CZ1-Y-Rv.js → index-DbbhJJ1G.js} +321 -85
- package/lib/index-DbbhJJ1G.js.map +1 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/lite/animationProperties-BKVw6_ls.js +95 -0
- package/lib/lite/animationProperties-BKVw6_ls.js.map +1 -0
- package/lib/lite/animationUtils.d.ts +47 -0
- package/lib/lite/components/properties/animationProperties.d.ts +48 -0
- package/lib/lite/directTextureBinding-C5MB2OV2.js +99 -0
- package/lib/lite/directTextureBinding-C5MB2OV2.js.map +1 -0
- package/lib/lite/dynamicMaterialField-L_nQAxAA.js +107 -0
- package/lib/lite/dynamicMaterialField-L_nQAxAA.js.map +1 -0
- package/lib/lite/engineExplorerService.d.ts +3 -1
- package/lib/lite/{extensionsListService-D1JivcAu.js → extensionsListService-Bl1rTNl1.js} +2 -2
- package/lib/lite/{extensionsListService-D1JivcAu.js.map → extensionsListService-Bl1rTNl1.js.map} +1 -1
- package/lib/lite/{index-D8vFySa7.js → index-Cy8gzpYG.js} +1453 -394
- package/lib/lite/index-Cy8gzpYG.js.map +1 -0
- package/lib/lite/index.js +1 -1
- package/lib/lite/nodeMaterialProperties-ELFMlzS1.js +182 -0
- package/lib/lite/nodeMaterialProperties-ELFMlzS1.js.map +1 -0
- package/lib/lite/pbrMaterialProperties-jfJddBxY.js +614 -0
- package/lib/lite/pbrMaterialProperties-jfJddBxY.js.map +1 -0
- package/lib/lite/services/panes/properties/animationPropertiesService.d.ts +5 -0
- package/lib/lite/services/panes/properties/materialPropertiesService.d.ts +3 -1
- package/lib/lite/services/panes/properties/materials/directTextureBinding.d.ts +29 -0
- package/lib/lite/services/panes/properties/materials/dynamicMaterialField.d.ts +35 -0
- package/lib/lite/services/panes/properties/materials/materialAdapterTypes.d.ts +11 -0
- package/lib/lite/services/panes/properties/materials/materialReachability.d.ts +9 -0
- package/lib/lite/services/panes/properties/materials/nodeMaterialProperties.d.ts +8 -0
- package/lib/lite/services/panes/properties/materials/pbrMaterialProperties.d.ts +8 -0
- package/lib/lite/services/panes/properties/materials/shaderMaterialProperties.d.ts +8 -0
- package/lib/lite/services/panes/properties/materials/standardMaterialProperties.d.ts +8 -0
- package/lib/lite/services/panes/properties/materials/useDirectMaterialOperations.d.ts +31 -0
- package/lib/lite/services/panes/properties/textureMetadataProperties.d.ts +14 -0
- package/lib/lite/services/panes/properties/texturePropertiesService.d.ts +3 -1
- package/lib/lite/services/panes/properties/useLatestAsyncOperation.d.ts +24 -0
- package/lib/lite/services/panes/scene/animationGroupExplorerService.d.ts +7 -0
- package/lib/lite/services/panes/scene/materialExplorerService.d.ts +2 -1
- package/lib/lite/services/panes/scene/materialTopologyBindings.d.ts +13 -0
- package/lib/lite/services/panes/scene/sceneResourceIndexService.d.ts +36 -0
- package/lib/lite/services/panes/scene/sceneResources.d.ts +55 -11
- package/lib/lite/services/panes/scene/textureExplorerService.d.ts +2 -1
- package/lib/lite/services/pickingService.d.ts +10 -0
- package/lib/lite/shaderMaterialProperties-CTH_KfBK.js +229 -0
- package/lib/lite/shaderMaterialProperties-CTH_KfBK.js.map +1 -0
- package/lib/lite/standardMaterialProperties-BbYdFX86.js +287 -0
- package/lib/lite/standardMaterialProperties-BbYdFX86.js.map +1 -0
- package/lib/lite/textureMetadataProperties-BdNmp0Pk.js +221 -0
- package/lib/lite/textureMetadataProperties-BdNmp0Pk.js.map +1 -0
- package/lib/lite/useDirectMaterialOperations-D6V7OtC1.js +83 -0
- package/lib/lite/useDirectMaterialOperations-D6V7OtC1.js.map +1 -0
- package/lib/lite/useLatestAsyncOperation-k59AgA3B.js +78 -0
- package/lib/lite/useLatestAsyncOperation-k59AgA3B.js.map +1 -0
- package/lib/{quickCreateToolsService-owfaw163.js → quickCreateToolsService-Cs46Amv7.js} +5 -2
- package/lib/{quickCreateToolsService-owfaw163.js.map → quickCreateToolsService-Cs46Amv7.js.map} +1 -1
- package/lib/{reflectorService-oIAxxpQt.js → reflectorService-C43FgOiC.js} +5 -2
- package/lib/{reflectorService-oIAxxpQt.js.map → reflectorService-C43FgOiC.js.map} +1 -1
- package/lib/services/panes/properties/gaussianSplattingDebugController.d.ts +46 -0
- package/package.json +8 -8
- package/lib/gif-5DieAkSF.js +0 -38
- package/lib/gif-5DieAkSF.js.map +0 -1
- package/lib/index-CZ1-Y-Rv.js.map +0 -1
- package/lib/lite/index-D8vFySa7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pbrMaterialProperties-jfJddBxY.js","sources":["../../../../../../../../../../dev/inspector-v2/src/lite/services/panes/properties/materials/pbrMaterialProperties.tsx"],"sourcesContent":["import {\n enableMaterialStencil,\n enablePbrLightmap,\n getMaterialFamily,\n getMaterialSource,\n getPbrAlphaCutoff,\n getPbrAnisotropy,\n getPbrClearCoat,\n getPbrEmissiveColor,\n getPbrIridescence,\n getPbrMetallicReflectance,\n getPbrSheen,\n getPbrSubsurface,\n getPbrTransmission,\n getPbrUnlit,\n getShadowOnly,\n getTextureMetadata,\n isMaterialView,\n isPbrGammaAlbedo,\n isPbrSkybox,\n markMaterialUboDirty,\n rebuildMaterial,\n setPbrAlphaCutoff,\n setPbrAnisotropy,\n setPbrClearCoat,\n setPbrDispersion,\n setPbrEmissive,\n setPbrIridescence,\n setPbrLightmap,\n setPbrMetallicReflectance,\n setPbrSheen,\n setPbrSubsurface,\n setPbrTransmission,\n type PbrMaterialProps,\n type RefractionProps,\n type SubSurfaceProps,\n type Texture2D,\n} from \"@babylonjs/lite\";\nimport { Body1 } from \"@fluentui/react-components\";\nimport { type FunctionComponent, useCallback } from \"react\";\n\nimport { NumberDropdownPropertyLine, StringDropdownPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/dropdownPropertyLine\";\nimport { NumberInputPropertyLine, TextInputPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/inputPropertyLine\";\nimport { SwitchPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/switchPropertyLine\";\nimport { TextPropertyLine } from \"shared-ui-components/fluent/hoc/propertyLines/textPropertyLine\";\nimport { Color3PropertyLine, Color4PropertyLine } from \"shared-ui-components/lite/fluent/hoc/propertyLines/colorPropertyLine\";\nimport { Vector2PropertyLine } from \"shared-ui-components/lite/fluent/hoc/propertyLines/vectorPropertyLine\";\nimport { useObservableState } from \"shared-ui-components/modularTool/hooks/observableHooks\";\n\nimport { ComputedProperty, DerivedProperty } from \"../../../../../components/properties/boundProperty\";\nimport { usePropertyChangedNotifier } from \"../../../../../contexts/propertyContext\";\nimport { useLatestAsyncOperation, type LatestAsyncOperationStates } from \"../useLatestAsyncOperation\";\nimport { GetMaterialOwningScenes } from \"./materialReachability\";\nimport { DirectTextureBinding, type DirectTextureBindingProps } from \"./directTextureBinding\";\nimport { type MaterialAdapterProps } from \"./materialAdapterTypes\";\n\ntype Pbr = PbrMaterialProps;\ntype Tuple2 = readonly [number, number];\ntype Tuple3 = readonly [number, number, number];\ntype Tuple4 = readonly [number, number, number, number];\ntype FieldValue = number | boolean | string | Tuple2 | Tuple3 | Tuple4;\ntype Plan = Readonly<{ mutation: \"A\" | \"U\" | \"R\"; apply: () => unknown | Promise<unknown>; frameGraphParticipationChanged?: boolean }>;\ntype Prepare<T extends FieldValue> = (material: Pbr, value: T) => Plan;\ntype Commit = <T extends FieldValue>(id: string, read: (material: Pbr) => T, value: T, prepare: Prepare<T>, validate?: (value: T) => void) => void;\n\nconst Rebuild = (apply: Plan[\"apply\"], frameGraphParticipationChanged = false): Plan => ({ mutation: \"R\", apply, frameGraphParticipationChanged });\nconst Uniform = (apply: Plan[\"apply\"]): Plan => ({ mutation: \"U\", apply });\n\nfunction Require<T>(value: T | null | undefined, name: string): T {\n if (value == null) {\n throw new Error(`${name} is no longer configured.`);\n }\n return value;\n}\n\nfunction ValidateNumber(value: number, id: string, min?: number, max?: number, integer = false): void {\n if (typeof value !== \"number\" || !Number.isFinite(value) || (integer && !Number.isInteger(value))) {\n throw new TypeError(`Property \"${id}\" requires a finite${integer ? \" integer\" : \"\"} number.`);\n }\n if (min !== undefined && value < min) {\n throw new RangeError(`Property \"${id}\" must be at least ${min}.`);\n }\n if (max !== undefined && value > max) {\n throw new RangeError(`Property \"${id}\" must be at most ${max}.`);\n }\n}\n\nfunction CopyTuple<T extends Tuple2 | Tuple3 | Tuple4>(value: T, length: number, id: string): T {\n if (!Array.isArray(value) || value.length !== length || value.some((component) => typeof component !== \"number\" || !Number.isFinite(component))) {\n throw new TypeError(`Property \"${id}\" requires a ${length}-component finite tuple.`);\n }\n return [...value] as unknown as T;\n}\n\nfunction SameValue(a: FieldValue, b: FieldValue): boolean {\n return Array.isArray(a) && Array.isArray(b) ? a.length === b.length && a.every((value, index) => Object.is(value, b[index])) : Object.is(a, b);\n}\n\nconst TextureSlots = [\n { id: \"pbr.baseColor\", label: \"Base Color Texture\", section: \"textures\", read: (m: Pbr) => m.baseColorTexture },\n { id: \"pbr.normal\", label: \"Normal Texture\", section: \"textures\", read: (m: Pbr) => m.normalTexture },\n { id: \"pbr.orm\", label: \"ORM Texture\", section: \"textures\", read: (m: Pbr) => m.ormTexture },\n { id: \"pbr.occlusion\", label: \"Occlusion Texture\", section: \"textures\", read: (m: Pbr) => m.occlusionTexture },\n { id: \"pbr.emissive\", label: \"Emissive Texture\", section: \"textures\", read: (m: Pbr) => m.emissiveTexture },\n { id: \"pbr.specGloss\", label: \"Specular-Glossiness Texture\", section: \"textures\", read: (m: Pbr) => m.specGlossTexture },\n { id: \"pbr.lightmap\", label: \"Lightmap Texture\", section: \"lightmap\", read: (m: Pbr) => m.lightmapTexture, canClear: false, visible: (m: Pbr) => !!m.lightmapTexture },\n {\n id: \"pbr.metallicReflectance\",\n label: \"Metallic Reflectance Texture\",\n section: \"metallic-reflectance\",\n read: (m: Pbr) => getPbrMetallicReflectance(m)?.texture,\n canClear: false,\n visible: (m: Pbr) => !!getPbrMetallicReflectance(m),\n },\n {\n id: \"pbr.reflectance\",\n label: \"Reflectance Texture\",\n section: \"metallic-reflectance\",\n read: (m: Pbr) => getPbrMetallicReflectance(m)?.reflectanceTexture,\n canClear: false,\n visible: (m: Pbr) => !!getPbrMetallicReflectance(m),\n },\n { id: \"pbr.clearCoat\", label: \"Clear Coat Texture\", section: \"clear-coat\", read: (m: Pbr) => getPbrClearCoat(m)?.texture, visible: (m: Pbr) => !!getPbrClearCoat(m) },\n {\n id: \"pbr.clearCoatRoughness\",\n label: \"Clear Coat Roughness Texture\",\n section: \"clear-coat\",\n read: (m: Pbr) => getPbrClearCoat(m)?.roughnessTexture,\n visible: (m: Pbr) => !!getPbrClearCoat(m),\n },\n {\n id: \"pbr.clearCoatBump\",\n label: \"Clear Coat Bump Texture\",\n section: \"clear-coat\",\n read: (m: Pbr) => getPbrClearCoat(m)?.bumpTexture,\n visible: (m: Pbr) => !!getPbrClearCoat(m),\n },\n { id: \"pbr.sheen\", label: \"Sheen Color Texture\", section: \"sheen\", read: (m: Pbr) => getPbrSheen(m)?.texture, visible: (m: Pbr) => !!getPbrSheen(m) },\n { id: \"pbr.sheenRoughness\", label: \"Sheen Roughness Texture\", section: \"sheen\", read: (m: Pbr) => getPbrSheen(m)?.roughnessTexture, visible: (m: Pbr) => !!getPbrSheen(m) },\n { id: \"pbr.iridescence\", label: \"Iridescence Texture\", section: \"iridescence\", read: (m: Pbr) => getPbrIridescence(m)?.texture, visible: (m: Pbr) => !!getPbrIridescence(m) },\n {\n id: \"pbr.iridescenceThickness\",\n label: \"Iridescence Thickness Texture\",\n section: \"iridescence\",\n read: (m: Pbr) => getPbrIridescence(m)?.thicknessTexture,\n visible: (m: Pbr) => !!getPbrIridescence(m),\n },\n { id: \"pbr.anisotropy\", label: \"Anisotropy Texture\", section: \"anisotropy\", read: (m: Pbr) => getPbrAnisotropy(m)?.texture, visible: (m: Pbr) => !!getPbrAnisotropy(m) },\n {\n id: \"pbr.translucencyColor\",\n label: \"Translucency Color Texture\",\n section: \"subsurface-translucency\",\n read: (m: Pbr) => getPbrSubsurface(m)?.translucency?.colorTexture,\n visible: (m: Pbr) => !!getPbrSubsurface(m)?.translucency,\n },\n {\n id: \"pbr.translucencyIntensity\",\n label: \"Translucency Intensity Texture\",\n section: \"subsurface-translucency\",\n read: (m: Pbr) => getPbrSubsurface(m)?.translucency?.intensityTexture,\n visible: (m: Pbr) => !!getPbrSubsurface(m)?.translucency,\n },\n {\n id: \"pbr.thickness\",\n label: \"Thickness Texture\",\n section: \"subsurface-thickness\",\n read: (m: Pbr) => getPbrSubsurface(m)?.thickness?.texture,\n visible: (m: Pbr) => !!getPbrSubsurface(m)?.thickness,\n },\n {\n id: \"pbr.transmission\",\n label: \"Transmission Texture\",\n section: \"transmission\",\n read: (m: Pbr) => getPbrTransmission(m)?.texture,\n visible: (m: Pbr) => !!getPbrTransmission(m),\n },\n] as const;\n\ntype TextureSlotId = (typeof TextureSlots)[number][\"id\"];\n\nfunction MatchesTexture2d(texture: object): boolean {\n return getTextureMetadata(texture)?.kind === \"2d\";\n}\n\nasync function SetPbrTexture(material: Pbr, id: TextureSlotId, texture: object | null): Promise<void> {\n if (texture && !MatchesTexture2d(texture)) {\n throw new TypeError(`Texture binding \"${id}\" requires a Texture2D value.`);\n }\n const value = (texture ?? undefined) as Texture2D | undefined;\n switch (id) {\n case \"pbr.baseColor\":\n material.baseColorTexture = value;\n return;\n case \"pbr.normal\":\n material.normalTexture = value;\n return;\n case \"pbr.orm\":\n material.ormTexture = value;\n return;\n case \"pbr.occlusion\":\n material.occlusionTexture = value;\n return;\n case \"pbr.emissive\":\n material.emissiveTexture = value;\n return;\n case \"pbr.specGloss\":\n material.specGlossTexture = value;\n return;\n case \"pbr.lightmap\": {\n const lightmap = Require(value, \"PBR lightmap texture\");\n Require(material.lightmapTexture, \"PBR lightmap\");\n const options = {\n level: material.lightmapLevel ?? 1,\n coordIndex: material.lightmapCoordIndex ?? 1,\n useAsShadowmap: material.useLightmapAsShadowmap ?? false,\n gamma: material.gammaLightmap ?? false,\n };\n await enablePbrLightmap();\n setPbrLightmap(material, lightmap, options);\n return;\n }\n case \"pbr.metallicReflectance\":\n await MetallicPlan(material, { texture: Require(value, \"PBR metallic reflectance texture\") }).apply();\n return;\n case \"pbr.reflectance\":\n await MetallicPlan(material, { reflectanceTexture: Require(value, \"PBR reflectance texture\") }).apply();\n return;\n case \"pbr.clearCoat\":\n await ClearCoatPlan(material, { texture: value }).apply();\n return;\n case \"pbr.clearCoatRoughness\":\n await ClearCoatPlan(material, { roughnessTexture: value }).apply();\n return;\n case \"pbr.clearCoatBump\":\n await ClearCoatPlan(material, { bumpTexture: value }).apply();\n return;\n case \"pbr.sheen\":\n await SheenPlan(material, { texture: value }).apply();\n return;\n case \"pbr.sheenRoughness\":\n await SheenPlan(material, { roughnessTexture: value }).apply();\n return;\n case \"pbr.iridescence\":\n await IridescencePlan(material, { texture: value }).apply();\n return;\n case \"pbr.iridescenceThickness\":\n await IridescencePlan(material, { thicknessTexture: value }).apply();\n return;\n case \"pbr.anisotropy\":\n await AnisotropyPlan(material, { texture: value }).apply();\n return;\n case \"pbr.translucencyColor\":\n await SubsurfacePlan(material, \"translucency\", { colorTexture: value }).apply();\n return;\n case \"pbr.translucencyIntensity\":\n await SubsurfacePlan(material, \"translucency\", { intensityTexture: value }).apply();\n return;\n case \"pbr.thickness\":\n await SubsurfacePlan(material, \"thickness\", { texture: value }).apply();\n return;\n case \"pbr.transmission\":\n await TransmissionPlan(material, { texture: value }).apply();\n return;\n }\n}\n\nconst StencilCompareOptions = [\n { value: \"never\", label: \"Never\" },\n { value: \"less\", label: \"Less\" },\n { value: \"equal\", label: \"Equal\" },\n { value: \"less-equal\", label: \"Less or Equal\" },\n { value: \"greater\", label: \"Greater\" },\n { value: \"not-equal\", label: \"Not Equal\" },\n { value: \"greater-equal\", label: \"Greater or Equal\" },\n { value: \"always\", label: \"Always\" },\n];\nconst StencilOperationOptions = [\n { value: \"keep\", label: \"Keep\" },\n { value: \"zero\", label: \"Zero\" },\n { value: \"replace\", label: \"Replace\" },\n { value: \"invert\", label: \"Invert\" },\n { value: \"increment-clamp\", label: \"Increment Clamp\" },\n { value: \"decrement-clamp\", label: \"Decrement Clamp\" },\n { value: \"increment-wrap\", label: \"Increment Wrap\" },\n { value: \"decrement-wrap\", label: \"Decrement Wrap\" },\n];\nconst CoordinatesOptions = [\n { value: 0, label: \"UV1\" },\n { value: 1, label: \"UV2\" },\n];\n\ntype RowProps = Readonly<{\n target: Pbr;\n commit: Commit;\n operations: LatestAsyncOperationStates;\n}>;\n\nconst PbrRows: FunctionComponent<RowProps & { section: MaterialAdapterProps[\"section\"] }> = (props) => {\n const { target, commit, operations, section } = props;\n const row = (id: string, label: string, control: React.ReactNode) => {\n const operation = operations[id];\n return (\n <div key={id} aria-busy={operation?.pending}>\n {control}\n {operation?.pending ? <Body1 role=\"status\">{`Applying ${label}…`}</Body1> : undefined}\n {operation?.error ? <Body1 role=\"alert\">{operation.error}</Body1> : undefined}\n </div>\n );\n };\n const common = (id: string, label: string) => ({\n label,\n uniqueId: id,\n disabled: operations[id]?.pending,\n description: operations[id]?.error ? `Error: ${operations[id].error}` : undefined,\n });\n const number = (id: string, label: string, read: (material: Pbr) => number, prepare: Prepare<number>, min?: number, max?: number, integer = false) =>\n row(\n id,\n label,\n <DerivedProperty\n component={NumberInputPropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) => commit(id, read, value, prepare, (next) => ValidateNumber(next, id, min, max, integer))}\n {...common(id, label)}\n min={min}\n max={max}\n step={integer ? 1 : undefined}\n />\n );\n const toggle = (id: string, label: string, read: (material: Pbr) => boolean, prepare: Prepare<boolean>) =>\n row(\n id,\n label,\n <DerivedProperty\n component={SwitchPropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) =>\n commit(id, read, value, prepare, (next) => {\n if (typeof next !== \"boolean\") {\n throw new TypeError(`Property \"${id}\" requires a boolean.`);\n }\n })\n }\n {...common(id, label)}\n />\n );\n const color3 = (id: string, label: string, read: (material: Pbr) => Tuple3, prepare: Prepare<Tuple3>) =>\n row(\n id,\n label,\n <DerivedProperty\n component={Color3PropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) => commit(id, read, (\"r\" in value ? [value.r, value.g, value.b] : value) as Tuple3, prepare, (next) => CopyTuple(next, 3, id))}\n {...common(id, label)}\n isLinearMode\n />\n );\n const color4 = (id: string, label: string, read: (material: Pbr) => Tuple4, prepare: Prepare<Tuple4>) =>\n row(\n id,\n label,\n <DerivedProperty\n component={Color4PropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) => commit(id, read, (\"r\" in value ? [value.r, value.g, value.b, value.a] : value) as Tuple4, prepare, (next) => CopyTuple(next, 4, id))}\n {...common(id, label)}\n isLinearMode\n />\n );\n const vector2 = (id: string, label: string, read: (material: Pbr) => Tuple2, prepare: Prepare<Tuple2>) =>\n row(\n id,\n label,\n <DerivedProperty\n component={Vector2PropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) => commit(id, read, (\"x\" in value ? [value.x, value.y] : value) as Tuple2, prepare, (next) => CopyTuple(next, 2, id))}\n {...common(id, label)}\n />\n );\n const choice = (id: string, label: string, read: (material: Pbr) => number, prepare: Prepare<number>) =>\n row(\n id,\n label,\n <DerivedProperty\n component={NumberDropdownPropertyLine}\n target={target}\n getValue={read}\n setValue={(_, value) =>\n commit(id, read, value, prepare, (next) => {\n if (!CoordinatesOptions.some((option) => option.value === next)) {\n throw new RangeError(`Property \"${id}\" does not accept enum value \"${next}\".`);\n }\n })\n }\n {...common(id, label)}\n options={CoordinatesOptions}\n />\n );\n const stencil = (id: string, label: string, key: \"compare\" | \"passOp\" | \"failOp\" | \"depthFailOp\", options: typeof StencilCompareOptions) =>\n target.stencil\n ? row(\n id,\n label,\n <DerivedProperty\n component={StringDropdownPropertyLine}\n target={target}\n getValue={(material) => material.stencil?.[key] ?? (key === \"compare\" ? \"always\" : \"keep\")}\n setValue={(_, value) =>\n commit(\n id,\n (material) => material.stencil?.[key] ?? (key === \"compare\" ? \"always\" : \"keep\"),\n value,\n (material, next) => {\n const current = Require(material.stencil, \"PBR stencil\");\n return Rebuild(() => {\n enableMaterialStencil();\n material.stencil = { ...current, [key]: next };\n });\n },\n (next) => {\n if (!options.some((option) => option.value === next)) {\n throw new RangeError(`Property \"${id}\" does not accept enum value \"${next}\".`);\n }\n }\n )\n }\n {...common(id, label)}\n options={options}\n />\n )\n : row(id, label, <ComputedProperty component={TextPropertyLine} target={target} getValue={() => \"Not configured\"} label={label} uniqueId={id} />);\n const stencilMask = (id: string, label: string, key: \"readMask\" | \"writeMask\") =>\n target.stencil\n ? number(\n id,\n label,\n (material) => material.stencil?.[key] ?? 0xff,\n (material, value) => {\n const current = Require(material.stencil, \"PBR stencil\");\n return Rebuild(() => {\n enableMaterialStencil();\n material.stencil = { ...current, [key]: value };\n });\n },\n 0,\n 0xffffffff,\n true\n )\n : row(id, label, <ComputedProperty component={TextPropertyLine} target={target} getValue={() => \"Not configured\"} label={label} uniqueId={id} />);\n const readOnly = (id: string, label: string, read: (material: Pbr) => FieldValue, reason: string) =>\n row(\n id,\n label,\n <ComputedProperty\n component={TextPropertyLine}\n target={target}\n getValue={(material) => {\n const value = read(material);\n return Array.isArray(value) ? `[${value.join(\", \")}]` : String(value);\n }}\n label={label}\n uniqueId={id}\n description={`${reason} is a one-way public mode and has no reversible setter.`}\n />\n );\n\n switch (section) {\n case \"general\":\n return (\n <>\n {row(\n \"material.name\",\n \"Name\",\n <DerivedProperty\n component={TextInputPropertyLine}\n target={target}\n getValue={(m) => m.name ?? \"\"}\n setValue={(_, value) =>\n commit(\n \"material.name\",\n (m) => m.name ?? \"\",\n value,\n (m, next) => ({ mutation: \"A\", apply: () => (m.name = next) }),\n (next) => {\n if (typeof next !== \"string\") {\n throw new TypeError('Property \"material.name\" requires a string.');\n }\n }\n )\n }\n {...common(\"material.name\", \"Name\")}\n />\n )}\n {toggle(\n \"pbr.doubleSided\",\n \"Double Sided\",\n (m) => m.doubleSided ?? false,\n (m, v) => Rebuild(() => (m.doubleSided = v))\n )}\n {toggle(\n \"pbr.alphaBlend\",\n \"Alpha Blend\",\n (m) => m.alphaBlend ?? false,\n (m, v) => Rebuild(() => (m.alphaBlend = v))\n )}\n {toggle(\n \"pbr.enableSpecularAA\",\n \"Specular Anti-Aliasing\",\n (m) => m.enableSpecularAA ?? false,\n (m, v) => Rebuild(() => (m.enableSpecularAA = v))\n )}\n </>\n );\n case \"transparency\":\n return (\n <>\n {number(\n \"pbr.alpha\",\n \"Alpha\",\n (m) => m.alpha ?? 1,\n (m, v) => {\n const cutoff = getPbrAlphaCutoff(m) ?? 0;\n return ((m.alpha ?? 1) < 1 && cutoff <= 0) === (v < 1 && cutoff <= 0) ? Uniform(() => (m.alpha = v)) : Rebuild(() => (m.alpha = v));\n },\n 0,\n 1\n )}\n {getPbrAlphaCutoff(target) === undefined\n ? row(\n \"pbr.alphaCutOff\",\n \"Alpha Cutoff\",\n <ComputedProperty component={TextPropertyLine} target={target} getValue={() => \"Not configured\"} label=\"Alpha Cutoff\" uniqueId=\"pbr.alphaCutOff\" />\n )\n : number(\n \"pbr.alphaCutOff\",\n \"Alpha Cutoff\",\n (m) => getPbrAlphaCutoff(m) ?? 0,\n (m, v) => ((getPbrAlphaCutoff(m) ?? 0) > 0 === v > 0 ? Uniform(() => setPbrAlphaCutoff(m, v)) : Rebuild(() => setPbrAlphaCutoff(m, v)))\n )}\n </>\n );\n case \"lighting-colors\":\n return (\n <>\n {target.baseColorFactor\n ? color4(\n \"pbr.baseColorFactor\",\n \"Base Color Factor\",\n (m) => m.baseColorFactor ?? [1, 1, 1, 1],\n (m, v) => (m.baseColorFactor === undefined ? Rebuild(() => (m.baseColorFactor = [...v])) : Uniform(() => (m.baseColorFactor = [...v])))\n )\n : row(\n \"pbr.baseColorFactor\",\n \"Base Color Factor\",\n <ComputedProperty\n component={TextPropertyLine}\n target={target}\n getValue={() => \"Not configured\"}\n label=\"Base Color Factor\"\n uniqueId=\"pbr.baseColorFactor\"\n />\n )}\n {getPbrEmissiveColor(target)\n ? color3(\n \"pbr.emissiveColor\",\n \"Emissive Color\",\n (m) => getPbrEmissiveColor(m) ?? [0, 0, 0],\n (m, v) => (getPbrEmissiveColor(m) === undefined ? Rebuild(() => setPbrEmissive(m, [...v])) : Uniform(() => setPbrEmissive(m, [...v])))\n )\n : row(\n \"pbr.emissiveColor\",\n \"Emissive Color\",\n <ComputedProperty\n component={TextPropertyLine}\n target={target}\n getValue={() => \"Not configured\"}\n label=\"Emissive Color\"\n uniqueId=\"pbr.emissiveColor\"\n />\n )}\n {number(\n \"pbr.environmentIntensity\",\n \"Environment Intensity\",\n (m) => m.environmentIntensity ?? 1,\n (m, v) => Uniform(() => (m.environmentIntensity = v))\n )}\n {number(\n \"pbr.directIntensity\",\n \"Direct Intensity\",\n (m) => m.directIntensity ?? 1,\n (m, v) => Uniform(() => (m.directIntensity = v))\n )}\n {number(\n \"pbr.reflectance\",\n \"Reflectance\",\n (m) => m.reflectance ?? 0.04,\n (m, v) => Uniform(() => (m.reflectance = v))\n )}\n {number(\n \"pbr.metallicFactor\",\n \"Metallic Factor\",\n (m) => m.metallicFactor ?? 1,\n (m, v) => Uniform(() => (m.metallicFactor = v))\n )}\n {number(\n \"pbr.roughnessFactor\",\n \"Roughness Factor\",\n (m) => m.roughnessFactor ?? 1,\n (m, v) => Uniform(() => (m.roughnessFactor = v))\n )}\n {number(\n \"pbr.normalTextureScale\",\n \"Normal Texture Scale\",\n (m) => m.normalTextureScale ?? 1,\n (m, v) => Uniform(() => (m.normalTextureScale = v))\n )}\n {toggle(\n \"pbr.usePhysicalLightFalloff\",\n \"Use Physical Light Falloff\",\n (m) => m.usePhysicalLightFalloff ?? true,\n (m, v) => Uniform(() => (m.usePhysicalLightFalloff = v))\n )}\n </>\n );\n case \"occlusion\":\n return (\n <>\n {number(\n \"pbr.occlusionStrength\",\n \"Occlusion Strength\",\n (m) => m.occlusionStrength ?? 1,\n (m, v) => Uniform(() => (m.occlusionStrength = v)),\n 0,\n 1\n )}\n {row(\n \"pbr.occlusionTexCoord\",\n \"Occlusion Coordinates\",\n <ComputedProperty\n component={TextPropertyLine}\n target={target}\n getValue={(m) => String(m.occlusionTexCoord ?? 0)}\n label=\"Occlusion Coordinates\"\n uniqueId=\"pbr.occlusionTexCoord\"\n description=\"Changing the occlusion UV set requires a public setter that maintains the UV2 claim.\"\n />\n )}\n </>\n );\n case \"lightmap\":\n if (!target.lightmapTexture) {\n return null;\n }\n return (\n <>\n {number(\n \"pbr.lightmapLevel\",\n \"Level\",\n (m) => m.lightmapLevel ?? 1,\n (m, v) => LightmapPlan(m, { level: v })\n )}\n {choice(\n \"pbr.lightmapCoordIndex\",\n \"Coordinates\",\n (m) => m.lightmapCoordIndex ?? 1,\n (m, v) => LightmapPlan(m, { coordIndex: v as 0 | 1 })\n )}\n {toggle(\n \"pbr.useLightmapAsShadowmap\",\n \"Use as Shadowmap\",\n (m) => m.useLightmapAsShadowmap ?? false,\n (m, v) => LightmapPlan(m, { useAsShadowmap: v })\n )}\n {toggle(\n \"pbr.gammaLightmap\",\n \"Gamma Decode\",\n (m) => m.gammaLightmap ?? false,\n (m, v) => LightmapPlan(m, { gamma: v })\n )}\n </>\n );\n case \"metallic-reflectance\":\n if (!getPbrMetallicReflectance(target)) {\n return null;\n }\n return (\n <>\n {color3(\n \"pbr.metallicReflectanceColor\",\n \"Metallic Reflectance Color\",\n (m) => getPbrMetallicReflectance(m)?.color ?? [1, 1, 1],\n (m, v) => MetallicPlan(m, { color: [...v] })\n )}\n {number(\n \"pbr.metallicF0Factor\",\n \"Metallic F0 Factor\",\n (m) => getPbrMetallicReflectance(m)?.f0Factor ?? 1,\n (m, v) => MetallicPlan(m, { f0Factor: v })\n )}\n {number(\n \"pbr.specularWeight\",\n \"Specular Weight\",\n (m) => getPbrMetallicReflectance(m)?.specularWeight ?? getPbrMetallicReflectance(m)?.f0Factor ?? 1,\n (m, v) => MetallicPlan(m, { specularWeight: v })\n )}\n {toggle(\n \"pbr.useOnlyMetallicFromTexture\",\n \"Use Only Metallic From Texture\",\n (m) => getPbrMetallicReflectance(m)?.useOnlyMetallicFromTexture ?? false,\n (m, v) => MetallicPlan(m, { useOnlyMetallicFromTexture: v })\n )}\n </>\n );\n case \"clear-coat\":\n if (!getPbrClearCoat(target)) {\n return null;\n }\n return (\n <>\n {toggle(\n \"pbr.clearCoat.enabled\",\n \"Enabled\",\n (m) => getPbrClearCoat(m)?.isEnabled ?? false,\n (m, v) => ClearCoatPlan(m, { isEnabled: v })\n )}\n {number(\n \"pbr.clearCoat.intensity\",\n \"Intensity\",\n (m) => getPbrClearCoat(m)?.intensity ?? 1,\n (m, v) => ClearCoatPlan(m, { intensity: v }),\n 0,\n 1\n )}\n {number(\n \"pbr.clearCoat.roughness\",\n \"Roughness\",\n (m) => getPbrClearCoat(m)?.roughness ?? 0,\n (m, v) => ClearCoatPlan(m, { roughness: v }),\n 0,\n 1\n )}\n {number(\n \"pbr.clearCoat.indexOfRefraction\",\n \"Index of Refraction\",\n (m) => getPbrClearCoat(m)?.indexOfRefraction ?? 1.5,\n (m, v) => ClearCoatPlan(m, { indexOfRefraction: v })\n )}\n {toggle(\n \"pbr.clearCoat.useF0Remap\",\n \"F0 Remap\",\n (m) => getPbrClearCoat(m)?.useF0Remap ?? true,\n (m, v) => ClearCoatPlan(m, { useF0Remap: v })\n )}\n {number(\n \"pbr.clearCoat.bumpTextureScale\",\n \"Bump Texture Scale\",\n (m) => getPbrClearCoat(m)?.bumpTextureScale ?? 1,\n (m, v) => ClearCoatPlan(m, { bumpTextureScale: v })\n )}\n </>\n );\n case \"sheen\":\n if (!getPbrSheen(target)) {\n return null;\n }\n return (\n <>\n {toggle(\n \"pbr.sheen.enabled\",\n \"Enabled\",\n (m) => getPbrSheen(m)?.isEnabled ?? false,\n (m, v) => SheenPlan(m, { isEnabled: v })\n )}\n {color3(\n \"pbr.sheen.color\",\n \"Color\",\n (m) => getPbrSheen(m)?.color ?? [1, 1, 1],\n (m, v) => SheenPlan(m, { color: [...v] })\n )}\n {number(\n \"pbr.sheen.roughness\",\n \"Roughness\",\n (m) => getPbrSheen(m)?.roughness ?? 0,\n (m, v) => SheenPlan(m, { roughness: v }),\n 0,\n 1\n )}\n {number(\n \"pbr.sheen.intensity\",\n \"Intensity\",\n (m) => getPbrSheen(m)?.intensity ?? 1,\n (m, v) => SheenPlan(m, { intensity: v }),\n 0,\n 1\n )}\n {toggle(\n \"pbr.sheen.albedoScaling\",\n \"Albedo Scaling\",\n (m) => getPbrSheen(m)?.albedoScaling ?? false,\n (m, v) => SheenPlan(m, { albedoScaling: v })\n )}\n </>\n );\n case \"iridescence\":\n if (!getPbrIridescence(target)) {\n return null;\n }\n return (\n <>\n {toggle(\n \"pbr.iridescence.enabled\",\n \"Enabled\",\n (m) => getPbrIridescence(m)?.isEnabled ?? false,\n (m, v) => IridescencePlan(m, { isEnabled: v })\n )}\n {number(\n \"pbr.iridescence.intensity\",\n \"Intensity\",\n (m) => getPbrIridescence(m)?.intensity ?? 1,\n (m, v) => IridescencePlan(m, { intensity: v }),\n 0,\n 1\n )}\n {number(\n \"pbr.iridescence.indexOfRefraction\",\n \"Index of Refraction\",\n (m) => getPbrIridescence(m)?.indexOfRefraction ?? 1.3,\n (m, v) => IridescencePlan(m, { indexOfRefraction: v })\n )}\n {number(\n \"pbr.iridescence.minimumThickness\",\n \"Minimum Thickness\",\n (m) => getPbrIridescence(m)?.minimumThickness ?? 100,\n (m, v) => IridescencePlan(m, { minimumThickness: v })\n )}\n {number(\n \"pbr.iridescence.maximumThickness\",\n \"Maximum Thickness\",\n (m) => getPbrIridescence(m)?.maximumThickness ?? 400,\n (m, v) => IridescencePlan(m, { maximumThickness: v })\n )}\n </>\n );\n case \"anisotropy\":\n if (!getPbrAnisotropy(target)) {\n return null;\n }\n return (\n <>\n {toggle(\n \"pbr.anisotropy.enabled\",\n \"Enabled\",\n (m) => getPbrAnisotropy(m)?.isEnabled ?? false,\n (m, v) => AnisotropyPlan(m, { isEnabled: v })\n )}\n {number(\n \"pbr.anisotropy.intensity\",\n \"Intensity\",\n (m) => getPbrAnisotropy(m)?.intensity ?? 1,\n (m, v) => AnisotropyPlan(m, { intensity: v }),\n 0,\n 1\n )}\n {vector2(\n \"pbr.anisotropy.direction\",\n \"Direction\",\n (m) => getPbrAnisotropy(m)?.direction ?? [1, 0],\n (m, v) => AnisotropyPlan(m, { direction: [...v] })\n )}\n </>\n );\n case \"subsurface-translucency\":\n if (!getPbrSubsurface(target)?.translucency) {\n return null;\n }\n return (\n <>\n {number(\n \"pbr.translucency.intensity\",\n \"Intensity\",\n (m) => getPbrSubsurface(m)?.translucency?.intensity ?? 1,\n (m, v) => SubsurfacePlan(m, \"translucency\", { intensity: v }),\n 0,\n 1\n )}\n {color3(\n \"pbr.translucency.color\",\n \"Color\",\n (m) => getPbrSubsurface(m)?.translucency?.color ?? [1, 1, 1],\n (m, v) => SubsurfacePlan(m, \"translucency\", { color: [...v] })\n )}\n {color3(\n \"pbr.translucency.diffusionDistance\",\n \"Diffusion Distance\",\n (m) => getPbrSubsurface(m)?.translucency?.diffusionDistance ?? [1, 1, 1],\n (m, v) => SubsurfacePlan(m, \"translucency\", { diffusionDistance: [...v] })\n )}\n </>\n );\n case \"subsurface-thickness\":\n if (!getPbrSubsurface(target)?.thickness) {\n return null;\n }\n return (\n <>\n {number(\n \"pbr.thickness.min\",\n \"Minimum\",\n (m) => getPbrSubsurface(m)?.thickness?.min ?? 0,\n (m, v) => SubsurfacePlan(m, \"thickness\", { min: v })\n )}\n {number(\n \"pbr.thickness.max\",\n \"Maximum\",\n (m) => getPbrSubsurface(m)?.thickness?.max ?? 1,\n (m, v) => SubsurfacePlan(m, \"thickness\", { max: v })\n )}\n {toggle(\n \"pbr.thickness.useGlTFChannel\",\n \"Use glTF Channel\",\n (m) => getPbrSubsurface(m)?.thickness?.useGlTFChannel ?? false,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n (m, v) => SubsurfacePlan(m, \"thickness\", { useGlTFChannel: v })\n )}\n </>\n );\n case \"subsurface-tint\":\n if (!getPbrSubsurface(target)?.tint) {\n return null;\n }\n return (\n <>\n {color3(\n \"pbr.tint.color\",\n \"Color\",\n (m) => getPbrSubsurface(m)?.tint?.color ?? [1, 1, 1],\n (m, v) => SubsurfacePlan(m, \"tint\", { color: [...v] })\n )}\n {number(\n \"pbr.tint.atDistance\",\n \"Distance\",\n (m) => getPbrSubsurface(m)?.tint?.atDistance ?? 1,\n (m, v) => SubsurfacePlan(m, \"tint\", { atDistance: v })\n )}\n </>\n );\n case \"transmission\":\n if (!getPbrTransmission(target)) {\n return null;\n }\n return (\n <>\n {number(\n \"pbr.transmission.intensity\",\n \"Intensity\",\n (m) => getPbrTransmission(m)?.intensity ?? 0,\n (m, v) => TransmissionPlan(m, { intensity: v }),\n 0,\n 1\n )}\n {number(\n \"pbr.transmission.indexOfRefraction\",\n \"Index of Refraction\",\n (m) => getPbrTransmission(m)?.indexOfRefraction ?? 1.5,\n (m, v) => TransmissionPlan(m, { indexOfRefraction: v })\n )}\n {toggle(\n \"pbr.transmission.useThicknessAsDepth\",\n \"Use Thickness as Depth\",\n (m) => getPbrTransmission(m)?.useThicknessAsDepth ?? false,\n (m, v) => TransmissionPlan(m, { useThicknessAsDepth: v })\n )}\n {getPbrTransmission(target)?.dispersion !== undefined\n ? number(\n \"pbr.transmission.dispersion\",\n \"Dispersion\",\n (m) => getPbrTransmission(m)?.dispersion ?? 0,\n (m, v) => {\n Require(getPbrTransmission(m)?.dispersion, \"PBR dispersion\");\n return Rebuild(() => setPbrDispersion(m, v));\n }\n )\n : null}\n </>\n );\n case \"special-modes\": {\n const unlit = getPbrUnlit(target);\n const shadowOnly = getShadowOnly(target);\n return (\n <>\n {unlit ? readOnly(\"pbr.mode.unlit\", \"Unlit\", () => true, \"Unlit\") : null}\n {unlit ? readOnly(\"pbr.mode.unlitColor\", \"Unlit Color\", (m) => getPbrUnlit(m) ?? [0, 0, 0], \"Unlit tint\") : null}\n {isPbrGammaAlbedo(target) ? readOnly(\"pbr.mode.gammaAlbedo\", \"Gamma Albedo\", () => true, \"Gamma albedo\") : null}\n {isPbrSkybox(target) ? readOnly(\"pbr.mode.skybox\", \"Skybox\", () => true, \"Skybox\") : null}\n {shadowOnly ? readOnly(\"pbr.mode.shadowOnly\", \"Shadow Only\", () => true, \"Shadow-only\") : null}\n {shadowOnly ? readOnly(\"pbr.mode.shadowOnlyColor\", \"Shadow Color\", (m) => getShadowOnly(m)?.color ?? [0, 0, 0], \"Shadow-only color\") : null}\n {shadowOnly ? readOnly(\"pbr.mode.shadowOnlyOpacity\", \"Shadow Opacity\", (m) => getShadowOnly(m)?.opacity ?? 0, \"Shadow-only opacity\") : null}\n {shadowOnly ? readOnly(\"pbr.mode.shadowOnlyFalloff\", \"Shadow Falloff\", (m) => getShadowOnly(m)?.falloff ?? 0, \"Shadow-only falloff\") : null}\n </>\n );\n }\n case \"stencil\":\n return (\n <>\n {stencil(\"pbr.stencil.compare\", \"Stencil Compare\", \"compare\", StencilCompareOptions)}\n {stencil(\"pbr.stencil.passOp\", \"Stencil Pass Operation\", \"passOp\", StencilOperationOptions)}\n {stencil(\"pbr.stencil.failOp\", \"Stencil Fail Operation\", \"failOp\", StencilOperationOptions)}\n {stencil(\"pbr.stencil.depthFailOp\", \"Stencil Depth Fail Operation\", \"depthFailOp\", StencilOperationOptions)}\n {stencilMask(\"pbr.stencil.readMask\", \"Stencil Read Mask\", \"readMask\")}\n {stencilMask(\"pbr.stencil.writeMask\", \"Stencil Write Mask\", \"writeMask\")}\n </>\n );\n default:\n return null;\n }\n};\n\nfunction LightmapPlan(material: Pbr, patch: { level?: number; coordIndex?: 0 | 1; useAsShadowmap?: boolean; gamma?: boolean }): Plan {\n const texture = Require(material.lightmapTexture, \"PBR lightmap\");\n const options = {\n level: material.lightmapLevel ?? 1,\n coordIndex: material.lightmapCoordIndex ?? 1,\n useAsShadowmap: material.useLightmapAsShadowmap ?? false,\n gamma: material.gammaLightmap ?? false,\n ...patch,\n };\n return Rebuild(async () => {\n await enablePbrLightmap();\n setPbrLightmap(material, texture as Texture2D, options);\n });\n}\n\nfunction MetallicPlan(material: Pbr, patch: Partial<NonNullable<ReturnType<typeof getPbrMetallicReflectance>>>): Plan {\n const current = Require(getPbrMetallicReflectance(material), \"PBR metallic reflectance\");\n return Rebuild(() =>\n setPbrMetallicReflectance(material, {\n color: [...(current.color ?? [1, 1, 1])],\n texture: current.texture,\n reflectanceTexture: current.reflectanceTexture,\n f0Factor: current.f0Factor ?? 1,\n specularWeight: current.specularWeight ?? current.f0Factor ?? 1,\n useOnlyMetallicFromTexture: current.useOnlyMetallicFromTexture ?? false,\n ...patch,\n })\n );\n}\n\nfunction ClearCoatPlan(material: Pbr, patch: Partial<NonNullable<ReturnType<typeof getPbrClearCoat>>>): Plan {\n const current = Require(getPbrClearCoat(material), \"PBR clear coat\");\n return Rebuild(() =>\n setPbrClearCoat(material, {\n isEnabled: current.isEnabled ?? false,\n intensity: current.intensity ?? 1,\n roughness: current.roughness ?? 0,\n indexOfRefraction: current.indexOfRefraction ?? 1.5,\n texture: current.texture,\n roughnessTexture: current.roughnessTexture,\n bumpTexture: current.bumpTexture,\n bumpTextureScale: current.bumpTextureScale ?? 1,\n useF0Remap: current.useF0Remap ?? true,\n ...patch,\n })\n );\n}\n\nfunction SheenPlan(material: Pbr, patch: Partial<NonNullable<ReturnType<typeof getPbrSheen>>>): Plan {\n const current = Require(getPbrSheen(material), \"PBR sheen\");\n return Rebuild(() =>\n setPbrSheen(material, {\n isEnabled: current.isEnabled ?? false,\n color: [...(current.color ?? [1, 1, 1])],\n roughness: current.roughness ?? 0,\n intensity: current.intensity ?? 1,\n texture: current.texture,\n roughnessTexture: current.roughnessTexture,\n albedoScaling: current.albedoScaling ?? false,\n ...patch,\n })\n );\n}\n\nfunction IridescencePlan(material: Pbr, patch: Partial<NonNullable<ReturnType<typeof getPbrIridescence>>>): Plan {\n const current = Require(getPbrIridescence(material), \"PBR iridescence\");\n return Rebuild(() =>\n setPbrIridescence(material, {\n isEnabled: current.isEnabled ?? false,\n intensity: current.intensity ?? 1,\n indexOfRefraction: current.indexOfRefraction ?? 1.3,\n minimumThickness: current.minimumThickness ?? 100,\n maximumThickness: current.maximumThickness ?? 400,\n texture: current.texture,\n thicknessTexture: current.thicknessTexture,\n ...patch,\n })\n );\n}\n\nfunction AnisotropyPlan(material: Pbr, patch: Partial<NonNullable<ReturnType<typeof getPbrAnisotropy>>>): Plan {\n const current = Require(getPbrAnisotropy(material), \"PBR anisotropy\");\n return Rebuild(() =>\n setPbrAnisotropy(material, {\n isEnabled: current.isEnabled ?? false,\n intensity: current.intensity ?? 1,\n direction: [...(current.direction ?? [1, 0])],\n texture: current.texture,\n ...patch,\n })\n );\n}\n\nfunction SubsurfacePlan<K extends \"translucency\" | \"thickness\" | \"tint\">(material: Pbr, key: K, patch: Partial<NonNullable<SubSurfaceProps[K]>>): Plan {\n const current = Require(getPbrSubsurface(material), \"PBR subsurface\");\n Require(current[key], `PBR ${key}`);\n const subsurface = {\n translucency: current.translucency\n ? {\n intensity: current.translucency.intensity ?? 1,\n color: [...(current.translucency.color ?? [1, 1, 1])],\n colorTexture: current.translucency.colorTexture,\n intensityTexture: current.translucency.intensityTexture,\n diffusionDistance: [...(current.translucency.diffusionDistance ?? [1, 1, 1])],\n }\n : undefined,\n scattering: current.scattering ? { ...current.scattering } : undefined,\n thickness: current.thickness\n ? {\n texture: current.thickness.texture,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n useGlTFChannel: current.thickness.useGlTFChannel ?? false,\n min: current.thickness.min ?? 0,\n max: current.thickness.max ?? 1,\n }\n : undefined,\n tint: current.tint ? { color: [...(current.tint.color ?? [1, 1, 1])], atDistance: current.tint.atDistance } : undefined,\n refraction: current.refraction ? { ...current.refraction } : undefined,\n };\n Object.assign(subsurface[key]!, patch);\n return Rebuild(() => setPbrSubsurface(material, subsurface as SubSurfaceProps));\n}\n\nfunction TransmissionPlan(material: Pbr, patch: Partial<RefractionProps>): Plan {\n const current = Require(getPbrTransmission(material), \"PBR transmission\");\n const next = {\n intensity: current.intensity ?? 0,\n texture: current.texture,\n indexOfRefraction: current.indexOfRefraction ?? 1.5,\n useThicknessAsDepth: current.useThicknessAsDepth ?? false,\n dispersion: current.dispersion,\n ...patch,\n };\n const active = (current.intensity ?? 0) > 0;\n return Rebuild(() => setPbrTransmission(material, next), active !== next.intensity > 0);\n}\n\n/**\n * Renders PBR property rows and texture bindings directly from Lite.\n * @param props The selected PBR material, section, and instance services.\n * @returns The PBR property rows for the requested section.\n */\nexport const PbrMaterialAdapter: FunctionComponent<MaterialAdapterProps> = (props) => {\n const { material, section, resourceIndexService, selectionService } = props;\n const getSource = () => {\n try {\n return getMaterialSource(material);\n } catch {\n return undefined;\n }\n };\n const source = getSource();\n const getRecord = useCallback(() => (source && !resourceIndexService.isDisposed ? resourceIndexService.getMaterialRecord(source) : undefined), [source, resourceIndexService]);\n const record = useObservableState(getRecord, resourceIndexService.onChanged);\n const isDisposed = useCallback(() => resourceIndexService.isDisposed, [resourceIndexService]);\n const [operations, runLatestOperation] = useLatestAsyncOperation(material, [resourceIndexService.onDisposed, selectionService.onSelectedEntityChanged], isDisposed);\n const notifyPropertyChanged = usePropertyChangedNotifier();\n const target = material as Pbr;\n const commit: Commit = (id, read, value, prepare, validate) => {\n runLatestOperation({\n id,\n operationAsync: async () => {\n validate?.(value);\n const current = getRecord();\n if (!current || current.family !== \"pbr\" || !source) {\n throw new Error(\"This material is no longer available in an inspected scene.\");\n }\n const scenes = GetMaterialOwningScenes(current, material);\n if (!scenes.length) {\n throw new Error(\"This material is no longer reachable from an inspected scene.\");\n }\n const oldValue = read(target);\n const plan = prepare(target, value);\n if (SameValue(oldValue, value)) {\n return { changed: false, oldValue };\n }\n await plan.apply();\n if (plan.mutation === \"U\") {\n markMaterialUboDirty(target);\n } else if (plan.mutation === \"R\") {\n await Promise.all(\n scenes.map(async (scene) => {\n await rebuildMaterial(scene, target, { rebuildViews: true, rebuildFrameGraph: plan.frameGraphParticipationChanged === true });\n })\n );\n }\n return { changed: true, oldValue };\n },\n onSuccess: ({ changed, oldValue }) => {\n if (changed && source) {\n const key = id === \"material.name\" ? \"name\" : id.slice(id.lastIndexOf(\".\") + 1);\n notifyPropertyChanged(material, Reflect.has(material, key) ? key : id, oldValue, value);\n }\n resourceIndexService.refresh();\n },\n getErrorMessage: (error) => (error instanceof Error ? error.message : \"The material change failed.\"),\n });\n };\n const commitTexture: DirectTextureBindingProps[\"commit\"] = (change) => {\n const { id, oldValue, newValue, apply, invalidate, rebuildFrameGraph } = change;\n runLatestOperation({\n id,\n operationAsync: async () => {\n const current = getRecord();\n if (!current || current.family !== \"pbr\" || !source) {\n throw new Error(\"This material is no longer available in an inspected scene.\");\n }\n const scenes = GetMaterialOwningScenes(current, material);\n if (!scenes.length) {\n throw new Error(\"This material is no longer reachable from an inspected scene.\");\n }\n if (SameValue(oldValue as FieldValue, newValue as FieldValue)) {\n return false;\n }\n await apply();\n if (invalidate === \"ubo\") {\n markMaterialUboDirty(target);\n } else if (invalidate === \"rebuild\") {\n await Promise.all(\n scenes.map(async (scene) => {\n await rebuildMaterial(scene, target, { rebuildViews: true, rebuildFrameGraph: rebuildFrameGraph === true });\n })\n );\n }\n return true;\n },\n onSuccess: (changed) => {\n if (changed && source) {\n const key = `${id.slice(\"pbr.\".length)}Texture`;\n notifyPropertyChanged(material, id.startsWith(\"pbr.\") && Reflect.has(material, key) ? key : id, oldValue, newValue);\n }\n resourceIndexService.refresh();\n },\n getErrorMessage: (error) => (error instanceof Error ? error.message : \"The material texture change failed.\"),\n });\n };\n\n if (!record || !source) {\n return <TextPropertyLine label=\"Error\" value=\"This material is no longer available in an inspected scene.\" />;\n }\n if (record.family !== \"pbr\" || getMaterialFamily(source) !== \"pbr\") {\n return <TextPropertyLine label=\"Error\" value={`The material family changed from pbr to ${record.family ?? \"unknown\"}.`} />;\n }\n\n return (\n <>\n {section === \"general\" ? (\n <>\n <TextPropertyLine label=\"Family\" value=\"pbr\" />\n <TextPropertyLine label=\"Selection\" value={isMaterialView(material) ? \"MaterialView\" : \"Material\"} />\n {isMaterialView(material) ? <TextPropertyLine label=\"Source\" value={record.displayName} /> : undefined}\n </>\n ) : undefined}\n <PbrRows target={target} section={section} operations={operations} commit={commit} />\n {TextureSlots.filter((slot) => slot.section === section && (!(\"visible\" in slot) || slot.visible(target))).map((slot) => {\n const value = slot.read(target);\n return (\n <DirectTextureBinding\n key={slot.id}\n id={slot.id}\n label={slot.label}\n record={record}\n resourceIndexService={resourceIndexService}\n selectionService={selectionService}\n operations={operations}\n commit={commitTexture}\n value={value}\n read={() => slot.read(target)}\n acceptedKinds={[\"2d\"]}\n canClear={!(\"canClear\" in slot) || slot.canClear}\n invalidate=\"rebuild\"\n apply={async (texture) => {\n if ((slot.read(target) ?? null) !== (value ?? null)) {\n throw new Error(`Texture binding \"${slot.id}\" is stale.`);\n }\n await SetPbrTexture(target, slot.id, texture);\n }}\n />\n );\n })}\n </>\n );\n};\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
|
+
import { type IPropertiesService } from "../../../../services/panes/properties/propertiesService";
|
|
3
|
+
import { type ISelectionService } from "../../../../services/selectionService";
|
|
4
|
+
import { type IEngineContext } from "../../../engineContext";
|
|
5
|
+
export declare const AnimationPropertiesServiceDefinition: ServiceDefinition<[], [IPropertiesService, IEngineContext, ISelectionService]>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
2
|
import { type IPropertiesService } from "../../../../services/panes/properties/propertiesService";
|
|
3
|
-
|
|
3
|
+
import { type ISelectionService } from "../../../../services/selectionService";
|
|
4
|
+
import { type ISceneResourceIndexService } from "../scene/sceneResourceIndexService";
|
|
5
|
+
export declare const MaterialPropertiesServiceDefinition: ServiceDefinition<[], [IPropertiesService, ISceneResourceIndexService, ISelectionService]>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type ISelectionService } from "../../../../../services/selectionService";
|
|
3
|
+
import { type ISceneResourceIndexService } from "../../scene/sceneResourceIndexService";
|
|
4
|
+
import { type IMaterialResourceRecord } from "../../scene/sceneResources";
|
|
5
|
+
import { type useDirectMaterialOperations } from "./useDirectMaterialOperations";
|
|
6
|
+
type DirectOperations = ReturnType<typeof useDirectMaterialOperations>;
|
|
7
|
+
export type DirectTextureBindingProps = Readonly<{
|
|
8
|
+
record: IMaterialResourceRecord;
|
|
9
|
+
resourceIndexService: ISceneResourceIndexService;
|
|
10
|
+
selectionService: ISelectionService;
|
|
11
|
+
operations: DirectOperations["operations"];
|
|
12
|
+
commit: DirectOperations["commit"];
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
value: object | null | undefined;
|
|
16
|
+
read: () => object | null | undefined;
|
|
17
|
+
acceptedKinds: readonly string[];
|
|
18
|
+
sampleCategory?: "float" | "depth" | "float-or-depth";
|
|
19
|
+
canClear?: boolean;
|
|
20
|
+
invalidate: "rebuild" | "owned";
|
|
21
|
+
apply: (texture: object | null) => void | Promise<void>;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Connects one family-owned Lite texture slot to the runtime-neutral directional control.
|
|
25
|
+
* @param props The slot getter result, supported directions, and Inspector-owned services.
|
|
26
|
+
* @returns The navigable texture binding row.
|
|
27
|
+
*/
|
|
28
|
+
export declare const DirectTextureBinding: FunctionComponent<DirectTextureBindingProps>;
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
export type DynamicFieldType = "number" | "vec2" | "vec3" | "vec4" | "mat4";
|
|
3
|
+
export type DynamicFieldValue = number | readonly number[];
|
|
4
|
+
type DynamicFieldProps = Readonly<{
|
|
5
|
+
target: object;
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
type: DynamicFieldType;
|
|
9
|
+
read: () => DynamicFieldValue | undefined;
|
|
10
|
+
write: (value: DynamicFieldValue) => void;
|
|
11
|
+
unavailable: string;
|
|
12
|
+
pending?: boolean;
|
|
13
|
+
error?: string;
|
|
14
|
+
integer?: boolean;
|
|
15
|
+
min?: number;
|
|
16
|
+
max?: number;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Displays a discovered scalar, vector, or matrix input with a guarded write callback.
|
|
20
|
+
* @param props The runtime value reader, writer, constraints, and row status.
|
|
21
|
+
* @returns An editable property line or an unavailable read-only fallback.
|
|
22
|
+
*/
|
|
23
|
+
export declare const DynamicMaterialField: FunctionComponent<DynamicFieldProps>;
|
|
24
|
+
/**
|
|
25
|
+
* Validates a discovered numeric input before sending it to the Lite setter.
|
|
26
|
+
* @param id The property row identifier.
|
|
27
|
+
* @param value The proposed scalar or tuple.
|
|
28
|
+
* @param length The expected tuple length, or one for a scalar.
|
|
29
|
+
* @param integer Whether the scalar must be an integer.
|
|
30
|
+
* @param min The optional scalar lower bound.
|
|
31
|
+
* @param max The optional scalar upper bound.
|
|
32
|
+
* @returns A detached scalar or array suitable for the Lite setter.
|
|
33
|
+
*/
|
|
34
|
+
export declare function ValidateDynamicValue(id: string, value: DynamicFieldValue, length: number, integer?: boolean, min?: number, max?: number): number | number[];
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Material } from "@babylonjs/lite";
|
|
2
|
+
import { type ISelectionService } from "../../../../../services/selectionService";
|
|
3
|
+
import { type ISceneResourceIndexService } from "../../scene/sceneResourceIndexService";
|
|
4
|
+
export type MaterialSection = "general" | "transparency" | "lighting-colors" | "textures" | "texture-settings" | "transform" | "occlusion" | "lightmap" | "metallic-reflectance" | "clear-coat" | "sheen" | "iridescence" | "anisotropy" | "subsurface-translucency" | "subsurface-thickness" | "subsurface-tint" | "transmission" | "special-modes" | "inputs" | "configuration" | "stencil";
|
|
5
|
+
/** Props shared by each lazily loaded Lite material family adapter. */
|
|
6
|
+
export type MaterialAdapterProps = Readonly<{
|
|
7
|
+
material: Material;
|
|
8
|
+
section: MaterialSection;
|
|
9
|
+
resourceIndexService: ISceneResourceIndexService;
|
|
10
|
+
selectionService: ISelectionService;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Material, type SceneContext } from "@babylonjs/lite";
|
|
2
|
+
import { type IMaterialResourceRecord } from "../../scene/sceneResources";
|
|
3
|
+
/**
|
|
4
|
+
* Returns scenes that still contain the selected material, rather than just another view of its source.
|
|
5
|
+
* @param record The indexed source record.
|
|
6
|
+
* @param material The selected source or view.
|
|
7
|
+
* @returns Scenes with a live mesh referencing the selected material.
|
|
8
|
+
*/
|
|
9
|
+
export declare function GetMaterialOwningScenes(record: IMaterialResourceRecord, material: Material): readonly SceneContext[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type MaterialAdapterProps } from "./materialAdapterTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Displays sorted Node material properties and texture bindings directly.
|
|
5
|
+
* @param props The selected material section and instance services.
|
|
6
|
+
* @returns Node material property content.
|
|
7
|
+
*/
|
|
8
|
+
export declare const NodeMaterialAdapter: FunctionComponent<MaterialAdapterProps>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type MaterialAdapterProps } from "./materialAdapterTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Renders PBR property rows and texture bindings directly from Lite.
|
|
5
|
+
* @param props The selected PBR material, section, and instance services.
|
|
6
|
+
* @returns The PBR property rows for the requested section.
|
|
7
|
+
*/
|
|
8
|
+
export declare const PbrMaterialAdapter: FunctionComponent<MaterialAdapterProps>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type MaterialAdapterProps } from "./materialAdapterTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Displays Shader material properties, sampler bindings, and configuration directly.
|
|
5
|
+
* @param props The selected material section and instance services.
|
|
6
|
+
* @returns Shader material property content.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ShaderMaterialAdapter: FunctionComponent<MaterialAdapterProps>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type MaterialAdapterProps } from "./materialAdapterTypes";
|
|
3
|
+
/**
|
|
4
|
+
* Lazily loaded Standard material section properties.
|
|
5
|
+
* @param props The selected material section and instance services.
|
|
6
|
+
* @returns Standard material property content.
|
|
7
|
+
*/
|
|
8
|
+
export declare const StandardMaterialAdapter: FunctionComponent<MaterialAdapterProps>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Material } from "@babylonjs/lite";
|
|
2
|
+
import { type ISelectionService } from "../../../../../services/selectionService";
|
|
3
|
+
import { type ISceneResourceIndexService } from "../../scene/sceneResourceIndexService";
|
|
4
|
+
import { type IMaterialResourceRecord } from "../../scene/sceneResources";
|
|
5
|
+
type MaterialChange = Readonly<{
|
|
6
|
+
id: string;
|
|
7
|
+
propertyKey?: PropertyKey;
|
|
8
|
+
propertyOwner?: object;
|
|
9
|
+
oldValue: unknown;
|
|
10
|
+
newValue: unknown;
|
|
11
|
+
apply: () => void | Promise<void>;
|
|
12
|
+
invalidate: "ubo" | "rebuild" | "owned";
|
|
13
|
+
rebuildFrameGraph?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Tracks guarded, per-field Lite edits without creating material inspection snapshots.
|
|
17
|
+
* @param material The selected source or MaterialView.
|
|
18
|
+
* @param resourceIndexService The instance-owned scene resource index.
|
|
19
|
+
* @param selectionService The owning Inspector selection service.
|
|
20
|
+
* @returns The source record, row states, and a guarded mutation callback.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useDirectMaterialOperations(material: Material, resourceIndexService: ISceneResourceIndexService, selectionService: ISelectionService): {
|
|
23
|
+
source: Material;
|
|
24
|
+
record: IMaterialResourceRecord | undefined;
|
|
25
|
+
operations: Readonly<Record<string, Readonly<{
|
|
26
|
+
pending: boolean;
|
|
27
|
+
error?: string;
|
|
28
|
+
}> | undefined>>;
|
|
29
|
+
commit: (change: MaterialChange) => void;
|
|
30
|
+
};
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type FunctionComponent } from "react";
|
|
2
|
+
import { type ISelectionService } from "../../../../services/selectionService";
|
|
3
|
+
import { type ISceneResourceIndexService } from "../scene/sceneResourceIndexService";
|
|
4
|
+
export type TextureMetadataPropertiesProps = Readonly<{
|
|
5
|
+
texture: object;
|
|
6
|
+
resourceIndexService: ISceneResourceIndexService;
|
|
7
|
+
selectionService: ISelectionService;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Displays metadata properties for one exact Lite texture wrapper.
|
|
11
|
+
* @param props - The exact texture, resource index, and selection service.
|
|
12
|
+
* @returns The metadata-only texture properties UI.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TextureMetadataProperties: FunctionComponent<TextureMetadataPropertiesProps>;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
2
|
import { type IPropertiesService } from "../../../../services/panes/properties/propertiesService";
|
|
3
|
-
|
|
3
|
+
import { type ISelectionService } from "../../../../services/selectionService";
|
|
4
|
+
import { type ISceneResourceIndexService } from "../scene/sceneResourceIndexService";
|
|
5
|
+
export declare const TexturePropertiesServiceDefinition: ServiceDefinition<[], [IPropertiesService, ISceneResourceIndexService, ISelectionService]>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type IReadonlyObservable } from "@babylonjs/core/index.js";
|
|
2
|
+
/** State published by the latest asynchronous row operation. */
|
|
3
|
+
export type LatestAsyncOperationState = Readonly<{
|
|
4
|
+
pending: boolean;
|
|
5
|
+
error?: string;
|
|
6
|
+
}>;
|
|
7
|
+
/** State published independently for each asynchronous row operation. */
|
|
8
|
+
export type LatestAsyncOperationStates = Readonly<Record<string, LatestAsyncOperationState | undefined>>;
|
|
9
|
+
type LatestAsyncOperationOptions<ResultT> = Readonly<{
|
|
10
|
+
id: string;
|
|
11
|
+
operationAsync: () => Promise<ResultT>;
|
|
12
|
+
onSuccess?: (result: ResultT) => void;
|
|
13
|
+
getErrorMessage: (error: unknown) => string;
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Runs row operations with instance-local generations and invalidates them when their owner changes.
|
|
17
|
+
* Rejections are always consumed, while only the latest mounted generation may publish state or success effects.
|
|
18
|
+
* @param identity The exact entity represented by the mounted adapter.
|
|
19
|
+
* @param invalidationSources Disposal and selection changes that invalidate operation ownership.
|
|
20
|
+
* @param isDisposed Returns whether the owning service has been disposed.
|
|
21
|
+
* @returns The latest operation state for each row and a guarded operation runner.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useLatestAsyncOperation(identity: object, invalidationSources: readonly [IReadonlyObservable<void>, IReadonlyObservable<void>], isDisposed: () => boolean): readonly [LatestAsyncOperationStates, <ResultT>(options: LatestAsyncOperationOptions<ResultT>) => void];
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
|
+
import { type IExplorerService } from "../../../../services/panes/explorer/explorerService";
|
|
3
|
+
import { type ISelectionService } from "../../../../services/selectionService";
|
|
4
|
+
import { type IWatcherService } from "../../../../services/watcherService";
|
|
5
|
+
import { type IEngineContext } from "../../../engineContext";
|
|
6
|
+
import { type IEngineExplorerService } from "../../../engineExplorerService";
|
|
7
|
+
export declare const AnimationGroupExplorerServiceDefinition: ServiceDefinition<[], [IEngineExplorerService, IExplorerService, IWatcherService, IEngineContext, ISelectionService]>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ServiceDefinition } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
2
2
|
import { type IEngineExplorerService } from "../../../engineExplorerService";
|
|
3
3
|
import { type IWatcherService } from "../../../../services/watcherService";
|
|
4
|
-
|
|
4
|
+
import { type ISceneResourceIndexService } from "./sceneResourceIndexService";
|
|
5
|
+
export declare const MaterialExplorerServiceDefinition: ServiceDefinition<[], [IEngineExplorerService, IWatcherService, ISceneResourceIndexService]>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Material } from "@babylonjs/lite";
|
|
2
|
+
/** One Inspector-owned canonical texture edge used by the resource index. @internal */
|
|
3
|
+
export interface IMaterialTopologyBinding {
|
|
4
|
+
readonly id: string;
|
|
5
|
+
readonly entity: object;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Builds canonical topology edges without retaining any UI descriptor implementation.
|
|
9
|
+
* @param material The exact source material.
|
|
10
|
+
* @returns Texture edges in canonical family order.
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare function GetMaterialTopologyBindings(material: Material): readonly IMaterialTopologyBinding[];
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type IReadonlyObservable } from "@babylonjs/core/index.js";
|
|
2
|
+
import { type Material, type SceneContext } from "@babylonjs/lite";
|
|
3
|
+
import { type ServiceDefinition, type IService } from "@babylonjs/shared-ui-components/modularTool/modularity/serviceDefinition.js";
|
|
4
|
+
import { type IEngineContext } from "../../../engineContext";
|
|
5
|
+
import { type IWatcherService } from "../../../../services/watcherService";
|
|
6
|
+
import { type IMaterialResourceRecord, type ISceneResourceSnapshot, type ITextureResourceRecord } from "./sceneResources";
|
|
7
|
+
/**
|
|
8
|
+
* The unique identity for the Inspector-owned Lite scene resource index.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare const SceneResourceIndexServiceIdentity: unique symbol;
|
|
12
|
+
/**
|
|
13
|
+
* Provides the resource index owned by one Lite Inspector instance.
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
16
|
+
export interface ISceneResourceIndexService extends IService<typeof SceneResourceIndexServiceIdentity> {
|
|
17
|
+
/** Notifies after the index has applied a topology change. */
|
|
18
|
+
readonly onChanged: IReadonlyObservable<void>;
|
|
19
|
+
/** Notifies once while the service is being disposed. */
|
|
20
|
+
readonly onDisposed: IReadonlyObservable<void>;
|
|
21
|
+
/** Whether this service can still refresh and publish snapshots. */
|
|
22
|
+
readonly isDisposed: boolean;
|
|
23
|
+
/** Returns resources reachable from the given scene. */
|
|
24
|
+
getSceneSnapshot(scene: SceneContext): ISceneResourceSnapshot;
|
|
25
|
+
/** Returns a source material record when it is reachable. */
|
|
26
|
+
getMaterialRecord(material: Material): IMaterialResourceRecord | undefined;
|
|
27
|
+
/** Returns an exact texture wrapper record when it is reachable. */
|
|
28
|
+
getTextureRecord(texture: object): ITextureResourceRecord | undefined;
|
|
29
|
+
/** Rebuilds the index immediately and notifies mounted consumers. */
|
|
30
|
+
refresh(): void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates one disposable Lite scene resource index per Inspector service container.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare const SceneResourceIndexServiceDefinition: ServiceDefinition<[ISceneResourceIndexService], [IEngineContext, IWatcherService]>;
|