@fps-games/editor 0.2.0-beta.4 → 0.2.1-beta.1
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/dist/agent-bridge/capabilities/editor-state.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/editor-state.js +12 -6
- package/dist/agent-bridge/capabilities/editor-state.js.map +1 -1
- package/dist/agent-bridge/capabilities/hierarchy.d.ts +4 -0
- package/dist/agent-bridge/capabilities/hierarchy.d.ts.map +1 -0
- package/dist/agent-bridge/capabilities/hierarchy.js +209 -0
- package/dist/agent-bridge/capabilities/hierarchy.js.map +1 -0
- package/dist/agent-bridge/capabilities/prefabs.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/prefabs.js +208 -73
- package/dist/agent-bridge/capabilities/prefabs.js.map +1 -1
- package/dist/agent-bridge/capabilities/scene-objects.d.ts +3 -4
- package/dist/agent-bridge/capabilities/scene-objects.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/scene-objects.js +24 -23
- package/dist/agent-bridge/capabilities/scene-objects.js.map +1 -1
- package/dist/agent-bridge/capabilities/shadows.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/shadows.js +829 -66
- package/dist/agent-bridge/capabilities/shadows.js.map +1 -1
- package/dist/agent-bridge/capabilities/ui-regions.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/ui-regions.js +3 -1
- package/dist/agent-bridge/capabilities/ui-regions.js.map +1 -1
- package/dist/agent-bridge/capabilities/viewport.d.ts.map +1 -1
- package/dist/agent-bridge/capabilities/viewport.js +22 -9
- package/dist/agent-bridge/capabilities/viewport.js.map +1 -1
- package/dist/agent-bridge/capability-sources.d.ts.map +1 -1
- package/dist/agent-bridge/capability-sources.js +2 -0
- package/dist/agent-bridge/capability-sources.js.map +1 -1
- package/dist/agent-bridge/register.d.ts.map +1 -1
- package/dist/agent-bridge/register.js +194 -0
- package/dist/agent-bridge/register.js.map +1 -1
- package/dist/agent-bridge/shared.d.ts +231 -11
- package/dist/agent-bridge/shared.d.ts.map +1 -1
- package/dist/agent-bridge/shared.js +162 -20
- package/dist/agent-bridge/shared.js.map +1 -1
- package/dist/agent-bridge/source-types.d.ts +17 -1
- package/dist/agent-bridge/source-types.d.ts.map +1 -1
- package/dist/agent-bridge/source-types.js.map +1 -1
- package/dist/build-info.json +57 -42
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/babylon-preview-engine.d.ts +3 -0
- package/dist/internal/babylon-preview-engine.d.ts.map +1 -0
- package/dist/internal/babylon-preview-engine.js +11 -0
- package/dist/internal/babylon-preview-engine.js.map +1 -0
- package/dist/internal/product-local-editor-cleanup.d.ts +5 -0
- package/dist/internal/product-local-editor-cleanup.d.ts.map +1 -0
- package/dist/internal/product-local-editor-cleanup.js +20 -0
- package/dist/internal/product-local-editor-cleanup.js.map +1 -0
- package/dist/local-editor-agent-actions.d.ts +2 -4
- package/dist/local-editor-agent-actions.d.ts.map +1 -1
- package/dist/local-editor-agent-actions.js +56 -32
- package/dist/local-editor-agent-actions.js.map +1 -1
- package/dist/local-editor-agent-context.d.ts +5 -5
- package/dist/local-editor-agent-context.d.ts.map +1 -1
- package/dist/local-editor-agent-context.js.map +1 -1
- package/dist/local-editor-harness.d.ts +340 -35
- package/dist/local-editor-harness.d.ts.map +1 -1
- package/dist/local-editor-harness.js +3834 -1321
- package/dist/local-editor-harness.js.map +1 -1
- package/dist/local-editor-marker-graph.d.ts +15 -15
- package/dist/local-editor-marker-graph.d.ts.map +1 -1
- package/dist/local-editor-marker-graph.js +3 -0
- package/dist/local-editor-marker-graph.js.map +1 -1
- package/dist/local-editor-performance-stats.d.ts +3 -2
- package/dist/local-editor-performance-stats.d.ts.map +1 -1
- package/dist/local-editor-performance-stats.js.map +1 -1
- package/dist/local-editor-prefab-stage-transaction.d.ts +19 -0
- package/dist/local-editor-prefab-stage-transaction.d.ts.map +1 -0
- package/dist/local-editor-prefab-stage-transaction.js +45 -0
- package/dist/local-editor-prefab-stage-transaction.js.map +1 -0
- package/dist/local-editor-scene-view-interaction-runtime.d.ts +3 -1
- package/dist/local-editor-scene-view-interaction-runtime.d.ts.map +1 -1
- package/dist/local-editor-scene-view-interaction-runtime.js +24 -0
- package/dist/local-editor-scene-view-interaction-runtime.js.map +1 -1
- package/dist/local-editor-tools.d.ts +18 -0
- package/dist/local-editor-tools.d.ts.map +1 -0
- package/dist/local-editor-tools.js +53 -0
- package/dist/local-editor-tools.js.map +1 -0
- package/dist/playable-babylon-rendering.d.ts +9 -0
- package/dist/playable-babylon-rendering.d.ts.map +1 -1
- package/dist/playable-babylon-rendering.js +162 -6
- package/dist/playable-babylon-rendering.js.map +1 -1
- package/dist/playable-local-editor-entry.d.ts +68 -0
- package/dist/playable-local-editor-entry.d.ts.map +1 -0
- package/dist/playable-local-editor-entry.js +424 -0
- package/dist/playable-local-editor-entry.js.map +1 -0
- package/dist/playable-local-editor-host.d.ts +51 -29
- package/dist/playable-local-editor-host.d.ts.map +1 -1
- package/dist/playable-local-editor-host.js +23 -11
- package/dist/playable-local-editor-host.js.map +1 -1
- package/dist/playable-product-local-editor.d.ts +10 -12
- package/dist/playable-product-local-editor.d.ts.map +1 -1
- package/dist/playable-product-local-editor.js +178 -85
- package/dist/playable-product-local-editor.js.map +1 -1
- package/dist/playable-product-projection-preview.d.ts +4 -1
- package/dist/playable-product-projection-preview.d.ts.map +1 -1
- package/dist/playable-product-projection-preview.js +122 -5
- package/dist/playable-product-projection-preview.js.map +1 -1
- package/dist/playable-product-rendering.d.ts +12 -0
- package/dist/playable-product-rendering.d.ts.map +1 -1
- package/dist/playable-product-rendering.js +128 -6
- package/dist/playable-product-rendering.js.map +1 -1
- package/dist/playable-product-scene-capabilities.d.ts +24 -7
- package/dist/playable-product-scene-capabilities.d.ts.map +1 -1
- package/dist/playable-product-scene-capabilities.js +172 -15
- package/dist/playable-product-scene-capabilities.js.map +1 -1
- package/dist/playable-project-mode.d.ts +17 -0
- package/dist/playable-project-mode.d.ts.map +1 -0
- package/dist/playable-project-mode.js +2 -0
- package/dist/playable-project-mode.js.map +1 -0
- package/dist/playable-runtime-babylon.d.ts +3 -6
- package/dist/playable-runtime-babylon.d.ts.map +1 -1
- package/dist/playable-runtime-babylon.js +1 -5
- package/dist/playable-runtime-babylon.js.map +1 -1
- package/dist/playable-sdk.d.ts +16 -9
- package/dist/playable-sdk.d.ts.map +1 -1
- package/dist/playable-sdk.js +6 -4
- package/dist/playable-sdk.js.map +1 -1
- package/dist/playable-standard-project.d.ts +23 -14
- package/dist/playable-standard-project.d.ts.map +1 -1
- package/dist/playable-standard-project.js +53 -19
- package/dist/playable-standard-project.js.map +1 -1
- package/dist/vite-client.d.ts +4 -0
- package/node_modules/@babel/helper-string-parser/lib/index.js +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/identifier.js +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/index.js +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/keyword.js +0 -1
- package/node_modules/@babel/parser/lib/index.js +0 -1
- package/node_modules/@babel/types/lib/asserts/assertNode.js +0 -1
- package/node_modules/@babel/types/lib/asserts/generated/index.js +0 -1
- package/node_modules/@babel/types/lib/ast-types/generated/index.js +0 -1
- package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js +0 -1
- package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js +0 -1
- package/node_modules/@babel/types/lib/builders/generated/index.js +0 -1
- package/node_modules/@babel/types/lib/builders/generated/lowercase.js +0 -1
- package/node_modules/@babel/types/lib/builders/generated/uppercase.js +0 -1
- package/node_modules/@babel/types/lib/builders/productions.js +0 -1
- package/node_modules/@babel/types/lib/builders/react/buildChildren.js +0 -1
- package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js +0 -1
- package/node_modules/@babel/types/lib/builders/validateNode.js +0 -1
- package/node_modules/@babel/types/lib/clone/clone.js +0 -1
- package/node_modules/@babel/types/lib/clone/cloneDeep.js +0 -1
- package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js +0 -1
- package/node_modules/@babel/types/lib/clone/cloneNode.js +0 -1
- package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js +0 -1
- package/node_modules/@babel/types/lib/comments/addComment.js +0 -1
- package/node_modules/@babel/types/lib/comments/addComments.js +0 -1
- package/node_modules/@babel/types/lib/comments/inheritInnerComments.js +0 -1
- package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js +0 -1
- package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js +0 -1
- package/node_modules/@babel/types/lib/comments/inheritsComments.js +0 -1
- package/node_modules/@babel/types/lib/comments/removeComments.js +0 -1
- package/node_modules/@babel/types/lib/constants/generated/index.js +0 -1
- package/node_modules/@babel/types/lib/constants/index.js +0 -1
- package/node_modules/@babel/types/lib/converters/ensureBlock.js +0 -1
- package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js +0 -1
- package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js +0 -1
- package/node_modules/@babel/types/lib/converters/toBlock.js +0 -1
- package/node_modules/@babel/types/lib/converters/toComputedKey.js +0 -1
- package/node_modules/@babel/types/lib/converters/toExpression.js +0 -1
- package/node_modules/@babel/types/lib/converters/toIdentifier.js +0 -1
- package/node_modules/@babel/types/lib/converters/toKeyAlias.js +0 -1
- package/node_modules/@babel/types/lib/converters/toSequenceExpression.js +0 -1
- package/node_modules/@babel/types/lib/converters/toStatement.js +0 -1
- package/node_modules/@babel/types/lib/converters/valueToNode.js +0 -1
- package/node_modules/@babel/types/lib/definitions/core.js +0 -1
- package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js +0 -1
- package/node_modules/@babel/types/lib/definitions/experimental.js +0 -1
- package/node_modules/@babel/types/lib/definitions/flow.js +0 -1
- package/node_modules/@babel/types/lib/definitions/index.js +0 -1
- package/node_modules/@babel/types/lib/definitions/jsx.js +0 -1
- package/node_modules/@babel/types/lib/definitions/misc.js +0 -1
- package/node_modules/@babel/types/lib/definitions/placeholders.js +0 -1
- package/node_modules/@babel/types/lib/definitions/typescript.js +0 -1
- package/node_modules/@babel/types/lib/definitions/utils.js +0 -1
- package/node_modules/@babel/types/lib/index.js +0 -1
- package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js +0 -1
- package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js +0 -1
- package/node_modules/@babel/types/lib/modifications/inherits.js +0 -1
- package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js +0 -1
- package/node_modules/@babel/types/lib/modifications/removeProperties.js +0 -1
- package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js +0 -1
- package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js +0 -1
- package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js +0 -1
- package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js +0 -1
- package/node_modules/@babel/types/lib/retrievers/getFunctionName.js +0 -1
- package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js +0 -1
- package/node_modules/@babel/types/lib/traverse/traverse.js +0 -1
- package/node_modules/@babel/types/lib/traverse/traverseFast.js +0 -1
- package/node_modules/@babel/types/lib/utils/deprecationWarning.js +0 -1
- package/node_modules/@babel/types/lib/utils/inherit.js +0 -1
- package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js +0 -1
- package/node_modules/@babel/types/lib/utils/shallowEqual.js +0 -1
- package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js +0 -1
- package/node_modules/@babel/types/lib/validators/generated/index.js +0 -1
- package/node_modules/@babel/types/lib/validators/is.js +0 -1
- package/node_modules/@babel/types/lib/validators/isBinding.js +0 -1
- package/node_modules/@babel/types/lib/validators/isBlockScoped.js +0 -1
- package/node_modules/@babel/types/lib/validators/isImmutable.js +0 -1
- package/node_modules/@babel/types/lib/validators/isLet.js +0 -1
- package/node_modules/@babel/types/lib/validators/isNode.js +0 -1
- package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js +0 -1
- package/node_modules/@babel/types/lib/validators/isPlaceholderType.js +0 -1
- package/node_modules/@babel/types/lib/validators/isReferenced.js +0 -1
- package/node_modules/@babel/types/lib/validators/isScope.js +0 -1
- package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js +0 -1
- package/node_modules/@babel/types/lib/validators/isType.js +0 -1
- package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js +0 -1
- package/node_modules/@babel/types/lib/validators/isValidIdentifier.js +0 -1
- package/node_modules/@babel/types/lib/validators/isVar.js +0 -1
- package/node_modules/@babel/types/lib/validators/matchesPattern.js +0 -1
- package/node_modules/@babel/types/lib/validators/react/isCompatTag.js +0 -1
- package/node_modules/@babel/types/lib/validators/react/isReactComponent.js +0 -1
- package/node_modules/@babel/types/lib/validators/validate.js +0 -1
- package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.d.ts +69 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.js +132 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.d.ts +8 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhFileLoader.metadata.js +7 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhLoader.d.ts +14 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhLoader.js +328 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.d.ts +9 -0
- package/node_modules/@babylonjs/loaders/BVH/bvhLoadingOptions.js +1 -0
- package/node_modules/@babylonjs/loaders/BVH/index.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/BVH/index.js +3 -0
- package/node_modules/@babylonjs/loaders/OBJ/index.d.ts +4 -0
- package/node_modules/@babylonjs/loaders/OBJ/index.js +4 -0
- package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.d.ts +41 -0
- package/node_modules/@babylonjs/loaders/OBJ/mtlFileLoader.js +230 -0
- package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.d.ts +136 -0
- package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.js +317 -0
- package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.d.ts +4 -0
- package/node_modules/@babylonjs/loaders/OBJ/objFileLoader.metadata.js +4 -0
- package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.d.ts +47 -0
- package/node_modules/@babylonjs/loaders/OBJ/objLoadingOptions.js +1 -0
- package/node_modules/@babylonjs/loaders/OBJ/solidParser.d.ts +175 -0
- package/node_modules/@babylonjs/loaders/OBJ/solidParser.js +903 -0
- package/node_modules/@babylonjs/loaders/SPLAT/index.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/SPLAT/index.js +3 -0
- package/node_modules/@babylonjs/loaders/SPLAT/sog.d.ts +84 -0
- package/node_modules/@babylonjs/loaders/SPLAT/sog.js +294 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.d.ts +26 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatDefs.js +10 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.d.ts +100 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.js +536 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.d.ts +20 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatFileLoader.metadata.js +15 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.d.ts +33 -0
- package/node_modules/@babylonjs/loaders/SPLAT/splatLoadingOptions.js +1 -0
- package/node_modules/@babylonjs/loaders/SPLAT/spz.d.ts +11 -0
- package/node_modules/@babylonjs/loaders/SPLAT/spz.js +168 -0
- package/node_modules/@babylonjs/loaders/STL/index.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/STL/index.js +1 -0
- package/node_modules/@babylonjs/loaders/STL/stlFileLoader.d.ts +78 -0
- package/node_modules/@babylonjs/loaders/STL/stlFileLoader.js +238 -0
- package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.d.ts +8 -0
- package/node_modules/@babylonjs/loaders/STL/stlFileLoader.metadata.js +7 -0
- package/node_modules/@babylonjs/loaders/bvh/license.md +21 -0
- package/node_modules/@babylonjs/loaders/dynamic.d.ts +5 -0
- package/node_modules/@babylonjs/loaders/dynamic.js +56 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.d.ts +16 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFBinaryExtension.js +64 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.d.ts +144 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoader.js +1841 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.d.ts +412 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderInterfaces.js +95 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.d.ts +71 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFLoaderUtils.js +254 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.d.ts +13 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/glTFMaterialsCommonExtension.js +130 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/index.d.ts +5 -0
- package/node_modules/@babylonjs/loaders/glTF/1.0/index.js +5 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.d.ts +41 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_area.js +93 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.d.ts +41 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_ies.js +83 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.d.ts +48 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_lights_image_based.js +115 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.d.ts +39 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_mesh_gpu_instancing.js +94 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.d.ts +39 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_meshopt_compression.js +50 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.d.ts +34 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_avif.js +38 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.d.ts +33 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/EXT_texture_webp.js +37 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.d.ts +53 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/ExtrasAsMetadata.js +73 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.d.ts +47 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.data.js +251 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_animation_pointer.js +77 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.d.ts +47 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression.js +92 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.d.ts +355 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/declarationMapper.js +1678 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.d.ts +33 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/flowGraphGLTFDataProvider.js +19 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.d.ts +3 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/index.js +3 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.d.ts +70 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity/interactivityGraphParser.js +438 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.d.ts +38 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_interactivity.js +150 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.d.ts +41 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_lights_punctual.js +91 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_anisotropy.js +65 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat.js +79 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.d.ts +49 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_coat.js +119 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_roughness.js +58 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_diffuse_transmission.js +69 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_dispersion.js +56 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_emissive_strength.js +47 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_fuzz.js +77 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.d.ts +46 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_ior.js +54 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_iridescence.js +68 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_pbrSpecularGlossiness.js +80 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_sheen.js +73 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_specular.js +76 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_transmission.js +303 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_unlit.js +66 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.d.ts +112 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_variants.js +262 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume.js +82 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.d.ts +45 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_volume_scatter.js +109 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.d.ts +29 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_mesh_quantization.js +22 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.d.ts +31 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_hoverability.js +189 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.d.ts +30 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_selectability.js +123 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.d.ts +30 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_node_visibility.js +66 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.d.ts +33 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu.js +37 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.d.ts +37 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform.js +58 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.d.ts +39 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/KHR_xmp_json_ld.js +47 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.d.ts +56 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_audio_emitter.js +228 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.d.ts +104 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_lod.js +337 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.d.ts +27 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_minecraftMesh.js +39 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.d.ts +27 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/MSFT_sRGBFactors.js +38 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.d.ts +4 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/dynamic.js +212 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.d.ts +45 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/gltfPathToObjectConverter.js +100 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.d.ts +43 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/index.js +44 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.d.ts +306 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/Extensions/objectModelMapping.js +884 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.d.ts +450 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoader.js +2485 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.d.ts +42 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderAnimation.js +79 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.d.ts +165 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtension.js +1 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.d.ts +25 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderExtensionRegistry.js +32 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.d.ts +262 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/glTFLoaderInterfaces.js +1 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/index.d.ts +8 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/index.js +9 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.d.ts +364 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/materialLoadingAdapter.js +1 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.d.ts +674 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/openpbrMaterialLoadingAdapter.js +1034 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.d.ts +705 -0
- package/node_modules/@babylonjs/loaders/glTF/2.0/pbrMaterialLoadingAdapter.js +1126 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.d.ts +553 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.js +998 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.d.ts +15 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFFileLoader.metadata.js +17 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFValidation.d.ts +35 -0
- package/node_modules/@babylonjs/loaders/glTF/glTFValidation.js +131 -0
- package/node_modules/@babylonjs/loaders/glTF/index.d.ts +5 -0
- package/node_modules/@babylonjs/loaders/glTF/index.js +6 -0
- package/node_modules/@babylonjs/loaders/index.d.ts +6 -0
- package/node_modules/@babylonjs/loaders/index.js +7 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-bvhFileLoader.js +15 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-dynamic.js +13 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF.js +18 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1.js +15 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF1FileLoader.js +3 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2.js +34 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.d.ts +2 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTF2FileLoader.js +3 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.d.ts +3 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-glTFFileLoader.js +4 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-objFileLoader.js +15 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.d.ts +1 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy-stlFileLoader.js +15 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy.d.ts +8 -0
- package/node_modules/@babylonjs/loaders/legacy/legacy.js +10 -0
- package/node_modules/@babylonjs/loaders/license.md +71 -0
- package/node_modules/@babylonjs/loaders/package.json +49 -0
- package/node_modules/@babylonjs/loaders/readme.md +23 -0
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts +22 -0
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js +187 -0
- package/node_modules/@fps-games/babylon-renderer/dist/game-world-plugin-lifecycle.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/index.js +3 -0
- package/node_modules/@fps-games/babylon-renderer/dist/index.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts +19 -0
- package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js +212 -0
- package/node_modules/@fps-games/babylon-renderer/dist/material-owner-candidates.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts +17 -2
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.js +192 -17
- package/node_modules/@fps-games/babylon-renderer/dist/plugin.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts +2 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js +139 -3
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/babylon-default-pipeline.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts +4 -0
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/post-process/types.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.d.ts.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/dynamic-shadow-system.js.map +1 -1
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts +14 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js +14 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-generator-shaders.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts +59 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js +725 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-depth-backend.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts +136 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.d.ts.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js +2735 -0
- package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map +1 -0
- package/node_modules/@fps-games/babylon-renderer/package.json +7 -7
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts +2 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js +2 -1
- package/node_modules/@fps-games/editor-babylon/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts +2 -0
- package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js +59 -6
- package/node_modules/@fps-games/editor-babylon/dist/main-camera-preview.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js +81 -11
- package/node_modules/@fps-games/editor-babylon/dist/material-slot-source-resolver.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js +2 -8
- package/node_modules/@fps-games/editor-babylon/dist/projection-asset-container-importer.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts +17 -5
- package/node_modules/@fps-games/editor-babylon/dist/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/projection.js +300 -362
- package/node_modules/@fps-games/editor-babylon/dist/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts +4 -0
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js +76 -10
- package/node_modules/@fps-games/editor-babylon/dist/scene-view-camera-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts +46 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js +304 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-identity-pass.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts +85 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js +1600 -0
- package/node_modules/@fps-games/editor-babylon/dist/selection-presentation-controller.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts +11 -3
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js +105 -15
- package/node_modules/@fps-games/editor-babylon/dist/shadow-preview-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts +25 -0
- package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js +44 -0
- package/node_modules/@fps-games/editor-babylon/dist/viewport-ground-projection.js.map +1 -0
- package/node_modules/@fps-games/editor-babylon/package.json +6 -5
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts +8 -11
- package/node_modules/@fps-games/editor-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/index.js +6 -9
- package/node_modules/@fps-games/editor-browser/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js +36 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-clipboard.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts +2 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js +17 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-inspector-groups.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js +6 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-asset-kind.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js +157 -77
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-context-menu.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js +27 -21
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-dock-panel.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts +19 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js +44 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-formal-surface-visibility.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts +36 -6
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js +829 -866
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts +8 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js +1 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-drag-policy.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts +7 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js +20 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view-adapter.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts +6 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js +266 -114
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-view.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js +5 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-icons.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js +3 -17
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-input-router.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts +14 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js +44 -62
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-modal-dialog.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts +10 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js +591 -639
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-panels.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts +8 -36
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js +25 -103
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-prefab-stage.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js +29 -110
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-primitives.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts +1 -3
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js +6 -90
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shared.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js +9 -54
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-shortcuts.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts +16 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js +44 -39
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-diagnostics.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts +4 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js +44 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-status-format.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js +35 -44
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-structured-drag-policy.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js +40 -24
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-theme.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js +2 -20
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-tooltip.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts +52 -341
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-types.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts +4 -14
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js +33 -119
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-workbench.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts +5 -10
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js +595 -544
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts +2 -3
- package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js +0 -180
- package/node_modules/@fps-games/editor-browser/dist/plugin-contributions.js.map +1 -1
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts +5 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js +5 -0
- package/node_modules/@fps-games/editor-browser/dist/runtime-debug.js.map +1 -0
- package/node_modules/@fps-games/editor-browser/package.json +15 -4
- package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts +22 -0
- package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js +226 -0
- package/node_modules/@fps-games/editor-core/dist/editor-diagnostic-store.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts +6 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js +94 -2
- package/node_modules/@fps-games/editor-core/dist/editor-plugin-host.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts +24 -2
- package/node_modules/@fps-games/editor-core/dist/editor-session.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-session.js +70 -10
- package/node_modules/@fps-games/editor-core/dist/editor-session.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts +112 -0
- package/node_modules/@fps-games/editor-core/dist/editor-tools.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/editor-tools.js +613 -0
- package/node_modules/@fps-games/editor-core/dist/editor-tools.js.map +1 -0
- package/node_modules/@fps-games/editor-core/dist/inspector.d.ts +46 -0
- package/node_modules/@fps-games/editor-core/dist/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/inspector.js +62 -0
- package/node_modules/@fps-games/editor-core/dist/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts +1 -0
- package/node_modules/@fps-games/editor-core/dist/scene-graph.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-core/dist/scene-graph.js.map +1 -1
- package/node_modules/@fps-games/editor-core/package.json +14 -6
- package/node_modules/@fps-games/editor-forge-play/package.json +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js +14 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/metadata.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/node.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts +14 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js +49 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-database/registry.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js +58 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/catalog.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js +48 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/asset-library/document.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts +28 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js +314 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/helpers.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts +11 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js +27 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-instance-identity.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js +285 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/prefab-marker.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts +7 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/document/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js +23 -81
- package/node_modules/@fps-games/editor-playable-sdk/dist/inspector/document-sections.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts +41 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js +93 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-manifest.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts +29 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js +77 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-module.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts +51 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js +105 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry-performance.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts +60 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js +287 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/editor-entry.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts +6 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play-types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js +53 -17
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/forge-play.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts +16 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js +10 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/host-controller.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts +5 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js +134 -66
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/lifecycle.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts +11 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js +21 -14
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/project-asset-commands.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts +17 -9
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/local-harness/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js +20 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/field-patch.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js +49 -10
- package/node_modules/@fps-games/editor-playable-sdk/dist/mutation/reducer.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts +2 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js +18 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/package-resolution/aliases.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts +7 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js +130 -20
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/action-patches.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js +12 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/assets.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts +11 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js +136 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/derived-markers.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts +36 -51
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js +40 -65
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/projection.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts +5 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js +207 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/prefab-stage/stage-inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js +3 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts +18 -7
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js +110 -18
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/project-host-services.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/scene-source.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts +5 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js +22 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/product/standard-scene-assembly.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js +144 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/panel.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts +16 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/rendering-profile/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/nodes.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/runtime-preview/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts +2 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js +241 -13
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/compiler.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/index.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts +31 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js +170 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/shadow-map-experiment-migration.js.map +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts +153 -13
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts +17 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js +1295 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-compiler/validation.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js +14 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/client.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js +57 -34
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/driver.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js +4 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/protocol.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts +4 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/scene-source/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js +20 -198
- package/node_modules/@fps-games/editor-playable-sdk/dist/serialized-property/inspector.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js +5 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/hierarchy-facade.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts +5 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js +144 -8
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/patches.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js +30 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/reducer-core.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/session/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js +31 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/upgrade-doctor/inspectors.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts +5 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js +40 -4
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/editor-scene-workflow.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js +116 -3
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/plugin.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts +2 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js +1 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-adapter.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts +17 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js +50 -2
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-asset-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js +7 -5
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-authoring-api.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts +5 -6
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js +31 -17
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/product-scene-authoring.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts +6 -0
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/dist/vite/types.js.map +1 -1
- package/node_modules/@fps-games/editor-playable-sdk/package.json +6 -6
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts +417 -2
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js +692 -2
- package/node_modules/@fps-games/editor-protocol/dist/agent-bridge.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts +55 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js +2 -0
- package/node_modules/@fps-games/editor-protocol/dist/editor-diagnostics.js.map +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts +3 -18
- package/node_modules/@fps-games/editor-protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-protocol/dist/index.js +1 -0
- package/node_modules/@fps-games/editor-protocol/dist/index.js.map +1 -1
- package/node_modules/@fps-games/editor-protocol/package.json +2 -2
- package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js +5 -0
- package/node_modules/@fps-games/editor-tooling/dist/package-metadata-node.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/vite.d.ts.map +1 -1
- package/node_modules/@fps-games/editor-tooling/dist/vite.js +151 -5
- package/node_modules/@fps-games/editor-tooling/dist/vite.js.map +1 -1
- package/node_modules/@fps-games/editor-tooling/package.json +3 -3
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts +107 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js +770 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-controls.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts +21 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js +172 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-layer-host.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts +14 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js +32 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-shell.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts +3 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js +653 -0
- package/node_modules/@fps-games/editor-ui/dist/editor-ui-theme.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts +3 -0
- package/node_modules/@fps-games/editor-ui/dist/gallery.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/gallery.js +3 -0
- package/node_modules/@fps-games/editor-ui/dist/gallery.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/index.d.ts +5 -0
- package/node_modules/@fps-games/editor-ui/dist/index.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/index.js +5 -0
- package/node_modules/@fps-games/editor-ui/dist/index.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts +7 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js +29 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-model.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts +2 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js +95 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery-styles.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts +28 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.d.ts.map +1 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js +387 -0
- package/node_modules/@fps-games/editor-ui/dist/inspector-property-gallery.js.map +1 -0
- package/node_modules/@fps-games/editor-ui/package.json +23 -0
- package/node_modules/@fps-games/playable-assets/package.json +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/index.d.ts +1 -0
- package/node_modules/@fps-games/playable-contracts/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/index.js +1 -0
- package/node_modules/@fps-games/playable-contracts/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts +116 -0
- package/node_modules/@fps-games/playable-contracts/dist/material-owner.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-contracts/dist/material-owner.js +403 -0
- package/node_modules/@fps-games/playable-contracts/dist/material-owner.js.map +1 -0
- package/node_modules/@fps-games/playable-contracts/package.json +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/index.d.ts +3 -0
- package/node_modules/@fps-games/playable-rendering/dist/index.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/index.js +3 -0
- package/node_modules/@fps-games/playable-rendering/dist/index.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js +5 -25
- package/node_modules/@fps-games/playable-rendering/dist/rendering-profile-validation.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts +3 -0
- package/node_modules/@fps-games/playable-rendering/dist/runtime.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/runtime.js +3 -0
- package/node_modules/@fps-games/playable-rendering/dist/runtime.js.map +1 -1
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts +61 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js +176 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-depth.js.map +1 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts +84 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js +362 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment-lifecycle.js.map +1 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts +167 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.d.ts.map +1 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js +484 -0
- package/node_modules/@fps-games/playable-rendering/dist/shadow-map-experiment.js.map +1 -0
- package/node_modules/@fps-games/playable-rendering/package.json +2 -2
- package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts +5 -0
- package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.d.ts.map +1 -1
- package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js +1 -0
- package/node_modules/@fps-games/playable-runtime/dist/compiled-scene-data.js.map +1 -1
- package/node_modules/@fps-games/playable-runtime/package.json +12 -12
- package/node_modules/@fps-games/playable-runtime-data/package.json +4 -4
- package/node_modules/@fps-games/playable-scene/package.json +2 -2
- package/node_modules/@fps-games/plugin-api/package.json +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-assets/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-assets/package.json +5 -5
- package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts +6 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/editor.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js +16 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/editor.js.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts +7 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/integration.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js +47 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/integration.js.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts +306 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js +1237 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/kernel.js.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts +8 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/reference.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js +32 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/reference.js.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts +2 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js +2 -0
- package/node_modules/@fps-games/plugin-hierarchy/dist/version.js.map +1 -0
- package/node_modules/@fps-games/plugin-hierarchy/package.json +57 -0
- package/node_modules/@fps-games/plugin-host/package.json +2 -2
- package/node_modules/@fps-games/plugin-markers/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-markers/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-markers/package.json +5 -5
- package/node_modules/@fps-games/plugin-materials/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-materials/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-materials/package.json +5 -5
- package/node_modules/@fps-games/plugin-rendering/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-rendering/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-rendering/package.json +5 -5
- package/node_modules/@fps-games/plugin-scene/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-scene/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-scene/package.json +5 -5
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts +8 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js +35 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/reference.js.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts +11 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js +14 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/runtime.js.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts +2 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.d.ts.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js +2 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/dist/version.js.map +1 -0
- package/node_modules/@fps-games/plugin-shadow-map-experiment/package.json +53 -0
- package/node_modules/@fps-games/plugin-shadows/dist/version.d.ts +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js +1 -1
- package/node_modules/@fps-games/plugin-shadows/dist/version.js.map +1 -1
- package/node_modules/@fps-games/plugin-shadows/package.json +7 -7
- package/node_modules/@playcanvas/observer/LICENSE +19 -0
- package/node_modules/@playcanvas/observer/README.md +72 -0
- package/node_modules/@playcanvas/observer/dist/index.cjs +2033 -0
- package/node_modules/@playcanvas/observer/dist/index.js +2039 -0
- package/node_modules/@playcanvas/observer/dist/index.mjs +2026 -0
- package/node_modules/@playcanvas/observer/package.json +78 -0
- package/node_modules/@playcanvas/observer/types/event-handle.d.ts +41 -0
- package/node_modules/@playcanvas/observer/types/events.d.ts +162 -0
- package/node_modules/@playcanvas/observer/types/history.d.ts +123 -0
- package/node_modules/@playcanvas/observer/types/index.d.ts +15 -0
- package/node_modules/@playcanvas/observer/types/observer-history.d.ts +32 -0
- package/node_modules/@playcanvas/observer/types/observer-list.d.ts +39 -0
- package/node_modules/@playcanvas/observer/types/observer.d.ts +157 -0
- package/node_modules/@playcanvas/observer/types/utils.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/LICENSE +19 -0
- package/node_modules/@playcanvas/pcui/README.md +164 -0
- package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
- package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
- package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
- package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
- package/node_modules/@playcanvas/pcui/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/Math/color-value.mjs +77 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingBase/index.mjs +215 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/class.mjs +19 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/ArrayInput/index.mjs +498 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/BooleanInput/index.mjs +122 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Button/index.mjs +119 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Canvas/index.mjs +104 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Code/index.mjs +43 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/ColorPicker/index.mjs +619 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Container/index.mjs +642 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Divider/index.mjs +20 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Element/index.mjs +829 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/GradientPicker/index.mjs +1136 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/GridView/index.mjs +448 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/GridViewItem/index.mjs +152 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/InfoBox/index.mjs +90 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/InputElement/index.mjs +186 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Label/index.mjs +124 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/LabelGroup/index.mjs +74 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Menu/index.mjs +174 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/MenuItem/index.mjs +223 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/NumericInput/index.mjs +400 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Overlay/index.mjs +108 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Panel/index.mjs +400 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Progress/index.mjs +45 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/RadioButton/index.mjs +113 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/SelectInput/index.mjs +1085 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/SliderInput/index.mjs +333 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/Spinner/index.mjs +34 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/TextAreaInput/index.mjs +50 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/TextInput/index.mjs +98 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeView/index.mjs +1131 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/TreeViewItem/index.mjs +500 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/components/VectorInput/index.mjs +366 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/helpers/search.mjs +194 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/helpers/utils.mjs +43 -0
- package/node_modules/@playcanvas/pcui/dist/module/src/index.mjs +56 -0
- package/node_modules/@playcanvas/pcui/dist/pcui-theme-green.scss +2798 -0
- package/node_modules/@playcanvas/pcui/dist/pcui-theme-grey.scss +2798 -0
- package/node_modules/@playcanvas/pcui/package.json +150 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/constants.mjs +6 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-evaluator.mjs +119 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve-set.mjs +82 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/curve.mjs +92 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/node_modules/playcanvas/build/playcanvas/src/core/math/math.mjs +105 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/Math/color-value.mjs +77 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingBase/index.mjs +215 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingElementToObservers/index.mjs +297 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingObserversToElement/index.mjs +110 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/binding/BindingTwoWay/index.mjs +113 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/class.mjs +19 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ArrayInput/index.mjs +498 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/BooleanInput/index.mjs +122 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Button/index.mjs +119 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Canvas/index.mjs +104 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Code/index.mjs +43 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/ColorPicker/index.mjs +619 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/component.mjs +36 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Container/index.mjs +642 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Divider/index.mjs +20 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/component.mjs +107 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Element/index.mjs +829 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GradientPicker/index.mjs +1136 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/component.mjs +38 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridView/index.mjs +448 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/GridViewItem/index.mjs +152 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InfoBox/index.mjs +90 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/InputElement/index.mjs +186 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Label/index.mjs +124 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/component.mjs +42 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/LabelGroup/index.mjs +74 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/component.mjs +23 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Menu/index.mjs +174 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/MenuItem/index.mjs +223 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/NumericInput/index.mjs +400 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Overlay/index.mjs +108 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/component.mjs +32 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Panel/index.mjs +400 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Progress/index.mjs +45 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/RadioButton/index.mjs +113 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/component.mjs +21 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SelectInput/index.mjs +1085 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/component.mjs +12 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/SliderInput/index.mjs +333 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/component.mjs +16 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/Spinner/index.mjs +34 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextAreaInput/index.mjs +50 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/component.mjs +23 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TextInput/index.mjs +98 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/component.mjs +52 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeView/index.mjs +1131 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/component.mjs +33 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/TreeViewItem/index.mjs +500 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/component.mjs +11 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/components/VectorInput/index.mjs +366 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/search.mjs +194 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/helpers/utils.mjs +43 -0
- package/node_modules/@playcanvas/pcui/react/dist/module/src/index.mjs +39 -0
- package/node_modules/@playcanvas/pcui/react/package.json +18 -0
- package/node_modules/@playcanvas/pcui/react/types/Math/color-value.d.ts +3 -0
- package/node_modules/@playcanvas/pcui/react/types/binding/BindingBase/index.d.ts +178 -0
- package/node_modules/@playcanvas/pcui/react/types/binding/BindingElementToObservers/index.d.ts +24 -0
- package/node_modules/@playcanvas/pcui/react/types/binding/BindingObserversToElement/index.d.ts +40 -0
- package/node_modules/@playcanvas/pcui/react/types/binding/BindingTwoWay/index.d.ts +54 -0
- package/node_modules/@playcanvas/pcui/react/types/binding/index.d.ts +5 -0
- package/node_modules/@playcanvas/pcui/react/types/class.d.ts +17 -0
- package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/ArrayInput/index.d.ts +140 -0
- package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/BooleanInput/index.d.ts +41 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Button/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Button/index.d.ts +75 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Canvas/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Canvas/index.d.ts +61 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Code/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Code/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/ColorPicker/index.d.ts +99 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Container/component.d.ts +15 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Container/index.d.ts +292 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Divider/component.d.ts +10 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Divider/index.d.ts +13 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Element/component.d.ts +23 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Element/index.d.ts +671 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GradientPicker/index.d.ts +152 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GridView/component.d.ts +14 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GridView/index.d.ts +103 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/GridViewItem/index.d.ts +82 -0
- package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/InfoBox/index.d.ts +71 -0
- package/node_modules/@playcanvas/pcui/react/types/components/InputElement/index.d.ts +84 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Label/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Label/index.d.ts +85 -0
- package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/component.d.ts +10 -0
- package/node_modules/@playcanvas/pcui/react/types/components/LabelGroup/index.d.ts +62 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Menu/component.d.ts +14 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Menu/index.d.ts +70 -0
- package/node_modules/@playcanvas/pcui/react/types/components/MenuItem/index.d.ts +139 -0
- package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/NumericInput/index.d.ts +173 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Overlay/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Overlay/index.d.ts +53 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Panel/component.d.ts +16 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Panel/index.d.ts +178 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Progress/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Progress/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/RadioButton/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/component.d.ts +12 -0
- package/node_modules/@playcanvas/pcui/react/types/components/SelectInput/index.d.ts +278 -0
- package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/component.d.ts +10 -0
- package/node_modules/@playcanvas/pcui/react/types/components/SliderInput/index.d.ts +133 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Spinner/component.d.ts +11 -0
- package/node_modules/@playcanvas/pcui/react/types/components/Spinner/index.d.ts +27 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TextAreaInput/index.d.ts +24 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TextInput/component.d.ts +12 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TextInput/index.d.ts +40 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TreeView/component.d.ts +17 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TreeView/index.d.ts +359 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/component.d.ts +13 -0
- package/node_modules/@playcanvas/pcui/react/types/components/TreeViewItem/index.d.ts +224 -0
- package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/component.d.ts +9 -0
- package/node_modules/@playcanvas/pcui/react/types/components/VectorInput/index.d.ts +176 -0
- package/node_modules/@playcanvas/pcui/react/types/components/components.d.ts +30 -0
- package/node_modules/@playcanvas/pcui/react/types/components/index.d.ts +32 -0
- package/node_modules/@playcanvas/pcui/react/types/helpers/search.d.ts +31 -0
- package/node_modules/@playcanvas/pcui/react/types/helpers/utils.d.ts +2 -0
- package/node_modules/@playcanvas/pcui/react/types/index.d.ts +4 -0
- package/node_modules/@playcanvas/pcui/styles/dist/index.mjs +11 -0
- package/node_modules/@playcanvas/pcui/styles/package.json +17 -0
- package/node_modules/@playcanvas/pcui/types/Math/color-value.d.ts +3 -0
- package/node_modules/@playcanvas/pcui/types/binding/BindingBase/index.d.ts +178 -0
- package/node_modules/@playcanvas/pcui/types/binding/BindingElementToObservers/index.d.ts +24 -0
- package/node_modules/@playcanvas/pcui/types/binding/BindingObserversToElement/index.d.ts +40 -0
- package/node_modules/@playcanvas/pcui/types/binding/BindingTwoWay/index.d.ts +54 -0
- package/node_modules/@playcanvas/pcui/types/binding/index.d.ts +5 -0
- package/node_modules/@playcanvas/pcui/types/class.d.ts +17 -0
- package/node_modules/@playcanvas/pcui/types/components/ArrayInput/index.d.ts +140 -0
- package/node_modules/@playcanvas/pcui/types/components/BooleanInput/index.d.ts +41 -0
- package/node_modules/@playcanvas/pcui/types/components/Button/index.d.ts +75 -0
- package/node_modules/@playcanvas/pcui/types/components/Canvas/index.d.ts +61 -0
- package/node_modules/@playcanvas/pcui/types/components/Code/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/types/components/ColorPicker/index.d.ts +99 -0
- package/node_modules/@playcanvas/pcui/types/components/Container/index.d.ts +292 -0
- package/node_modules/@playcanvas/pcui/types/components/Divider/index.d.ts +13 -0
- package/node_modules/@playcanvas/pcui/types/components/Element/index.d.ts +671 -0
- package/node_modules/@playcanvas/pcui/types/components/GradientPicker/index.d.ts +152 -0
- package/node_modules/@playcanvas/pcui/types/components/GridView/index.d.ts +103 -0
- package/node_modules/@playcanvas/pcui/types/components/GridViewItem/index.d.ts +82 -0
- package/node_modules/@playcanvas/pcui/types/components/InfoBox/index.d.ts +71 -0
- package/node_modules/@playcanvas/pcui/types/components/InputElement/index.d.ts +84 -0
- package/node_modules/@playcanvas/pcui/types/components/Label/index.d.ts +85 -0
- package/node_modules/@playcanvas/pcui/types/components/LabelGroup/index.d.ts +62 -0
- package/node_modules/@playcanvas/pcui/types/components/Menu/index.d.ts +70 -0
- package/node_modules/@playcanvas/pcui/types/components/MenuItem/index.d.ts +139 -0
- package/node_modules/@playcanvas/pcui/types/components/NumericInput/index.d.ts +173 -0
- package/node_modules/@playcanvas/pcui/types/components/Overlay/index.d.ts +53 -0
- package/node_modules/@playcanvas/pcui/types/components/Panel/index.d.ts +178 -0
- package/node_modules/@playcanvas/pcui/types/components/Progress/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/types/components/RadioButton/index.d.ts +33 -0
- package/node_modules/@playcanvas/pcui/types/components/SelectInput/index.d.ts +278 -0
- package/node_modules/@playcanvas/pcui/types/components/SliderInput/index.d.ts +133 -0
- package/node_modules/@playcanvas/pcui/types/components/Spinner/index.d.ts +27 -0
- package/node_modules/@playcanvas/pcui/types/components/TextAreaInput/index.d.ts +24 -0
- package/node_modules/@playcanvas/pcui/types/components/TextInput/index.d.ts +40 -0
- package/node_modules/@playcanvas/pcui/types/components/TreeView/index.d.ts +359 -0
- package/node_modules/@playcanvas/pcui/types/components/TreeViewItem/index.d.ts +224 -0
- package/node_modules/@playcanvas/pcui/types/components/VectorInput/index.d.ts +176 -0
- package/node_modules/@playcanvas/pcui/types/components/index.d.ts +32 -0
- package/node_modules/@playcanvas/pcui/types/helpers/search.d.ts +31 -0
- package/node_modules/@playcanvas/pcui/types/helpers/utils.d.ts +2 -0
- package/node_modules/@playcanvas/pcui/types/index.d.ts +20 -0
- package/node_modules/babylonjs-gltf2interface/babylon.glTF2Interface.d.ts +1655 -0
- package/node_modules/babylonjs-gltf2interface/license.md +71 -0
- package/node_modules/babylonjs-gltf2interface/package.json +26 -0
- package/package.json +31 -19
- package/dist/editor-plugin-hierarchy-command.d.ts +0 -19
- package/dist/editor-plugin-hierarchy-command.d.ts.map +0 -1
- package/dist/editor-plugin-hierarchy-command.js +0 -119
- package/dist/editor-plugin-hierarchy-command.js.map +0 -1
- package/node_modules/@babel/helper-string-parser/lib/index.js.map +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/index.js.map +0 -1
- package/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map +0 -1
- package/node_modules/@babel/parser/lib/index.js.map +0 -1
- package/node_modules/@babel/types/lib/asserts/assertNode.js.map +0 -1
- package/node_modules/@babel/types/lib/asserts/generated/index.js.map +0 -1
- package/node_modules/@babel/types/lib/ast-types/generated/index.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/generated/index.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/generated/lowercase.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/generated/uppercase.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/productions.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/react/buildChildren.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map +0 -1
- package/node_modules/@babel/types/lib/builders/validateNode.js.map +0 -1
- package/node_modules/@babel/types/lib/clone/clone.js.map +0 -1
- package/node_modules/@babel/types/lib/clone/cloneDeep.js.map +0 -1
- package/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map +0 -1
- package/node_modules/@babel/types/lib/clone/cloneNode.js.map +0 -1
- package/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/addComment.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/addComments.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/inheritInnerComments.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/inheritsComments.js.map +0 -1
- package/node_modules/@babel/types/lib/comments/removeComments.js.map +0 -1
- package/node_modules/@babel/types/lib/constants/generated/index.js.map +0 -1
- package/node_modules/@babel/types/lib/constants/index.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/ensureBlock.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toBlock.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toComputedKey.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toExpression.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toIdentifier.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toKeyAlias.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toSequenceExpression.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/toStatement.js.map +0 -1
- package/node_modules/@babel/types/lib/converters/valueToNode.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/core.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/experimental.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/flow.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/index.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/jsx.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/misc.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/placeholders.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/typescript.js.map +0 -1
- package/node_modules/@babel/types/lib/definitions/utils.js.map +0 -1
- package/node_modules/@babel/types/lib/index.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/inherits.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/removeProperties.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map +0 -1
- package/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map +0 -1
- package/node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map +0 -1
- package/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map +0 -1
- package/node_modules/@babel/types/lib/retrievers/getFunctionName.js.map +0 -1
- package/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map +0 -1
- package/node_modules/@babel/types/lib/traverse/traverse.js.map +0 -1
- package/node_modules/@babel/types/lib/traverse/traverseFast.js.map +0 -1
- package/node_modules/@babel/types/lib/utils/deprecationWarning.js.map +0 -1
- package/node_modules/@babel/types/lib/utils/inherit.js.map +0 -1
- package/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map +0 -1
- package/node_modules/@babel/types/lib/utils/shallowEqual.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/generated/index.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/is.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isBinding.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isBlockScoped.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isImmutable.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isLet.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isNode.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isPlaceholderType.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isReferenced.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isScope.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isType.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isValidIdentifier.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/isVar.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/matchesPattern.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/react/isCompatTag.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/react/isReactComponent.js.map +0 -1
- package/node_modules/@babel/types/lib/validators/validate.js.map +0 -1
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts +0 -37
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js +0 -451
- package/node_modules/@fps-games/editor-babylon/dist/prefab-comparison-preview-controller.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts +0 -49
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js +0 -627
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-actions.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts +0 -52
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js +0 -450
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-attach-dialog.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts +0 -21
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js +0 -75
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-command-adapter.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts +0 -7
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js +0 -186
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-projection.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts +0 -5
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js +0 -98
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-scope.js.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts +0 -63
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.d.ts.map +0 -1
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js +0 -301
- package/node_modules/@fps-games/editor-browser/dist/local-editor-ui-hierarchy-tree.js.map +0 -1
package/node_modules/@fps-games/babylon-renderer/dist/shadows/shadow-map-experiment-system.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-map-experiment-system.js","sourceRoot":"","sources":["../../src/shadows/shadow-map-experiment-system.ts"],"names":[],"mappings":"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","sourcesContent":["import { DirectionalLight } from '@babylonjs/core/Lights/directionalLight.js';\nimport { ShadowGenerator } from '@babylonjs/core/Lights/Shadows/shadowGenerator.js';\nimport './shadow-generator-shaders.js';\nimport { Matrix, Vector3 } from '@babylonjs/core/Maths/math.vector.js';\nimport type { Camera } from '@babylonjs/core/Cameras/camera.js';\nimport type { AnimationGroup } from '@babylonjs/core/Animations/animationGroup.js';\nimport type { AbstractMesh, IMeshDataCache } from '@babylonjs/core/Meshes/abstractMesh.js';\nimport type { TransformNode } from '@babylonjs/core/Meshes/transformNode.js';\nimport type { Observer } from '@babylonjs/core/Misc/observable.js';\nimport type { Node } from '@babylonjs/core/node.js';\nimport type { Scene } from '@babylonjs/core/scene.js';\nimport {\n createShadowMapExperimentPlanSnapshot,\n createShadowMapExperimentPlanFingerprint,\n createShadowMapExperimentActivityScheduler,\n createShadowMapExperimentDepthRefreshScheduler,\n createShadowMapExperimentInfluenceCullingState,\n createShadowMapExperimentRegistry,\n diffShadowMapExperimentPlans,\n shadowMapExperimentDepthLayerForUpdateClass,\n type ShadowMapExperimentActivityKind,\n type ShadowMapExperimentActivitySchedulerSnapshot,\n type ShadowMapExperimentActivitySourceController,\n type ShadowMapExperimentBehaviorProfileCatalogEntry,\n type ShadowMapExperimentDirtyReason,\n type ShadowMapExperimentDepthLayer,\n type ShadowMapExperimentDepthRefreshDecision,\n type ShadowMapExperimentInfluenceCullingSnapshot,\n type ShadowMapExperimentPlan,\n type ShadowMapExperimentPlanObject,\n type ShadowMapExperimentUpdateClass,\n type ShadowMapExperimentRegistry,\n type ShadowMapExperimentRegistrySnapshot,\n} from '@fps-games/playable-rendering/runtime';\nimport {\n createBabylonShadowMapExperimentDepthBackend,\n createBabylonShadowMapExperimentSingleDepthBackend,\n readBabylonShadowMapExperimentAllocationCleanup,\n type BabylonShadowMapExperimentDepthBackend,\n type BabylonShadowMapExperimentDepthBackendEvidence,\n type BabylonShadowMapExperimentBackendMode,\n type BabylonShadowMapExperimentCompositorLifecycleEvent,\n} from './shadow-map-experiment-depth-backend.js';\n\nimport '@babylonjs/core/Lights/Shadows/shadowGeneratorSceneComponent.js';\n\nexport interface BabylonShadowMapExperimentEvidence {\n readonly enabled: boolean;\n readonly planRevision: number | null;\n readonly planFingerprint: string | null;\n readonly effectivePlan: ShadowMapExperimentPlan | null;\n readonly lightEntityId: string | null;\n readonly generatorAllocated: boolean;\n readonly resolution: number | null;\n readonly mapResolutions: {\n readonly static: number;\n readonly dynamic: number;\n readonly composite: number;\n } | null;\n readonly configuredMapResolutions: {\n readonly static: number;\n readonly dynamic: number;\n readonly composite: number;\n } | null;\n readonly diagnosticThresholds: ShadowMapExperimentPlan['diagnosticThresholds'] | null;\n readonly filter: 'hard' | 'low-pcf' | null;\n readonly renderListCount: number;\n readonly receiverMeshCount: number;\n readonly boundMeshCount: number;\n readonly activity: ShadowMapExperimentActivitySchedulerSnapshot;\n readonly automaticActivity: BabylonShadowMapExperimentAutomaticActivityEvidence;\n readonly runtime: BabylonRuntimeShadowObjectsSnapshot;\n readonly refreshCount: number;\n readonly lastRefreshReasons: readonly ShadowMapExperimentDirtyReason[];\n readonly worldUnitsPerTexel: readonly [number, number] | null;\n readonly worldUnitsPerTexelByMap: {\n readonly static: readonly [number, number];\n readonly dynamic: readonly [number, number];\n readonly composite: readonly [number, number];\n } | null;\n readonly registry: ShadowMapExperimentRegistrySnapshot | null;\n readonly backend: BabylonShadowMapExperimentBackendMode | null;\n readonly fallbackReason: string | null;\n readonly fallbackWarningEmitted: boolean;\n readonly depth: BabylonShadowMapExperimentDepthBackendEvidence | null;\n readonly culling: ShadowMapExperimentInfluenceCullingSnapshot & {\n readonly enabled: boolean;\n readonly stable: boolean;\n readonly lastInvalidationReason: string | null;\n readonly coverageMode: 'fixed' | 'scene-fit';\n readonly authoredCenter: readonly [number, number, number] | null;\n readonly effectiveCenter: readonly [number, number, number] | null;\n readonly authoredExtent: readonly [number, number, number] | null;\n readonly effectiveExtent: readonly [number, number, number] | null;\n readonly anchor: readonly [number, number, number] | null;\n };\n readonly diagnostics: readonly {\n readonly code: string;\n readonly message: string;\n readonly entityId?: string;\n readonly renderableId?: string;\n }[];\n}\n\nexport interface BabylonShadowMapExperimentAutomaticActivityEvidence {\n readonly observedAnimationGroupCount: number;\n readonly boundAnimationGroupCount: number;\n readonly activeAnimationGroupCount: number;\n readonly registeredActivitySourceCount: number;\n readonly unresolvedActiveAnimationGroupCount: number;\n}\n\nexport interface BabylonRuntimeShadowObjectRenderable {\n readonly renderableId: string;\n readonly mesh: AbstractMesh;\n}\n\nexport interface BabylonRuntimeShadowObjectActivityDescriptor {\n readonly kind: ShadowMapExperimentActivityKind;\n readonly sourceId: string;\n readonly initiallyActive?: boolean;\n}\n\nexport interface BabylonRuntimeShadowObjectRegistration {\n readonly entityId: string;\n readonly behaviorProfileId: string;\n readonly renderables: readonly BabylonRuntimeShadowObjectRenderable[];\n readonly activities?: readonly BabylonRuntimeShadowObjectActivityDescriptor[];\n}\n\nexport interface BabylonRuntimeShadowObjectsRegistration {\n readonly objects: readonly BabylonRuntimeShadowObjectRegistration[];\n}\n\nexport interface BabylonRuntimeShadowObjectsOwner {\n readonly entityIds: readonly string[];\n readonly renderableIds: readonly string[];\n getBehaviorProfileId(entityId: string): string | null;\n getActivityController(\n entityId: string,\n sourceId: string,\n ): ShadowMapExperimentActivitySourceController | null;\n dispose(): void;\n}\n\nexport interface BabylonRuntimeShadowObjectsSnapshot {\n readonly planSchemaVersion: 2 | 3 | null;\n readonly sourcePlanRevision: number | null;\n readonly effectivePlanRevision: number | null;\n readonly overlayRevision: number;\n readonly registrationCount: number;\n readonly activityOwnerCount: number;\n readonly registrations: readonly {\n readonly entityId: string;\n readonly behaviorProfileId: string;\n readonly renderableIds: readonly string[];\n readonly activitySourceIds: readonly string[];\n }[];\n}\n\nexport interface BabylonShadowMapExperimentSystem {\n setPlan(plan: ShadowMapExperimentPlan | null): void;\n getPlan(): ShadowMapExperimentPlan | null;\n getShadowGenerator(): ShadowGenerator | null;\n registerMesh(mesh: AbstractMesh): boolean;\n unregisterMesh(mesh: AbstractMesh): void;\n setRenderableVisible(renderableId: string, visible: boolean): void;\n registerCasterActivitySource(input: {\n readonly entityId: string;\n readonly kind: ShadowMapExperimentActivityKind;\n readonly sourceId: string;\n }): ShadowMapExperimentActivitySourceController;\n registerRuntimeShadowObjects(\n input: BabylonRuntimeShadowObjectsRegistration,\n ): BabylonRuntimeShadowObjectsOwner;\n markDirty(reason: ShadowMapExperimentDirtyReason, targetEntityOrRenderableId?: string): void;\n getEvidence(): BabylonShadowMapExperimentEvidence;\n dispose(): void;\n}\n\nexport interface BabylonShadowMapExperimentSystemOptions {\n readonly requestFrame?: (reason: string) => void;\n readonly coverageMode?: 'fixed' | 'scene-fit';\n}\n\nexport type BabylonShadowMapExperimentSystemCleanup = () => readonly unknown[];\n\nexport function readBabylonShadowMapExperimentSystemCleanup(\n error: unknown,\n): BabylonShadowMapExperimentSystemCleanup | null {\n if (!error || (typeof error !== 'object' && typeof error !== 'function')) return null;\n const cleanup = (error as { shadowMapExperimentSystemCleanup?: unknown }).shadowMapExperimentSystemCleanup;\n return typeof cleanup === 'function' ? cleanup as BabylonShadowMapExperimentSystemCleanup : null;\n}\n\nexport function readBabylonRuntimeShadowObjectsRecoveryOwner(\n error: unknown,\n): BabylonRuntimeShadowObjectsOwner | null {\n if (!error || (typeof error !== 'object' && typeof error !== 'function')) return null;\n const owner = (error as { runtimeShadowObjectsRecoveryOwner?: unknown }).runtimeShadowObjectsRecoveryOwner;\n return owner && typeof owner === 'object' && typeof (owner as BabylonRuntimeShadowObjectsOwner).dispose === 'function'\n ? owner as BabylonRuntimeShadowObjectsOwner\n : null;\n}\n\ninterface LightState {\n readonly light: DirectionalLight;\n readonly direction: Vector3;\n readonly position: Vector3;\n readonly autoUpdateExtends: boolean;\n readonly shadowEnabled: boolean;\n readonly orthoLeft: number;\n readonly orthoRight: number;\n readonly orthoTop: number;\n readonly orthoBottom: number;\n readonly shadowMinZ: number;\n readonly shadowMaxZ: number;\n}\n\ninterface MeshBinding {\n readonly mesh: AbstractMesh;\n readonly entityId: string;\n readonly renderableId: string;\n readonly sceneFitLocalBounds: {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n } | null;\n readonly enabledObserver: Observer<boolean>;\n readonly disposeObserver: Observer<Node>;\n matrixObserver: Observer<TransformNode> | null;\n worldMatrixSnapshot: readonly number[] | null;\n}\n\ninterface PendingMeshObserverCleanup {\n readonly mesh: AbstractMesh;\n enabledObserver: Observer<boolean> | null;\n disposeObserver: Observer<Node> | null;\n}\n\ninterface ReceiverState {\n readonly mesh: AbstractMesh;\n readonly previousReceiveShadows: boolean;\n readonly requests: Map<AbstractMesh, boolean>;\n ownedValue: boolean;\n}\n\ninterface RuntimeShadowObjectsRecord {\n readonly entityId: string;\n readonly behaviorProfileId: string;\n readonly renderables: readonly BabylonRuntimeShadowObjectRenderable[];\n readonly activities: readonly BabylonRuntimeShadowObjectActivityDescriptor[];\n readonly controllers: Map<string, ShadowMapExperimentActivitySourceController>;\n owner: BabylonRuntimeShadowObjectsOwner | null;\n disposed: boolean;\n}\n\ninterface AutomaticAnimationGroupSource {\n readonly entityId: string;\n readonly kind: ShadowMapExperimentActivityKind;\n readonly controller: ShadowMapExperimentActivitySourceController;\n}\n\ninterface AutomaticAnimationGroupBinding {\n readonly group: AnimationGroup;\n playObserver: Observer<AnimationGroup> | null;\n pauseObserver: Observer<AnimationGroup> | null;\n endObserver: Observer<AnimationGroup> | null;\n readonly sources: Map<string, AutomaticAnimationGroupSource>;\n active: boolean;\n ready: boolean;\n}\n\nexport function createBabylonShadowMapExperimentSystem(\n scene: Scene,\n initialPlan: ShadowMapExperimentPlan | null = null,\n options: BabylonShadowMapExperimentSystemOptions = {},\n): BabylonShadowMapExperimentSystem {\n let disposed = false;\n let disposing = false;\n let sourcePlan: ShadowMapExperimentPlan | null = null;\n let plan: ShadowMapExperimentPlan | null = null;\n let runtimeOverlayRevision = 0;\n let lightState: LightState | null = null;\n let generator: ShadowGenerator | null = null;\n let depthBackend: BabylonShadowMapExperimentDepthBackend | null = null;\n let registry: ShadowMapExperimentRegistry | null = null;\n let previousSceneShadowsEnabled: boolean | null = null;\n let refreshCount = 0;\n let lastRefreshReasons: readonly ShadowMapExperimentDirtyReason[] = Object.freeze([]);\n const activityScheduler = createShadowMapExperimentActivityScheduler();\n const depthRefreshScheduler = createShadowMapExperimentDepthRefreshScheduler();\n const influenceCulling = createShadowMapExperimentInfluenceCullingState(0.25);\n const candidateLayerByMesh = new Map<AbstractMesh, ShadowMapExperimentDepthLayer>();\n const candidateMeshCounts: Record<ShadowMapExperimentDepthLayer, number> = { static: 0, dynamic: 0 };\n const meshDataCacheByMesh = new Map<AbstractMesh, IMeshDataCache>();\n const conservativeCasterMeshes = new Set<AbstractMesh>();\n const pendingMeshObserverCleanups = new Map<AbstractMesh, PendingMeshObserverCleanup>();\n const pendingMeshRegistrationRollbacks = new Set<AbstractMesh>();\n const pendingSceneMeshRegistrations = new Set<AbstractMesh>();\n const pendingMeshUnregistrations = new Set<AbstractMesh>();\n const pendingRenderableMembershipRetries = new Set<string>();\n const pendingTransformMembershipRetries = new Set<AbstractMesh>();\n const activeCasterEntityIds = new Set<string>();\n const activeDeformationSourceCountByEntity = new Map<string, number>();\n const eligibleActiveDeformationEntityIds = new Set<string>();\n const pendingFinalDeformationEntityIds = new Set<string>();\n const pendingDeformationInvalidations = new Map<string, Set<ShadowMapExperimentDirtyReason>>();\n const pendingMembershipInvalidationLayers = new Set<ShadowMapExperimentDepthLayer>();\n const pendingCompositeRefreshReasons = new Set<ShadowMapExperimentDirtyReason>();\n const fallbackWarnings = new Set<string>();\n let pendingBackendAllocationCleanup: (() => readonly unknown[]) | null = null;\n let pendingFallbackReason: string | null = null;\n let pendingCoverageMembershipRebuild = false;\n let cullingStable = false;\n let lastCullingInvalidationReason: string | null = null;\n let effectiveCoverageCenter: readonly [number, number, number] | null = null;\n let effectiveCoverageExtent: readonly [number, number, number] | null = null;\n let effectiveCoverageNear: number | null = null;\n let effectiveCoverageFar: number | null = null;\n const objectByEntity = new Map<string, ShadowMapExperimentPlanObject>();\n const objectByRenderable = new Map<string, ShadowMapExperimentPlanObject>();\n const meshesByRenderable = new Map<string, Set<AbstractMesh>>();\n const bindings = new Map<AbstractMesh, MeshBinding>();\n const receiverStates = new Map<AbstractMesh, ReceiverState>();\n const receiverTargetByMesh = new Map<AbstractMesh, AbstractMesh>();\n const diagnostics: Array<{ code: string; message: string; entityId?: string; renderableId?: string }> = [];\n const diagnosticKeys = new Set<string>();\n const runtimeRegistrations = new Map<string, RuntimeShadowObjectsRecord>();\n const automaticAnimationGroups = new Map<AnimationGroup, AutomaticAnimationGroupBinding>();\n let flushingRefresh = false;\n\n const assertUsable = (allowDisposing = false): void => {\n if (disposed || (disposing && !allowDisposing)) throw new Error('shadowMapExperiment.systemDisposed');\n };\n\n const rememberDiagnostic = (\n code: string,\n message: string,\n identity: { entityId?: string; renderableId?: string } = {},\n ): void => {\n const key = `${code}\\u0000${identity.entityId ?? ''}\\u0000${identity.renderableId ?? ''}`;\n if (diagnosticKeys.has(key)) return;\n diagnosticKeys.add(key);\n diagnostics.push({ code, message, ...identity });\n };\n\n const requireRuntimeProfile = (\n basePlan: ShadowMapExperimentPlan | null,\n behaviorProfileId: string,\n entityId: string,\n ): ShadowMapExperimentBehaviorProfileCatalogEntry & {\n readonly updateClass: ShadowMapExperimentUpdateClass;\n } => {\n if (!basePlan || basePlan.schemaVersion !== 3) {\n const code = 'shadowMapExperiment.runtimeProfileCatalogUnavailable';\n rememberDiagnostic(code, 'Plan v3 behavior profile catalog is required for runtime shadow registration.', { entityId });\n throw new Error(`${code}:plan-v${basePlan?.schemaVersion ?? 'none'}`);\n }\n const profile = basePlan.behaviorProfiles[behaviorProfileId];\n if (!profile) {\n const code = 'shadowMapExperiment.runtimeBehaviorProfileUnknown';\n rememberDiagnostic(code, `Unknown runtime behavior profile: ${behaviorProfileId}`, { entityId });\n throw new Error(`${code}:${behaviorProfileId}`);\n }\n if (profile.updateClass === 'auto') {\n const code = 'shadowMapExperiment.runtimeBehaviorProfileAutoUnsupported';\n rememberDiagnostic(code, `Runtime behavior profile ${behaviorProfileId} must declare a deterministic updateClass.`, { entityId });\n throw new Error(`${code}:${behaviorProfileId}`);\n }\n return profile as ShadowMapExperimentBehaviorProfileCatalogEntry & {\n readonly updateClass: ShadowMapExperimentUpdateClass;\n };\n };\n\n const composeEffectivePlan = (\n basePlan: ShadowMapExperimentPlan | null,\n records: readonly RuntimeShadowObjectsRecord[],\n overlayRevision: number,\n ): ShadowMapExperimentPlan | null => {\n if (!basePlan) {\n if (records.length > 0) throw new Error('shadowMapExperiment.runtimePlanUnavailable');\n return null;\n }\n if (records.length === 0) return basePlan;\n const runtimeObjects: ShadowMapExperimentPlanObject[] = records.map(record => {\n const profile = requireRuntimeProfile(basePlan, record.behaviorProfileId, record.entityId);\n if (record.activities.length > 0 && (!profile.cast || profile.updateClass === 'static')) {\n throw new Error(`shadowMapExperiment.runtimeActivityProfileIneligible:${record.behaviorProfileId}`);\n }\n return Object.freeze({\n entityId: record.entityId,\n renderableIds: Object.freeze(record.renderables.map(renderable => renderable.renderableId).sort()),\n cast: profile.cast,\n receive: profile.receive,\n updateClass: profile.updateClass,\n behaviorProfileId: record.behaviorProfileId,\n });\n });\n return createShadowMapExperimentPlanSnapshot({\n ...basePlan,\n revision: basePlan.revision + overlayRevision,\n objects: [...basePlan.objects, ...runtimeObjects].sort((left, right) => left.entityId.localeCompare(right.entityId)),\n });\n };\n\n const requestRefreshFrame = (reason: string): void => {\n if (disposed || disposing || flushingRefresh || !options.requestFrame) return;\n try {\n options.requestFrame(reason);\n } catch (error) {\n const code = 'shadowMapExperiment.frameRequestFailed';\n if (diagnosticKeys.has(code)) return;\n diagnosticKeys.add(code);\n diagnostics.push({\n code,\n message: `Shadow refresh frame request failed: ${error instanceof Error ? error.message : String(error)}`,\n });\n }\n };\n\n const enqueueRefresh = (reason: ShadowMapExperimentDirtyReason): void => {\n activityScheduler.markDirty(reason);\n requestRefreshFrame(`shadow-map-experiment-${reason}`);\n };\n\n const markDepthDirty = (\n layer: ShadowMapExperimentDepthLayer,\n reason: ShadowMapExperimentDirtyReason,\n ): void => {\n depthRefreshScheduler.markDirty(layer, reason);\n requestRefreshFrame(`shadow-map-experiment-${reason}`);\n };\n\n const markAllDepthDirty = (reason: ShadowMapExperimentDirtyReason): void => {\n depthRefreshScheduler.markAllDirty(reason);\n requestRefreshFrame(`shadow-map-experiment-${reason}`);\n };\n\n const syncSceneFitCoverage = (force = false): void => {\n if (!plan?.enabled || !lightState || options.coverageMode !== 'scene-fit') return;\n const sceneBounds = collectActiveCasterWorldBounds(bindings, registry);\n if (!sceneBounds) return;\n const nextCoverage = createSceneFitCoverage(plan, sceneBounds);\n const currentCenter = effectiveCoverageCenter ?? plan.generator.bounds.center;\n const currentExtent = effectiveCoverageExtent ?? plan.generator.bounds.extent;\n const currentNear = effectiveCoverageNear ?? plan.generator.bounds.near;\n const currentFar = effectiveCoverageFar ?? plan.generator.bounds.far;\n if (!force\n && areTuple3Equal(currentCenter, nextCoverage.center)\n && areTuple3Equal(currentExtent, nextCoverage.extent)\n && currentNear === nextCoverage.near\n && currentFar === nextCoverage.far) return;\n effectiveCoverageCenter = nextCoverage.center;\n effectiveCoverageExtent = nextCoverage.extent;\n effectiveCoverageNear = nextCoverage.near;\n effectiveCoverageFar = nextCoverage.far;\n configureLight(lightState.light, plan, nextCoverage);\n pendingCoverageMembershipRebuild = true;\n lastCullingInvalidationReason = 'scene-fit-coverage-changed';\n markAllDepthDirty('camera-influence-region-changed');\n };\n\n const handleCompositorLifecycleEvent = (\n event: BabylonShadowMapExperimentCompositorLifecycleEvent,\n ): void => {\n if (disposed || disposing) return;\n if (event === 'ready') markAllDepthDirty('compositor-ready');\n else requestRefreshFrame(`shadow-map-experiment-compositor-${event}`);\n };\n\n const routeDirtyReason = (reason: ShadowMapExperimentDirtyReason): void => {\n if (isDynamicDirtyReason(reason)) {\n depthRefreshScheduler.markDirty('dynamic', reason);\n return;\n }\n if (isStaticDirtyReason(reason)) {\n depthRefreshScheduler.markDirty('static', reason);\n return;\n }\n depthRefreshScheduler.markAllDirty(reason);\n };\n\n const syncCandidateCounts = (): void => {\n depthBackend?.setCandidateCounts(candidateMeshCounts.static, candidateMeshCounts.dynamic);\n };\n\n const setCandidateLayer = (\n mesh: AbstractMesh,\n nextLayer: ShadowMapExperimentDepthLayer | null,\n ): void => {\n const previousLayer = candidateLayerByMesh.get(mesh) ?? null;\n if (previousLayer === nextLayer) return;\n if (previousLayer) candidateMeshCounts[previousLayer] -= 1;\n if (nextLayer) {\n candidateLayerByMesh.set(mesh, nextLayer);\n candidateMeshCounts[nextLayer] += 1;\n } else {\n candidateLayerByMesh.delete(mesh);\n }\n };\n\n const warnForFallback = (reason: string): void => {\n if (fallbackWarnings.has(reason)) return;\n fallbackWarnings.add(reason);\n console.warn(`[shadow-map-experiment] split backend unavailable; using single ShadowMap (${reason})`);\n };\n\n const flushRefresh = (): void => {\n if (disposed || disposing) return;\n let postFlushFrameReason: string | null = null;\n flushingRefresh = true;\n try {\n syncAutomaticAnimationGroupStates();\n flushPendingBackendAllocationCleanup();\n recoverPendingFallbackBackend();\n if (!depthBackend || !registry) return;\n downgradeFailedSplitBackend();\n if (!depthBackend) return;\n flushPendingMeshUnregistrations();\n flushPendingSceneMeshRegistrations();\n flushPendingRenderableMembershipRetries();\n flushPendingTransformMembershipRetries();\n syncSceneFitCoverage();\n updateCameraInfluenceCoverage();\n flushMembershipInvalidations();\n registry.consumeDirtyReasons();\n const activityDecision = activityScheduler.consumeFrameDecision();\n resyncActivityDeformationMembership(activityDecision.reasons);\n for (const reason of activityDecision.reasons) routeDirtyReason(reason);\n const decision = depthRefreshScheduler.consumeFrameDecision();\n let refreshDecision: ShadowMapExperimentDepthRefreshDecision = decision;\n if (options.requestFrame && depthBackend.mode === 'split-static-dynamic') {\n const settlementReasons = Object.freeze([...pendingCompositeRefreshReasons]);\n pendingCompositeRefreshReasons.clear();\n for (const reason of decision.composite.reasons) pendingCompositeRefreshReasons.add(reason);\n refreshDecision = Object.freeze({\n static: decision.static,\n dynamic: decision.dynamic,\n composite: Object.freeze({\n shouldRefresh: settlementReasons.length > 0,\n reasons: settlementReasons,\n }),\n });\n if (pendingCompositeRefreshReasons.size > 0) {\n postFlushFrameReason = 'shadow-map-experiment-composite-settlement';\n }\n } else if (pendingCompositeRefreshReasons.size > 0) {\n const compositeReasons = Object.freeze([\n ...new Set([...pendingCompositeRefreshReasons, ...decision.composite.reasons]),\n ]);\n pendingCompositeRefreshReasons.clear();\n refreshDecision = Object.freeze({\n static: decision.static,\n dynamic: decision.dynamic,\n composite: Object.freeze({ shouldRefresh: true, reasons: compositeReasons }),\n });\n }\n if (!refreshDecision.static.shouldRefresh\n && !refreshDecision.dynamic.shouldRefresh\n && !refreshDecision.composite.shouldRefresh) return;\n depthBackend.refresh(refreshDecision);\n if (!refreshDecision.composite.shouldRefresh) return;\n registry.markShadowRendered();\n refreshCount += 1;\n lastRefreshReasons = refreshDecision.composite.reasons;\n } finally {\n flushingRefresh = false;\n if (postFlushFrameReason) requestRefreshFrame(postFlushFrameReason);\n }\n };\n\n const syncDeformationActivityEligibility = (entityId: string): void => {\n if (activeCasterEntityIds.has(entityId)\n && (activeDeformationSourceCountByEntity.get(entityId) ?? 0) > 0) {\n eligibleActiveDeformationEntityIds.add(entityId);\n } else {\n eligibleActiveDeformationEntityIds.delete(entityId);\n }\n };\n\n const syncActivityEligibility = (entityId: string): void => {\n const object = objectByEntity.get(entityId);\n const active = object?.renderableIds.some(renderableId => registry?.getRecord(renderableId)?.state === 'active') === true;\n activityScheduler.setEntityActive(entityId, active);\n if (active) activeCasterEntityIds.add(entityId);\n else activeCasterEntityIds.delete(entityId);\n syncDeformationActivityEligibility(entityId);\n };\n\n const shouldRetainCaster = (\n mesh: AbstractMesh,\n updateClass: ShadowMapExperimentPlanObject['updateClass'],\n ): boolean => {\n if (plan?.culling.enabled === false) {\n conservativeCasterMeshes.delete(mesh);\n return true;\n }\n const deformable = isDeformableCaster(mesh, updateClass);\n const bounds = readCasterWorldBounds(\n mesh,\n deformable,\n deformable\n ? meshDataCacheByMesh.get(mesh) ?? createMeshDataCache(mesh, meshDataCacheByMesh)\n : null,\n );\n if (!bounds) {\n conservativeCasterMeshes.add(mesh);\n const binding = bindings.get(mesh);\n const code = deformable\n ? 'shadowMapExperiment.deformationBoundsUnavailable'\n : 'shadowMapExperiment.casterBoundsUnavailable';\n const key = `${code}:${mesh.uniqueId}`;\n if (!diagnosticKeys.has(key)) {\n diagnosticKeys.add(key);\n diagnostics.push({\n code,\n message: deformable\n ? 'Deformed caster bounds were unavailable, so influence culling retained the caster conservatively.'\n : 'Caster bounds were unavailable, so influence culling retained the caster conservatively.',\n entityId: binding?.entityId,\n renderableId: binding?.renderableId,\n });\n }\n } else {\n conservativeCasterMeshes.delete(mesh);\n }\n return influenceCulling.shouldRetainCaster({\n casterBounds: bounds,\n lightDirection: plan?.light.direction ?? null,\n projectionDistance: plan\n ? Math.max(\n 0,\n (effectiveCoverageFar ?? plan.generator.bounds.far)\n - (effectiveCoverageNear ?? plan.generator.bounds.near),\n )\n : 0,\n });\n };\n\n const resyncActivityDeformationMembership = (\n reasons: readonly ShadowMapExperimentDirtyReason[],\n ): void => {\n const hasDeformationFrame = reasons.includes('skinned-animation-frame')\n || reasons.includes('morph-animation-frame');\n const finalEntityIds = [...pendingFinalDeformationEntityIds];\n const deformationInvalidations = [...pendingDeformationInvalidations.entries()];\n if (!hasDeformationFrame && finalEntityIds.length === 0 && deformationInvalidations.length === 0) return;\n const renderableIds = new Set<string>();\n if (hasDeformationFrame) {\n for (const entityId of eligibleActiveDeformationEntityIds) {\n const object = objectByEntity.get(entityId);\n if (!object) continue;\n for (const renderableId of object.renderableIds) renderableIds.add(renderableId);\n }\n }\n if (finalEntityIds.length > 0) {\n for (const entityId of finalEntityIds) {\n if (!activeCasterEntityIds.has(entityId)) continue;\n const object = objectByEntity.get(entityId);\n if (!object) continue;\n for (const renderableId of object.renderableIds) renderableIds.add(renderableId);\n }\n }\n for (const [entityId] of deformationInvalidations) {\n if (!activeCasterEntityIds.has(entityId)) continue;\n const object = objectByEntity.get(entityId);\n if (!object) continue;\n for (const renderableId of object.renderableIds) renderableIds.add(renderableId);\n }\n for (const renderableId of renderableIds) syncCaster(renderableId);\n for (const entityId of finalEntityIds) pendingFinalDeformationEntityIds.delete(entityId);\n if (finalEntityIds.length > 0) {\n markDepthDirty('dynamic', 'caster-activity-stopped');\n }\n for (const [entityId, invalidationReasons] of deformationInvalidations) {\n pendingDeformationInvalidations.delete(entityId);\n for (const reason of invalidationReasons) markDepthDirty('dynamic', reason);\n }\n };\n\n const resyncAllCasterMembership = (): readonly ShadowMapExperimentDepthLayer[] => {\n const beforeStatic = depthBackend?.getEvidence().static.retainedMeshCount ?? 0;\n const beforeDynamic = depthBackend?.getEvidence().dynamic.retainedMeshCount ?? 0;\n for (const renderableId of meshesByRenderable.keys()) syncCaster(renderableId);\n const after = depthBackend?.getEvidence();\n const changed: ShadowMapExperimentDepthLayer[] = [];\n if (beforeStatic !== (after?.static.retainedMeshCount ?? 0)) changed.push('static');\n if (beforeDynamic !== (after?.dynamic.retainedMeshCount ?? 0)) changed.push('dynamic');\n return Object.freeze(changed);\n };\n\n const resyncLayerCasterMembership = (layer: ShadowMapExperimentDepthLayer): void => {\n const renderableIds = new Set<string>();\n for (const [mesh, candidateLayer] of candidateLayerByMesh) {\n if (candidateLayer !== layer) continue;\n const binding = bindings.get(mesh);\n if (binding) renderableIds.add(binding.renderableId);\n }\n for (const renderableId of renderableIds) syncCaster(renderableId);\n };\n\n const flushMembershipInvalidations = (): void => {\n for (const layer of pendingMembershipInvalidationLayers) resyncLayerCasterMembership(layer);\n pendingMembershipInvalidationLayers.clear();\n };\n\n const updateCameraInfluenceCoverage = (): void => {\n if (!plan?.enabled) return;\n if (!plan.culling.enabled) {\n cullingStable = true;\n pendingCoverageMembershipRebuild = false;\n return;\n }\n const camera = scene.activeCamera;\n const decision = influenceCulling.updateCoverage({\n cameraId: camera ? String(camera.uniqueId) : 'none',\n projectionSignature: camera\n ? `${readCameraProjectionSignature(camera, scene)}:${JSON.stringify({\n ...plan.generator.bounds,\n center: effectiveCoverageCenter ?? plan.generator.bounds.center,\n extent: effectiveCoverageExtent ?? plan.generator.bounds.extent,\n near: effectiveCoverageNear ?? plan.generator.bounds.near,\n far: effectiveCoverageFar ?? plan.generator.bounds.far,\n })}`\n : 'none',\n visibleBounds: camera\n ? calculateCameraShadowCoverage(\n camera,\n plan,\n effectiveCoverageCenter ?? plan.generator.bounds.center,\n effectiveCoverageExtent ?? plan.generator.bounds.extent,\n )\n : null,\n });\n const retryingMembershipRebuild = pendingCoverageMembershipRebuild;\n cullingStable = !decision.rebuilt && !retryingMembershipRebuild;\n if (!decision.rebuilt && !retryingMembershipRebuild) return;\n if (decision.rebuilt && !retryingMembershipRebuild) {\n lastCullingInvalidationReason = 'camera-influence-region-changed';\n }\n let changedLayers: readonly ShadowMapExperimentDepthLayer[];\n try {\n changedLayers = resyncAllCasterMembership();\n pendingCoverageMembershipRebuild = false;\n } catch (error) {\n pendingCoverageMembershipRebuild = true;\n cullingStable = false;\n throw error;\n }\n const dirtyLayers: readonly ShadowMapExperimentDepthLayer[] = retryingMembershipRebuild\n ? Object.freeze(['static', 'dynamic'] as const)\n : changedLayers;\n for (const layer of dirtyLayers) {\n markDepthDirty(layer, 'camera-influence-region-changed');\n }\n };\n\n const downgradeFailedSplitBackend = (): void => {\n if (!depthBackend || depthBackend.mode !== 'split-static-dynamic' || !plan?.enabled || !lightState) return;\n const runtimeFailureReason = depthBackend.getRuntimeFailureReason();\n if (!runtimeFailureReason) return;\n const failedBackend = depthBackend;\n failedBackend.dispose();\n depthBackend = null;\n generator = null;\n pendingFallbackReason = runtimeFailureReason;\n recoverPendingFallbackBackend();\n };\n\n const rememberBackendAllocationCleanup = (error: unknown): void => {\n const cleanup = readBabylonShadowMapExperimentAllocationCleanup(error);\n if (cleanup) pendingBackendAllocationCleanup = cleanup;\n };\n\n const flushPendingBackendAllocationCleanup = (): void => {\n if (!pendingBackendAllocationCleanup) return;\n const cleanupErrors = pendingBackendAllocationCleanup();\n if (cleanupErrors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.backendAllocationCleanupFailed'), { cleanupErrors });\n }\n pendingBackendAllocationCleanup = null;\n };\n\n const prepareBackendCasterMembership = (backend: BabylonShadowMapExperimentDepthBackend): void => {\n let staticCandidateCount = 0;\n let dynamicCandidateCount = 0;\n for (const [mesh, layer] of candidateLayerByMesh) {\n if (layer === 'static') staticCandidateCount += 1;\n else dynamicCandidateCount += 1;\n const binding = bindings.get(mesh);\n const updateClass = binding ? objectByRenderable.get(binding.renderableId)?.updateClass : null;\n if (!updateClass || shouldRetainCaster(mesh, updateClass)) backend.addCaster(mesh, layer);\n }\n backend.setCandidateCounts(staticCandidateCount, dynamicCandidateCount);\n };\n\n const recoverPendingFallbackBackend = (): void => {\n if (!pendingFallbackReason || depthBackend || !plan?.enabled || !lightState) return;\n flushPendingBackendAllocationCleanup();\n const fallbackReason = pendingFallbackReason;\n if (plan.generator.backend.fallback === 'disable') return;\n let replacement: BabylonShadowMapExperimentDepthBackend | null = null;\n try {\n replacement = createBabylonShadowMapExperimentSingleDepthBackend(\n lightState.light,\n plan,\n fallbackReason,\n );\n prepareBackendCasterMembership(replacement);\n depthBackend = replacement;\n generator = replacement.generator;\n pendingFallbackReason = null;\n } catch (error) {\n rememberBackendAllocationCleanup(error);\n if (replacement) {\n const ownedReplacement = replacement;\n try {\n ownedReplacement.dispose();\n } catch (cleanupError) {\n pendingBackendAllocationCleanup = () => {\n try {\n ownedReplacement.dispose();\n return Object.freeze([]);\n } catch (retryError) {\n return Object.freeze([retryError]);\n }\n };\n if (error && typeof error === 'object') {\n attachFailureMetadata(error, {\n fallbackPreparationCleanupErrors: Object.freeze([cleanupError]),\n });\n }\n }\n }\n throw error;\n }\n warnForFallback(fallbackReason);\n markAllDepthDirty('generator-created');\n };\n\n const syncCaster = (renderableId: string): void => {\n const record = registry?.getRecord(renderableId);\n const meshes = meshesByRenderable.get(renderableId);\n if (!depthBackend || !record || !meshes) return;\n const layer = shadowMapExperimentDepthLayerForUpdateClass(record.updateClass);\n const shouldCast = record.state === 'active';\n const changedLayers = new Set<ShadowMapExperimentDepthLayer>();\n for (const mesh of meshes) {\n const previousLayer = candidateLayerByMesh.get(mesh);\n if (shouldCast && isMeshRuntimeVisible(mesh)) {\n const retained = shouldRetainCaster(mesh, record.updateClass);\n if (retained) {\n const wasRetained = depthBackend.hasCaster(mesh, layer);\n depthBackend.addCaster(mesh, layer);\n setCandidateLayer(mesh, layer);\n if (!wasRetained || previousLayer !== layer) changedLayers.add(layer);\n if (previousLayer && previousLayer !== layer) changedLayers.add(previousLayer);\n } else {\n const wasRetained = depthBackend.hasCaster(mesh);\n depthBackend.removeCaster(mesh);\n setCandidateLayer(mesh, layer);\n if (wasRetained) changedLayers.add(previousLayer ?? layer);\n }\n } else {\n const wasRetained = depthBackend.hasCaster(mesh);\n depthBackend.removeCaster(mesh);\n setCandidateLayer(mesh, null);\n conservativeCasterMeshes.delete(mesh);\n if (wasRetained) changedLayers.add(previousLayer ?? layer);\n }\n }\n syncCandidateCounts();\n for (const changedLayer of changedLayers) {\n markDepthDirty(changedLayer, 'caster-influence-membership-changed');\n }\n syncActivityEligibility(record.entityId);\n };\n\n const restoreReceiver = (mesh: AbstractMesh): void => {\n const target = receiverTargetByMesh.get(mesh) ?? resolveReceiverTarget(mesh);\n receiverTargetByMesh.delete(mesh);\n const state = receiverStates.get(target);\n if (!state) return;\n state.requests.delete(mesh);\n if (state.requests.size > 0) {\n const next = [...state.requests.values()].some(Boolean);\n state.ownedValue = next;\n if (!isDisposed(target) && target.receiveShadows !== next) target.receiveShadows = next;\n return;\n }\n if (!isDisposed(target) && target.receiveShadows === state.ownedValue) {\n target.receiveShadows = state.previousReceiveShadows;\n }\n receiverStates.delete(target);\n };\n\n const setReceiver = (mesh: AbstractMesh, enabled: boolean, renderableId: string): void => {\n const eligible = !enabled || isReceiverEligible(mesh);\n const next = enabled && eligible;\n const previousTarget = receiverTargetByMesh.get(mesh);\n const target = resolveReceiverTarget(mesh);\n if (previousTarget && previousTarget !== target) restoreReceiver(mesh);\n receiverTargetByMesh.set(mesh, target);\n let state = receiverStates.get(target);\n if (!state) {\n state = {\n mesh: target,\n previousReceiveShadows: target.receiveShadows,\n requests: new Map<AbstractMesh, boolean>(),\n ownedValue: next,\n };\n receiverStates.set(target, state);\n }\n state.requests.set(mesh, next);\n const ownedValue = [...state.requests.values()].some(Boolean);\n state.ownedValue = ownedValue;\n if (target.receiveShadows !== ownedValue) target.receiveShadows = ownedValue;\n if (enabled && !eligible) {\n const code = 'shadowMapExperiment.transparentReceiver';\n const key = `${code}:${renderableId}`;\n if (!diagnosticKeys.has(key)) {\n diagnosticKeys.add(key);\n diagnostics.push({\n code,\n message: 'Receiver was excluded because its current material is not shadow-receiver eligible.',\n renderableId,\n });\n }\n }\n };\n\n const syncRenderable = (renderableId: string): void => {\n const meshes = meshesByRenderable.get(renderableId);\n const object = objectByRenderable.get(renderableId);\n if (!meshes || !object || !registry) return;\n const visible = [...meshes].some(isMeshRuntimeVisible);\n const previousRecord = registry.getRecord(renderableId);\n const nextRecord = previousRecord?.renderableReady\n ? registry.setVisible(renderableId, visible)\n : registry.attach(renderableId, visible);\n if (previousRecord?.state === 'active'\n && nextRecord?.state !== 'active'\n && registry.snapshot().activeCasterCount === 0) {\n registry.markDirty('empty-list-clear');\n markDepthDirty(\n shadowMapExperimentDepthLayerForUpdateClass(object.updateClass),\n 'empty-list-clear',\n );\n }\n for (const mesh of meshes) setReceiver(mesh, object.receive, renderableId);\n try {\n syncCaster(renderableId);\n pendingRenderableMembershipRetries.delete(renderableId);\n } catch (error) {\n pendingRenderableMembershipRetries.add(renderableId);\n throw error;\n }\n };\n\n const flushPendingRenderableMembershipRetries = (): void => {\n for (const renderableId of [...pendingRenderableMembershipRetries]) {\n if (!objectByRenderable.has(renderableId) || !meshesByRenderable.has(renderableId)) {\n pendingRenderableMembershipRetries.delete(renderableId);\n continue;\n }\n syncCaster(renderableId);\n pendingRenderableMembershipRetries.delete(renderableId);\n enqueueRefresh('caster-visibility-changed');\n }\n };\n\n const syncMatrixObserver = (binding: MeshBinding): void => {\n const object = objectByRenderable.get(binding.renderableId);\n if (!object?.cast) {\n if (binding.matrixObserver) binding.mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver);\n binding.matrixObserver = null;\n binding.worldMatrixSnapshot = null;\n pendingTransformMembershipRetries.delete(binding.mesh);\n return;\n }\n if (binding.matrixObserver) return;\n binding.worldMatrixSnapshot = readWorldMatrixSnapshot(binding.mesh);\n binding.matrixObserver = binding.mesh.onAfterWorldMatrixUpdateObservable.add(() => {\n if (disposed || disposing) return;\n const nextSnapshot = readWorldMatrixSnapshot(binding.mesh);\n if (areMatrixSnapshotsEqual(binding.worldMatrixSnapshot, nextSnapshot)) return;\n const currentObject = objectByRenderable.get(binding.renderableId);\n if (!currentObject?.cast) {\n binding.worldMatrixSnapshot = nextSnapshot;\n return;\n }\n try {\n syncCaster(binding.renderableId);\n } catch (error) {\n pendingTransformMembershipRetries.add(binding.mesh);\n throw error;\n }\n binding.worldMatrixSnapshot = nextSnapshot;\n enqueueRefresh(currentObject.updateClass === 'static' ? 'static-transform-changed' : 'dynamic-transform-changed');\n });\n };\n\n const flushPendingTransformMembershipRetries = (): void => {\n for (const mesh of [...pendingTransformMembershipRetries]) {\n const binding = bindings.get(mesh);\n const currentObject = binding ? objectByRenderable.get(binding.renderableId) : null;\n if (!binding || !currentObject?.cast) {\n pendingTransformMembershipRetries.delete(mesh);\n if (binding) binding.worldMatrixSnapshot = readWorldMatrixSnapshot(mesh);\n continue;\n }\n syncCaster(binding.renderableId);\n binding.worldMatrixSnapshot = readWorldMatrixSnapshot(mesh);\n pendingTransformMembershipRetries.delete(mesh);\n enqueueRefresh(currentObject.updateClass === 'static' ? 'static-transform-changed' : 'dynamic-transform-changed');\n }\n };\n\n const unregisterMesh = (mesh: AbstractMesh): void => {\n const binding = bindings.get(mesh);\n if (!binding) return;\n const previousLayer = candidateLayerByMesh.get(mesh);\n const wasCaster = depthBackend?.hasCaster(mesh) === true;\n const wasActiveRecord = registry?.getRecord(binding.renderableId)?.state === 'active';\n depthBackend?.removeCaster(mesh);\n mesh.onEnabledStateChangedObservable.remove(binding.enabledObserver);\n mesh.onDisposeObservable.remove(binding.disposeObserver);\n if (binding.matrixObserver) mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver);\n restoreReceiver(mesh);\n setCandidateLayer(mesh, null);\n conservativeCasterMeshes.delete(mesh);\n meshDataCacheByMesh.delete(mesh);\n syncCandidateCounts();\n const meshes = meshesByRenderable.get(binding.renderableId);\n meshes?.delete(mesh);\n if (!meshes || meshes.size === 0) {\n meshesByRenderable.delete(binding.renderableId);\n registry?.detach(binding.renderableId);\n pendingRenderableMembershipRetries.delete(binding.renderableId);\n } else {\n const visible = [...meshes].some(isMeshRuntimeVisible);\n registry?.setVisible(binding.renderableId, visible);\n }\n if (binding) {\n syncActivityEligibility(binding.entityId);\n }\n if (wasCaster || wasActiveRecord) {\n if (registry?.snapshot().activeCasterCount === 0) registry.markDirty('empty-list-clear');\n if (previousLayer) markDepthDirty(previousLayer, 'caster-removed');\n else enqueueRefresh('caster-removed');\n if (candidateLayerByMesh.size === 0 && previousLayer) {\n markDepthDirty(previousLayer, 'empty-list-clear');\n }\n }\n bindings.delete(mesh);\n pendingMeshRegistrationRollbacks.delete(mesh);\n pendingMeshUnregistrations.delete(mesh);\n pendingTransformMembershipRetries.delete(mesh);\n };\n\n const requestMeshUnregistration = (mesh: AbstractMesh): void => {\n pendingSceneMeshRegistrations.delete(mesh);\n try {\n unregisterMesh(mesh);\n pendingMeshUnregistrations.delete(mesh);\n reconcileAutomaticAnimationGroups();\n } catch (error) {\n pendingMeshUnregistrations.add(mesh);\n throw error;\n }\n };\n\n const flushPendingMeshUnregistrations = (): void => {\n for (const mesh of [...pendingMeshUnregistrations]) requestMeshUnregistration(mesh);\n };\n\n const registerMesh = (mesh: AbstractMesh): boolean => {\n const pendingObserverCleanupErrors = flushPendingMeshObserverCleanup(mesh);\n if (pendingObserverCleanupErrors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.meshObserverCleanupFailed'), {\n cleanupErrors: pendingObserverCleanupErrors,\n });\n }\n if (pendingMeshRegistrationRollbacks.has(mesh)) {\n try {\n unregisterMesh(mesh);\n } catch (error) {\n throw Object.assign(new Error('shadowMapExperiment.meshRegistrationRollbackFailed'), {\n cause: error,\n });\n }\n pendingMeshRegistrationRollbacks.delete(mesh);\n }\n if (!plan?.enabled || !registry || bindings.has(mesh) || isDisposed(mesh)) return false;\n const renderableId = resolveRenderableId(mesh, objectByRenderable);\n if (!renderableId) return false;\n const object = objectByRenderable.get(renderableId);\n if (!object) return false;\n let enabledObserver: Observer<boolean> | null = null;\n let disposeObserver: Observer<Node> | null = null;\n let bindingCommitted = false;\n try {\n enabledObserver = mesh.onEnabledStateChangedObservable.add(() => {\n if (!disposed && !disposing) {\n syncRenderable(renderableId);\n reconcileAutomaticAnimationGroups();\n }\n });\n disposeObserver = mesh.onDisposeObservable.add(() => requestMeshUnregistration(mesh));\n const meshes = meshesByRenderable.get(renderableId) ?? new Set<AbstractMesh>();\n meshes.add(mesh);\n meshesByRenderable.set(renderableId, meshes);\n const binding: MeshBinding = {\n mesh,\n entityId: object.entityId,\n renderableId,\n sceneFitLocalBounds: readMeshLocalBounds(mesh),\n enabledObserver,\n disposeObserver,\n matrixObserver: null,\n worldMatrixSnapshot: null,\n };\n bindings.set(mesh, binding);\n bindingCommitted = true;\n syncMatrixObserver(binding);\n syncRenderable(renderableId);\n } catch (error) {\n const rollbackErrors: unknown[] = [];\n if (bindingCommitted) {\n try {\n unregisterMesh(mesh);\n } catch (rollbackError) {\n pendingMeshRegistrationRollbacks.add(mesh);\n rollbackErrors.push(rollbackError);\n }\n } else {\n pendingMeshObserverCleanups.set(mesh, { mesh, enabledObserver, disposeObserver });\n rollbackErrors.push(...flushPendingMeshObserverCleanup(mesh));\n }\n if (rollbackErrors.length > 0 && error && typeof error === 'object') {\n attachFailureMetadata(error, { registrationRollbackErrors: Object.freeze(rollbackErrors) });\n }\n throw error;\n }\n return true;\n };\n\n const flushPendingMeshObserverCleanup = (mesh: AbstractMesh): readonly unknown[] => {\n const pending = pendingMeshObserverCleanups.get(mesh);\n if (!pending) return Object.freeze([]);\n const cleanupErrors: unknown[] = [];\n if (pending.disposeObserver) {\n try {\n pending.mesh.onDisposeObservable.remove(pending.disposeObserver);\n pending.disposeObserver = null;\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n if (pending.enabledObserver) {\n try {\n pending.mesh.onEnabledStateChangedObservable.remove(pending.enabledObserver);\n pending.enabledObserver = null;\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n if (!pending.disposeObserver && !pending.enabledObserver) pendingMeshObserverCleanups.delete(mesh);\n return Object.freeze(cleanupErrors);\n };\n\n const flushPendingSceneMeshRegistrations = (): void => {\n let registered = false;\n for (const mesh of [...pendingSceneMeshRegistrations]) {\n if (!scene.meshes.includes(mesh)) {\n pendingSceneMeshRegistrations.delete(mesh);\n continue;\n }\n registered = registerMesh(mesh) || registered;\n pendingSceneMeshRegistrations.delete(mesh);\n }\n if (registered) reconcileAutomaticAnimationGroups();\n };\n\n const deactivate = (): void => {\n pendingCompositeRefreshReasons.clear();\n const cleanupErrors: unknown[] = [];\n const attempt = (operation: () => void): boolean => {\n try {\n operation();\n return true;\n } catch (error) {\n cleanupErrors.push(error);\n return false;\n }\n };\n for (const [mesh, binding] of [...bindings]) {\n let cleaned = true;\n cleaned = attempt(() => mesh.onEnabledStateChangedObservable.remove(binding.enabledObserver)) && cleaned;\n cleaned = attempt(() => mesh.onDisposeObservable.remove(binding.disposeObserver)) && cleaned;\n if (binding.matrixObserver) {\n cleaned = attempt(() => mesh.onAfterWorldMatrixUpdateObservable.remove(binding.matrixObserver!)) && cleaned;\n }\n cleaned = attempt(() => restoreReceiver(mesh)) && cleaned;\n if (depthBackend) {\n cleaned = attempt(() => depthBackend!.removeCaster(mesh)) && cleaned;\n }\n cleaned = attempt(() => activityScheduler.setEntityActive(binding.entityId, false)) && cleaned;\n if (cleaned) bindings.delete(mesh);\n if (cleaned) pendingMeshRegistrationRollbacks.delete(mesh);\n }\n for (const mesh of [...pendingMeshObserverCleanups.keys()]) {\n cleanupErrors.push(...flushPendingMeshObserverCleanup(mesh));\n }\n for (const [mesh, state] of [...receiverStates]) {\n if (attempt(() => {\n if (!isDisposed(state.mesh) && state.mesh.receiveShadows === state.ownedValue) {\n state.mesh.receiveShadows = state.previousReceiveShadows;\n }\n })) receiverStates.delete(mesh);\n }\n if (bindings.size === 0) {\n meshesByRenderable.clear();\n candidateLayerByMesh.clear();\n candidateMeshCounts.static = 0;\n candidateMeshCounts.dynamic = 0;\n conservativeCasterMeshes.clear();\n meshDataCacheByMesh.clear();\n pendingMeshRegistrationRollbacks.clear();\n pendingSceneMeshRegistrations.clear();\n pendingMeshUnregistrations.clear();\n pendingRenderableMembershipRetries.clear();\n pendingTransformMembershipRetries.clear();\n activeCasterEntityIds.clear();\n eligibleActiveDeformationEntityIds.clear();\n pendingFinalDeformationEntityIds.clear();\n pendingDeformationInvalidations.clear();\n pendingMembershipInvalidationLayers.clear();\n pendingCoverageMembershipRebuild = false;\n objectByRenderable.clear();\n objectByEntity.clear();\n }\n receiverTargetByMesh.clear();\n if (registry) {\n const ownedRegistry = registry;\n if (attempt(() => ownedRegistry.dispose())) registry = null;\n }\n if (depthBackend) {\n const ownedBackend = depthBackend;\n if (attempt(() => ownedBackend.dispose())) {\n depthBackend = null;\n generator = null;\n }\n }\n if (pendingBackendAllocationCleanup) {\n const cleanup = pendingBackendAllocationCleanup;\n if (attempt(() => {\n const errors = cleanup();\n if (errors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.backendAllocationCleanupFailed'), { cleanupErrors: errors });\n }\n })) pendingBackendAllocationCleanup = null;\n }\n if (!depthBackend && !pendingBackendAllocationCleanup) pendingFallbackReason = null;\n if (lightState) {\n const ownedLightState = lightState;\n if (attempt(() => restoreLight(ownedLightState))) lightState = null;\n }\n if (previousSceneShadowsEnabled !== null) {\n const ownedSceneShadowsEnabled = previousSceneShadowsEnabled;\n if (attempt(() => { scene.shadowsEnabled = ownedSceneShadowsEnabled; })) previousSceneShadowsEnabled = null;\n }\n effectiveCoverageCenter = null;\n effectiveCoverageExtent = null;\n effectiveCoverageNear = null;\n effectiveCoverageFar = null;\n if (cleanupErrors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.deactivationFailed'), { cleanupErrors });\n }\n };\n\n const activate = (nextPlan: ShadowMapExperimentPlan): void => {\n const light = resolveDirectionalLight(scene, nextPlan.light.entityId);\n if (!light) throw new Error(`shadowMapExperiment.lightMissing:${nextPlan.light.entityId}`);\n const existingGenerators = readShadowGenerators(light);\n if (existingGenerators.length > 0) throw new Error(`shadowMapExperiment.backendConflict:${nextPlan.light.entityId}`);\n previousSceneShadowsEnabled = scene.shadowsEnabled;\n influenceCulling.configure(nextPlan.culling.guardBandRatio);\n lightState = captureLight(light);\n effectiveCoverageCenter = nextPlan.generator.bounds.center;\n effectiveCoverageExtent = nextPlan.generator.bounds.extent;\n effectiveCoverageNear = nextPlan.generator.bounds.near;\n effectiveCoverageFar = nextPlan.generator.bounds.far;\n configureLight(light, nextPlan, {\n center: nextPlan.generator.bounds.center,\n extent: nextPlan.generator.bounds.extent,\n near: nextPlan.generator.bounds.near,\n far: nextPlan.generator.bounds.far,\n });\n scene.shadowsEnabled = true;\n light.shadowEnabled = true;\n try {\n depthBackend = createBabylonShadowMapExperimentDepthBackend(scene, light, nextPlan, {\n onCompositorLifecycleEvent: handleCompositorLifecycleEvent,\n });\n } catch (error) {\n rememberBackendAllocationCleanup(error);\n throw error;\n }\n generator = depthBackend.generator;\n if (depthBackend.fallbackReason) warnForFallback(depthBackend.fallbackReason);\n registry = createShadowMapExperimentRegistry(nextPlan);\n for (const object of nextPlan.objects) {\n objectByEntity.set(object.entityId, object);\n for (const renderableId of object.renderableIds) objectByRenderable.set(renderableId, object);\n }\n updateCameraInfluenceCoverage();\n for (const mesh of scene.meshes) registerMesh(mesh);\n reconcileAutomaticAnimationGroups();\n markAllDepthDirty('generator-created');\n };\n\n const registerActivitySource = (input: {\n readonly entityId: string;\n readonly kind: ShadowMapExperimentActivityKind;\n readonly sourceId: string;\n }): ShadowMapExperimentActivitySourceController => {\n assertUsable();\n const controller = activityScheduler.registerSource(input);\n const deformationSource = input.kind === 'animation' || input.kind === 'morph';\n let sourceActive = false;\n let controllerDisposed = false;\n const updateDeformationSourceCount = (previousActive: boolean, nextActive: boolean): void => {\n if (!deformationSource || previousActive === nextActive) return;\n const previousCount = activeDeformationSourceCountByEntity.get(input.entityId) ?? 0;\n if (nextActive) {\n activeDeformationSourceCountByEntity.set(input.entityId, previousCount + 1);\n pendingFinalDeformationEntityIds.delete(input.entityId);\n syncDeformationActivityEligibility(input.entityId);\n return;\n }\n if (previousCount <= 1) {\n activeDeformationSourceCountByEntity.delete(input.entityId);\n if (activeCasterEntityIds.has(input.entityId)) pendingFinalDeformationEntityIds.add(input.entityId);\n } else {\n activeDeformationSourceCountByEntity.set(input.entityId, previousCount - 1);\n }\n syncDeformationActivityEligibility(input.entityId);\n };\n return Object.freeze({\n entityId: controller.entityId,\n kind: controller.kind,\n sourceId: controller.sourceId,\n setActive(nextActive: boolean) {\n if (disposed || disposing || controllerDisposed || sourceActive === nextActive) return false;\n if (!controller.setActive(nextActive)) return false;\n updateDeformationSourceCount(sourceActive, nextActive);\n sourceActive = nextActive;\n requestRefreshFrame(`shadow-map-experiment-${nextActive ? 'caster-activity-started' : 'caster-activity-stopped'}`);\n return true;\n },\n invalidate() {\n if (disposed || disposing || controllerDisposed) return false;\n const invalidated = controller.invalidate();\n if (!invalidated) return false;\n const reason = dirtyReasonForActivityKind(input.kind);\n if (deformationSource) {\n const invalidationReasons = pendingDeformationInvalidations.get(input.entityId) ?? new Set();\n invalidationReasons.add(reason);\n pendingDeformationInvalidations.set(input.entityId, invalidationReasons);\n }\n requestRefreshFrame(`shadow-map-experiment-${reason}`);\n return true;\n },\n dispose() {\n if (controllerDisposed) return;\n const wasActive = sourceActive;\n updateDeformationSourceCount(sourceActive, false);\n sourceActive = false;\n controllerDisposed = true;\n controller.dispose();\n if (wasActive) requestRefreshFrame('shadow-map-experiment-caster-activity-stopped');\n },\n });\n };\n\n const resolveAutomaticActivityTargets = (\n group: AnimationGroup,\n ): Map<string, { entityId: string; kind: ShadowMapExperimentActivityKind }> => {\n const desired = new Map<string, { entityId: string; kind: ShadowMapExperimentActivityKind }>();\n for (const targetedAnimation of group.targetedAnimations) {\n const target = targetedAnimation.target as unknown;\n const kind = classifyAutomaticActivityTarget(target, bindings);\n const targetMeshes = resolveAutomaticActivityTargetMeshes(scene, bindings, target, kind);\n for (const mesh of targetMeshes) {\n if (!isMeshRuntimeVisible(mesh)) continue;\n const meshBinding = bindings.get(mesh);\n const object = meshBinding ? objectByEntity.get(meshBinding.entityId) : null;\n if (!meshBinding || !object?.cast || object.updateClass === 'static') continue;\n const key = `${meshBinding.entityId}\\u0000${kind}`;\n desired.set(key, { entityId: meshBinding.entityId, kind });\n }\n }\n return desired;\n };\n\n const reconcileAutomaticAnimationGroup = (binding: AutomaticAnimationGroupBinding): void => {\n const active = binding.group.isPlaying === true;\n const desired = resolveAutomaticActivityTargets(binding.group);\n const created: Array<{ key: string; source: AutomaticAnimationGroupSource }> = [];\n try {\n for (const [key, descriptor] of desired) {\n if (binding.sources.has(key)) continue;\n const sourceId = `fps:auto:animation-group:${binding.group.uniqueId}:${descriptor.kind}`;\n const controller = registerActivitySource({ ...descriptor, sourceId });\n const source = { ...descriptor, controller };\n binding.sources.set(key, source);\n created.push({ key, source });\n if (active) controller.setActive(true);\n }\n } catch (error) {\n for (const entry of created.reverse()) {\n try { entry.source.controller.setActive(false); } catch { /* Best-effort rollback. */ }\n try { entry.source.controller.dispose(); } catch { /* Best-effort rollback. */ }\n binding.sources.delete(entry.key);\n }\n throw error;\n }\n for (const [key, source] of [...binding.sources]) {\n if (desired.has(key)) continue;\n source.controller.setActive(false);\n source.controller.dispose();\n binding.sources.delete(key);\n }\n for (const source of binding.sources.values()) source.controller.setActive(active);\n binding.active = active;\n };\n\n const safelyReconcileAutomaticAnimationGroup = (binding: AutomaticAnimationGroupBinding): void => {\n if (disposed || disposing || !binding.ready) return;\n try {\n reconcileAutomaticAnimationGroup(binding);\n } catch (error) {\n rememberDiagnostic(\n 'shadowMapExperiment.automaticActivityBindingFailed',\n `AnimationGroup ${binding.group.name || binding.group.uniqueId} could not bind shadow activity: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n };\n\n const attachAutomaticAnimationGroup = (group: AnimationGroup): void => {\n if (automaticAnimationGroups.has(group) || disposed || disposing) return;\n const binding: AutomaticAnimationGroupBinding = {\n group,\n playObserver: null,\n pauseObserver: null,\n endObserver: null,\n sources: new Map(),\n active: false,\n ready: false,\n };\n automaticAnimationGroups.set(group, binding);\n try {\n binding.playObserver = group.onAnimationGroupPlayObservable.add(() => {\n if (!binding.ready) return;\n safelyReconcileAutomaticAnimationGroup(binding);\n requestRefreshFrame('shadow-map-experiment-animation-group-played');\n });\n binding.pauseObserver = group.onAnimationGroupPauseObservable.add(() => {\n if (binding.ready) safelyReconcileAutomaticAnimationGroup(binding);\n });\n binding.endObserver = group.onAnimationGroupEndObservable.add(() => {\n if (binding.ready) safelyReconcileAutomaticAnimationGroup(binding);\n });\n binding.ready = true;\n safelyReconcileAutomaticAnimationGroup(binding);\n } catch (error) {\n binding.ready = false;\n const cleanupErrors = detachAutomaticAnimationGroup(group);\n if (cleanupErrors.length > 0 && error && typeof error === 'object') {\n attachFailureMetadata(error, { cleanupErrors });\n }\n throw error;\n }\n };\n\n const detachAutomaticAnimationGroup = (group: AnimationGroup): readonly unknown[] => {\n const binding = automaticAnimationGroups.get(group);\n if (!binding) return Object.freeze([]);\n binding.ready = false;\n const cleanupErrors: unknown[] = [];\n for (const [key, source] of [...binding.sources.entries()].reverse()) {\n try { source.controller.setActive(false); } catch (error) { cleanupErrors.push(error); }\n try {\n source.controller.dispose();\n binding.sources.delete(key);\n } catch (error) { cleanupErrors.push(error); }\n }\n if (binding.playObserver) {\n try {\n group.onAnimationGroupPlayObservable.remove(binding.playObserver);\n binding.playObserver = null;\n } catch (error) { cleanupErrors.push(error); }\n }\n if (binding.pauseObserver) {\n try {\n group.onAnimationGroupPauseObservable.remove(binding.pauseObserver);\n binding.pauseObserver = null;\n } catch (error) { cleanupErrors.push(error); }\n }\n if (binding.endObserver) {\n try {\n group.onAnimationGroupEndObservable.remove(binding.endObserver);\n binding.endObserver = null;\n } catch (error) { cleanupErrors.push(error); }\n }\n if (\n cleanupErrors.length === 0\n && binding.sources.size === 0\n && !binding.playObserver\n && !binding.pauseObserver\n && !binding.endObserver\n ) automaticAnimationGroups.delete(group);\n return Object.freeze(cleanupErrors);\n };\n\n const reconcileAutomaticAnimationGroups = (): void => {\n for (const binding of automaticAnimationGroups.values()) safelyReconcileAutomaticAnimationGroup(binding);\n };\n\n const syncAutomaticAnimationGroupStates = (): void => {\n for (const binding of automaticAnimationGroups.values()) {\n if (!binding.ready) continue;\n const active = binding.group.isPlaying === true;\n if (active !== binding.active || (active && binding.sources.size === 0)) {\n safelyReconcileAutomaticAnimationGroup(binding);\n }\n }\n };\n\n const applyPlanInPlace = (\n previousPlan: ShadowMapExperimentPlan,\n nextPlan: ShadowMapExperimentPlan,\n ): void => {\n if (!registry || !generator) throw new Error('shadowMapExperiment.backendUnavailable');\n const delta = diffShadowMapExperimentPlans(previousPlan, nextPlan);\n plan = nextPlan;\n objectByRenderable.clear();\n objectByEntity.clear();\n for (const object of nextPlan.objects) {\n objectByEntity.set(object.entityId, object);\n for (const renderableId of object.renderableIds) objectByRenderable.set(renderableId, object);\n }\n activityScheduler.applyPlan(nextPlan);\n registry.applyPlan(nextPlan);\n for (const [mesh, binding] of [...bindings]) {\n const resolvedId = resolveRenderableId(mesh, objectByRenderable);\n const resolvedEntityId = resolvedId ? objectByRenderable.get(resolvedId)?.entityId : null;\n if (resolvedId !== binding.renderableId || resolvedEntityId !== binding.entityId) unregisterMesh(mesh);\n else {\n syncMatrixObserver(binding);\n syncRenderable(binding.renderableId);\n }\n }\n for (const mesh of scene.meshes) registerMesh(mesh);\n reconcileAutomaticAnimationGroups();\n for (const reason of delta.dirtyReasons) {\n registry.markDirty(reason);\n enqueueRefresh(reason);\n }\n };\n\n const rollbackPlanUpdate = (previousPlan: ShadowMapExperimentPlan | null, error: unknown): never => {\n const rollbackDeactivationErrors: unknown[] = [];\n try { deactivate(); } catch (deactivationError) { rollbackDeactivationErrors.push(deactivationError); }\n plan = previousPlan;\n activityScheduler.applyPlan(previousPlan?.enabled ? previousPlan : null);\n const rollbackErrors: unknown[] = [];\n if (previousPlan?.enabled && !hasOwnedBackendState()) {\n try {\n activate(previousPlan);\n } catch (rollbackError) {\n rollbackErrors.push(rollbackError);\n try { deactivate(); } catch (deactivationError) { rollbackDeactivationErrors.push(deactivationError); }\n }\n }\n if ((rollbackErrors.length > 0 || rollbackDeactivationErrors.length > 0) && error && typeof error === 'object') {\n attachFailureMetadata(error, {\n rollbackErrors,\n ...(rollbackDeactivationErrors.length > 0 ? { rollbackDeactivationErrors } : {}),\n });\n }\n throw error;\n };\n\n const hasOwnedBackendState = (): boolean => bindings.size > 0\n || pendingMeshObserverCleanups.size > 0\n || pendingMeshRegistrationRollbacks.size > 0\n || pendingSceneMeshRegistrations.size > 0\n || pendingMeshUnregistrations.size > 0\n || pendingRenderableMembershipRetries.size > 0\n || pendingTransformMembershipRetries.size > 0\n || receiverStates.size > 0\n || registry !== null\n || depthBackend !== null\n || pendingBackendAllocationCleanup !== null\n || generator !== null\n || lightState !== null\n || previousSceneShadowsEnabled !== null;\n\n const applyEffectivePlan = (\n value: ShadowMapExperimentPlan | null,\n allowDisposing = false,\n ): void => {\n assertUsable(allowDisposing);\n const nextPlan = value ? createShadowMapExperimentPlanSnapshot(value) : null;\n const previousPlan = plan;\n if (previousPlan?.enabled && nextPlan?.enabled) {\n const delta = diffShadowMapExperimentPlans(previousPlan, nextPlan);\n if (!delta.generatorChanged) {\n try {\n applyPlanInPlace(previousPlan, nextPlan);\n return;\n } catch (error) {\n rollbackPlanUpdate(previousPlan, error);\n }\n }\n }\n deactivate();\n plan = nextPlan;\n activityScheduler.applyPlan(nextPlan?.enabled ? nextPlan : null);\n if (!nextPlan?.enabled) {\n reconcileAutomaticAnimationGroups();\n return;\n }\n try {\n activate(nextPlan);\n } catch (error) {\n rollbackPlanUpdate(previousPlan, error);\n }\n };\n\n const setPlan = (value: ShadowMapExperimentPlan | null): void => {\n assertUsable();\n const nextSourcePlan = value ? createShadowMapExperimentPlanSnapshot(value) : null;\n const records = [...runtimeRegistrations.values()].filter(record => !record.disposed);\n const nextEffectivePlan = composeEffectivePlan(nextSourcePlan, records, runtimeOverlayRevision);\n const previousSourcePlan = sourcePlan;\n try {\n applyEffectivePlan(nextEffectivePlan);\n sourcePlan = nextSourcePlan;\n } catch (error) {\n sourcePlan = previousSourcePlan;\n throw error;\n }\n };\n\n const {\n newMeshObserver,\n removedMeshObserver,\n frameObserver,\n newAnimationGroupObserver,\n removedAnimationGroupObserver,\n } = (() => {\n let acquiredNewMeshObserver: Observer<AbstractMesh> | null = null;\n let acquiredRemovedMeshObserver: Observer<AbstractMesh> | null = null;\n let acquiredFrameObserver: Observer<Scene> | null = null;\n let acquiredNewAnimationGroupObserver: Observer<AnimationGroup> | null = null;\n let acquiredRemovedAnimationGroupObserver: Observer<AnimationGroup> | null = null;\n try {\n acquiredNewMeshObserver = scene.onNewMeshAddedObservable.add(mesh => {\n // Babylon announces a mesh from its constructor before every identity and\n // visibility field is guaranteed to be initialized. Bind after that\n // constructor completes; this is still an event-local operation, not a scan.\n if (disposed || disposing || !scene.meshes.includes(mesh)) return;\n pendingSceneMeshRegistrations.add(mesh);\n queueMicrotask(() => {\n if (disposed || disposing || !pendingSceneMeshRegistrations.has(mesh)) return;\n if (!scene.meshes.includes(mesh)) {\n pendingSceneMeshRegistrations.delete(mesh);\n return;\n }\n try {\n const registered = registerMesh(mesh);\n pendingSceneMeshRegistrations.delete(mesh);\n if (registered) reconcileAutomaticAnimationGroups();\n } catch {\n pendingSceneMeshRegistrations.add(mesh);\n }\n });\n });\n acquiredRemovedMeshObserver = scene.onMeshRemovedObservable.add(mesh => requestMeshUnregistration(mesh));\n acquiredNewAnimationGroupObserver = scene.onNewAnimationGroupAddedObservable.add(group => {\n try { attachAutomaticAnimationGroup(group); }\n catch (error) {\n rememberDiagnostic(\n 'shadowMapExperiment.automaticActivityObserverFailed',\n `AnimationGroup ${group.name || group.uniqueId} could not be observed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n });\n acquiredRemovedAnimationGroupObserver = scene.onAnimationGroupRemovedObservable.add(group => {\n const cleanupErrors = detachAutomaticAnimationGroup(group);\n if (cleanupErrors.length > 0) {\n rememberDiagnostic(\n 'shadowMapExperiment.automaticActivityCleanupFailed',\n `AnimationGroup ${group.name || group.uniqueId} activity cleanup failed.`,\n );\n }\n });\n acquiredFrameObserver = scene.onBeforeRenderObservable.add(() => flushRefresh());\n for (const group of scene.animationGroups) attachAutomaticAnimationGroup(group);\n return {\n newMeshObserver: acquiredNewMeshObserver,\n removedMeshObserver: acquiredRemovedMeshObserver,\n frameObserver: acquiredFrameObserver,\n newAnimationGroupObserver: acquiredNewAnimationGroupObserver,\n removedAnimationGroupObserver: acquiredRemovedAnimationGroupObserver,\n };\n } catch (error) {\n const cleanup: BabylonShadowMapExperimentSystemCleanup = () => {\n const cleanupErrors: unknown[] = [];\n for (const group of [...automaticAnimationGroups.keys()].reverse()) {\n cleanupErrors.push(...detachAutomaticAnimationGroup(group));\n }\n if (acquiredRemovedAnimationGroupObserver) {\n try {\n scene.onAnimationGroupRemovedObservable.remove(acquiredRemovedAnimationGroupObserver);\n acquiredRemovedAnimationGroupObserver = null;\n } catch (cleanupError) { cleanupErrors.push(cleanupError); }\n }\n if (acquiredNewAnimationGroupObserver) {\n try {\n scene.onNewAnimationGroupAddedObservable.remove(acquiredNewAnimationGroupObserver);\n acquiredNewAnimationGroupObserver = null;\n } catch (cleanupError) { cleanupErrors.push(cleanupError); }\n }\n if (acquiredFrameObserver) {\n try {\n scene.onBeforeRenderObservable.remove(acquiredFrameObserver);\n acquiredFrameObserver = null;\n } catch (cleanupError) { cleanupErrors.push(cleanupError); }\n }\n if (acquiredRemovedMeshObserver) {\n try {\n scene.onMeshRemovedObservable.remove(acquiredRemovedMeshObserver);\n acquiredRemovedMeshObserver = null;\n } catch (cleanupError) { cleanupErrors.push(cleanupError); }\n }\n if (acquiredNewMeshObserver) {\n try {\n scene.onNewMeshAddedObservable.remove(acquiredNewMeshObserver);\n acquiredNewMeshObserver = null;\n } catch (cleanupError) { cleanupErrors.push(cleanupError); }\n }\n return Object.freeze(cleanupErrors);\n };\n const cleanupErrors = cleanup();\n if (cleanupErrors.length > 0) throw createInitializationFailure(error, cleanup, cleanupErrors);\n throw error;\n }\n })();\n\n let disposeNewMeshObserverRemoved = false;\n let disposeRemovedMeshObserverRemoved = false;\n let disposeFrameObserverRemoved = false;\n let disposeNewAnimationGroupObserverRemoved = false;\n let disposeRemovedAnimationGroupObserverRemoved = false;\n let disposeActivitySchedulerDisposed = false;\n let disposeDepthRefreshSchedulerDisposed = false;\n let disposeInfluenceCullingDisposed = false;\n\n const createRuntimeOwner = (\n records: readonly RuntimeShadowObjectsRecord[],\n ): BabylonRuntimeShadowObjectsOwner => {\n const recordSet = new Set(records);\n const owner: BabylonRuntimeShadowObjectsOwner = Object.freeze({\n entityIds: Object.freeze(records.map(record => record.entityId).sort()),\n renderableIds: Object.freeze(records.flatMap(record => (\n record.renderables.map(renderable => renderable.renderableId)\n )).sort()),\n getBehaviorProfileId(entityId: string) {\n return records.find(record => record.entityId === entityId && !record.disposed)?.behaviorProfileId ?? null;\n },\n getActivityController(entityId: string, sourceId: string) {\n const record = records.find(candidate => candidate.entityId === entityId && !candidate.disposed);\n return record?.controllers.get(sourceId) ?? null;\n },\n dispose() {\n if (records.every(record => record.disposed)) return;\n assertUsable(true);\n const cleanupErrors: unknown[] = [];\n for (const record of [...records].reverse()) {\n for (const sourceId of [...record.controllers.keys()].reverse()) {\n const controller = record.controllers.get(sourceId);\n if (!controller) continue;\n try { controller.setActive(false); } catch (error) { cleanupErrors.push(error); }\n try {\n controller.dispose();\n record.controllers.delete(sourceId);\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n }\n const controllersDisposed = records.every(record => record.controllers.size === 0);\n const anyRegistered = records.some(record => runtimeRegistrations.get(record.entityId) === record);\n if (controllersDisposed && anyRegistered) {\n const nextOverlayRevision = runtimeOverlayRevision + 1;\n const nextRecords = [...runtimeRegistrations.values()].filter(candidate => !recordSet.has(candidate) && !candidate.disposed);\n try {\n applyEffectivePlan(composeEffectivePlan(sourcePlan, nextRecords, nextOverlayRevision), true);\n for (const record of records) runtimeRegistrations.delete(record.entityId);\n runtimeOverlayRevision = nextOverlayRevision;\n } catch (error) {\n cleanupErrors.push(error);\n }\n }\n if (controllersDisposed && records.every(record => runtimeRegistrations.get(record.entityId) !== record)) {\n for (const record of records) record.disposed = true;\n }\n if (cleanupErrors.length > 0) {\n const error = Object.assign(new Error('shadowMapExperiment.runtimeOwnerDisposeFailed'), {\n cleanupErrors: Object.freeze(cleanupErrors),\n runtimeShadowObjectsRecoveryOwner: owner,\n });\n throw error;\n }\n },\n });\n for (const record of records) record.owner = owner;\n return owner;\n };\n\n const validateRuntimeRegistration = (\n input: BabylonRuntimeShadowObjectRegistration,\n batchEntityIds: Set<string>,\n batchRenderableIds: Set<string>,\n batchMeshes: Set<AbstractMesh>,\n batchActivityIdentities: Set<string>,\n ): RuntimeShadowObjectsRecord => {\n const entityId = input.entityId?.trim();\n const behaviorProfileId = input.behaviorProfileId?.trim();\n if (!entityId || entityId !== input.entityId) throw new Error('shadowMapExperiment.runtimeEntityIdRequired');\n if (!behaviorProfileId || behaviorProfileId !== input.behaviorProfileId) {\n throw new Error('shadowMapExperiment.runtimeBehaviorProfileIdRequired');\n }\n const profile = requireRuntimeProfile(sourcePlan, behaviorProfileId, entityId);\n if (!sourcePlan?.enabled) throw new Error('shadowMapExperiment.runtimePlanDisabled');\n if (batchEntityIds.has(entityId) || runtimeRegistrations.has(entityId) || sourcePlan.objects.some(object => object.entityId === entityId)) {\n throw new Error(`shadowMapExperiment.runtimeEntityConflict:${entityId}`);\n }\n batchEntityIds.add(entityId);\n if (!Array.isArray(input.renderables) || input.renderables.length === 0) {\n throw new Error(`shadowMapExperiment.runtimeRenderableRequired:${entityId}`);\n }\n const renderableIds = new Set<string>();\n const renderables = input.renderables.map((renderable, index) => {\n const renderableId = renderable.renderableId?.trim();\n if (!renderableId || renderableId !== renderable.renderableId) {\n throw new Error(`shadowMapExperiment.runtimeRenderableIdRequired:${entityId}:${index}`);\n }\n if (renderableIds.has(renderableId) || batchRenderableIds.has(renderableId) || objectByRenderable.has(renderableId)) {\n throw new Error(`shadowMapExperiment.runtimeRenderableConflict:${renderableId}`);\n }\n if (!renderable.mesh || renderable.mesh.getScene() !== scene || isDisposed(renderable.mesh) || !scene.meshes.includes(renderable.mesh)) {\n throw new Error(`shadowMapExperiment.runtimeMeshSceneMismatch:${renderableId}`);\n }\n if (batchMeshes.has(renderable.mesh)) throw new Error(`shadowMapExperiment.runtimeMeshConflict:${renderableId}`);\n if (!meshIdentityChainContains(renderable.mesh, renderableId)) {\n throw new Error(`shadowMapExperiment.runtimeRenderableIdentityMismatch:${renderableId}`);\n }\n renderableIds.add(renderableId);\n batchRenderableIds.add(renderableId);\n batchMeshes.add(renderable.mesh);\n return Object.freeze({ renderableId, mesh: renderable.mesh });\n });\n const existingActivityIdentities = new Set(\n activityScheduler.snapshot().sources.map(source => `${source.entityId}\\u0000${source.sourceId}`),\n );\n const activitySourceIds = new Set<string>();\n const activities = (input.activities ?? []).map((activity, index) => {\n const sourceId = activity.sourceId?.trim();\n if (!sourceId || sourceId !== activity.sourceId) {\n throw new Error(`shadowMapExperiment.runtimeActivitySourceIdRequired:${entityId}:${index}`);\n }\n if (!['transform', 'animation', 'morph', 'physics'].includes(activity.kind)) {\n throw new Error(`shadowMapExperiment.runtimeActivityKindInvalid:${activity.kind}`);\n }\n const identity = `${entityId}\\u0000${sourceId}`;\n if (activitySourceIds.has(sourceId) || batchActivityIdentities.has(identity) || existingActivityIdentities.has(identity)) {\n throw new Error(`shadowMapExperiment.runtimeActivityConflict:${entityId}:${sourceId}`);\n }\n if (!profile.cast || profile.updateClass === 'static') {\n throw new Error(`shadowMapExperiment.runtimeActivityProfileIneligible:${behaviorProfileId}`);\n }\n activitySourceIds.add(sourceId);\n batchActivityIdentities.add(identity);\n return Object.freeze({ kind: activity.kind, sourceId, initiallyActive: activity.initiallyActive === true });\n });\n return {\n entityId,\n behaviorProfileId,\n renderables: Object.freeze(renderables),\n activities: Object.freeze(activities),\n controllers: new Map(),\n owner: null,\n disposed: false,\n };\n };\n\n const system: BabylonShadowMapExperimentSystem = {\n setPlan,\n getPlan: () => plan,\n getShadowGenerator: () => generator,\n registerMesh(mesh) {\n assertUsable();\n return registerMesh(mesh);\n },\n unregisterMesh(mesh) {\n assertUsable();\n requestMeshUnregistration(mesh);\n },\n setRenderableVisible(renderableId, visible) {\n assertUsable();\n registry?.setVisible(renderableId, visible);\n try {\n syncCaster(renderableId);\n pendingRenderableMembershipRetries.delete(renderableId);\n } catch (error) {\n pendingRenderableMembershipRetries.add(renderableId);\n throw error;\n }\n const entityId = objectByRenderable.get(renderableId)?.entityId;\n if (entityId) syncActivityEligibility(entityId);\n },\n registerCasterActivitySource(input) {\n return registerActivitySource(input);\n },\n registerRuntimeShadowObjects(input) {\n assertUsable();\n if (!Array.isArray(input.objects) || input.objects.length === 0) {\n throw new Error('shadowMapExperiment.runtimeObjectsRequired');\n }\n const batchEntityIds = new Set<string>();\n const batchRenderableIds = new Set<string>();\n const batchMeshes = new Set<AbstractMesh>([\n ...bindings.keys(),\n ...[...runtimeRegistrations.values()].flatMap(\n record => record.renderables.map(renderable => renderable.mesh),\n ),\n ]);\n const batchActivityIdentities = new Set<string>();\n const records = input.objects.map(object => validateRuntimeRegistration(\n object,\n batchEntityIds,\n batchRenderableIds,\n batchMeshes,\n batchActivityIdentities,\n ));\n const owner = createRuntimeOwner(records);\n const previousEffectivePlan = plan;\n const nextOverlayRevision = runtimeOverlayRevision + 1;\n let effectivePlanApplied = false;\n try {\n const nextRecords = [...runtimeRegistrations.values(), ...records].filter(candidate => !candidate.disposed);\n applyEffectivePlan(composeEffectivePlan(sourcePlan, nextRecords, nextOverlayRevision));\n effectivePlanApplied = true;\n for (const record of records) runtimeRegistrations.set(record.entityId, record);\n for (const record of records) {\n for (const activity of record.activities) {\n const controller = system.registerCasterActivitySource({\n entityId: record.entityId,\n kind: activity.kind,\n sourceId: activity.sourceId,\n });\n record.controllers.set(activity.sourceId, controller);\n if (activity.initiallyActive) controller.setActive(true);\n }\n }\n runtimeOverlayRevision = nextOverlayRevision;\n return owner;\n } catch (error) {\n const rollbackErrors: unknown[] = [];\n for (const record of [...records].reverse()) {\n for (const [sourceId, controller] of [...record.controllers.entries()].reverse()) {\n try { controller.setActive(false); } catch (rollbackError) { rollbackErrors.push(rollbackError); }\n try {\n controller.dispose();\n record.controllers.delete(sourceId);\n } catch (rollbackError) { rollbackErrors.push(rollbackError); }\n }\n }\n let effectivePlanRollbackFailed = false;\n if (effectivePlanApplied) {\n try { applyEffectivePlan(previousEffectivePlan); } catch (rollbackError) {\n effectivePlanRollbackFailed = true;\n rollbackErrors.push(rollbackError);\n }\n }\n for (const record of records) runtimeRegistrations.delete(record.entityId);\n if (rollbackErrors.length > 0) {\n for (const record of records) runtimeRegistrations.set(record.entityId, record);\n if (effectivePlanRollbackFailed) runtimeOverlayRevision = nextOverlayRevision;\n throw createRuntimeRegistrationRollbackFailure(error, owner, rollbackErrors);\n } else {\n for (const record of records) record.disposed = true;\n }\n throw error;\n }\n },\n markDirty(reason, targetEntityOrRenderableId) {\n assertUsable();\n const targetedObject = targetEntityOrRenderableId\n ? objectByEntity.get(targetEntityOrRenderableId) ?? objectByRenderable.get(targetEntityOrRenderableId)\n : null;\n const targetedLayer = targetedObject?.cast\n ? shadowMapExperimentDepthLayerForUpdateClass(targetedObject.updateClass)\n : null;\n if (reason === 'static-geometry-changed') pendingMembershipInvalidationLayers.add('static');\n if (reason === 'material-alpha-test-changed' && targetedLayer) {\n markDepthDirty(targetedLayer, reason);\n return;\n }\n enqueueRefresh(reason);\n },\n getEvidence() {\n const bounds = plan?.generator.bounds;\n const lightSpaceSize = plan?.enabled && bounds\n ? calculateLightSpaceSize(\n plan.light.direction,\n effectiveCoverageExtent ?? bounds.extent,\n )\n : null;\n const activity = activityScheduler.snapshot();\n const automaticBindings = [...automaticAnimationGroups.values()];\n const automaticActivity = Object.freeze({\n observedAnimationGroupCount: automaticBindings.length,\n boundAnimationGroupCount: automaticBindings.filter(binding => binding.sources.size > 0).length,\n activeAnimationGroupCount: automaticBindings.filter(binding => binding.active).length,\n registeredActivitySourceCount: automaticBindings.reduce(\n (count, binding) => count + binding.sources.size,\n 0,\n ),\n unresolvedActiveAnimationGroupCount: automaticBindings.filter(\n binding => binding.active && binding.sources.size === 0,\n ).length,\n });\n const depthEvidence = depthBackend?.getEvidence() ?? null;\n const thresholdDiagnostics = plan ? createThresholdDiagnostics(\n plan,\n depthEvidence?.static.candidateMeshCount ?? 0,\n depthEvidence?.dynamic.candidateMeshCount ?? 0,\n ) : [];\n return Object.freeze({\n enabled: plan?.enabled === true,\n planRevision: plan?.revision ?? null,\n planFingerprint: plan ? createShadowMapExperimentPlanFingerprint(plan) : null,\n effectivePlan: plan ? createShadowMapExperimentPlanSnapshot(plan) : null,\n lightEntityId: plan?.light.entityId ?? null,\n generatorAllocated: generator !== null,\n resolution: plan?.enabled ? plan.generator.maps.compositeResolution : null,\n configuredMapResolutions: plan?.enabled ? Object.freeze({\n static: plan.generator.maps.staticResolution,\n dynamic: plan.generator.maps.dynamicResolution,\n composite: plan.generator.maps.compositeResolution,\n }) : null,\n mapResolutions: depthEvidence ? Object.freeze({\n static: depthEvidence.static.resolution,\n dynamic: depthEvidence.dynamic.resolution,\n composite: depthEvidence.compositeResolution,\n }) : null,\n diagnosticThresholds: plan?.enabled ? plan.diagnosticThresholds : null,\n filter: plan?.enabled ? plan.generator.filter : null,\n renderListCount: depthBackend\n ? depthBackend.getEvidence().static.renderListCount + depthBackend.getEvidence().dynamic.renderListCount\n : 0,\n receiverMeshCount: [...receiverStates.values()].filter(state => state.ownedValue).length,\n boundMeshCount: bindings.size,\n activity,\n automaticActivity,\n runtime: Object.freeze({\n planSchemaVersion: sourcePlan?.schemaVersion ?? null,\n sourcePlanRevision: sourcePlan?.revision ?? null,\n effectivePlanRevision: plan?.revision ?? null,\n overlayRevision: runtimeOverlayRevision,\n registrationCount: runtimeRegistrations.size,\n activityOwnerCount: [...runtimeRegistrations.values()].reduce(\n (total, record) => total + record.controllers.size,\n 0,\n ),\n registrations: Object.freeze([...runtimeRegistrations.values()]\n .filter(record => !record.disposed)\n .map(record => Object.freeze({\n entityId: record.entityId,\n behaviorProfileId: record.behaviorProfileId,\n renderableIds: Object.freeze(record.renderables.map(renderable => renderable.renderableId).sort()),\n activitySourceIds: Object.freeze([...record.controllers.keys()].sort()),\n }))\n .sort((left, right) => left.entityId.localeCompare(right.entityId))),\n }),\n refreshCount,\n lastRefreshReasons,\n worldUnitsPerTexel: plan?.enabled && lightSpaceSize && depthEvidence\n ? Object.freeze([\n lightSpaceSize[0] / depthEvidence.compositeResolution,\n lightSpaceSize[1] / depthEvidence.compositeResolution,\n ]) as readonly [number, number]\n : null,\n worldUnitsPerTexelByMap: plan?.enabled && lightSpaceSize && depthEvidence ? Object.freeze({\n static: texelSize(lightSpaceSize, depthEvidence.static.resolution),\n dynamic: texelSize(lightSpaceSize, depthEvidence.dynamic.resolution),\n composite: texelSize(lightSpaceSize, depthEvidence.compositeResolution),\n }) : null,\n registry: registry?.snapshot() ?? null,\n backend: depthBackend?.mode ?? null,\n fallbackReason: depthBackend?.fallbackReason ?? pendingFallbackReason,\n fallbackWarningEmitted: depthBackend?.fallbackReason\n ? fallbackWarnings.has(depthBackend.fallbackReason)\n : false,\n depth: depthEvidence,\n culling: Object.freeze({\n ...influenceCulling.snapshot(),\n enabled: plan?.culling.enabled === true,\n conservative: influenceCulling.snapshot().conservative || conservativeCasterMeshes.size > 0,\n stable: cullingStable,\n lastInvalidationReason: lastCullingInvalidationReason,\n coverageMode: options.coverageMode === 'scene-fit' ? 'scene-fit' : 'fixed',\n authoredCenter: plan\n ? Object.freeze([...plan.generator.bounds.center]) as readonly [number, number, number]\n : null,\n effectiveCenter: plan\n ? Object.freeze([\n ...(effectiveCoverageCenter ?? plan.generator.bounds.center),\n ]) as readonly [number, number, number]\n : null,\n authoredExtent: plan\n ? Object.freeze([...plan.generator.bounds.extent]) as readonly [number, number, number]\n : null,\n effectiveExtent: plan\n ? Object.freeze([\n ...(effectiveCoverageExtent ?? plan.generator.bounds.extent),\n ]) as readonly [number, number, number]\n : null,\n anchor: null,\n }),\n diagnostics: Object.freeze([\n ...diagnostics.map(entry => Object.freeze({ ...entry })),\n ...thresholdDiagnostics,\n ...((depthBackend?.fallbackReason ?? pendingFallbackReason) ? [Object.freeze({\n code: plan?.generator.backend.fallback === 'disable'\n ? 'shadowMapExperiment.splitBackendDisabled'\n : 'shadowMapExperiment.splitBackendFallback',\n message: plan?.generator.backend.fallback === 'disable'\n ? `Split depth backend was disabled: ${depthBackend?.fallbackReason ?? pendingFallbackReason}`\n : `Split depth backend fell back to a single ShadowMap: ${depthBackend?.fallbackReason ?? pendingFallbackReason}`,\n })] : []),\n ]),\n });\n },\n dispose() {\n if (disposed) return;\n disposing = true;\n const runtimeCleanupErrors: unknown[] = [];\n for (const record of [...runtimeRegistrations.values()].reverse()) {\n try { record.owner?.dispose(); } catch (error) { runtimeCleanupErrors.push(error); }\n }\n if (runtimeCleanupErrors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.disposeFailed'), {\n cleanupErrors: Object.freeze(runtimeCleanupErrors),\n });\n }\n const cleanupErrors: unknown[] = [];\n const attempt = (operation: () => void, completed: () => void): void => {\n try {\n operation();\n completed();\n } catch (error) {\n cleanupErrors.push(error);\n }\n };\n if (!disposeNewAnimationGroupObserverRemoved) {\n attempt(\n () => { scene.onNewAnimationGroupAddedObservable.remove(newAnimationGroupObserver); },\n () => { disposeNewAnimationGroupObserverRemoved = true; },\n );\n }\n if (!disposeRemovedAnimationGroupObserverRemoved) {\n attempt(\n () => { scene.onAnimationGroupRemovedObservable.remove(removedAnimationGroupObserver); },\n () => { disposeRemovedAnimationGroupObserverRemoved = true; },\n );\n }\n for (const group of [...automaticAnimationGroups.keys()].reverse()) {\n cleanupErrors.push(...detachAutomaticAnimationGroup(group));\n }\n if (!disposeNewMeshObserverRemoved) {\n attempt(\n () => { scene.onNewMeshAddedObservable.remove(newMeshObserver); },\n () => { disposeNewMeshObserverRemoved = true; },\n );\n }\n if (!disposeRemovedMeshObserverRemoved) {\n attempt(\n () => { scene.onMeshRemovedObservable.remove(removedMeshObserver); },\n () => { disposeRemovedMeshObserverRemoved = true; },\n );\n }\n if (!disposeFrameObserverRemoved) {\n attempt(\n () => { scene.onBeforeRenderObservable.remove(frameObserver); },\n () => { disposeFrameObserverRemoved = true; },\n );\n }\n if (hasOwnedBackendState()) attempt(deactivate, () => undefined);\n plan = null;\n sourcePlan = null;\n const observersRemoved = disposeNewMeshObserverRemoved\n && disposeRemovedMeshObserverRemoved\n && disposeFrameObserverRemoved\n && disposeNewAnimationGroupObserverRemoved\n && disposeRemovedAnimationGroupObserverRemoved\n && automaticAnimationGroups.size === 0;\n if (observersRemoved && !hasOwnedBackendState()) {\n if (!disposeActivitySchedulerDisposed) {\n attempt(activityScheduler.dispose, () => { disposeActivitySchedulerDisposed = true; });\n }\n if (!disposeDepthRefreshSchedulerDisposed) {\n attempt(depthRefreshScheduler.dispose, () => { disposeDepthRefreshSchedulerDisposed = true; });\n }\n if (!disposeInfluenceCullingDisposed) {\n attempt(influenceCulling.dispose, () => { disposeInfluenceCullingDisposed = true; });\n }\n }\n if (!hasOwnedBackendState()) {\n activeDeformationSourceCountByEntity.clear();\n eligibleActiveDeformationEntityIds.clear();\n pendingFinalDeformationEntityIds.clear();\n pendingDeformationInvalidations.clear();\n activeCasterEntityIds.clear();\n pendingTransformMembershipRetries.clear();\n pendingSceneMeshRegistrations.clear();\n pendingMeshUnregistrations.clear();\n pendingRenderableMembershipRetries.clear();\n }\n disposed = observersRemoved\n && !hasOwnedBackendState()\n && disposeActivitySchedulerDisposed\n && disposeDepthRefreshSchedulerDisposed\n && disposeInfluenceCullingDisposed;\n if (cleanupErrors.length > 0) {\n throw Object.assign(new Error('shadowMapExperiment.disposeFailed'), { cleanupErrors });\n }\n },\n };\n\n if (initialPlan) {\n try {\n setPlan(initialPlan);\n } catch (error) {\n let newMeshObserverRemoved = false;\n let removedMeshObserverRemoved = false;\n let frameObserverRemoved = false;\n let newAnimationGroupObserverRemoved = false;\n let removedAnimationGroupObserverRemoved = false;\n let activitySchedulerDisposed = false;\n let depthRefreshSchedulerDisposed = false;\n let influenceCullingDisposed = false;\n let cleanupComplete = false;\n const cleanup: BabylonShadowMapExperimentSystemCleanup = () => {\n if (cleanupComplete) return Object.freeze([]);\n const cleanupErrors: unknown[] = [];\n const attempt = (operation: () => void, completed: () => void): void => {\n try {\n operation();\n completed();\n } catch (cleanupError) {\n cleanupErrors.push(cleanupError);\n }\n };\n if (!newAnimationGroupObserverRemoved) {\n attempt(\n () => { scene.onNewAnimationGroupAddedObservable.remove(newAnimationGroupObserver); },\n () => { newAnimationGroupObserverRemoved = true; },\n );\n }\n if (!removedAnimationGroupObserverRemoved) {\n attempt(\n () => { scene.onAnimationGroupRemovedObservable.remove(removedAnimationGroupObserver); },\n () => { removedAnimationGroupObserverRemoved = true; },\n );\n }\n for (const group of [...automaticAnimationGroups.keys()].reverse()) {\n cleanupErrors.push(...detachAutomaticAnimationGroup(group));\n }\n if (!newMeshObserverRemoved) {\n attempt(\n () => { scene.onNewMeshAddedObservable.remove(newMeshObserver); },\n () => { newMeshObserverRemoved = true; },\n );\n }\n if (!removedMeshObserverRemoved) {\n attempt(\n () => { scene.onMeshRemovedObservable.remove(removedMeshObserver); },\n () => { removedMeshObserverRemoved = true; },\n );\n }\n if (!frameObserverRemoved) {\n attempt(\n () => { scene.onBeforeRenderObservable.remove(frameObserver); },\n () => { frameObserverRemoved = true; },\n );\n }\n if (hasOwnedBackendState()) {\n attempt(deactivate, () => undefined);\n }\n plan = null;\n const observersRemoved = newMeshObserverRemoved\n && removedMeshObserverRemoved\n && frameObserverRemoved\n && newAnimationGroupObserverRemoved\n && removedAnimationGroupObserverRemoved\n && automaticAnimationGroups.size === 0;\n if (observersRemoved && !hasOwnedBackendState()) {\n if (!activitySchedulerDisposed) {\n attempt(activityScheduler.dispose, () => { activitySchedulerDisposed = true; });\n }\n if (!depthRefreshSchedulerDisposed) {\n attempt(depthRefreshScheduler.dispose, () => { depthRefreshSchedulerDisposed = true; });\n }\n if (!influenceCullingDisposed) {\n attempt(influenceCulling.dispose, () => { influenceCullingDisposed = true; });\n }\n }\n cleanupComplete = observersRemoved\n && !hasOwnedBackendState()\n && activitySchedulerDisposed\n && depthRefreshSchedulerDisposed\n && influenceCullingDisposed;\n if (cleanupComplete) disposed = true;\n return Object.freeze(cleanupErrors);\n };\n const initializationCleanupErrors = cleanup();\n if (initializationCleanupErrors.length > 0) {\n throw createInitializationFailure(error, cleanup, initializationCleanupErrors);\n }\n throw error;\n }\n }\n return system;\n}\n\nfunction createThresholdDiagnostics(\n plan: ShadowMapExperimentPlan,\n staticCasterCount: number,\n dynamicCasterCount: number,\n): readonly { code: string; message: string }[] {\n const thresholds = plan.diagnosticThresholds;\n const result: Array<{ code: string; message: string }> = [];\n if (staticCasterCount > thresholds.staticCasterCountWarning) {\n result.push({\n code: 'shadowMapExperiment.staticCasterCountWarning',\n message: `Static caster count ${staticCasterCount} exceeds the configured warning threshold ${thresholds.staticCasterCountWarning}.`,\n });\n }\n if (dynamicCasterCount > thresholds.dynamicCasterCountWarning) {\n result.push({\n code: 'shadowMapExperiment.dynamicCasterCountWarning',\n message: `Dynamic caster count ${dynamicCasterCount} exceeds the configured warning threshold ${thresholds.dynamicCasterCountWarning}.`,\n });\n }\n const renderableCount = plan.objects.reduce((total, object) => total + object.renderableIds.length, 0);\n if (renderableCount > thresholds.renderableCountWarning) {\n result.push({\n code: 'shadowMapExperiment.renderableCountWarning',\n message: `Renderable count ${renderableCount} exceeds the configured warning threshold ${thresholds.renderableCountWarning}.`,\n });\n }\n return Object.freeze(result.map(entry => Object.freeze(entry)));\n}\n\nfunction texelSize(\n lightSpaceSize: readonly [number, number],\n resolution: number,\n): readonly [number, number] {\n return Object.freeze([\n lightSpaceSize[0] / resolution,\n lightSpaceSize[1] / resolution,\n ]) as readonly [number, number];\n}\n\nfunction configureLight(\n light: DirectionalLight,\n plan: ShadowMapExperimentPlan,\n coverage: {\n readonly center: readonly [number, number, number];\n readonly extent: readonly [number, number, number];\n readonly near: number;\n readonly far: number;\n },\n): void {\n const direction = Vector3.FromArray(plan.light.direction).normalize();\n if (direction.lengthSquared() < 1e-8) throw new Error('shadowMapExperiment.lightDirectionInvalid');\n const center = Vector3.FromArray(coverage.center);\n const depth = (coverage.near + coverage.far) * 0.5;\n const [width, height] = calculateLightSpaceSize(plan.light.direction, coverage.extent);\n light.direction.copyFrom(direction);\n light.position.copyFrom(center.subtract(direction.scale(depth)));\n light.autoUpdateExtends = false;\n light.orthoLeft = -width * 0.5;\n light.orthoRight = width * 0.5;\n light.orthoBottom = -height * 0.5;\n light.orthoTop = height * 0.5;\n light.shadowMinZ = coverage.near;\n light.shadowMaxZ = coverage.far;\n}\n\nfunction createSceneFitCoverage(\n plan: ShadowMapExperimentPlan,\n bounds: {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n },\n): {\n readonly center: readonly [number, number, number];\n readonly extent: readonly [number, number, number];\n readonly near: number;\n readonly far: number;\n} {\n const min = Vector3.FromArray(bounds.min);\n const max = Vector3.FromArray(bounds.max);\n const rawExtent = max.subtract(min);\n const maxExtent = Math.max(rawExtent.x, rawExtent.y, rawExtent.z, 1);\n const padding = Math.max(0.5, maxExtent * 0.05);\n const extent = Object.freeze([\n Math.max(4, rawExtent.x + padding * 2),\n Math.max(4, rawExtent.y + padding * 2),\n Math.max(4, rawExtent.z + padding * 2),\n ]) as readonly [number, number, number];\n const near = Math.min(plan.generator.bounds.near, 0.1);\n const far = Math.max(\n plan.generator.bounds.far,\n Math.hypot(extent[0], extent[1], extent[2]) + padding * 2,\n );\n const center = snapSceneFitCenterToTexels(\n plan,\n vectorTuple(min.add(max).scale(0.5)),\n extent,\n near,\n far,\n );\n return Object.freeze({ center, extent, near, far });\n}\n\nfunction collectActiveCasterWorldBounds(\n bindings: ReadonlyMap<AbstractMesh, MeshBinding>,\n registry: ShadowMapExperimentRegistry | null,\n): {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n} | null {\n let min: Vector3 | null = null;\n let max: Vector3 | null = null;\n for (const binding of bindings.values()) {\n if (registry?.getRecord(binding.renderableId)?.state !== 'active') continue;\n if (!isMeshRuntimeVisible(binding.mesh)) continue;\n const bounds = readStableMeshWorldBounds(binding);\n if (!bounds) continue;\n const boundsMin = Vector3.FromArray(bounds.min);\n const boundsMax = Vector3.FromArray(bounds.max);\n min = min ? Vector3.Minimize(min, boundsMin) : boundsMin;\n max = max ? Vector3.Maximize(max, boundsMax) : boundsMax;\n }\n return min && max\n ? Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) })\n : null;\n}\n\nfunction createLightSpaceBasis(direction: Vector3): { readonly right: Vector3; readonly up: Vector3 } {\n const upSeed = Math.abs(Vector3.Dot(direction, Vector3.Up())) > 0.98 ? Vector3.Forward() : Vector3.Up();\n const right = Vector3.Cross(upSeed, direction).normalize();\n const up = Vector3.Cross(direction, right).normalize();\n return { right, up };\n}\n\nfunction snapSceneFitCenterToTexels(\n plan: ShadowMapExperimentPlan,\n centerValue: readonly [number, number, number],\n extentValue: readonly [number, number, number],\n near: number,\n far: number,\n): readonly [number, number, number] {\n const direction = Vector3.FromArray(plan.light.direction).normalize();\n const { right, up } = createLightSpaceBasis(direction);\n const center = Vector3.FromArray(centerValue);\n const [width, height] = calculateLightSpaceSize(plan.light.direction, extentValue);\n const resolution = Math.max(1, plan.generator.maps.compositeResolution);\n const depth = Math.max(far - near, 1e-4);\n const snap = (value: number, step: number): number => Math.round(value / step) * step;\n const rightValue = snap(Vector3.Dot(center, right), width / resolution);\n const upValue = snap(Vector3.Dot(center, up), height / resolution);\n const depthValue = snap(Vector3.Dot(center, direction), depth / resolution);\n const result = right.scale(rightValue).add(up.scale(upValue)).add(direction.scale(depthValue));\n return vectorTuple(result);\n}\n\nfunction areTuple3Equal(\n left: readonly [number, number, number],\n right: readonly [number, number, number],\n): boolean {\n return left.every((value, index) => Math.abs(value - right[index]) <= 1e-8);\n}\n\nfunction calculateLightSpaceSize(\n directionValue: readonly [number, number, number],\n extent: readonly [number, number, number],\n): readonly [number, number] {\n const direction = Vector3.FromArray(directionValue).normalize();\n const { right, up } = createLightSpaceBasis(direction);\n const half = new Vector3(extent[0] * 0.5, extent[1] * 0.5, extent[2] * 0.5);\n let width = 0;\n let height = 0;\n for (const x of [-half.x, half.x]) {\n for (const y of [-half.y, half.y]) {\n for (const z of [-half.z, half.z]) {\n const corner = new Vector3(x, y, z);\n width = Math.max(width, Math.abs(Vector3.Dot(corner, right)) * 2);\n height = Math.max(height, Math.abs(Vector3.Dot(corner, up)) * 2);\n }\n }\n }\n return Object.freeze([Math.max(width, 1e-4), Math.max(height, 1e-4)]);\n}\n\nfunction resolveDirectionalLight(scene: Scene, entityId: string): DirectionalLight | null {\n for (const light of scene.lights) {\n if (!isBabylonDirectionalLight(light)) continue;\n if (collectIdentityCandidates(light).has(entityId)) return light;\n }\n return null;\n}\n\nfunction isBabylonDirectionalLight(light: unknown): light is DirectionalLight {\n if (light instanceof DirectionalLight) return true;\n if (!isRecord(light) || typeof light.getClassName !== 'function') return false;\n try {\n return light.getClassName() === 'DirectionalLight';\n } catch {\n return false;\n }\n}\n\nfunction resolveRenderableId(\n mesh: AbstractMesh,\n objectByRenderable: ReadonlyMap<string, ShadowMapExperimentPlanObject>,\n): string | null {\n let current: AbstractMesh['parent'] | AbstractMesh | null = mesh;\n while (current) {\n for (const candidate of collectIdentityCandidates(current)) {\n if (objectByRenderable.has(candidate)) return candidate;\n }\n current = current.parent;\n }\n return null;\n}\n\nfunction collectIdentityCandidates(node: { id?: string; name?: string; metadata?: unknown }): Set<string> {\n const candidates = new Set<string>();\n if (node.id) candidates.add(node.id);\n if (node.name) candidates.add(node.name);\n const metadata = isRecord(node.metadata) ? node.metadata : null;\n if (!metadata) return candidates;\n addIdentityCandidatesFromRecord(candidates, metadata);\n const projection = isRecord(metadata.editorProjection) ? metadata.editorProjection : null;\n if (projection) addIdentityCandidatesFromRecord(candidates, projection);\n const editorSource = isRecord(metadata.__fpsEditor) ? metadata.__fpsEditor : null;\n if (editorSource) addIdentityCandidatesFromRecord(candidates, editorSource);\n const sourceBinding = isRecord(metadata.sourceBinding) ? metadata.sourceBinding : null;\n if (sourceBinding) addIdentityCandidatesFromRecord(candidates, sourceBinding);\n return candidates;\n}\n\nfunction addIdentityCandidatesFromRecord(\n candidates: Set<string>,\n record: Readonly<Record<string, unknown>>,\n): void {\n for (const key of [\n 'entityId',\n 'renderableId',\n 'runtimeNodeId',\n 'nodeId',\n 'rootNodeId',\n 'objectId',\n 'sourceId',\n ]) {\n const value = record[key];\n if (typeof value === 'string' && value.trim()) candidates.add(value);\n }\n}\n\nfunction meshIdentityChainContains(mesh: AbstractMesh, identity: string): boolean {\n let current: AbstractMesh['parent'] | AbstractMesh | null = mesh;\n while (current) {\n if (collectIdentityCandidates(current).has(identity)) return true;\n current = current.parent;\n }\n return false;\n}\n\nfunction isReceiverEligible(mesh: AbstractMesh): boolean {\n const metadata = isRecord(mesh.metadata) ? mesh.metadata : null;\n const projection = metadata && isRecord(metadata.editorProjection) ? metadata.editorProjection : null;\n if (metadata?.helper === true || projection?.helper === true) return false;\n const material = mesh.material;\n if (!material) return true;\n if ('disableLighting' in material && (material as { disableLighting?: boolean }).disableLighting === true) return false;\n try {\n if (material.needAlphaBlendingForMesh(mesh)) return false;\n } catch {\n return false;\n }\n return true;\n}\n\nfunction resolveReceiverTarget(mesh: AbstractMesh): AbstractMesh {\n const sourceMesh = (mesh as AbstractMesh & { sourceMesh?: AbstractMesh }).sourceMesh;\n return sourceMesh && !isDisposed(sourceMesh) ? sourceMesh : mesh;\n}\n\nfunction readWorldMatrixSnapshot(mesh: AbstractMesh): readonly number[] | null {\n const matrix = mesh.getWorldMatrix?.();\n if (!matrix || typeof matrix.asArray !== 'function') return null;\n return [...matrix.asArray()];\n}\n\nfunction areMatrixSnapshotsEqual(\n previous: readonly number[] | null,\n next: readonly number[] | null,\n): boolean {\n if (previous === next) return true;\n if (!previous || !next || previous.length !== next.length) return false;\n for (let index = 0; index < previous.length; index += 1) {\n if (previous[index] !== next[index]) return false;\n }\n return true;\n}\n\nfunction isMeshRuntimeVisible(mesh: AbstractMesh): boolean {\n return !isDisposed(mesh) && mesh.isEnabled() && mesh.isVisible && mesh.visibility > 0;\n}\n\nfunction isDisposed(mesh: AbstractMesh): boolean {\n return typeof mesh.isDisposed === 'function' && mesh.isDisposed();\n}\n\nfunction readMeshLocalBounds(mesh: AbstractMesh): {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n} | null {\n try {\n const bounds = mesh.getBoundingInfo?.().boundingBox;\n if (!bounds) return null;\n const min = bounds.minimum;\n const max = bounds.maximum;\n if (![min.x, min.y, min.z, max.x, max.y, max.z].every(Number.isFinite)) return null;\n return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });\n } catch {\n return null;\n }\n}\n\nfunction readStableMeshWorldBounds(binding: MeshBinding): {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n} | null {\n const local = binding.sceneFitLocalBounds;\n if (!local) return readMeshWorldBounds(binding.mesh);\n try {\n binding.mesh.computeWorldMatrix(false);\n const matrix = binding.mesh.getWorldMatrix();\n const min = Vector3.FromArray(local.min);\n const max = Vector3.FromArray(local.max);\n let worldMin: Vector3 | null = null;\n let worldMax: Vector3 | null = null;\n for (const x of [min.x, max.x]) {\n for (const y of [min.y, max.y]) {\n for (const z of [min.z, max.z]) {\n const point = Vector3.TransformCoordinates(new Vector3(x, y, z), matrix);\n worldMin = worldMin ? Vector3.Minimize(worldMin, point) : point;\n worldMax = worldMax ? Vector3.Maximize(worldMax, point) : point;\n }\n }\n }\n return worldMin && worldMax\n ? Object.freeze({ min: vectorTuple(worldMin), max: vectorTuple(worldMax) })\n : null;\n } catch {\n return null;\n }\n}\n\nfunction readMeshWorldBounds(mesh: AbstractMesh): {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n} | null {\n try {\n mesh.computeWorldMatrix(false);\n const bounds = mesh.getBoundingInfo?.().boundingBox;\n if (!bounds) return null;\n const min = bounds.minimumWorld;\n const max = bounds.maximumWorld;\n if (![min.x, min.y, min.z, max.x, max.y, max.z].every(Number.isFinite)) return null;\n return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });\n } catch {\n return null;\n }\n}\n\nfunction isDeformableCaster(\n mesh: AbstractMesh,\n updateClass: ShadowMapExperimentPlanObject['updateClass'],\n): boolean {\n const deformable = mesh as AbstractMesh & {\n readonly skeleton?: unknown;\n readonly morphTargetManager?: unknown;\n };\n return updateClass === 'skinned' || Boolean(deformable.skeleton) || Boolean(deformable.morphTargetManager);\n}\n\nfunction createMeshDataCache(\n mesh: AbstractMesh,\n caches: Map<AbstractMesh, IMeshDataCache>,\n): IMeshDataCache {\n const cache: IMeshDataCache = {};\n caches.set(mesh, cache);\n return cache;\n}\n\nfunction readCasterWorldBounds(\n mesh: AbstractMesh,\n deformable: boolean,\n cache: IMeshDataCache | null,\n): {\n readonly min: readonly [number, number, number];\n readonly max: readonly [number, number, number];\n} | null {\n if (deformable) {\n const deformableMesh = mesh as AbstractMesh & {\n readonly skeleton?: unknown;\n readonly morphTargetManager?: unknown;\n };\n const applySkeleton = Boolean(deformableMesh.skeleton);\n const applyMorph = Boolean(deformableMesh.morphTargetManager);\n if (applySkeleton || applyMorph) {\n try {\n mesh.refreshBoundingInfo({\n applySkeleton,\n applyMorph,\n updatePositionsArray: false,\n ...(cache ? { cache } : {}),\n });\n } catch {\n return null;\n }\n }\n }\n return readMeshWorldBounds(mesh);\n}\n\nfunction readCameraProjectionSignature(camera: Camera, scene: Scene): string {\n const projection = camera.getProjectionMatrix().asArray()\n .map(value => Number.isFinite(value) ? value.toFixed(5) : String(value))\n .join(',');\n const engine = scene.getEngine();\n return `${camera.mode}:${engine.getRenderWidth()}:${engine.getRenderHeight()}:${projection}`;\n}\n\nfunction calculateCameraShadowCoverage(\n camera: Camera,\n plan: ShadowMapExperimentPlan,\n centerValue: readonly [number, number, number] = plan.generator.bounds.center,\n extentValue: readonly [number, number, number] = plan.generator.bounds.extent,\n): { readonly min: readonly [number, number, number]; readonly max: readonly [number, number, number] } | null {\n try {\n const fixedMin = Vector3.FromArray(centerValue).subtract(\n Vector3.FromArray(extentValue).scale(0.5),\n );\n const fixedMax = Vector3.FromArray(centerValue).add(\n Vector3.FromArray(extentValue).scale(0.5),\n );\n const inverse = Matrix.Invert(camera.getTransformationMatrix());\n const engine = camera.getScene().getEngine();\n const ndcNearZ = engine.isNDCHalfZRange ? 0 : -1;\n const frustumCorners: Vector3[] = [];\n for (const x of [-1, 1]) {\n for (const y of [-1, 1]) {\n for (const z of [ndcNearZ, 1]) {\n frustumCorners.push(Vector3.TransformCoordinates(new Vector3(x, y, z), inverse));\n }\n }\n }\n const frustumMin = frustumCorners.reduce(\n (result, point) => Vector3.Minimize(result, point),\n frustumCorners[0].clone(),\n );\n const frustumMax = frustumCorners.reduce(\n (result, point) => Vector3.Maximize(result, point),\n frustumCorners[0].clone(),\n );\n const min = Vector3.Maximize(frustumMin, fixedMin);\n const max = Vector3.Minimize(frustumMax, fixedMax);\n if (min.x > max.x || min.y > max.y || min.z > max.z) return null;\n return Object.freeze({ min: vectorTuple(min), max: vectorTuple(max) });\n } catch {\n return null;\n }\n}\n\nfunction vectorTuple(value: Vector3): readonly [number, number, number] {\n return Object.freeze([value.x, value.y, value.z]) as readonly [number, number, number];\n}\n\nfunction classifyAutomaticActivityTarget(\n target: unknown,\n bindings: ReadonlyMap<AbstractMesh, MeshBinding>,\n): ShadowMapExperimentActivityKind {\n const className = readBabylonClassName(target);\n if (className === 'MorphTarget') return 'morph';\n if (className === 'Bone' || hasFunction(target, 'getSkeleton')) return 'animation';\n if (resolveAutomaticActivityTargetSkeletons(bindings, target).size > 0) return 'animation';\n return 'transform';\n}\n\nfunction resolveAutomaticActivityTargetMeshes(\n _scene: Scene,\n bindings: ReadonlyMap<AbstractMesh, MeshBinding>,\n target: unknown,\n kind: ShadowMapExperimentActivityKind,\n): ReadonlySet<AbstractMesh> {\n const resolved = new Set<AbstractMesh>();\n if (!target || (typeof target !== 'object' && typeof target !== 'function')) return resolved;\n if (kind === 'animation') {\n const skeletons = resolveAutomaticActivityTargetSkeletons(bindings, target);\n if (skeletons.size === 0) return resolved;\n for (const mesh of bindings.keys()) {\n if (skeletons.has((mesh as AbstractMesh & { skeleton?: unknown }).skeleton)) resolved.add(mesh);\n }\n return resolved;\n }\n if (kind === 'morph') {\n for (const mesh of bindings.keys()) {\n const manager = (mesh as AbstractMesh & {\n morphTargetManager?: { numTargets?: number; getTarget?: (index: number) => unknown } | null;\n }).morphTargetManager;\n const count = manager?.numTargets ?? 0;\n if (!manager?.getTarget || !Number.isInteger(count) || count < 1) continue;\n for (let index = 0; index < count; index += 1) {\n if (manager.getTarget(index) === target) {\n resolved.add(mesh);\n break;\n }\n }\n }\n return resolved;\n }\n for (const mesh of bindings.keys()) {\n if (mesh === target\n || isBabylonNodeDescendantOf(mesh, target)\n || isBabylonNodeDescendantOf(target, mesh)) {\n resolved.add(mesh);\n }\n }\n return resolved;\n}\n\nfunction resolveAutomaticActivityTargetSkeletons(\n bindings: ReadonlyMap<AbstractMesh, MeshBinding>,\n target: unknown,\n): ReadonlySet<unknown> {\n const skeletons = new Set<unknown>();\n const directSkeleton = callOptional(target, 'getSkeleton')\n ?? (target as { _skeleton?: unknown } | null)?._skeleton\n ?? null;\n if (directSkeleton) skeletons.add(directSkeleton);\n for (const mesh of bindings.keys()) {\n const skeleton = (mesh as AbstractMesh & {\n skeleton?: { bones?: readonly unknown[] } | null;\n }).skeleton;\n if (!skeleton || skeletons.has(skeleton)) continue;\n for (const bone of skeleton.bones ?? []) {\n if (bone === target\n || callOptional(bone, 'getTransformNode') === target\n || (bone as { _linkedTransformNode?: unknown } | null)?._linkedTransformNode === target) {\n skeletons.add(skeleton);\n break;\n }\n }\n }\n return skeletons;\n}\n\nfunction readBabylonClassName(value: unknown): string | null {\n const className = callOptional(value, 'getClassName');\n return typeof className === 'string' ? className : null;\n}\n\nfunction isBabylonNodeDescendantOf(value: unknown, ancestor: unknown): boolean {\n if (!hasFunction(value, 'isDescendantOf')) return false;\n try {\n return (value as { isDescendantOf: (candidate: unknown) => boolean }).isDescendantOf(ancestor);\n } catch {\n return false;\n }\n}\n\nfunction hasFunction(value: unknown, key: string): boolean {\n return Boolean(value)\n && (typeof value === 'object' || typeof value === 'function')\n && typeof (value as Record<string, unknown>)[key] === 'function';\n}\n\nfunction callOptional(value: unknown, key: string): unknown {\n if (!hasFunction(value, key)) return undefined;\n try {\n return (value as Record<string, (...args: never[]) => unknown>)[key]();\n } catch {\n return undefined;\n }\n}\n\nfunction isStaticDirtyReason(reason: ShadowMapExperimentDirtyReason): boolean {\n return reason === 'static-transform-changed'\n || reason === 'static-geometry-changed'\n || reason === 'static-depth-invalidated';\n}\n\nfunction isDynamicDirtyReason(reason: ShadowMapExperimentDirtyReason): boolean {\n return reason === 'dynamic-transform-changed'\n || reason === 'caster-activity-started'\n || reason === 'caster-activity-stopped'\n || reason === 'dynamic-frame'\n || reason === 'skinned-animation-frame'\n || reason === 'morph-animation-frame'\n || reason === 'physics-motion-frame'\n || reason === 'dynamic-depth-invalidated';\n}\n\nfunction dirtyReasonForActivityKind(\n kind: ShadowMapExperimentActivityKind,\n): ShadowMapExperimentDirtyReason {\n switch (kind) {\n case 'animation': return 'skinned-animation-frame';\n case 'morph': return 'morph-animation-frame';\n case 'physics': return 'physics-motion-frame';\n case 'transform': return 'dynamic-frame';\n }\n}\n\nfunction captureLight(light: DirectionalLight): LightState {\n return {\n light,\n direction: light.direction.clone(),\n position: light.position.clone(),\n autoUpdateExtends: light.autoUpdateExtends,\n shadowEnabled: light.shadowEnabled,\n orthoLeft: light.orthoLeft,\n orthoRight: light.orthoRight,\n orthoTop: light.orthoTop,\n orthoBottom: light.orthoBottom,\n shadowMinZ: light.shadowMinZ,\n shadowMaxZ: light.shadowMaxZ,\n };\n}\n\nfunction restoreLight(state: LightState): void {\n const light = state.light;\n if (light.isDisposed()) return;\n light.direction.copyFrom(state.direction);\n light.position.copyFrom(state.position);\n light.autoUpdateExtends = state.autoUpdateExtends;\n light.shadowEnabled = state.shadowEnabled;\n light.orthoLeft = state.orthoLeft;\n light.orthoRight = state.orthoRight;\n light.orthoTop = state.orthoTop;\n light.orthoBottom = state.orthoBottom;\n light.shadowMinZ = state.shadowMinZ;\n light.shadowMaxZ = state.shadowMaxZ;\n}\n\nfunction readShadowGenerators(light: DirectionalLight): ShadowGenerator[] {\n const generators = light.getShadowGenerators?.();\n if (!generators) return [];\n if (Array.isArray(generators)) return generators as ShadowGenerator[];\n if (generators instanceof Map) return [...generators.values()] as ShadowGenerator[];\n return [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction attachFailureMetadata(error: object, metadata: Readonly<Record<string, unknown>>): void {\n try {\n Object.assign(error, metadata);\n } catch {\n // Error annotation is diagnostic only; it must never replace the primary failure.\n }\n}\n\nfunction createInitializationFailure(\n error: unknown,\n cleanup: BabylonShadowMapExperimentSystemCleanup,\n initializationCleanupErrors: readonly unknown[],\n): unknown {\n const metadata = {\n initializationCleanupErrors: Object.freeze([...initializationCleanupErrors]),\n shadowMapExperimentSystemCleanup: cleanup,\n } as const;\n if (error && (typeof error === 'object' || typeof error === 'function')) {\n try {\n Object.assign(error, metadata);\n if (readBabylonShadowMapExperimentSystemCleanup(error) === cleanup) return error;\n } catch {\n // A non-extensible primary error is wrapped below so cleanup ownership remains reachable.\n }\n }\n const failure = new Error(\n error instanceof Error ? error.message : 'shadowMapExperiment.initializationFailed',\n );\n return Object.assign(failure, { cause: error, ...metadata });\n}\n\nfunction createRuntimeRegistrationRollbackFailure(\n error: unknown,\n owner: BabylonRuntimeShadowObjectsOwner,\n rollbackErrors: readonly unknown[],\n): unknown {\n const metadata = {\n rollbackErrors: Object.freeze([...rollbackErrors]),\n runtimeShadowObjectsRecoveryOwner: owner,\n } as const;\n if (error && (typeof error === 'object' || typeof error === 'function')) {\n try {\n Object.assign(error, metadata);\n if (readBabylonRuntimeShadowObjectsRecoveryOwner(error) === owner) return error;\n } catch {\n // A non-extensible primary error is wrapped below so recovery ownership remains reachable.\n }\n }\n const failure = new Error(\n error instanceof Error ? error.message : 'shadowMapExperiment.runtimeRegistrationFailed',\n );\n return Object.assign(failure, { cause: error, ...metadata });\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fps-games/babylon-renderer",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1-beta.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Babylon-backed renderer capabilities for fps-game-editor.",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
},
|
|
25
25
|
"fpsGamePlugin": {
|
|
26
26
|
"id": "fps.renderer.babylon",
|
|
27
|
-
"version": "0.2.
|
|
27
|
+
"version": "0.2.1-beta.1",
|
|
28
28
|
"apiVersion": 1,
|
|
29
29
|
"requires": {},
|
|
30
30
|
"provides": {
|
|
@@ -55,11 +55,11 @@
|
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@fps-games/playable-contracts": "0.2.
|
|
59
|
-
"@fps-games/playable-rendering": "0.2.
|
|
60
|
-
"@fps-games/playable-runtime-data": "0.2.
|
|
61
|
-
"@fps-games/plugin-api": "0.2.
|
|
62
|
-
"@fps-games/plugin-host": "0.2.
|
|
58
|
+
"@fps-games/playable-contracts": "0.2.1-beta.1",
|
|
59
|
+
"@fps-games/playable-rendering": "0.2.1-beta.1",
|
|
60
|
+
"@fps-games/playable-runtime-data": "0.2.1-beta.1",
|
|
61
|
+
"@fps-games/plugin-api": "0.2.1-beta.1",
|
|
62
|
+
"@fps-games/plugin-host": "0.2.1-beta.1"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"@babylonjs/core": "^8.0.0"
|
|
@@ -293,7 +293,7 @@ export function focusEditorViewportSelection(camera, node, options = {}) {
|
|
|
293
293
|
const scene = editorCamera.getScene?.() ?? node.getScene?.();
|
|
294
294
|
const isArcRotateCamera = 'radius' in editorCamera && 'target' in editorCamera;
|
|
295
295
|
if (typeof editorCamera.setTarget === 'function' && Vector3) {
|
|
296
|
-
editorCamera.setTarget(new Vector3(cx, cy, cz));
|
|
296
|
+
editorCamera.setTarget(new Vector3(cx, cy, cz), false, false, isArcRotateCamera);
|
|
297
297
|
if (isArcRotateCamera)
|
|
298
298
|
editorCamera.radius = dist;
|
|
299
299
|
return true;
|