@alpsckr/unitycli 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +389 -0
- package/contracts/command-contract.json +3972 -0
- package/contracts/stable-session/admission-acquire-v1.schema.json +16 -0
- package/contracts/stable-session/admission-response-v1.schema.json +30 -0
- package/contracts/stable-session/admission-revoke-v1.schema.json +15 -0
- package/contracts/stable-session/admission-transport-v1.json +36 -0
- package/contracts/stable-session/bridge-request-v2.schema.json +26 -0
- package/contracts/stable-session/canonical-path-v1-golden.json +23 -0
- package/contracts/stable-session/completion-contract.schema.json +46 -0
- package/contracts/stable-session/direct-call-semantics.json +102 -0
- package/contracts/stable-session/editor-state.schema.json +92 -0
- package/contracts/stable-session/health-v3.schema.json +47 -0
- package/contracts/stable-session/instance-registry-v3.schema.json +152 -0
- package/contracts/stable-session/removal-map.json +27 -0
- package/contracts/stable-session/request-digest-v1-golden.json +7 -0
- package/contracts/stable-session/runtime-config-v2.schema.json +27 -0
- package/contracts/static-capability-catalog.json +48226 -0
- package/contracts/tool-completion-contract.json +11322 -0
- package/dist/args.d.ts +27 -0
- package/dist/args.js +109 -0
- package/dist/args.js.map +1 -0
- package/dist/bridge/admission.d.ts +28 -0
- package/dist/bridge/admission.js +29 -0
- package/dist/bridge/admission.js.map +1 -0
- package/dist/bridge/args.d.ts +16 -0
- package/dist/bridge/args.js +123 -0
- package/dist/bridge/args.js.map +1 -0
- package/dist/bridge/domains/animation.d.ts +2 -0
- package/dist/bridge/domains/animation.js +199 -0
- package/dist/bridge/domains/animation.js.map +1 -0
- package/dist/bridge/domains/asset.d.ts +2 -0
- package/dist/bridge/domains/asset.js +85 -0
- package/dist/bridge/domains/asset.js.map +1 -0
- package/dist/bridge/domains/build.d.ts +2 -0
- package/dist/bridge/domains/build.js +35 -0
- package/dist/bridge/domains/build.js.map +1 -0
- package/dist/bridge/domains/camera.d.ts +2 -0
- package/dist/bridge/domains/camera.js +54 -0
- package/dist/bridge/domains/camera.js.map +1 -0
- package/dist/bridge/domains/code.d.ts +2 -0
- package/dist/bridge/domains/code.js +17 -0
- package/dist/bridge/domains/code.js.map +1 -0
- package/dist/bridge/domains/console.d.ts +2 -0
- package/dist/bridge/domains/console.js +34 -0
- package/dist/bridge/domains/console.js.map +1 -0
- package/dist/bridge/domains/diagnose.d.ts +2 -0
- package/dist/bridge/domains/diagnose.js +11 -0
- package/dist/bridge/domains/diagnose.js.map +1 -0
- package/dist/bridge/domains/editor.d.ts +2 -0
- package/dist/bridge/domains/editor.js +66 -0
- package/dist/bridge/domains/editor.js.map +1 -0
- package/dist/bridge/domains/extension.d.ts +8 -0
- package/dist/bridge/domains/extension.js +20 -0
- package/dist/bridge/domains/extension.js.map +1 -0
- package/dist/bridge/domains/game-object.d.ts +2 -0
- package/dist/bridge/domains/game-object.js +179 -0
- package/dist/bridge/domains/game-object.js.map +1 -0
- package/dist/bridge/domains/graphics.d.ts +2 -0
- package/dist/bridge/domains/graphics.js +185 -0
- package/dist/bridge/domains/graphics.js.map +1 -0
- package/dist/bridge/domains/material.d.ts +2 -0
- package/dist/bridge/domains/material.js +70 -0
- package/dist/bridge/domains/material.js.map +1 -0
- package/dist/bridge/domains/navmesh.d.ts +2 -0
- package/dist/bridge/domains/navmesh.js +34 -0
- package/dist/bridge/domains/navmesh.js.map +1 -0
- package/dist/bridge/domains/object.d.ts +2 -0
- package/dist/bridge/domains/object.js +43 -0
- package/dist/bridge/domains/object.js.map +1 -0
- package/dist/bridge/domains/occlusion.d.ts +2 -0
- package/dist/bridge/domains/occlusion.js +12 -0
- package/dist/bridge/domains/occlusion.js.map +1 -0
- package/dist/bridge/domains/package.d.ts +2 -0
- package/dist/bridge/domains/package.js +2 -0
- package/dist/bridge/domains/package.js.map +1 -0
- package/dist/bridge/domains/physics.d.ts +2 -0
- package/dist/bridge/domains/physics.js +139 -0
- package/dist/bridge/domains/physics.js.map +1 -0
- package/dist/bridge/domains/prefab.d.ts +2 -0
- package/dist/bridge/domains/prefab.js +104 -0
- package/dist/bridge/domains/prefab.js.map +1 -0
- package/dist/bridge/domains/profiler.d.ts +2 -0
- package/dist/bridge/domains/profiler.js +105 -0
- package/dist/bridge/domains/profiler.js.map +1 -0
- package/dist/bridge/domains/project-tool.d.ts +2 -0
- package/dist/bridge/domains/project-tool.js +46 -0
- package/dist/bridge/domains/project-tool.js.map +1 -0
- package/dist/bridge/domains/reflection.d.ts +2 -0
- package/dist/bridge/domains/reflection.js +48 -0
- package/dist/bridge/domains/reflection.js.map +1 -0
- package/dist/bridge/domains/runtime-tool.d.ts +2 -0
- package/dist/bridge/domains/runtime-tool.js +48 -0
- package/dist/bridge/domains/runtime-tool.js.map +1 -0
- package/dist/bridge/domains/scene.d.ts +2 -0
- package/dist/bridge/domains/scene.js +100 -0
- package/dist/bridge/domains/scene.js.map +1 -0
- package/dist/bridge/domains/screenshot.d.ts +2 -0
- package/dist/bridge/domains/screenshot.js +85 -0
- package/dist/bridge/domains/screenshot.js.map +1 -0
- package/dist/bridge/domains/scriptable-object.d.ts +2 -0
- package/dist/bridge/domains/scriptable-object.js +53 -0
- package/dist/bridge/domains/scriptable-object.js.map +1 -0
- package/dist/bridge/domains/shader.d.ts +2 -0
- package/dist/bridge/domains/shader.js +66 -0
- package/dist/bridge/domains/shader.js.map +1 -0
- package/dist/bridge/domains/texture.d.ts +2 -0
- package/dist/bridge/domains/texture.js +78 -0
- package/dist/bridge/domains/texture.js.map +1 -0
- package/dist/bridge/domains/timeline.d.ts +2 -0
- package/dist/bridge/domains/timeline.js +75 -0
- package/dist/bridge/domains/timeline.js.map +1 -0
- package/dist/bridge/domains/ui.d.ts +2 -0
- package/dist/bridge/domains/ui.js +193 -0
- package/dist/bridge/domains/ui.js.map +1 -0
- package/dist/bridge/index.d.ts +9 -0
- package/dist/bridge/index.js +124 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/registry.d.ts +19 -0
- package/dist/bridge/registry.js +114 -0
- package/dist/bridge/registry.js.map +1 -0
- package/dist/bridge/session-supervisor.d.ts +138 -0
- package/dist/bridge/session-supervisor.js +873 -0
- package/dist/bridge/session-supervisor.js.map +1 -0
- package/dist/bridge/types.d.ts +61 -0
- package/dist/bridge/types.js +17 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/capabilities.d.ts +5 -0
- package/dist/capabilities.js +84 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli-commands/command.d.ts +7 -0
- package/dist/cli-commands/command.js +513 -0
- package/dist/cli-commands/command.js.map +1 -0
- package/dist/cli-commands/extension-auto-detect.d.ts +62 -0
- package/dist/cli-commands/extension-auto-detect.js +119 -0
- package/dist/cli-commands/extension-auto-detect.js.map +1 -0
- package/dist/cli-commands/extensions.d.ts +24 -0
- package/dist/cli-commands/extensions.js +428 -0
- package/dist/cli-commands/extensions.js.map +1 -0
- package/dist/cli-commands/package.d.ts +4 -0
- package/dist/cli-commands/package.js +151 -0
- package/dist/cli-commands/package.js.map +1 -0
- package/dist/cli-commands/skill-installer.d.ts +83 -0
- package/dist/cli-commands/skill-installer.js +703 -0
- package/dist/cli-commands/skill-installer.js.map +1 -0
- package/dist/cli-commands/types.d.ts +17 -0
- package/dist/cli-commands/types.js +2 -0
- package/dist/cli-commands/types.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +302 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/command-contract.d.ts +21 -0
- package/dist/contracts/command-contract.js +143 -0
- package/dist/contracts/command-contract.js.map +1 -0
- package/dist/contracts/csharp-command-extractor.d.ts +1 -0
- package/dist/contracts/csharp-command-extractor.js +89 -0
- package/dist/contracts/csharp-command-extractor.js.map +1 -0
- package/dist/contracts/validate-command-contract.d.ts +1 -0
- package/dist/contracts/validate-command-contract.js +86 -0
- package/dist/contracts/validate-command-contract.js.map +1 -0
- package/dist/doctor.d.ts +22 -0
- package/dist/doctor.js +498 -0
- package/dist/doctor.js.map +1 -0
- package/dist/editor-blocker-observer.d.ts +45 -0
- package/dist/editor-blocker-observer.js +55 -0
- package/dist/editor-blocker-observer.js.map +1 -0
- package/dist/editor-dialogs.d.ts +53 -0
- package/dist/editor-dialogs.js +79 -0
- package/dist/editor-dialogs.js.map +1 -0
- package/dist/extension-availability.d.ts +30 -0
- package/dist/extension-availability.js +83 -0
- package/dist/extension-availability.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js +104 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js +35 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.d.ts +13 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js +342 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/urp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/urp.js +52 -0
- package/dist/extensions/.generated-bridge-domains/urp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/vfx.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js +312 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js.map +1 -0
- package/dist/extensions/.generated-registry-data.d.ts +7 -0
- package/dist/extensions/.generated-registry-data.js +895 -0
- package/dist/extensions/.generated-registry-data.js.map +1 -0
- package/dist/extensions/contribution-loader.d.ts +27 -0
- package/dist/extensions/contribution-loader.js +60 -0
- package/dist/extensions/contribution-loader.js.map +1 -0
- package/dist/extensions/descriptor-loader.d.ts +73 -0
- package/dist/extensions/descriptor-loader.js +126 -0
- package/dist/extensions/descriptor-loader.js.map +1 -0
- package/dist/extensions/index.d.ts +19 -0
- package/dist/extensions/index.js +23 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/installer.d.ts +80 -0
- package/dist/extensions/installer.js +594 -0
- package/dist/extensions/installer.js.map +1 -0
- package/dist/extensions/metadata/index.d.ts +15 -0
- package/dist/extensions/metadata/index.js +41 -0
- package/dist/extensions/metadata/index.js.map +1 -0
- package/dist/extensions/metadata/types.d.ts +38 -0
- package/dist/extensions/metadata/types.js +11 -0
- package/dist/extensions/metadata/types.js.map +1 -0
- package/dist/extensions/project-resolver.d.ts +35 -0
- package/dist/extensions/project-resolver.js +61 -0
- package/dist/extensions/project-resolver.js.map +1 -0
- package/dist/extensions/registry.d.ts +86 -0
- package/dist/extensions/registry.js +262 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/tool-manifest.d.ts +29 -0
- package/dist/extensions/tool-manifest.js +53 -0
- package/dist/extensions/tool-manifest.js.map +1 -0
- package/dist/extensions/types.d.ts +115 -0
- package/dist/extensions/types.js +12 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/instances.d.ts +163 -0
- package/dist/instances.js +1137 -0
- package/dist/instances.js.map +1 -0
- package/dist/output.d.ts +119 -0
- package/dist/output.js +204 -0
- package/dist/output.js.map +1 -0
- package/dist/package-manager.d.ts +280 -0
- package/dist/package-manager.js +1832 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/platform.d.ts +3 -0
- package/dist/platform.js +19 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-identity.d.ts +48 -0
- package/dist/project-identity.js +254 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/project-tool-discovery.d.ts +23 -0
- package/dist/project-tool-discovery.js +292 -0
- package/dist/project-tool-discovery.js.map +1 -0
- package/dist/protocol/envelope.d.ts +64 -0
- package/dist/protocol/envelope.js +8 -0
- package/dist/protocol/envelope.js.map +1 -0
- package/dist/protocol/index.d.ts +7 -0
- package/dist/protocol/index.js +2 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/runtime-code.d.ts +20 -0
- package/dist/runtime-code.js +232 -0
- package/dist/runtime-code.js.map +1 -0
- package/dist/schema/any-json.d.ts +4 -0
- package/dist/schema/any-json.js +2 -0
- package/dist/schema/any-json.js.map +1 -0
- package/dist/schema/validator.d.ts +7 -0
- package/dist/schema/validator.js +135 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/services/docs-reflect-cache.d.ts +106 -0
- package/dist/services/docs-reflect-cache.js +301 -0
- package/dist/services/docs-reflect-cache.js.map +1 -0
- package/dist/services/docs-service.d.ts +16 -0
- package/dist/services/docs-service.js +208 -0
- package/dist/services/docs-service.js.map +1 -0
- package/dist/services/reflect-service.d.ts +12 -0
- package/dist/services/reflect-service.js +122 -0
- package/dist/services/reflect-service.js.map +1 -0
- package/dist/static-capability-catalog.d.ts +13 -0
- package/dist/static-capability-catalog.js +41 -0
- package/dist/static-capability-catalog.js.map +1 -0
- package/dist/test-results.d.ts +13 -0
- package/dist/test-results.js +44 -0
- package/dist/test-results.js.map +1 -0
- package/dist/tools/.generated-completion-registry.d.ts +17 -0
- package/dist/tools/.generated-completion-registry.js +5862 -0
- package/dist/tools/.generated-completion-registry.js.map +1 -0
- package/dist/tools/.generated-registry.d.ts +53 -0
- package/dist/tools/.generated-registry.js +55 -0
- package/dist/tools/.generated-registry.js.map +1 -0
- package/dist/tools/.generated-schemas.d.ts +1 -0
- package/dist/tools/.generated-schemas.js +56 -0
- package/dist/tools/.generated-schemas.js.map +1 -0
- package/dist/tools/asset/refresh.d.ts +26 -0
- package/dist/tools/asset/refresh.js +97 -0
- package/dist/tools/asset/refresh.js.map +1 -0
- package/dist/tools/build/run.d.ts +45 -0
- package/dist/tools/build/run.js +115 -0
- package/dist/tools/build/run.js.map +1 -0
- package/dist/tools/catalog.d.ts +33 -0
- package/dist/tools/catalog.js +202 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/code/exec.d.ts +53 -0
- package/dist/tools/code/exec.js +59 -0
- package/dist/tools/code/exec.js.map +1 -0
- package/dist/tools/commands.d.ts +5 -0
- package/dist/tools/commands.js +45 -0
- package/dist/tools/commands.js.map +1 -0
- package/dist/tools/completion-probe.d.ts +22 -0
- package/dist/tools/completion-probe.js +2 -0
- package/dist/tools/completion-probe.js.map +1 -0
- package/dist/tools/define.d.ts +77 -0
- package/dist/tools/define.js +58 -0
- package/dist/tools/define.js.map +1 -0
- package/dist/tools/diagnose/capabilities.d.ts +13 -0
- package/dist/tools/diagnose/capabilities.js +34 -0
- package/dist/tools/diagnose/capabilities.js.map +1 -0
- package/dist/tools/dispatcher.d.ts +27 -0
- package/dist/tools/dispatcher.js +971 -0
- package/dist/tools/dispatcher.js.map +1 -0
- package/dist/tools/docs/get.d.ts +22 -0
- package/dist/tools/docs/get.js +22 -0
- package/dist/tools/docs/get.js.map +1 -0
- package/dist/tools/docs/search.d.ts +31 -0
- package/dist/tools/docs/search.js +22 -0
- package/dist/tools/docs/search.js.map +1 -0
- package/dist/tools/editor/compile.d.ts +66 -0
- package/dist/tools/editor/compile.js +225 -0
- package/dist/tools/editor/compile.js.map +1 -0
- package/dist/tools/editor/dialog/click.d.ts +12 -0
- package/dist/tools/editor/dialog/click.js +71 -0
- package/dist/tools/editor/dialog/click.js.map +1 -0
- package/dist/tools/editor/dialogs.d.ts +12 -0
- package/dist/tools/editor/dialogs.js +58 -0
- package/dist/tools/editor/dialogs.js.map +1 -0
- package/dist/tools/editor/readiness.d.ts +13 -0
- package/dist/tools/editor/readiness.js +24 -0
- package/dist/tools/editor/readiness.js.map +1 -0
- package/dist/tools/editor/refresh.d.ts +25 -0
- package/dist/tools/editor/refresh.js +154 -0
- package/dist/tools/editor/refresh.js.map +1 -0
- package/dist/tools/editor/state.d.ts +63 -0
- package/dist/tools/editor/state.js +286 -0
- package/dist/tools/editor/state.js.map +1 -0
- package/dist/tools/errors.d.ts +30 -0
- package/dist/tools/errors.js +46 -0
- package/dist/tools/errors.js.map +1 -0
- package/dist/tools/metadata/derived.d.ts +34 -0
- package/dist/tools/metadata/derived.js +136 -0
- package/dist/tools/metadata/derived.js.map +1 -0
- package/dist/tools/metadata/index.d.ts +34 -0
- package/dist/tools/metadata/index.js +130 -0
- package/dist/tools/metadata/index.js.map +1 -0
- package/dist/tools/metadata/schemas.d.ts +3 -0
- package/dist/tools/metadata/schemas.js +19 -0
- package/dist/tools/metadata/schemas.js.map +1 -0
- package/dist/tools/metadata/status.d.ts +4 -0
- package/dist/tools/metadata/status.js +61 -0
- package/dist/tools/metadata/status.js.map +1 -0
- package/dist/tools/metadata/types.d.ts +79 -0
- package/dist/tools/metadata/types.js +2 -0
- package/dist/tools/metadata/types.js.map +1 -0
- package/dist/tools/navmesh/bake-cancel.d.ts +7 -0
- package/dist/tools/navmesh/bake-cancel.js +21 -0
- package/dist/tools/navmesh/bake-cancel.js.map +1 -0
- package/dist/tools/navmesh/bake-status.d.ts +5 -0
- package/dist/tools/navmesh/bake-status.js +18 -0
- package/dist/tools/navmesh/bake-status.js.map +1 -0
- package/dist/tools/navmesh/bake.d.ts +5 -0
- package/dist/tools/navmesh/bake.js +23 -0
- package/dist/tools/navmesh/bake.js.map +1 -0
- package/dist/tools/navmesh/live.d.ts +86 -0
- package/dist/tools/navmesh/live.js +206 -0
- package/dist/tools/navmesh/live.js.map +1 -0
- package/dist/tools/navmesh/surface-bake.d.ts +5 -0
- package/dist/tools/navmesh/surface-bake.js +24 -0
- package/dist/tools/navmesh/surface-bake.js.map +1 -0
- package/dist/tools/occlusion/bake-cancel.d.ts +7 -0
- package/dist/tools/occlusion/bake-cancel.js +21 -0
- package/dist/tools/occlusion/bake-cancel.js.map +1 -0
- package/dist/tools/occlusion/bake-status.d.ts +5 -0
- package/dist/tools/occlusion/bake-status.js +18 -0
- package/dist/tools/occlusion/bake-status.js.map +1 -0
- package/dist/tools/occlusion/bake.d.ts +11 -0
- package/dist/tools/occlusion/bake.js +23 -0
- package/dist/tools/occlusion/bake.js.map +1 -0
- package/dist/tools/occlusion/live.d.ts +74 -0
- package/dist/tools/occlusion/live.js +201 -0
- package/dist/tools/occlusion/live.js.map +1 -0
- package/dist/tools/package/bridge-remove.d.ts +26 -0
- package/dist/tools/package/bridge-remove.js +32 -0
- package/dist/tools/package/bridge-remove.js.map +1 -0
- package/dist/tools/package/deploy.d.ts +49 -0
- package/dist/tools/package/deploy.js +134 -0
- package/dist/tools/package/deploy.js.map +1 -0
- package/dist/tools/package/embed.d.ts +14 -0
- package/dist/tools/package/embed.js +93 -0
- package/dist/tools/package/embed.js.map +1 -0
- package/dist/tools/package/file-mutation-worker.d.ts +6 -0
- package/dist/tools/package/file-mutation-worker.js +154 -0
- package/dist/tools/package/file-mutation-worker.js.map +1 -0
- package/dist/tools/package/info.d.ts +19 -0
- package/dist/tools/package/info.js +27 -0
- package/dist/tools/package/info.js.map +1 -0
- package/dist/tools/package/install.d.ts +24 -0
- package/dist/tools/package/install.js +65 -0
- package/dist/tools/package/install.js.map +1 -0
- package/dist/tools/package/list.d.ts +27 -0
- package/dist/tools/package/list.js +21 -0
- package/dist/tools/package/list.js.map +1 -0
- package/dist/tools/package/live-resolve.d.ts +46 -0
- package/dist/tools/package/live-resolve.js +497 -0
- package/dist/tools/package/live-resolve.js.map +1 -0
- package/dist/tools/package/public-result.d.ts +4 -0
- package/dist/tools/package/public-result.js +25 -0
- package/dist/tools/package/public-result.js.map +1 -0
- package/dist/tools/package/registry-clear.d.ts +15 -0
- package/dist/tools/package/registry-clear.js +27 -0
- package/dist/tools/package/registry-clear.js.map +1 -0
- package/dist/tools/package/registry-get.d.ts +10 -0
- package/dist/tools/package/registry-get.js +22 -0
- package/dist/tools/package/registry-get.js.map +1 -0
- package/dist/tools/package/registry-set.d.ts +17 -0
- package/dist/tools/package/registry-set.js +28 -0
- package/dist/tools/package/registry-set.js.map +1 -0
- package/dist/tools/package/remove.d.ts +47 -0
- package/dist/tools/package/remove.js +67 -0
- package/dist/tools/package/remove.js.map +1 -0
- package/dist/tools/package/resolve.d.ts +6 -0
- package/dist/tools/package/resolve.js +14 -0
- package/dist/tools/package/resolve.js.map +1 -0
- package/dist/tools/package/restore.d.ts +42 -0
- package/dist/tools/package/restore.js +122 -0
- package/dist/tools/package/restore.js.map +1 -0
- package/dist/tools/package/scoped-registry-add.d.ts +25 -0
- package/dist/tools/package/scoped-registry-add.js +30 -0
- package/dist/tools/package/scoped-registry-add.js.map +1 -0
- package/dist/tools/package/scoped-registry-list.d.ts +14 -0
- package/dist/tools/package/scoped-registry-list.js +22 -0
- package/dist/tools/package/scoped-registry-list.js.map +1 -0
- package/dist/tools/package/scoped-registry-remove.d.ts +29 -0
- package/dist/tools/package/scoped-registry-remove.js +31 -0
- package/dist/tools/package/scoped-registry-remove.js.map +1 -0
- package/dist/tools/package/search.d.ts +17 -0
- package/dist/tools/package/search.js +39 -0
- package/dist/tools/package/search.js.map +1 -0
- package/dist/tools/package/status.d.ts +21 -0
- package/dist/tools/package/status.js +37 -0
- package/dist/tools/package/status.js.map +1 -0
- package/dist/tools/reflect/member.d.ts +22 -0
- package/dist/tools/reflect/member.js +22 -0
- package/dist/tools/reflect/member.js.map +1 -0
- package/dist/tools/reflect/search.d.ts +30 -0
- package/dist/tools/reflect/search.js +22 -0
- package/dist/tools/reflect/search.js.map +1 -0
- package/dist/tools/reflect/type.d.ts +21 -0
- package/dist/tools/reflect/type.js +22 -0
- package/dist/tools/reflect/type.js.map +1 -0
- package/dist/tools/runtime/console.d.ts +24 -0
- package/dist/tools/runtime/console.js +17 -0
- package/dist/tools/runtime/console.js.map +1 -0
- package/dist/tools/runtime/input/key.d.ts +23 -0
- package/dist/tools/runtime/input/key.js +18 -0
- package/dist/tools/runtime/input/key.js.map +1 -0
- package/dist/tools/runtime/input/pointer.d.ts +34 -0
- package/dist/tools/runtime/input/pointer.js +18 -0
- package/dist/tools/runtime/input/pointer.js.map +1 -0
- package/dist/tools/runtime/log.d.ts +20 -0
- package/dist/tools/runtime/log.js +17 -0
- package/dist/tools/runtime/log.js.map +1 -0
- package/dist/tools/runtime/state.d.ts +45 -0
- package/dist/tools/runtime/state.js +17 -0
- package/dist/tools/runtime/state.js.map +1 -0
- package/dist/tools/runtime/target-framerate/set.d.ts +16 -0
- package/dist/tools/runtime/target-framerate/set.js +17 -0
- package/dist/tools/runtime/target-framerate/set.js.map +1 -0
- package/dist/tools/runtime/time-scale/set.d.ts +16 -0
- package/dist/tools/runtime/time-scale/set.js +17 -0
- package/dist/tools/runtime/time-scale/set.js.map +1 -0
- package/dist/tools/runtime/ui/capture-element.d.ts +31 -0
- package/dist/tools/runtime/ui/capture-element.js +17 -0
- package/dist/tools/runtime/ui/capture-element.js.map +1 -0
- package/dist/tools/test/cancel.d.ts +19 -0
- package/dist/tools/test/cancel.js +94 -0
- package/dist/tools/test/cancel.js.map +1 -0
- package/dist/tools/test/run.d.ts +39 -0
- package/dist/tools/test/run.js +101 -0
- package/dist/tools/test/run.js.map +1 -0
- package/dist/tools/tools/describe.d.ts +27 -0
- package/dist/tools/tools/describe.js +35 -0
- package/dist/tools/tools/describe.js.map +1 -0
- package/dist/tools/tools/group-list.d.ts +20 -0
- package/dist/tools/tools/group-list.js +39 -0
- package/dist/tools/tools/group-list.js.map +1 -0
- package/dist/tools/tools/group-summaries.d.ts +3 -0
- package/dist/tools/tools/group-summaries.js +52 -0
- package/dist/tools/tools/group-summaries.js.map +1 -0
- package/dist/tools/tools/group.d.ts +13 -0
- package/dist/tools/tools/group.js +34 -0
- package/dist/tools/tools/group.js.map +1 -0
- package/dist/tools/tools/search.d.ts +17 -0
- package/dist/tools/tools/search.js +42 -0
- package/dist/tools/tools/search.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/unity-project-processes.d.ts +12 -0
- package/dist/unity-project-processes.js +59 -0
- package/dist/unity-project-processes.js.map +1 -0
- package/dist/util.d.ts +11 -0
- package/dist/util.js +22 -0
- package/dist/util.js.map +1 -0
- package/dist/windows-editor-state.d.ts +31 -0
- package/dist/windows-editor-state.js +98 -0
- package/dist/windows-editor-state.js.map +1 -0
- package/docs/README.md +43 -0
- package/docs/availability-differences.md +97 -0
- package/docs/command-execution.md +89 -0
- package/docs/error-codes.md +204 -0
- package/docs/extensions.md +132 -0
- package/docs/risk-and-side-effects.md +93 -0
- package/docs/safety-boundaries.md +103 -0
- package/docs/target-and-instance.md +83 -0
- package/docs/tool-discovery.md +104 -0
- package/docs/tool-execution.md +178 -0
- package/extensions/cinemachine/bridge/domains/cinemachine.ts +115 -0
- package/extensions/cinemachine/docs/cinemachine.md +50 -0
- package/extensions/cinemachine/extension.json +129 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineExtensionToolSupport.cs +15 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineToolSupport.cs +854 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/aim.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/blend.cs +140 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/body.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-ensure.cs +16 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-status.cs +12 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/create.cs +147 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-add.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-list.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-remove.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/lens.cs +142 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/noise.cs +126 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/ping.cs +43 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/priority.cs +113 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/target.cs +84 -0
- package/extensions/cinemachine/unitypkg/UnityCli.Extensions.Cinemachine.Editor.asmdef +18 -0
- package/extensions/hdrp/bridge/domains/hdrp.ts +41 -0
- package/extensions/hdrp/docs/hdrp.md +15 -0
- package/extensions/hdrp/extension.json +31 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/HdrpToolSupport.cs +607 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-get.cs +29 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-set.cs +47 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-add-effect.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-create.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-info.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-list.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-set.cs +28 -0
- package/extensions/hdrp/unitypkg/UnityCli.Extensions.Hdrp.Editor.asmdef +19 -0
- package/extensions/probuilder/bridge/domains/probuilder.ts +386 -0
- package/extensions/probuilder/docs/probuilder.md +125 -0
- package/extensions/probuilder/extension.json +291 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAppendCompletionProof.cs +254 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAtomicReadback.cs +293 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderBevelCompletionProof.cs +299 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderCanonicalMeshSnapshot.cs +951 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderConnectCompletionProof.cs +407 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderEdgeCompletionProof.cs +318 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderErrors.cs +83 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceCompletionProof.cs +152 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceExtrudeCompletionProof.cs +283 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFlipCompletionProof.cs +170 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInput.cs +85 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInsertCompletionProof.cs +674 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderOperationProof.cs +137 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderReflection.cs +1064 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderRefreshUvProof.cs +53 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderSceneTool.cs +184 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderShapeTopologyRecords.g.cs +82 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderVertexObjectCompletionProof.cs +346 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/append-vertices-to-edge.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/auto-smooth.cs +104 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bevel-edges.cs +119 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bridge-edges.cs +113 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/center-pivot.cs +43 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/combine-meshes.cs +58 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/connect-elements.cs +128 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/convert-to-probuilder.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-poly-shape.cs +55 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-polygon.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-shape.cs +168 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/delete-faces.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/detach-faces.cs +46 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/duplicate-and-flip.cs +100 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-edges.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-faces.cs +110 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/flip-normals.cs +102 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/freeze-transform.cs +45 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/insert-vertex.cs +132 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-faces.cs +44 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-objects.cs +130 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-vertices.cs +109 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/mesh-info.cs +117 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/move-vertices.cs +33 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ping.cs +51 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/repair-mesh.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/select-faces.cs +161 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-color.cs +24 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-material.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-uvs.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-pivot.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-smoothing.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/split-vertices.cs +64 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/subdivide.cs +111 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/validate-mesh.cs +75 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/weld-vertices.cs +112 -0
- package/extensions/probuilder/unitypkg/UnityCli.Extensions.ProBuilder.Editor.asmdef +25 -0
- package/extensions/urp/bridge/domains/urp.ts +62 -0
- package/extensions/urp/docs/urp.md +20 -0
- package/extensions/urp/extension.json +41 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpFeatureToolSupport.cs +336 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpToolSupport.cs +801 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-add.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-configure.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-list.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-remove.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-toggle.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-get.cs +27 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-set.cs +47 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-add-effect.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-create.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-info.cs +31 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-list.cs +39 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-set.cs +33 -0
- package/extensions/urp/unitypkg/UnityCli.Extensions.Urp.Editor.asmdef +19 -0
- package/extensions/vfx-graph/bridge/domains/vfx.ts +337 -0
- package/extensions/vfx-graph/docs/vfx.md +28 -0
- package/extensions/vfx-graph/extension.json +72 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxActionToolSupport.cs +248 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxToolSupport.cs +1325 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-pause.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-play.cs +40 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-reinitialize.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-rate.cs +36 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-seed.cs +42 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-stop.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-add.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-assign.cs +44 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-info.cs +30 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-create.cs +62 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-info.cs +32 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-create.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-positions.cs +100 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/parameter.cs +216 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-clear.cs +39 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-create.cs +80 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-emission.cs +126 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-info.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-main.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-pause.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-play.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-shape.cs +148 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-stop.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-create.cs +58 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-list.cs +31 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-create.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-set.cs +44 -0
- package/extensions/vfx-graph/unitypkg/UnityCli.Extensions.VfxGraph.Editor.asmdef +18 -0
- package/package.json +46 -0
- package/schemas/error-code.schema.json +70 -0
- package/schemas/extension-descriptor.schema.json +88 -0
- package/schemas/extension-manifest.schema.json +125 -0
- package/schemas/request-envelope.schema.json +34 -0
- package/schemas/response-envelope.schema.json +42 -0
- package/schemas/tool-metadata.schema.json +111 -0
- package/skills/unitycli/SKILL.md +61 -0
- package/skills/unitycli/agents/interface.yaml +30 -0
- package/skills/unitycli/evals/history/2026-08-05-governed-baseline.json +44 -0
- package/skills/unitycli/evals/output/cases.jsonl +5 -0
- package/skills/unitycli/evals/output/fixtures/feedback-scenario.json +27 -0
- package/skills/unitycli/evals/output/schema.json +32 -0
- package/skills/unitycli/evals/semantic_config.json +46 -0
- package/skills/unitycli/evals/trigger_cases.json +39 -0
- package/skills/unitycli/examples/feedback-event.input.json +8 -0
- package/skills/unitycli/examples/feedback-record.output.json +12 -0
- package/skills/unitycli/manifest.json +112 -0
- package/skills/unitycli/references/custom-tools.md +111 -0
- package/skills/unitycli/references/feedback.md +59 -0
- package/skills/unitycli/references/operation-protocol.md +83 -0
- package/skills/unitycli/reports/output_quality_scorecard.md +56 -0
- package/skills/unitycli/reports/trust-report.md +57 -0
- package/skills/unitycli/scripts/record-feedback.ps1 +210 -0
- package/skills/unitycli/security/network_policy.json +18 -0
- package/skills/unitycli/security/permission_policy.json +40 -0
- package/unitypkg/Editor/Bridge/BridgeCommandContext.cs +64 -0
- package/unitypkg/Editor/Bridge/BridgeCommandException.cs +39 -0
- package/unitypkg/Editor/Bridge/BridgeCommandRegistry.cs +172 -0
- package/unitypkg/Editor/Bridge/BridgeHttpServer.cs +534 -0
- package/unitypkg/Editor/Bridge/BridgeResponse.cs +58 -0
- package/unitypkg/Editor/Bridge/BridgeWorkQueue.cs +325 -0
- package/unitypkg/Editor/BridgeStartupStateMachine.cs +81 -0
- package/unitypkg/Editor/Commands/ProjectToolCommands.cs +43 -0
- package/unitypkg/Editor/Commands/RuntimeToolCommands.cs +43 -0
- package/unitypkg/Editor/Generated/UnityCliToolCompletionRegistry.g.cs +428 -0
- package/unitypkg/Editor/Infrastructure/CodeExecSupport.cs +664 -0
- package/unitypkg/Editor/Infrastructure/RegistryOwnershipResolver.cs +148 -0
- package/unitypkg/Editor/Infrastructure/UnityCliActiveOperation.cs +411 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAdmission.cs +485 -0
- package/unitypkg/Editor/Infrastructure/UnityCliArtifacts.cs +110 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAssetRefreshCoordinator.cs +106 -0
- package/unitypkg/Editor/Infrastructure/UnityCliBridgeHelpers.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCanonicalProjectPath.cs +325 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompilationEventBroker.cs +192 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompileCoordinator.cs +271 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompletionProbe.cs +515 -0
- package/unitypkg/Editor/Infrastructure/UnityCliEditorStateSnapshot.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliInstanceRegistry.cs +558 -0
- package/unitypkg/Editor/Infrastructure/UnityCliJson.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLargeOutput.cs +128 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveBuildCoordinator.cs +230 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveRefreshCoordinator.cs +164 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLog.cs +127 -0
- package/unitypkg/Editor/Infrastructure/UnityCliNavMeshBakeCoordinator.cs +2073 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectPatch.cs +193 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectRef.cs +278 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectSerializer.cs +620 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOcclusionBakeCoordinator.cs +1739 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOperationCoordinator.cs +828 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageEmbedCoordinator.cs +147 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveCoordinator.cs +454 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveState.cs +561 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPipelineHandoff.cs +742 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProjectSettings.cs +92 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProtocolRequest.cs +116 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReflection.cs +477 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReloadOperation.cs +664 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRequestDigest.cs +34 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeBuildInjection.cs +121 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeExecutor.cs +391 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSceneMutation.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliScriptableObjectHelpers.cs +235 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSerializer.cs +580 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSessionMutationLease.cs +568 -0
- package/unitypkg/Editor/Infrastructure/UnityCliStateIO.cs +73 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTestRunCoordinator.cs +598 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTransactionLog.cs +112 -0
- package/unitypkg/Editor/Infrastructure/UnityCliValueConverter.cs +146 -0
- package/unitypkg/Editor/Infrastructure/UnityCliWaiter.cs +716 -0
- package/unitypkg/Editor/ProjectTools/IUnityCliTool.cs +152 -0
- package/unitypkg/Editor/ProjectTools/OfficialAttributeToolRegistry.cs +992 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolRegistry.cs +938 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolSchemaValidator.cs +258 -0
- package/unitypkg/Editor/ProjectTools/RegisteredTool.cs +75 -0
- package/unitypkg/Editor/ProjectTools/UnityCliProjectToolContext.cs +68 -0
- package/unitypkg/Editor/ProjectTools/UnityCliSchemaDeriver.cs +297 -0
- package/unitypkg/Editor/Protocol/ProtocolEnvelopeFactory.cs +92 -0
- package/unitypkg/Editor/Protocol/envelope.cs +50 -0
- package/unitypkg/Editor/Roslyn/LICENSE.txt +23 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Collections.Immutable.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Reflection.Metadata.dll +0 -0
- package/unitypkg/Editor/Tools/animation/AnimationToolSupport.cs +335 -0
- package/unitypkg/Editor/Tools/animation/AnimatorRuntimeToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/crossfade.cs +117 -0
- package/unitypkg/Editor/Tools/animation/animator/get-info.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/get-parameter.cs +36 -0
- package/unitypkg/Editor/Tools/animation/animator/set-enabled.cs +33 -0
- package/unitypkg/Editor/Tools/animation/animator/set-parameter.cs +71 -0
- package/unitypkg/Editor/Tools/animation/animator/set-speed.cs +33 -0
- package/unitypkg/Editor/Tools/animation/clip/create.cs +48 -0
- package/unitypkg/Editor/Tools/animation/clip/modify.cs +43 -0
- package/unitypkg/Editor/Tools/animation/clip.cs +23 -0
- package/unitypkg/Editor/Tools/animation/play.cs +41 -0
- package/unitypkg/Editor/Tools/animation/state.cs +25 -0
- package/unitypkg/Editor/Tools/animation/stop.cs +45 -0
- package/unitypkg/Editor/Tools/asset/AssetImportSettingsToolSupport.cs +633 -0
- package/unitypkg/Editor/Tools/asset/AssetToolSupport.cs +253 -0
- package/unitypkg/Editor/Tools/asset/create.cs +84 -0
- package/unitypkg/Editor/Tools/asset/delete.cs +88 -0
- package/unitypkg/Editor/Tools/asset/duplicate.cs +68 -0
- package/unitypkg/Editor/Tools/asset/get-components.cs +177 -0
- package/unitypkg/Editor/Tools/asset/get-data.cs +73 -0
- package/unitypkg/Editor/Tools/asset/import-settings/set.cs +127 -0
- package/unitypkg/Editor/Tools/asset/import-settings.cs +54 -0
- package/unitypkg/Editor/Tools/asset/import.cs +132 -0
- package/unitypkg/Editor/Tools/asset/info.cs +48 -0
- package/unitypkg/Editor/Tools/asset/modify.cs +69 -0
- package/unitypkg/Editor/Tools/asset/move.cs +70 -0
- package/unitypkg/Editor/Tools/asset/preview.cs +86 -0
- package/unitypkg/Editor/Tools/asset/rename.cs +84 -0
- package/unitypkg/Editor/Tools/asset/search-built-in.cs +90 -0
- package/unitypkg/Editor/Tools/asset/search.cs +83 -0
- package/unitypkg/Editor/Tools/build/BuildSceneStateTool.cs +37 -0
- package/unitypkg/Editor/Tools/build/BuildSettingsToolSupport.cs +4 -0
- package/unitypkg/Editor/Tools/build/BuildToolDtos.cs +15 -0
- package/unitypkg/Editor/Tools/build/BuildToolSupport.cs +111 -0
- package/unitypkg/Editor/Tools/build/platform/get.cs +12 -0
- package/unitypkg/Editor/Tools/build/platform/set.cs +45 -0
- package/unitypkg/Editor/Tools/build/profile/create.cs +44 -0
- package/unitypkg/Editor/Tools/build/profile/list.cs +12 -0
- package/unitypkg/Editor/Tools/build/profile/modify.cs +42 -0
- package/unitypkg/Editor/Tools/build/profile/switch.cs +30 -0
- package/unitypkg/Editor/Tools/build/scene/add.cs +45 -0
- package/unitypkg/Editor/Tools/build/scene/disable.cs +3 -0
- package/unitypkg/Editor/Tools/build/scene/enable.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/list.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/remove.cs +29 -0
- package/unitypkg/Editor/Tools/build/settings/get.cs +3 -0
- package/unitypkg/Editor/Tools/build/settings/set.cs +74 -0
- package/unitypkg/Editor/Tools/camera/CameraToolSupport.cs +292 -0
- package/unitypkg/Editor/Tools/camera/create.cs +114 -0
- package/unitypkg/Editor/Tools/camera/info.cs +49 -0
- package/unitypkg/Editor/Tools/camera/lens.cs +119 -0
- package/unitypkg/Editor/Tools/camera/list.cs +52 -0
- package/unitypkg/Editor/Tools/camera/multiview.cs +96 -0
- package/unitypkg/Editor/Tools/camera/screenshot.cs +65 -0
- package/unitypkg/Editor/Tools/camera/target.cs +94 -0
- package/unitypkg/Editor/Tools/component/add.cs +125 -0
- package/unitypkg/Editor/Tools/component/get.cs +73 -0
- package/unitypkg/Editor/Tools/component/list-types.cs +90 -0
- package/unitypkg/Editor/Tools/component/modify.cs +103 -0
- package/unitypkg/Editor/Tools/component/remove.cs +147 -0
- package/unitypkg/Editor/Tools/component/set.cs +93 -0
- package/unitypkg/Editor/Tools/console/clear.cs +38 -0
- package/unitypkg/Editor/Tools/console/get.cs +28 -0
- package/unitypkg/Editor/Tools/controller/add-blend-tree-child.cs +88 -0
- package/unitypkg/Editor/Tools/controller/add-layer.cs +43 -0
- package/unitypkg/Editor/Tools/controller/add-parameter.cs +51 -0
- package/unitypkg/Editor/Tools/controller/add-state.cs +44 -0
- package/unitypkg/Editor/Tools/controller/add-transition.cs +71 -0
- package/unitypkg/Editor/Tools/controller/assign.cs +38 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-1d.cs +40 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-2d.cs +42 -0
- package/unitypkg/Editor/Tools/controller/create.cs +31 -0
- package/unitypkg/Editor/Tools/controller/get-info.cs +27 -0
- package/unitypkg/Editor/Tools/controller/remove-layer.cs +57 -0
- package/unitypkg/Editor/Tools/controller/set-layer-weight.cs +42 -0
- package/unitypkg/Editor/Tools/diagnose/preflight.cs +269 -0
- package/unitypkg/Editor/Tools/editor/EditorActionToolSupport.cs +117 -0
- package/unitypkg/Editor/Tools/editor/EditorSearchToolSupport.cs +146 -0
- package/unitypkg/Editor/Tools/editor/EditorToolSupport.cs +132 -0
- package/unitypkg/Editor/Tools/editor/EditorWindowFocusToolSupport.cs +194 -0
- package/unitypkg/Editor/Tools/editor/active-tool/set.cs +33 -0
- package/unitypkg/Editor/Tools/editor/active-tool.cs +100 -0
- package/unitypkg/Editor/Tools/editor/autotick/set.cs +102 -0
- package/unitypkg/Editor/Tools/editor/console.cs +26 -0
- package/unitypkg/Editor/Tools/editor/focus.cs +80 -0
- package/unitypkg/Editor/Tools/editor/menu-items.cs +50 -0
- package/unitypkg/Editor/Tools/editor/menu.cs +53 -0
- package/unitypkg/Editor/Tools/editor/pause.cs +38 -0
- package/unitypkg/Editor/Tools/editor/play.cs +43 -0
- package/unitypkg/Editor/Tools/editor/redo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/resolution.cs +34 -0
- package/unitypkg/Editor/Tools/editor/search.cs +55 -0
- package/unitypkg/Editor/Tools/editor/selection/set.cs +37 -0
- package/unitypkg/Editor/Tools/editor/selection.cs +153 -0
- package/unitypkg/Editor/Tools/editor/stop.cs +43 -0
- package/unitypkg/Editor/Tools/editor/tool-states.cs +140 -0
- package/unitypkg/Editor/Tools/editor/undo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/windows.cs +87 -0
- package/unitypkg/Editor/Tools/extension/status.cs +87 -0
- package/unitypkg/Editor/Tools/go/GameObjectToolSupport.cs +524 -0
- package/unitypkg/Editor/Tools/go/create.cs +333 -0
- package/unitypkg/Editor/Tools/go/delete.cs +87 -0
- package/unitypkg/Editor/Tools/go/duplicate.cs +76 -0
- package/unitypkg/Editor/Tools/go/find.cs +152 -0
- package/unitypkg/Editor/Tools/go/inspect.cs +49 -0
- package/unitypkg/Editor/Tools/go/look-at.cs +76 -0
- package/unitypkg/Editor/Tools/go/modify.cs +156 -0
- package/unitypkg/Editor/Tools/go/move-relative.cs +74 -0
- package/unitypkg/Editor/Tools/go/set-parent.cs +84 -0
- package/unitypkg/Editor/Tools/graphics/GraphicsToolSupport.cs +396 -0
- package/unitypkg/Editor/Tools/graphics/bake-cancel.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-clear.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/bake-reflection-probe.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/bake-settings.cs +131 -0
- package/unitypkg/Editor/Tools/graphics/bake-start.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-status.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/light-probe-group.cs +56 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-info.cs +19 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-quality.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-settings.cs +46 -0
- package/unitypkg/Editor/Tools/graphics/probe-positions.cs +58 -0
- package/unitypkg/Editor/Tools/graphics/quality.cs +85 -0
- package/unitypkg/Editor/Tools/graphics/reflection-probe.cs +73 -0
- package/unitypkg/Editor/Tools/graphics/scene-debug.cs +37 -0
- package/unitypkg/Editor/Tools/graphics/settings.cs +104 -0
- package/unitypkg/Editor/Tools/graphics/skybox-get.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-ambient.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-fog.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-material.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-properties.cs +51 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-reflection.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-sun.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/stats-counters.cs +28 -0
- package/unitypkg/Editor/Tools/graphics/stats-memory.cs +21 -0
- package/unitypkg/Editor/Tools/graphics/stats.cs +17 -0
- package/unitypkg/Editor/Tools/graphics/volume.cs +59 -0
- package/unitypkg/Editor/Tools/instances/list.cs +71 -0
- package/unitypkg/Editor/Tools/material/MaterialToolSupport.cs +401 -0
- package/unitypkg/Editor/Tools/material/assign.cs +124 -0
- package/unitypkg/Editor/Tools/material/create.cs +82 -0
- package/unitypkg/Editor/Tools/material/info.cs +55 -0
- package/unitypkg/Editor/Tools/material/set-renderer-color.cs +108 -0
- package/unitypkg/Editor/Tools/material/set.cs +114 -0
- package/unitypkg/Editor/Tools/navmesh/NavMeshToolSupport.cs +404 -0
- package/unitypkg/Editor/Tools/navmesh/bake-clear.cs +70 -0
- package/unitypkg/Editor/Tools/navmesh/settings/set.cs +73 -0
- package/unitypkg/Editor/Tools/navmesh/settings.cs +37 -0
- package/unitypkg/Editor/Tools/object/ObjectToolSupport.cs +99 -0
- package/unitypkg/Editor/Tools/object/get-data.cs +69 -0
- package/unitypkg/Editor/Tools/object/modify.cs +126 -0
- package/unitypkg/Editor/Tools/occlusion/OcclusionToolSupport.cs +422 -0
- package/unitypkg/Editor/Tools/occlusion/bake-clear.cs +67 -0
- package/unitypkg/Editor/Tools/physics/PhysicsJointToolSupport.cs +13 -0
- package/unitypkg/Editor/Tools/physics/PhysicsToolSupport.cs +389 -0
- package/unitypkg/Editor/Tools/physics/assign-material.cs +88 -0
- package/unitypkg/Editor/Tools/physics/collision-matrix.cs +90 -0
- package/unitypkg/Editor/Tools/physics/force.cs +127 -0
- package/unitypkg/Editor/Tools/physics/joint/add.cs +99 -0
- package/unitypkg/Editor/Tools/physics/joint/remove.cs +4 -0
- package/unitypkg/Editor/Tools/physics/linecast.cs +59 -0
- package/unitypkg/Editor/Tools/physics/material.cs +73 -0
- package/unitypkg/Editor/Tools/physics/overlap.cs +84 -0
- package/unitypkg/Editor/Tools/physics/raycast-all.cs +67 -0
- package/unitypkg/Editor/Tools/physics/raycast.cs +96 -0
- package/unitypkg/Editor/Tools/physics/rigidbody.cs +116 -0
- package/unitypkg/Editor/Tools/physics/settings.cs +116 -0
- package/unitypkg/Editor/Tools/physics/shapecast.cs +127 -0
- package/unitypkg/Editor/Tools/physics/simulation.cs +89 -0
- package/unitypkg/Editor/Tools/physics/validate.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/PrefabOverrideToolSupport.cs +355 -0
- package/unitypkg/Editor/Tools/prefab/PrefabToolSupport.cs +446 -0
- package/unitypkg/Editor/Tools/prefab/create.cs +125 -0
- package/unitypkg/Editor/Tools/prefab/hierarchy.cs +157 -0
- package/unitypkg/Editor/Tools/prefab/info.cs +44 -0
- package/unitypkg/Editor/Tools/prefab/instantiate.cs +106 -0
- package/unitypkg/Editor/Tools/prefab/modify.cs +112 -0
- package/unitypkg/Editor/Tools/prefab/overrides/apply.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/overrides/revert.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/stage-close.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/stage-open.cs +69 -0
- package/unitypkg/Editor/Tools/prefab/stage-save.cs +64 -0
- package/unitypkg/Editor/Tools/prefab/stage.cs +68 -0
- package/unitypkg/Editor/Tools/prefab/unpack.cs +80 -0
- package/unitypkg/Editor/Tools/prefab/variant/create.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerFrameDebuggerSupport.cs +68 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerMemorySnapshotSupport.cs +30 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerToolSupport.cs +515 -0
- package/unitypkg/Editor/Tools/profiler/areas.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/capture.cs +188 -0
- package/unitypkg/Editor/Tools/profiler/clear.cs +57 -0
- package/unitypkg/Editor/Tools/profiler/counter.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/deep.cs +48 -0
- package/unitypkg/Editor/Tools/profiler/export.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/disable.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/enable.cs +66 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/events.cs +140 -0
- package/unitypkg/Editor/Tools/profiler/frame.cs +38 -0
- package/unitypkg/Editor/Tools/profiler/hierarchy.cs +183 -0
- package/unitypkg/Editor/Tools/profiler/load.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/compare.cs +78 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/list.cs +73 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/take.cs +147 -0
- package/unitypkg/Editor/Tools/profiler/memory.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/module-enable.cs +52 -0
- package/unitypkg/Editor/Tools/profiler/modules.cs +33 -0
- package/unitypkg/Editor/Tools/profiler/object-memory.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/pause.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/rendering-stats.cs +109 -0
- package/unitypkg/Editor/Tools/profiler/script-stats.cs +35 -0
- package/unitypkg/Editor/Tools/profiler/start.cs +55 -0
- package/unitypkg/Editor/Tools/profiler/status.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/stop.cs +53 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsReader.cs +31 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsToolSupport.cs +757 -0
- package/unitypkg/Editor/Tools/project/ProjectTagLayerToolSupport.cs +23 -0
- package/unitypkg/Editor/Tools/project/audio-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/audio-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/info.cs +52 -0
- package/unitypkg/Editor/Tools/project/input-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/input-settings.cs +35 -0
- package/unitypkg/Editor/Tools/project/layer/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/layer/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/layers.cs +61 -0
- package/unitypkg/Editor/Tools/project/player-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/player-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/tag/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/tag/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/tags.cs +45 -0
- package/unitypkg/Editor/Tools/project/time-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/time-settings.cs +31 -0
- package/unitypkg/Editor/Tools/reflection/method/call.cs +114 -0
- package/unitypkg/Editor/Tools/reflection/method/find.cs +72 -0
- package/unitypkg/Editor/Tools/reflection/type/schema.cs +56 -0
- package/unitypkg/Editor/Tools/scene/SceneToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/scene/active.cs +62 -0
- package/unitypkg/Editor/Tools/scene/build-settings.cs +69 -0
- package/unitypkg/Editor/Tools/scene/create.cs +78 -0
- package/unitypkg/Editor/Tools/scene/data.cs +125 -0
- package/unitypkg/Editor/Tools/scene/gameobject/component.cs +63 -0
- package/unitypkg/Editor/Tools/scene/gameobject/components.cs +77 -0
- package/unitypkg/Editor/Tools/scene/gameobject-support.cs +101 -0
- package/unitypkg/Editor/Tools/scene/gameobject.cs +83 -0
- package/unitypkg/Editor/Tools/scene/hierarchy.cs +250 -0
- package/unitypkg/Editor/Tools/scene/list-opened.cs +77 -0
- package/unitypkg/Editor/Tools/scene/load.cs +68 -0
- package/unitypkg/Editor/Tools/scene/move-object.cs +122 -0
- package/unitypkg/Editor/Tools/scene/save.cs +231 -0
- package/unitypkg/Editor/Tools/scene/set-active.cs +76 -0
- package/unitypkg/Editor/Tools/scene/unload.cs +109 -0
- package/unitypkg/Editor/Tools/scene/validate.cs +115 -0
- package/unitypkg/Editor/Tools/scene/view-frame.cs +218 -0
- package/unitypkg/Editor/Tools/screenshot/EditorElementCaptureToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/screenshot/ScreenshotToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/screenshot/editor-element.cs +87 -0
- package/unitypkg/Editor/Tools/screenshot/game-view.cs +116 -0
- package/unitypkg/Editor/Tools/screenshot/isolated-object.cs +93 -0
- package/unitypkg/Editor/Tools/screenshot/orbit.cs +103 -0
- package/unitypkg/Editor/Tools/screenshot/scene-view.cs +99 -0
- package/unitypkg/Editor/Tools/screenshot/screen.cs +89 -0
- package/unitypkg/Editor/Tools/screenshot/surround.cs +181 -0
- package/unitypkg/Editor/Tools/scriptable-object/ScriptableObjectToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/scriptable-object/create.cs +79 -0
- package/unitypkg/Editor/Tools/scriptable-object/info.cs +49 -0
- package/unitypkg/Editor/Tools/scriptable-object/list-types.cs +103 -0
- package/unitypkg/Editor/Tools/scriptable-object/modify.cs +208 -0
- package/unitypkg/Editor/Tools/shader/ShaderToolSupport.cs +326 -0
- package/unitypkg/Editor/Tools/shader/create.cs +82 -0
- package/unitypkg/Editor/Tools/shader/delete.cs +90 -0
- package/unitypkg/Editor/Tools/shader/get-data.cs +125 -0
- package/unitypkg/Editor/Tools/shader/info.cs +48 -0
- package/unitypkg/Editor/Tools/shader/list.cs +82 -0
- package/unitypkg/Editor/Tools/shader/read.cs +84 -0
- package/unitypkg/Editor/Tools/shader/update.cs +71 -0
- package/unitypkg/Editor/Tools/tests/list.cs +98 -0
- package/unitypkg/Editor/Tools/texture/TextureToolSupport.cs +327 -0
- package/unitypkg/Editor/Tools/texture/create.cs +182 -0
- package/unitypkg/Editor/Tools/texture/delete.cs +89 -0
- package/unitypkg/Editor/Tools/texture/generate.cs +189 -0
- package/unitypkg/Editor/Tools/texture/import-settings.cs +104 -0
- package/unitypkg/Editor/Tools/texture/info.cs +50 -0
- package/unitypkg/Editor/Tools/texture/modify.cs +154 -0
- package/unitypkg/Editor/Tools/texture/sprite.cs +132 -0
- package/unitypkg/Editor/Tools/timeline/TimelineMutationToolSupport.cs +696 -0
- package/unitypkg/Editor/Tools/timeline/TimelineReadToolSupport.cs +439 -0
- package/unitypkg/Editor/Tools/timeline/TimelineToolSupport.cs +203 -0
- package/unitypkg/Editor/Tools/timeline/clip/add.cs +93 -0
- package/unitypkg/Editor/Tools/timeline/create.cs +88 -0
- package/unitypkg/Editor/Tools/timeline/info.cs +54 -0
- package/unitypkg/Editor/Tools/timeline/track/add.cs +91 -0
- package/unitypkg/Editor/Tools/ui/UiToolSupport.cs +162 -0
- package/unitypkg/Editor/Tools/ui/UiUguiToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/ui/attach-document.cs +46 -0
- package/unitypkg/Editor/Tools/ui/button/create.cs +58 -0
- package/unitypkg/Editor/Tools/ui/canvas/create.cs +40 -0
- package/unitypkg/Editor/Tools/ui/create-panel-settings.cs +44 -0
- package/unitypkg/Editor/Tools/ui/detach-document.cs +41 -0
- package/unitypkg/Editor/Tools/ui/document/create.cs +49 -0
- package/unitypkg/Editor/Tools/ui/document/delete.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/info.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/update.cs +36 -0
- package/unitypkg/Editor/Tools/ui/get-visual-tree.cs +34 -0
- package/unitypkg/Editor/Tools/ui/hierarchy.cs +27 -0
- package/unitypkg/Editor/Tools/ui/image/create.cs +47 -0
- package/unitypkg/Editor/Tools/ui/link-stylesheet.cs +54 -0
- package/unitypkg/Editor/Tools/ui/list-documents.cs +34 -0
- package/unitypkg/Editor/Tools/ui/modify-visual-element.cs +76 -0
- package/unitypkg/Editor/Tools/ui/render-preview.cs +128 -0
- package/unitypkg/Editor/Tools/ui/text/create.cs +45 -0
- package/unitypkg/Editor/Tools/ui/update-panel-settings.cs +49 -0
- package/unitypkg/Editor/UnityCliBridge.cs +431 -0
- package/unitypkg/Editor/UnityCliBridgeBuildInfo.cs +9 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeBridge.cs +580 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeJson.cs +232 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeRegistry.cs +297 -0
- package/unitypkg/Runtime/Tools/UnityCliRuntimeTools.cs +701 -0
- package/unitypkg/Runtime/UnityCli.Runtime.asmdef +14 -0
- package/unitypkg/Shared/UnityCli.Shared.asmdef +14 -0
- package/unitypkg/Shared/UnityCliAdmissionPool.cs +426 -0
- package/unitypkg/Tests/Editor/UnityCli.Editor.Tests.asmdef +15 -0
- package/unitypkg/Tests/Editor/UnityCliAdmissionPoolTests.cs +262 -0
- package/unitypkg/UnityCli.Editor.asmdef +26 -0
- package/unitypkg/package.json +11 -0
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Globalization;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
using UnityEditor;
|
|
8
|
+
using UnityEngine;
|
|
9
|
+
using UnityEngine.Rendering;
|
|
10
|
+
|
|
11
|
+
namespace UnityCli
|
|
12
|
+
{
|
|
13
|
+
/// <summary>
|
|
14
|
+
/// HDRP 工具共享 helper:负责活动管线检测、Volume 枚举与设置读写。
|
|
15
|
+
/// 保持扩展自包含,不依赖旧 Commands partial bridge 方法。
|
|
16
|
+
/// </summary>
|
|
17
|
+
internal static class HdrpToolSupport
|
|
18
|
+
{
|
|
19
|
+
private static bool s_typesInitialized;
|
|
20
|
+
private static Type s_hdrpAssetType;
|
|
21
|
+
private static Type s_volumeType;
|
|
22
|
+
private static Type s_volumeProfileType;
|
|
23
|
+
|
|
24
|
+
public static void EnsureHdrpAvailable()
|
|
25
|
+
{
|
|
26
|
+
InitializeTypes();
|
|
27
|
+
if (s_hdrpAssetType == null || !IsHdrpActivePipeline())
|
|
28
|
+
{
|
|
29
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
30
|
+
"E_HDRP_PACKAGE_NOT_FOUND",
|
|
31
|
+
"HDRP (High Definition Render Pipeline) is not the active render pipeline, or com.unity.render-pipelines.high-definition is not installed.",
|
|
32
|
+
"Install HDRP via the Unity Package Manager and set an HDRenderPipelineAsset as the active render pipeline in Graphics Settings.");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public static UnityEngine.Object GetActivePipelineAsset()
|
|
37
|
+
{
|
|
38
|
+
EnsureHdrpAvailable();
|
|
39
|
+
var pipeline = GraphicsSettings.currentRenderPipeline ?? GraphicsSettings.defaultRenderPipeline;
|
|
40
|
+
if (pipeline == null || !s_hdrpAssetType.IsInstanceOfType(pipeline))
|
|
41
|
+
{
|
|
42
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
43
|
+
"E_HDRP_PIPELINE_NOT_ACTIVE",
|
|
44
|
+
"No active HDRenderPipelineAsset found.",
|
|
45
|
+
"Set an HDRP asset in Graphics Settings.");
|
|
46
|
+
}
|
|
47
|
+
return pipeline;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public static Type VolumeType
|
|
51
|
+
{
|
|
52
|
+
get
|
|
53
|
+
{
|
|
54
|
+
InitializeTypes();
|
|
55
|
+
return s_volumeType;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public static Type VolumeProfileType
|
|
60
|
+
{
|
|
61
|
+
get
|
|
62
|
+
{
|
|
63
|
+
InitializeTypes();
|
|
64
|
+
return s_volumeProfileType;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
public static Type FindVolumeEffectType(string effectTypeName)
|
|
69
|
+
{
|
|
70
|
+
InitializeTypes();
|
|
71
|
+
return GameObjectToolSupport.FindType("UnityEngine.Rendering.HighDefinition." + effectTypeName + ", Unity.RenderPipelines.HighDefinition.Runtime")
|
|
72
|
+
?? GameObjectToolSupport.FindType("UnityEngine.Rendering." + effectTypeName + ", Unity.RenderPipelines.Core.Runtime")
|
|
73
|
+
?? GameObjectToolSupport.FindType(effectTypeName);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public static UnityEngine.Object GetVolumeProfile(Component volumeComponent)
|
|
77
|
+
{
|
|
78
|
+
InitializeTypes();
|
|
79
|
+
if (s_volumeType == null || volumeComponent == null) return null;
|
|
80
|
+
|
|
81
|
+
// "In-memory profile" means Volume.profile. Never mutate sharedProfile assets.
|
|
82
|
+
var profileProp = s_volumeType.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
83
|
+
return profileProp != null ? profileProp.GetValue(volumeComponent, null) as UnityEngine.Object : null;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 规划阶段不得触发 Volume.profile;仅检查 sharedProfile 或已经存在的 internal profile。
|
|
87
|
+
internal static UnityEngine.Object GetProfileForPlanning(Component volumeComponent)
|
|
88
|
+
{
|
|
89
|
+
if (s_volumeType == null || volumeComponent == null) return null;
|
|
90
|
+
// Volume.sharedProfile 在 Core RP 14 里是 public 字段而非属性:GetProperty 永远命中不了,
|
|
91
|
+
// PlayMode 重载后 m_InternalProfile 不被序列化,必须字段优先读回 sharedProfile。
|
|
92
|
+
var shared = s_volumeType.GetField("sharedProfile", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)?.GetValue(volumeComponent) as UnityEngine.Object;
|
|
93
|
+
if (shared != null) return shared;
|
|
94
|
+
var sharedProperty = s_volumeType.GetProperty("sharedProfile", BindingFlags.Instance | BindingFlags.Public)?.GetValue(volumeComponent, null) as UnityEngine.Object;
|
|
95
|
+
if (sharedProperty != null) return sharedProperty;
|
|
96
|
+
return s_volumeType.GetField("m_InternalProfile", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(volumeComponent) as UnityEngine.Object;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
public static List<VolumeInfo> ListVolumes(string targetName)
|
|
100
|
+
{
|
|
101
|
+
InitializeTypes();
|
|
102
|
+
var results = new List<VolumeInfo>();
|
|
103
|
+
if (s_volumeType == null) return results;
|
|
104
|
+
|
|
105
|
+
foreach (var component in Resources.FindObjectsOfTypeAll(s_volumeType))
|
|
106
|
+
{
|
|
107
|
+
var typedComponent = component as Component;
|
|
108
|
+
if (typedComponent == null || typedComponent.gameObject == null) continue;
|
|
109
|
+
if (EditorUtility.IsPersistent(typedComponent.gameObject)) continue;
|
|
110
|
+
|
|
111
|
+
var hierarchyPath = GameObjectToolSupport.HierarchyPath(typedComponent.gameObject);
|
|
112
|
+
if (!string.IsNullOrEmpty(targetName)
|
|
113
|
+
&& !string.Equals(typedComponent.gameObject.name, targetName, StringComparison.OrdinalIgnoreCase)
|
|
114
|
+
&& !string.Equals(hierarchyPath, targetName, StringComparison.OrdinalIgnoreCase))
|
|
115
|
+
{
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var type = typedComponent.GetType();
|
|
120
|
+
var enabledProp = type.GetProperty("enabled", BindingFlags.Instance | BindingFlags.Public);
|
|
121
|
+
var profile = GetProfileForPlanning(typedComponent);
|
|
122
|
+
var profilePath = profile == null ? null : AssetDatabase.GetAssetPath(profile);
|
|
123
|
+
|
|
124
|
+
results.Add(new VolumeInfo
|
|
125
|
+
{
|
|
126
|
+
Target = new GameObjectTargetRef
|
|
127
|
+
{
|
|
128
|
+
Id = typedComponent.gameObject.GetInstanceID(),
|
|
129
|
+
Name = typedComponent.gameObject.name,
|
|
130
|
+
Path = hierarchyPath
|
|
131
|
+
},
|
|
132
|
+
Enabled = enabledProp == null || Convert.ToBoolean(enabledProp.GetValue(typedComponent, null), CultureInfo.InvariantCulture),
|
|
133
|
+
IsGlobal = Convert.ToBoolean(HdrpVolumeOperations.ReadMember(type, typedComponent, "isGlobal") ?? false, CultureInfo.InvariantCulture),
|
|
134
|
+
Priority = Convert.ToDouble(HdrpVolumeOperations.ReadMember(type, typedComponent, "priority") ?? 0f, CultureInfo.InvariantCulture),
|
|
135
|
+
Weight = Convert.ToDouble(HdrpVolumeOperations.ReadMember(type, typedComponent, "weight") ?? 0f, CultureInfo.InvariantCulture),
|
|
136
|
+
Profile = profile == null ? null : new AssetRef
|
|
137
|
+
{
|
|
138
|
+
Name = profile.name,
|
|
139
|
+
Path = profilePath,
|
|
140
|
+
Guid = string.IsNullOrEmpty(profilePath) ? null : AssetDatabase.AssetPathToGUID(profilePath)
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return results;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
public static Dictionary<string, object> ReadSettings(UnityEngine.Object pipelineAsset)
|
|
149
|
+
{
|
|
150
|
+
var settings = new Dictionary<string, object>(StringComparer.Ordinal);
|
|
151
|
+
var type = pipelineAsset.GetType();
|
|
152
|
+
var readableProps = new[]
|
|
153
|
+
{
|
|
154
|
+
"renderScale", "msaaSampleCount", "shadowDistance",
|
|
155
|
+
"shadowCascadeCount", "shadowSliceCount",
|
|
156
|
+
"supportedShadowQuality", "supportedShadows",
|
|
157
|
+
"shadowAtlasSize", "contactShadows",
|
|
158
|
+
"volumetricClouds", "volumetricFog",
|
|
159
|
+
"supportWater", "waterSimulationResolution",
|
|
160
|
+
"transparentLayerMask", "disableColorGrading",
|
|
161
|
+
"hdrBufferPrecision", "maxPixelLights",
|
|
162
|
+
"supportVolumetrics", "supportSubsurfaceScattering"
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
foreach (var propertyName in readableProps)
|
|
166
|
+
{
|
|
167
|
+
var property = type.GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public);
|
|
168
|
+
if (property == null) continue;
|
|
169
|
+
try
|
|
170
|
+
{
|
|
171
|
+
var value = property.GetValue(pipelineAsset, null);
|
|
172
|
+
if (value is float f) settings[propertyName] = f;
|
|
173
|
+
else if (value is double d) settings[propertyName] = d;
|
|
174
|
+
else if (value is int i) settings[propertyName] = i;
|
|
175
|
+
else if (value is long l) settings[propertyName] = l;
|
|
176
|
+
else if (value is bool b) settings[propertyName] = b;
|
|
177
|
+
else if (value is Enum e) settings[propertyName] = e.ToString();
|
|
178
|
+
else if (value != null) settings[propertyName] = value.ToString();
|
|
179
|
+
}
|
|
180
|
+
catch
|
|
181
|
+
{
|
|
182
|
+
// 不可读属性不参与结果。
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return settings;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
public static object ConvertValue(string value, Type targetType)
|
|
190
|
+
{
|
|
191
|
+
if (targetType == typeof(float)) return ParseFiniteSingle(value, "HDRP setting");
|
|
192
|
+
if (targetType == typeof(double)) return ParseFiniteDouble(value, "HDRP setting");
|
|
193
|
+
if (targetType == typeof(int)) return int.Parse(value, CultureInfo.InvariantCulture);
|
|
194
|
+
if (targetType == typeof(long)) return long.Parse(value, CultureInfo.InvariantCulture);
|
|
195
|
+
if (targetType == typeof(bool)) return bool.Parse(value);
|
|
196
|
+
if (targetType.IsEnum) return ParseDefinedEnum(targetType, value, "HDRP setting");
|
|
197
|
+
if (targetType == typeof(string)) return value;
|
|
198
|
+
return Convert.ChangeType(value, targetType, CultureInfo.InvariantCulture);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
internal sealed class SettingMutationPlan
|
|
202
|
+
{
|
|
203
|
+
internal UnityEngine.Object Pipeline { get; set; }
|
|
204
|
+
internal string PropertyName { get; set; }
|
|
205
|
+
internal PropertyInfo PublicProperty { get; set; }
|
|
206
|
+
internal SerializedObject SerializedObject { get; set; }
|
|
207
|
+
internal SerializedProperty SerializedProperty { get; set; }
|
|
208
|
+
internal string SerializedPropertyPath { get; set; }
|
|
209
|
+
internal SerializedPropertyType SerializedPropertyType { get; set; }
|
|
210
|
+
internal object ExpectedValue { get; set; }
|
|
211
|
+
internal string ExpectedReadback { get; set; }
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
internal static SettingMutationPlan PrepareSetting(UnityEngine.Object pipeline, string propertyName, string value)
|
|
215
|
+
{
|
|
216
|
+
if (pipeline == null || string.IsNullOrWhiteSpace(propertyName) || value == null) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_NOT_FOUND", "HDRP setting property and value are required.", "Pass a writable property and a compatible value.");
|
|
217
|
+
var publicProperty = pipeline.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public);
|
|
218
|
+
if (publicProperty != null && publicProperty.CanWrite && publicProperty.GetIndexParameters().Length == 0) return new SettingMutationPlan { Pipeline = pipeline, PropertyName = propertyName, PublicProperty = publicProperty, ExpectedValue = ConvertValue(value, publicProperty.PropertyType) };
|
|
219
|
+
var serialized = new SerializedObject(pipeline);
|
|
220
|
+
var property = serialized.FindProperty(propertyName) ?? serialized.FindProperty("m_" + char.ToUpper(propertyName[0]) + propertyName.Substring(1));
|
|
221
|
+
if (property == null) { serialized.Dispose(); throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_NOT_FOUND", "HDRP setting not found: " + propertyName, "Run hdrp.settings.get to inspect readable settings."); }
|
|
222
|
+
var expected = ConvertScalar(property, value);
|
|
223
|
+
return new SettingMutationPlan { Pipeline = pipeline, PropertyName = propertyName, SerializedObject = serialized, SerializedProperty = property, SerializedPropertyPath = property.propertyPath, SerializedPropertyType = property.propertyType, ExpectedValue = expected, ExpectedReadback = FormatScalar(property.propertyType, expected) };
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
internal static void ApplySetting(SettingMutationPlan plan)
|
|
227
|
+
{
|
|
228
|
+
if (plan == null) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_SET_FAILED", "HDRP setting plan is unavailable.", "Retry the request.");
|
|
229
|
+
if (plan.PublicProperty != null) { plan.PublicProperty.SetValue(plan.Pipeline, plan.ExpectedValue, null); return; }
|
|
230
|
+
if (plan.SerializedObject == null || plan.SerializedProperty == null || plan.SerializedProperty.propertyType != plan.SerializedPropertyType) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_SET_FAILED", "HDRP serialized setting plan is no longer valid.", "Retry the request.");
|
|
231
|
+
ApplyScalar(plan.SerializedProperty, plan.SerializedPropertyType, plan.ExpectedValue);
|
|
232
|
+
plan.SerializedObject.ApplyModifiedProperties();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
internal static string VerifySettingReadback(SettingMutationPlan plan, UnityEngine.Object pipeline)
|
|
236
|
+
{
|
|
237
|
+
if (plan == null || pipeline == null) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_VERIFY_FAILED", "HDRP pipeline asset could not be independently reloaded.", "Check the active pipeline asset and retry.");
|
|
238
|
+
if (plan.PublicProperty != null) { var property = pipeline.GetType().GetProperty(plan.PublicProperty.Name, BindingFlags.Instance | BindingFlags.Public); var actual = property == null || !property.CanRead || property.PropertyType != plan.PublicProperty.PropertyType ? null : property.GetValue(pipeline, null); if (!Equals(actual, plan.ExpectedValue)) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_VERIFY_FAILED", "HDRP setting did not retain the requested value: " + plan.PropertyName, "Check the pipeline asset and retry."); return Convert.ToString(actual, CultureInfo.InvariantCulture); }
|
|
239
|
+
using (var serialized = new SerializedObject(pipeline)) { serialized.Update(); var property = serialized.FindProperty(plan.SerializedPropertyPath); var actual = property == null || property.propertyType != plan.SerializedPropertyType ? null : ReadSerializedPropertyValue(property); if (!string.Equals(actual, plan.ExpectedReadback, StringComparison.Ordinal)) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_VERIFY_FAILED", "HDRP setting did not retain the requested value: " + plan.PropertyName, "Check the pipeline asset and retry."); return actual; }
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
private static object ConvertScalar(SerializedProperty property, string value)
|
|
243
|
+
{
|
|
244
|
+
switch (property.propertyType) { case SerializedPropertyType.Float: return ParseFiniteSingle(value, "HDRP setting"); case SerializedPropertyType.Integer: return int.Parse(value, CultureInfo.InvariantCulture); case SerializedPropertyType.Boolean: return bool.Parse(value); case SerializedPropertyType.Enum: return ParseSerializedEnumIndex(property, value, "HDRP setting"); case SerializedPropertyType.String: return value; default: throw new UnityCliBridge.BridgeCommandException("E_HDRP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + property.propertyType + " via string value.", "Use a scalar pipeline setting."); }
|
|
245
|
+
}
|
|
246
|
+
private static void ApplyScalar(SerializedProperty property, SerializedPropertyType type, object value)
|
|
247
|
+
{
|
|
248
|
+
if (property == null || property.propertyType != type) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_SET_FAILED", "HDRP property no longer matches its prepared plan.", "Retry the request.");
|
|
249
|
+
switch (type) { case SerializedPropertyType.Float: property.floatValue = (float)value; break; case SerializedPropertyType.Integer: property.intValue = (int)value; break; case SerializedPropertyType.Boolean: property.boolValue = (bool)value; break; case SerializedPropertyType.Enum: property.enumValueIndex = (int)value; break; case SerializedPropertyType.String: property.stringValue = (string)value; break; default: throw new UnityCliBridge.BridgeCommandException("E_HDRP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + type + " via a prepared value.", "Use a scalar pipeline setting."); }
|
|
250
|
+
}
|
|
251
|
+
private static string FormatScalar(SerializedPropertyType type, object value)
|
|
252
|
+
{
|
|
253
|
+
if (type == SerializedPropertyType.Float) return ((float)value).ToString("R", CultureInfo.InvariantCulture); if (type == SerializedPropertyType.Integer || type == SerializedPropertyType.Enum) return Convert.ToInt32(value, CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture); if (type == SerializedPropertyType.Boolean) return (bool)value ? "true" : "false"; if (type == SerializedPropertyType.String) return (string)value; throw new UnityCliBridge.BridgeCommandException("E_HDRP_PROPERTY_TYPE_UNSUPPORTED", "Cannot format property type " + type + ".", "Use a scalar pipeline setting.");
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
public static void RequireFinite(double value, string field)
|
|
257
|
+
{
|
|
258
|
+
if (double.IsNaN(value) || double.IsInfinity(value))
|
|
259
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VALUE_INVALID", "Invalid " + field + " value.", "Pass a finite numeric value.");
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
public static void ValidateSerializedPropertyValue(SerializedProperty property, string value)
|
|
263
|
+
{
|
|
264
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_NOT_FOUND", "HDRP setting not found.", "Run hdrp.settings.get to inspect readable settings.");
|
|
265
|
+
try
|
|
266
|
+
{
|
|
267
|
+
switch (property.propertyType)
|
|
268
|
+
{
|
|
269
|
+
case SerializedPropertyType.Float: ParseFiniteSingle(value, "HDRP setting"); break;
|
|
270
|
+
case SerializedPropertyType.Integer: int.Parse(value, CultureInfo.InvariantCulture); break;
|
|
271
|
+
case SerializedPropertyType.Boolean: bool.Parse(value); break;
|
|
272
|
+
case SerializedPropertyType.Enum: ParseSerializedEnumIndex(property, value, "HDRP setting"); break;
|
|
273
|
+
case SerializedPropertyType.String: break;
|
|
274
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_HDRP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + property.propertyType + " via string value.", "Use direct Unity editing for complex property types.");
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (FormatException) { throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_SET_FAILED", "Invalid value for HDRP setting.", "Pass a value compatible with the setting type."); }
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
public static void SetSerializedPropertyValue(SerializedProperty property, string value)
|
|
281
|
+
{
|
|
282
|
+
switch (property.propertyType)
|
|
283
|
+
{
|
|
284
|
+
case SerializedPropertyType.Float:
|
|
285
|
+
property.floatValue = ParseFiniteSingle(value, "HDRP setting");
|
|
286
|
+
break;
|
|
287
|
+
case SerializedPropertyType.Integer:
|
|
288
|
+
property.intValue = int.Parse(value, CultureInfo.InvariantCulture);
|
|
289
|
+
break;
|
|
290
|
+
case SerializedPropertyType.Boolean:
|
|
291
|
+
property.boolValue = bool.Parse(value);
|
|
292
|
+
break;
|
|
293
|
+
case SerializedPropertyType.Enum:
|
|
294
|
+
property.enumValueIndex = ParseSerializedEnumIndex(property, value, "HDRP setting");
|
|
295
|
+
break;
|
|
296
|
+
case SerializedPropertyType.String:
|
|
297
|
+
property.stringValue = value;
|
|
298
|
+
break;
|
|
299
|
+
default:
|
|
300
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
301
|
+
"E_HDRP_PROPERTY_TYPE_UNSUPPORTED",
|
|
302
|
+
"Cannot set property type " + property.propertyType + " via string value.",
|
|
303
|
+
"Use direct Unity editing for complex property types.");
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// 仅允许可稳定比较的标量值作为写入完成证明。
|
|
308
|
+
public static string ReadSerializedPropertyValue(SerializedProperty property)
|
|
309
|
+
{
|
|
310
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_VERIFY_FAILED", "HDRP setting could not be read back.", "Check the pipeline asset and retry.");
|
|
311
|
+
switch (property.propertyType)
|
|
312
|
+
{
|
|
313
|
+
case SerializedPropertyType.Float: return property.floatValue.ToString("R", CultureInfo.InvariantCulture);
|
|
314
|
+
case SerializedPropertyType.Integer: return property.intValue.ToString(CultureInfo.InvariantCulture);
|
|
315
|
+
case SerializedPropertyType.Boolean: return property.boolValue ? "true" : "false";
|
|
316
|
+
case SerializedPropertyType.Enum: return property.enumValueIndex.ToString(CultureInfo.InvariantCulture);
|
|
317
|
+
case SerializedPropertyType.String: return property.stringValue;
|
|
318
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_HDRP_SETTING_VERIFY_FAILED", "HDRP setting type cannot be read back: " + property.propertyType, "Use a scalar pipeline setting.");
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
internal static float ParseFiniteSingle(string value, string field)
|
|
323
|
+
{
|
|
324
|
+
var parsed = double.Parse(value, CultureInfo.InvariantCulture);
|
|
325
|
+
if (double.IsNaN(parsed) || double.IsInfinity(parsed) || parsed < -float.MaxValue || parsed > float.MaxValue)
|
|
326
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VALUE_INVALID", field + " must be finite and representable as a single-precision float.", "Pass a finite value in the single-precision range.");
|
|
327
|
+
return (float)parsed;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
internal static double ParseFiniteDouble(string value, string field)
|
|
331
|
+
{
|
|
332
|
+
var parsed = double.Parse(value, CultureInfo.InvariantCulture);
|
|
333
|
+
if (double.IsNaN(parsed) || double.IsInfinity(parsed))
|
|
334
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VALUE_INVALID", field + " must be finite.", "Pass a finite numeric value.");
|
|
335
|
+
return parsed;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
internal static object ParseDefinedEnum(Type enumType, string value, string field)
|
|
339
|
+
{
|
|
340
|
+
var parsed = Enum.Parse(enumType, value, true);
|
|
341
|
+
if (!Enum.IsDefined(enumType, parsed))
|
|
342
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VALUE_INVALID", field + " must be a defined enum value.", "Pass a defined enum member name or value.");
|
|
343
|
+
return parsed;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
internal static int ParseSerializedEnumIndex(SerializedProperty property, string value, string field)
|
|
347
|
+
{
|
|
348
|
+
var index = int.Parse(value, CultureInfo.InvariantCulture);
|
|
349
|
+
if (index < 0 || index >= property.enumDisplayNames.Length)
|
|
350
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VALUE_INVALID", field + " must be a defined enum value.", "Pass an enum index exposed by the target property.");
|
|
351
|
+
return index;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
private static void InitializeTypes()
|
|
355
|
+
{
|
|
356
|
+
if (s_typesInitialized) return;
|
|
357
|
+
s_typesInitialized = true;
|
|
358
|
+
s_hdrpAssetType = GameObjectToolSupport.FindType("UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset, Unity.RenderPipelines.HighDefinition.Runtime");
|
|
359
|
+
s_volumeType = GameObjectToolSupport.FindType("UnityEngine.Rendering.Volume, Unity.RenderPipelines.Core.Runtime");
|
|
360
|
+
s_volumeProfileType = GameObjectToolSupport.FindType("UnityEngine.Rendering.VolumeProfile, Unity.RenderPipelines.Core.Runtime");
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
private static bool IsHdrpActivePipeline()
|
|
364
|
+
{
|
|
365
|
+
var pipeline = GraphicsSettings.currentRenderPipeline ?? GraphicsSettings.defaultRenderPipeline;
|
|
366
|
+
if (pipeline == null) return false;
|
|
367
|
+
var typeName = pipeline.GetType().FullName ?? string.Empty;
|
|
368
|
+
return typeName.IndexOf("HighDefinition", StringComparison.OrdinalIgnoreCase) >= 0
|
|
369
|
+
|| typeName.IndexOf("HDRP", StringComparison.OrdinalIgnoreCase) >= 0;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
internal static class HdrpVolumeOperations
|
|
374
|
+
{
|
|
375
|
+
internal sealed class CreatedVolume
|
|
376
|
+
{
|
|
377
|
+
public GameObject GameObject { get; set; }
|
|
378
|
+
public bool IsGlobal { get; set; }
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
internal sealed class SetVolumeResult
|
|
382
|
+
{
|
|
383
|
+
public GameObject GameObject { get; set; }
|
|
384
|
+
public string ObservedEffectType { get; set; }
|
|
385
|
+
public string Value { get; set; }
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
internal sealed class AddedVolumeEffectResult
|
|
389
|
+
{
|
|
390
|
+
public GameObject GameObject { get; set; }
|
|
391
|
+
public string ObservedEffectType { get; set; }
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
internal sealed class VolumeCreateMutationPlan { internal float? Priority { get; set; } internal float? Weight { get; set; } }
|
|
395
|
+
|
|
396
|
+
public static VolumeCreateMutationPlan ValidateCreate(double? priority, double? weight, string errorPrefix)
|
|
397
|
+
{
|
|
398
|
+
if (priority.HasValue) HdrpToolSupport.RequireFinite(priority.Value, "priority");
|
|
399
|
+
if (weight.HasValue) HdrpToolSupport.RequireFinite(weight.Value, "weight");
|
|
400
|
+
if (weight.HasValue && (weight.Value < 0d || weight.Value > 1d)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_WEIGHT_OUT_OF_RANGE", "Volume weight must be between 0 and 1.", "Pass a weight in the inclusive range [0, 1].");
|
|
401
|
+
var volumeType = HdrpToolSupport.VolumeType;
|
|
402
|
+
var profileProperty = volumeType?.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
403
|
+
if (volumeType == null || HdrpToolSupport.VolumeProfileType == null || !HasWritableMember(volumeType, "isGlobal", typeof(bool)) || (priority.HasValue && !HasWritableMember(volumeType, "priority", typeof(float))) || (weight.HasValue && !HasWritableMember(volumeType, "weight", typeof(float))) || profileProperty == null || !profileProperty.CanWrite) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SYSTEM_NOT_FOUND", "Volume create contract is unavailable.", "Ensure the render pipeline package provides writable Volume members and profile.");
|
|
404
|
+
if (priority.HasValue && !FitsSingle(priority.Value) || weight.HasValue && !FitsSingle(weight.Value)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VALUE_INVALID", "Volume numeric values must be representable as finite float values.", "Pass finite values in the single-precision range.");
|
|
405
|
+
return new VolumeCreateMutationPlan { Priority = priority.HasValue ? (float)priority.Value : null, Weight = weight.HasValue ? (float)weight.Value : null };
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
public static void ValidateAddEffect(string target, string effectTypeName, string errorPrefix, Func<string, Type> findEffectType)
|
|
409
|
+
{
|
|
410
|
+
RequireTarget(target, "add-effect");
|
|
411
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "add-effect requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
412
|
+
var volume = ResolveVolume(target, errorPrefix);
|
|
413
|
+
var effectType = findEffectType(effectTypeName);
|
|
414
|
+
if (effectType == null || effectType == typeof(VolumeComponent) || effectType.IsAbstract || !typeof(VolumeComponent).IsAssignableFrom(effectType) || !IsPipelineEffectType(effectType)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_NOT_FOUND", "Concrete HDRP VolumeComponent effect type not found: " + effectTypeName, "Use a concrete effect from the active HDRP pipeline.");
|
|
415
|
+
var profile = HdrpToolSupport.GetProfileForPlanning(volume.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
416
|
+
var addMethod = HdrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
417
|
+
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable Add API.", "Create a Volume or assign a profile before adding an effect.");
|
|
418
|
+
if (profile.components.Any(component => component != null && effectType.IsInstanceOfType(component))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
internal sealed class VolumeSetMutationPlan { internal int GameObjectId { get; set; } internal int PlanningProfileId { get; set; } internal int SharedProfileId { get; set; } internal Type EffectType { get; set; } internal string PropertyPath { get; set; } internal SerializedPropertyType PropertyType { get; set; } internal object ExpectedValue { get; set; } internal string ExpectedReadback { get; set; } }
|
|
422
|
+
|
|
423
|
+
public static VolumeSetMutationPlan ValidateSet(string target, string effectTypeName, string propertyPath, string value, string errorPrefix, Func<string, Type> findEffectType)
|
|
424
|
+
{
|
|
425
|
+
RequireTarget(target, "set");
|
|
426
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "set requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
427
|
+
if (string.IsNullOrEmpty(propertyPath) || value == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROPERTY_REQUIRED", "set requires property and value.", "Pass a SerializedProperty path and value.");
|
|
428
|
+
var volume = ResolveVolume(target, errorPrefix);
|
|
429
|
+
var effectType = findEffectType(effectTypeName);
|
|
430
|
+
if (effectType == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_NOT_FOUND", "Volume effect type not found: " + effectTypeName, "Ensure the effect type is correct and imported.");
|
|
431
|
+
var volumeComponent = volume.GetComponent(HdrpToolSupport.VolumeType);
|
|
432
|
+
var profile = HdrpToolSupport.GetProfileForPlanning(volumeComponent) as VolumeProfile;
|
|
433
|
+
var effect = profile == null ? null : profile.components.FirstOrDefault(component => component != null && component.GetType() == effectType);
|
|
434
|
+
if (effect == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_NOT_FOUND", "The requested effect is not present: " + effectTypeName, "Add the effect before setting it.");
|
|
435
|
+
using (var serialized = new SerializedObject(effect))
|
|
436
|
+
{
|
|
437
|
+
var property = serialized.FindProperty(propertyPath);
|
|
438
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROPERTY_NOT_FOUND", "Volume effect property not found: " + propertyPath, "Pass a valid SerializedProperty path.");
|
|
439
|
+
var expected = PrepareScalar(property, value, errorPrefix);
|
|
440
|
+
var shared = volumeComponent.GetType().GetProperty("sharedProfile", BindingFlags.Instance | BindingFlags.Public)?.GetValue(volumeComponent, null) as UnityEngine.Object;
|
|
441
|
+
return new VolumeSetMutationPlan { GameObjectId = volume.GetInstanceID(), PlanningProfileId = profile.GetInstanceID(), SharedProfileId = shared == null ? 0 : shared.GetInstanceID(), EffectType = effectType, PropertyPath = propertyPath, PropertyType = property.propertyType, ExpectedValue = expected, ExpectedReadback = FormatScalar(property.propertyType, expected) };
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
public static void RequireTarget(string target, string operation)
|
|
446
|
+
{
|
|
447
|
+
if (string.IsNullOrEmpty(target)) throw new UnityCliBridge.BridgeCommandException("E_HDRP_VOLUME_TARGET_REQUIRED", operation + " requires a target.", "Pass the target Volume GameObject name, hierarchy path, or instance id.");
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
public static CreatedVolume Create(string name, bool? isGlobal, VolumeCreateMutationPlan plan, string defaultPrefix, string errorPrefix)
|
|
451
|
+
{
|
|
452
|
+
var volumeType = HdrpToolSupport.VolumeType;
|
|
453
|
+
var profileType = HdrpToolSupport.VolumeProfileType;
|
|
454
|
+
if (volumeType == null || profileType == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SYSTEM_NOT_FOUND", "Volume system types not found.", "Ensure the render pipeline package is fully imported.");
|
|
455
|
+
var gameObject = new GameObject(string.IsNullOrEmpty(name) ? defaultPrefix + "Volume" : name);
|
|
456
|
+
var volume = gameObject.AddComponent(volumeType);
|
|
457
|
+
var global = isGlobal ?? true;
|
|
458
|
+
SetMember(volumeType, volume, "isGlobal", global);
|
|
459
|
+
if (plan.Priority.HasValue) SetMember(volumeType, volume, "priority", plan.Priority.Value);
|
|
460
|
+
if (plan.Weight.HasValue) SetMember(volumeType, volume, "weight", plan.Weight.Value);
|
|
461
|
+
var profile = ScriptableObject.CreateInstance(profileType);
|
|
462
|
+
profile.name = gameObject.name + "Profile";
|
|
463
|
+
AssignProfile(volumeType, volume, profile, errorPrefix);
|
|
464
|
+
var observedObject = GameObjectToolSupport.ResolveUniqueTarget(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), "Created Volume could not be resolved.");
|
|
465
|
+
var observedVolume = observedObject.GetComponent(volumeType);
|
|
466
|
+
var observedProfile = observedVolume == null ? null : HdrpToolSupport.GetVolumeProfile(observedVolume);
|
|
467
|
+
if (observedVolume == null || observedProfile == null || observedProfile.GetInstanceID() != profile.GetInstanceID() || observedProfile.GetType() != profileType)
|
|
468
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume component or profile could not be independently read back.", "Check the Volume system and retry.");
|
|
469
|
+
if (Convert.ToBoolean(ReadMember(volumeType, observedVolume, "isGlobal") ?? false, CultureInfo.InvariantCulture) != global)
|
|
470
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume global state did not retain the requested value.", "Check the Volume system and retry.");
|
|
471
|
+
var observedPriority = ReadMember(volumeType, observedVolume, "priority");
|
|
472
|
+
var observedWeight = ReadMember(volumeType, observedVolume, "weight");
|
|
473
|
+
if (plan.Priority.HasValue && (observedPriority == null || Convert.ToSingle(observedPriority, CultureInfo.InvariantCulture) != plan.Priority.Value)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume priority did not retain the requested value.", "Check the Volume system and retry.");
|
|
474
|
+
if (plan.Weight.HasValue && (observedWeight == null || Convert.ToSingle(observedWeight, CultureInfo.InvariantCulture) != plan.Weight.Value)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume weight did not retain the requested value.", "Check the Volume system and retry.");
|
|
475
|
+
UnityCliSceneMutation.RegisterCreatedObject(gameObject, "UnityCli " + defaultPrefix + " Volume Create");
|
|
476
|
+
UnityCliSceneMutation.MarkSceneDirty(gameObject.scene);
|
|
477
|
+
return new CreatedVolume { GameObject = observedObject, IsGlobal = global };
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
public static AddedVolumeEffectResult AddEffect(string target, string effectTypeName, string errorPrefix, Func<string, Type> findEffectType)
|
|
481
|
+
{
|
|
482
|
+
RequireTarget(target, "add-effect");
|
|
483
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "add-effect requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
484
|
+
var gameObject = ResolveVolume(target, errorPrefix);
|
|
485
|
+
var effectType = findEffectType(effectTypeName);
|
|
486
|
+
if (effectType == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_NOT_FOUND", "Volume effect type not found: " + effectTypeName, "Ensure the effect type is correct and the render pipeline package is fully imported.");
|
|
487
|
+
var profile = HdrpToolSupport.GetVolumeProfile(gameObject.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
488
|
+
var addMethod = HdrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
489
|
+
if (profile == null || addMethod == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_NOT_FOUND", "The target Volume has no writable in-memory profile.", "Create a Volume with hdrp.volume.create or assign a profile before adding an effect.");
|
|
490
|
+
var countBefore = profile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
491
|
+
if (countBefore != 0) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_EXISTS", "The requested effect is already present: " + effectTypeName, "Use volume.set to modify the existing effect.");
|
|
492
|
+
addMethod.Invoke(profile, new object[] { effectType, true });
|
|
493
|
+
var observedObject = ResolveVolume(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
494
|
+
var observedProfile = HdrpToolSupport.GetVolumeProfile(observedObject.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
495
|
+
var observed = observedProfile?.components.FirstOrDefault(component => component != null && effectType.IsInstanceOfType(component));
|
|
496
|
+
var countAfter = observedProfile == null ? 0 : observedProfile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
497
|
+
if (observedProfile == null || observedProfile.GetInstanceID() != profile.GetInstanceID() || observed == null || countAfter != countBefore + 1) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Added Volume effect could not be independently located in VolumeProfile.components.", "Check the Volume profile and effect type, then retry.");
|
|
498
|
+
UnityCliSceneMutation.MarkSceneDirty(gameObject.scene);
|
|
499
|
+
return new AddedVolumeEffectResult { GameObject = gameObject, ObservedEffectType = observed.GetType().FullName };
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
// barrier 后首次访问 Volume.profile,随后只在该独立 runtime profile 中按冻结类型写入。
|
|
503
|
+
public static SetVolumeResult Set(VolumeSetMutationPlan plan, string errorPrefix)
|
|
504
|
+
{
|
|
505
|
+
if (plan == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SET_FAILED", "Prepared HDRP Volume mutation plan is no longer valid.", "Retry the request.");
|
|
506
|
+
var observedObject = ResolveVolume(plan.GameObjectId.ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
507
|
+
var mutationProfile = HdrpToolSupport.GetVolumeProfile(observedObject.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
508
|
+
if (mutationProfile == null || (plan.SharedProfileId != 0 && mutationProfile.GetInstanceID() == plan.SharedProfileId)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume did not provide an independent runtime profile.", "Check the Volume profile and retry.");
|
|
509
|
+
var mutationEffect = mutationProfile.components.FirstOrDefault(component => component != null && component.GetType() == plan.EffectType);
|
|
510
|
+
if (mutationEffect == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect could not be located in the runtime profile.", "Check the Volume profile and retry.");
|
|
511
|
+
using (var mutationSerialized = new SerializedObject(mutationEffect))
|
|
512
|
+
{
|
|
513
|
+
var mutationProperty = mutationSerialized.FindProperty(plan.PropertyPath);
|
|
514
|
+
if (mutationProperty == null || mutationProperty.propertyType != plan.PropertyType) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume property no longer matches its prepared type.", "Check the Volume component parameter and retry.");
|
|
515
|
+
ApplyPreparedScalar(mutationProperty, plan.PropertyType, plan.ExpectedValue, errorPrefix);
|
|
516
|
+
mutationSerialized.ApplyModifiedProperties();
|
|
517
|
+
}
|
|
518
|
+
var observedProfile = HdrpToolSupport.GetVolumeProfile(observedObject.GetComponent(HdrpToolSupport.VolumeType)) as VolumeProfile;
|
|
519
|
+
var observedEffect = observedProfile?.components.FirstOrDefault(component => component != null && component.GetType() == plan.EffectType);
|
|
520
|
+
if (observedProfile == null || observedProfile.GetInstanceID() != mutationProfile.GetInstanceID() || (plan.SharedProfileId != 0 && observedProfile.GetInstanceID() == plan.SharedProfileId) || observedEffect == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume runtime profile or effect could not be independently read back.", "Check the Volume profile and retry.");
|
|
521
|
+
string actual;
|
|
522
|
+
using (var observed = new SerializedObject(observedEffect)) { observed.Update(); var property = observed.FindProperty(plan.PropertyPath); if (property == null || property.propertyType != plan.PropertyType) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume property no longer matches its prepared type.", "Check the Volume component parameter and retry."); actual = ReadSerializedValue(property, errorPrefix); }
|
|
523
|
+
if (!string.Equals(actual, plan.ExpectedReadback, StringComparison.Ordinal)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property did not retain the requested value: " + plan.PropertyPath, "Check the Volume component parameter and retry.");
|
|
524
|
+
UnityCliSceneMutation.MarkSceneDirty(observedObject.scene);
|
|
525
|
+
return new SetVolumeResult { GameObject = observedObject, ObservedEffectType = observedEffect.GetType().FullName, Value = actual };
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
private static object PrepareScalar(SerializedProperty property, string value, string errorPrefix)
|
|
529
|
+
{
|
|
530
|
+
switch (property.propertyType) { case SerializedPropertyType.Float: return HdrpToolSupport.ParseFiniteSingle(value, "HDRP Volume value"); case SerializedPropertyType.Integer: return int.Parse(value, CultureInfo.InvariantCulture); case SerializedPropertyType.Boolean: return bool.Parse(value); case SerializedPropertyType.Enum: return HdrpToolSupport.ParseSerializedEnumIndex(property, value, "HDRP Volume value"); case SerializedPropertyType.String: return value; default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PROPERTY_TYPE_UNSUPPORTED", "Cannot set Volume property type " + property.propertyType + " via string value.", "Use a scalar Volume parameter."); }
|
|
531
|
+
}
|
|
532
|
+
private static void ApplyPreparedScalar(SerializedProperty property, SerializedPropertyType type, object value, string errorPrefix)
|
|
533
|
+
{
|
|
534
|
+
if (property.propertyType != type) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SET_FAILED", "Prepared Volume property type changed before apply.", "Retry the request.");
|
|
535
|
+
switch (type) { case SerializedPropertyType.Float: property.floatValue = (float)value; break; case SerializedPropertyType.Integer: property.intValue = (int)value; break; case SerializedPropertyType.Boolean: property.boolValue = (bool)value; break; case SerializedPropertyType.Enum: property.enumValueIndex = (int)value; break; case SerializedPropertyType.String: property.stringValue = (string)value; break; default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PROPERTY_TYPE_UNSUPPORTED", "Cannot set Volume property type " + type + " via a prepared value.", "Use a scalar Volume parameter."); }
|
|
536
|
+
}
|
|
537
|
+
private static string FormatScalar(SerializedPropertyType type, object value)
|
|
538
|
+
{
|
|
539
|
+
if (type == SerializedPropertyType.Float) return ((float)value).ToString("R", CultureInfo.InvariantCulture); if (type == SerializedPropertyType.Integer || type == SerializedPropertyType.Enum) return Convert.ToInt32(value, CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture); if (type == SerializedPropertyType.Boolean) return (bool)value ? "true" : "false"; if (type == SerializedPropertyType.String) return (string)value; throw new UnityCliBridge.BridgeCommandException("E_HDRP_PROPERTY_TYPE_UNSUPPORTED", "Cannot format Volume property type " + type + ".", "Use a scalar Volume parameter.");
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
// 以序列化参数的实际类型规范化读回值,避免返回原始请求字符串。
|
|
543
|
+
private static string ReadSerializedValue(SerializedProperty property, string errorPrefix)
|
|
544
|
+
{
|
|
545
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property could not be read back.", "Check the Volume component parameter and retry.");
|
|
546
|
+
switch (property.propertyType)
|
|
547
|
+
{
|
|
548
|
+
case SerializedPropertyType.Float: return property.floatValue.ToString("R", CultureInfo.InvariantCulture);
|
|
549
|
+
case SerializedPropertyType.Integer: return property.intValue.ToString(CultureInfo.InvariantCulture);
|
|
550
|
+
case SerializedPropertyType.Boolean: return property.boolValue ? "true" : "false";
|
|
551
|
+
case SerializedPropertyType.Enum: return property.enumValueIndex.ToString(CultureInfo.InvariantCulture);
|
|
552
|
+
case SerializedPropertyType.String: return property.stringValue;
|
|
553
|
+
default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property type cannot be read back: " + property.propertyType, "Use a scalar Volume parameter.");
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
private static GameObject ResolveVolume(string target, string errorPrefix)
|
|
558
|
+
{
|
|
559
|
+
var gameObject = GameObjectToolSupport.ResolveUniqueTarget(target, "A Volume target is required.");
|
|
560
|
+
if (HdrpToolSupport.VolumeType == null || gameObject.GetComponent(HdrpToolSupport.VolumeType) == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_NOT_FOUND", "Volume component not found on target: " + target, "Pass a target GameObject that has a Volume component.");
|
|
561
|
+
return gameObject;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
private static bool FitsSingle(double value) => value >= -float.MaxValue && value <= float.MaxValue;
|
|
565
|
+
private static bool HasWritableMember(Type type, string name, Type expectedType)
|
|
566
|
+
{
|
|
567
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
568
|
+
var field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public);
|
|
569
|
+
return (property != null && property.CanWrite && property.PropertyType == expectedType) || (field != null && !field.IsInitOnly && field.FieldType == expectedType);
|
|
570
|
+
}
|
|
571
|
+
private static void SetMember(Type type, Component component, string name, object value)
|
|
572
|
+
{
|
|
573
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
574
|
+
if (property != null && property.CanWrite) { property.SetValue(component, value, null); return; }
|
|
575
|
+
var field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public);
|
|
576
|
+
if (field != null && !field.IsInitOnly) { field.SetValue(component, value); return; }
|
|
577
|
+
throw new UnityCliBridge.BridgeCommandException("E_HDRP_VOLUME_SYSTEM_NOT_FOUND", "Volume member is not writable: " + name, "Use a supported render pipeline version.");
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// 兼容 Core Volume 在不同包版本中使用 public property 或 field。
|
|
581
|
+
internal static object ReadMember(Type type, Component component, string name)
|
|
582
|
+
{
|
|
583
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
584
|
+
if (property != null && property.CanRead) return property.GetValue(component, null);
|
|
585
|
+
return type.GetField(name, BindingFlags.Instance | BindingFlags.Public)?.GetValue(component);
|
|
586
|
+
}
|
|
587
|
+
private static bool IsPipelineEffectType(Type type) => type.Assembly == HdrpToolSupport.VolumeType.Assembly || (type.Namespace ?? string.Empty).StartsWith("UnityEngine.Rendering.HighDefinition", StringComparison.Ordinal);
|
|
588
|
+
|
|
589
|
+
private static void AssignProfile(Type volumeType, Component volume, UnityEngine.Object profile, string errorPrefix)
|
|
590
|
+
{
|
|
591
|
+
var property = volumeType.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
592
|
+
if (property == null || !property.CanWrite) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROFILE_ASSIGN_FAILED", "The Volume profile cannot be assigned.", "Use a supported render pipeline version with a writable Volume profile.");
|
|
593
|
+
property.SetValue(volume, profile, null);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
public sealed class HdrpPlannedEffect
|
|
598
|
+
{
|
|
599
|
+
public string Type { get; set; }
|
|
600
|
+
public string EffectType { get; set; }
|
|
601
|
+
public string Property { get; set; }
|
|
602
|
+
public string Value { get; set; }
|
|
603
|
+
public string Name { get; set; }
|
|
604
|
+
public string Target { get; set; }
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
#endif
|