@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,801 @@
|
|
|
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
|
+
/// URP 工具共享 helper:只负责反射类型解析、活动管线校验、Volume 枚举与设置读写。
|
|
15
|
+
/// 不参与工具发现,避免 3 个 URP 工具重复实现同一套反射逻辑。
|
|
16
|
+
/// </summary>
|
|
17
|
+
internal static class UrpToolSupport
|
|
18
|
+
{
|
|
19
|
+
private static bool s_typesInitialized;
|
|
20
|
+
private static Type s_urpAssetType;
|
|
21
|
+
private static Type s_rendererDataType;
|
|
22
|
+
private static Type s_rendererFeatureType;
|
|
23
|
+
private static Type s_volumeType;
|
|
24
|
+
private static Type s_volumeProfileType;
|
|
25
|
+
|
|
26
|
+
public static void EnsureUrpAvailable()
|
|
27
|
+
{
|
|
28
|
+
InitializeTypes();
|
|
29
|
+
if (s_urpAssetType == null || !IsUrpActivePipeline())
|
|
30
|
+
{
|
|
31
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
32
|
+
"E_URP_PACKAGE_NOT_FOUND",
|
|
33
|
+
"URP (Universal Render Pipeline) is not the active render pipeline, or com.unity.render-pipelines.universal is not installed.",
|
|
34
|
+
"Install URP via the Unity Package Manager and set a UniversalRenderPipelineAsset as the active render pipeline in Graphics Settings.");
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static UnityEngine.Object GetActivePipelineAsset()
|
|
39
|
+
{
|
|
40
|
+
EnsureUrpAvailable();
|
|
41
|
+
var pipeline = GraphicsSettings.currentRenderPipeline ?? GraphicsSettings.defaultRenderPipeline;
|
|
42
|
+
if (pipeline == null || !s_urpAssetType.IsInstanceOfType(pipeline))
|
|
43
|
+
{
|
|
44
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
45
|
+
"E_URP_PIPELINE_NOT_ACTIVE",
|
|
46
|
+
"No active UniversalRenderPipelineAsset found.",
|
|
47
|
+
"Set a URP asset in Graphics Settings.");
|
|
48
|
+
}
|
|
49
|
+
return pipeline;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public static Type RendererFeatureType
|
|
53
|
+
{
|
|
54
|
+
get
|
|
55
|
+
{
|
|
56
|
+
InitializeTypes();
|
|
57
|
+
return s_rendererFeatureType;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
public static Type VolumeType
|
|
62
|
+
{
|
|
63
|
+
get
|
|
64
|
+
{
|
|
65
|
+
InitializeTypes();
|
|
66
|
+
return s_volumeType;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public static Type VolumeProfileType
|
|
71
|
+
{
|
|
72
|
+
get
|
|
73
|
+
{
|
|
74
|
+
InitializeTypes();
|
|
75
|
+
return s_volumeProfileType;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public static List<UrpFeatureInfo> ListRendererFeatures()
|
|
80
|
+
{
|
|
81
|
+
var results = new List<UrpFeatureInfo>();
|
|
82
|
+
var pipeline = GetActivePipelineAsset();
|
|
83
|
+
if (s_rendererDataType == null) return results;
|
|
84
|
+
|
|
85
|
+
using (var so = new SerializedObject(pipeline))
|
|
86
|
+
{
|
|
87
|
+
var renderersProp = so.FindProperty("m_RendererDataList");
|
|
88
|
+
if (renderersProp == null) return results;
|
|
89
|
+
for (var rendererIndex = 0; rendererIndex < renderersProp.arraySize; rendererIndex++)
|
|
90
|
+
{
|
|
91
|
+
var rendererRef = renderersProp.GetArrayElementAtIndex(rendererIndex);
|
|
92
|
+
var rendererObject = rendererRef.objectReferenceValue;
|
|
93
|
+
if (rendererObject == null) continue;
|
|
94
|
+
|
|
95
|
+
using (var rendererSo = new SerializedObject(rendererObject))
|
|
96
|
+
{
|
|
97
|
+
var featuresProp = rendererSo.FindProperty("m_RendererFeatures");
|
|
98
|
+
if (featuresProp == null) continue;
|
|
99
|
+
for (var featureIndex = 0; featureIndex < featuresProp.arraySize; featureIndex++)
|
|
100
|
+
{
|
|
101
|
+
var featureRef = featuresProp.GetArrayElementAtIndex(featureIndex);
|
|
102
|
+
var featureObject = featureRef.objectReferenceValue;
|
|
103
|
+
if (featureObject == null) continue;
|
|
104
|
+
results.Add(new UrpFeatureInfo
|
|
105
|
+
{
|
|
106
|
+
RendererIndex = rendererIndex,
|
|
107
|
+
Index = featureIndex,
|
|
108
|
+
Name = featureObject.name,
|
|
109
|
+
Type = featureObject.GetType().Name,
|
|
110
|
+
Enabled = IsFeatureEnabled(featureObject)
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
public static UnityEngine.Object GetRendererData(UnityEngine.Object pipelineAsset, int rendererIndex)
|
|
121
|
+
{
|
|
122
|
+
using (var so = new SerializedObject(pipelineAsset))
|
|
123
|
+
{
|
|
124
|
+
var renderersProp = so.FindProperty("m_RendererDataList");
|
|
125
|
+
if (renderersProp == null || rendererIndex < 0 || rendererIndex >= renderersProp.arraySize)
|
|
126
|
+
{
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
return renderersProp.GetArrayElementAtIndex(rendererIndex).objectReferenceValue;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
public static Type FindFeatureType(string featureTypeName)
|
|
134
|
+
{
|
|
135
|
+
InitializeTypes();
|
|
136
|
+
return GameObjectToolSupport.FindType("UnityEngine.Rendering.Universal." + featureTypeName + ", Unity.RenderPipelines.Universal.Runtime")
|
|
137
|
+
?? GameObjectToolSupport.FindType(featureTypeName);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
public static Type FindVolumeEffectType(string effectTypeName)
|
|
141
|
+
{
|
|
142
|
+
InitializeTypes();
|
|
143
|
+
return GameObjectToolSupport.FindType("UnityEngine.Rendering.Universal." + effectTypeName + ", Unity.RenderPipelines.Universal.Runtime")
|
|
144
|
+
?? GameObjectToolSupport.FindType("UnityEngine.Rendering." + effectTypeName + ", Unity.RenderPipelines.Core.Runtime")
|
|
145
|
+
?? GameObjectToolSupport.FindType(effectTypeName);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
public static UnityEngine.Object GetVolumeProfile(Component volumeComponent)
|
|
149
|
+
{
|
|
150
|
+
InitializeTypes();
|
|
151
|
+
if (s_volumeType == null || volumeComponent == null) return null;
|
|
152
|
+
|
|
153
|
+
// "In-memory profile" means Volume.profile. Never mutate sharedProfile assets.
|
|
154
|
+
var profileProp = s_volumeType.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
155
|
+
return profileProp != null ? profileProp.GetValue(volumeComponent, null) as UnityEngine.Object : null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// 规划阶段不得触发 Volume.profile;仅检查 sharedProfile 或已经存在的 internal profile。
|
|
159
|
+
internal static UnityEngine.Object GetProfileForPlanning(Component volumeComponent)
|
|
160
|
+
{
|
|
161
|
+
if (s_volumeType == null || volumeComponent == null) return null;
|
|
162
|
+
// Volume.sharedProfile 在 Core RP 14 里是 public 字段而非属性:GetProperty 永远命中不了,
|
|
163
|
+
// PlayMode 重载后 m_InternalProfile 不被序列化,必须字段优先读回 sharedProfile。
|
|
164
|
+
var shared = s_volumeType.GetField("sharedProfile", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)?.GetValue(volumeComponent) as UnityEngine.Object;
|
|
165
|
+
if (shared != null) return shared;
|
|
166
|
+
var sharedProperty = s_volumeType.GetProperty("sharedProfile", BindingFlags.Instance | BindingFlags.Public)?.GetValue(volumeComponent, null) as UnityEngine.Object;
|
|
167
|
+
if (sharedProperty != null) return sharedProperty;
|
|
168
|
+
return s_volumeType.GetField("m_InternalProfile", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(volumeComponent) as UnityEngine.Object;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
public static List<VolumeInfo> ListVolumes(string targetName)
|
|
172
|
+
{
|
|
173
|
+
InitializeTypes();
|
|
174
|
+
var results = new List<VolumeInfo>();
|
|
175
|
+
if (s_volumeType == null) return results;
|
|
176
|
+
|
|
177
|
+
foreach (var component in Resources.FindObjectsOfTypeAll(s_volumeType))
|
|
178
|
+
{
|
|
179
|
+
var typedComponent = component as Component;
|
|
180
|
+
if (typedComponent == null || typedComponent.gameObject == null) continue;
|
|
181
|
+
if (EditorUtility.IsPersistent(typedComponent.gameObject)) continue;
|
|
182
|
+
|
|
183
|
+
var hierarchyPath = GameObjectToolSupport.HierarchyPath(typedComponent.gameObject);
|
|
184
|
+
if (!string.IsNullOrEmpty(targetName)
|
|
185
|
+
&& !string.Equals(typedComponent.gameObject.name, targetName, StringComparison.OrdinalIgnoreCase)
|
|
186
|
+
&& !string.Equals(hierarchyPath, targetName, StringComparison.OrdinalIgnoreCase))
|
|
187
|
+
{
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
var type = typedComponent.GetType();
|
|
192
|
+
var enabledProp = type.GetProperty("enabled", BindingFlags.Instance | BindingFlags.Public);
|
|
193
|
+
var profile = GetProfileForPlanning(typedComponent);
|
|
194
|
+
var profilePath = profile == null ? null : AssetDatabase.GetAssetPath(profile);
|
|
195
|
+
|
|
196
|
+
results.Add(new VolumeInfo
|
|
197
|
+
{
|
|
198
|
+
Target = new GameObjectTargetRef
|
|
199
|
+
{
|
|
200
|
+
Id = typedComponent.gameObject.GetInstanceID(),
|
|
201
|
+
Name = typedComponent.gameObject.name,
|
|
202
|
+
Path = hierarchyPath
|
|
203
|
+
},
|
|
204
|
+
Enabled = enabledProp == null || Convert.ToBoolean(enabledProp.GetValue(typedComponent, null), CultureInfo.InvariantCulture),
|
|
205
|
+
IsGlobal = Convert.ToBoolean(UrpVolumeOperations.ReadMember(type, typedComponent, "isGlobal") ?? false, CultureInfo.InvariantCulture),
|
|
206
|
+
Priority = Convert.ToDouble(UrpVolumeOperations.ReadMember(type, typedComponent, "priority") ?? 0f, CultureInfo.InvariantCulture),
|
|
207
|
+
Weight = Convert.ToDouble(UrpVolumeOperations.ReadMember(type, typedComponent, "weight") ?? 0f, CultureInfo.InvariantCulture),
|
|
208
|
+
Profile = profile == null ? null : new AssetRef
|
|
209
|
+
{
|
|
210
|
+
Name = profile.name,
|
|
211
|
+
Path = profilePath,
|
|
212
|
+
Guid = string.IsNullOrEmpty(profilePath) ? null : AssetDatabase.AssetPathToGUID(profilePath)
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return results;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
public static Dictionary<string, object> ReadSettings(UnityEngine.Object pipelineAsset)
|
|
221
|
+
{
|
|
222
|
+
var settings = new Dictionary<string, object>(StringComparer.Ordinal);
|
|
223
|
+
var type = pipelineAsset.GetType();
|
|
224
|
+
var readableProps = new[]
|
|
225
|
+
{
|
|
226
|
+
"renderScale", "supportsHDR", "msaaSampleCount", "shadowDistance",
|
|
227
|
+
"shadowCascadeCount", "cascade2Split", "cascade3Split", "cascade4Split",
|
|
228
|
+
"shadowCascadeBias", "supportsLightLayers", "debugLevel",
|
|
229
|
+
"mainLightRenderingMode", "mainLightShadowmapResolution",
|
|
230
|
+
"additionalLightsPerObjectLimit", "additionalLightShadowsSupported",
|
|
231
|
+
"additionalLightShadowmapResolution", "srpBatcher", "gpuResidentDrawerMode"
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
foreach (var propertyName in readableProps)
|
|
235
|
+
{
|
|
236
|
+
var property = type.GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public);
|
|
237
|
+
if (property == null) continue;
|
|
238
|
+
try
|
|
239
|
+
{
|
|
240
|
+
var value = property.GetValue(pipelineAsset, null);
|
|
241
|
+
if (value is float f) settings[propertyName] = f;
|
|
242
|
+
else if (value is double d) settings[propertyName] = d;
|
|
243
|
+
else if (value is int i) settings[propertyName] = i;
|
|
244
|
+
else if (value is long l) settings[propertyName] = l;
|
|
245
|
+
else if (value is bool b) settings[propertyName] = b;
|
|
246
|
+
else if (value is Enum e) settings[propertyName] = e.ToString();
|
|
247
|
+
else if (value != null) settings[propertyName] = value.ToString();
|
|
248
|
+
}
|
|
249
|
+
catch
|
|
250
|
+
{
|
|
251
|
+
// 不可读属性不参与结果。
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return settings;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
public static object ConvertValue(string value, Type targetType)
|
|
259
|
+
{
|
|
260
|
+
if (targetType == typeof(float)) return ParseFiniteSingle(value, "URP setting");
|
|
261
|
+
if (targetType == typeof(double)) return ParseFiniteDouble(value, "URP setting");
|
|
262
|
+
if (targetType == typeof(int)) return int.Parse(value, CultureInfo.InvariantCulture);
|
|
263
|
+
if (targetType == typeof(long)) return long.Parse(value, CultureInfo.InvariantCulture);
|
|
264
|
+
if (targetType == typeof(bool)) return bool.Parse(value);
|
|
265
|
+
if (targetType.IsEnum) return ParseDefinedEnum(targetType, value, "URP setting");
|
|
266
|
+
if (targetType == typeof(string)) return value;
|
|
267
|
+
return Convert.ChangeType(value, targetType, CultureInfo.InvariantCulture);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
internal sealed class SettingMutationPlan
|
|
271
|
+
{
|
|
272
|
+
internal UnityEngine.Object Pipeline { get; set; }
|
|
273
|
+
internal string PropertyName { get; set; }
|
|
274
|
+
internal PropertyInfo PublicProperty { get; set; }
|
|
275
|
+
internal SerializedObject SerializedObject { get; set; }
|
|
276
|
+
internal SerializedProperty SerializedProperty { get; set; }
|
|
277
|
+
internal string SerializedPropertyPath { get; set; }
|
|
278
|
+
internal SerializedPropertyType SerializedPropertyType { get; set; }
|
|
279
|
+
internal object ExpectedValue { get; set; }
|
|
280
|
+
internal string ExpectedReadback { get; set; }
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// 在 barrier 前冻结写入目标、目标类型和严格转换后的期望值。
|
|
284
|
+
internal static SettingMutationPlan PrepareSetting(UnityEngine.Object pipelineAsset, string propertyName, string value)
|
|
285
|
+
{
|
|
286
|
+
if (pipelineAsset == null || string.IsNullOrWhiteSpace(propertyName) || value == null)
|
|
287
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_NOT_FOUND", "URP setting property and value are required.", "Pass a writable property and a compatible value.");
|
|
288
|
+
var publicProperty = pipelineAsset.GetType().GetProperty(propertyName, BindingFlags.Instance | BindingFlags.Public);
|
|
289
|
+
if (publicProperty != null && publicProperty.CanWrite && publicProperty.GetIndexParameters().Length == 0)
|
|
290
|
+
return new SettingMutationPlan { Pipeline = pipelineAsset, PropertyName = propertyName, PublicProperty = publicProperty, ExpectedValue = ConvertValue(value, publicProperty.PropertyType) };
|
|
291
|
+
var serialized = new SerializedObject(pipelineAsset);
|
|
292
|
+
var property = serialized.FindProperty(propertyName) ?? serialized.FindProperty("m_" + char.ToUpper(propertyName[0]) + propertyName.Substring(1));
|
|
293
|
+
if (property == null)
|
|
294
|
+
{
|
|
295
|
+
serialized.Dispose();
|
|
296
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_NOT_FOUND", "URP setting not found: " + propertyName, "Run urp.settings.get to inspect readable settings.");
|
|
297
|
+
}
|
|
298
|
+
var expected = ConvertSerializedPropertyValue(property, value, "URP setting");
|
|
299
|
+
return new SettingMutationPlan { Pipeline = pipelineAsset, PropertyName = propertyName, SerializedObject = serialized, SerializedProperty = property, SerializedPropertyPath = property.propertyPath, SerializedPropertyType = property.propertyType, ExpectedValue = expected, ExpectedReadback = FormatSerializedPropertyValue(property.propertyType, expected) };
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
internal static void ApplySetting(SettingMutationPlan plan)
|
|
303
|
+
{
|
|
304
|
+
if (plan == null) throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_SET_FAILED", "URP setting plan is unavailable.", "Retry the request.");
|
|
305
|
+
if (plan.PublicProperty != null)
|
|
306
|
+
{
|
|
307
|
+
plan.PublicProperty.SetValue(plan.Pipeline, plan.ExpectedValue, null);
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (plan.SerializedObject == null || plan.SerializedProperty == null || plan.SerializedProperty.propertyType != plan.SerializedPropertyType)
|
|
311
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_SET_FAILED", "URP serialized setting plan is no longer valid.", "Retry the request.");
|
|
312
|
+
SetSerializedPropertyValue(plan.SerializedProperty, plan.ExpectedValue, plan.SerializedPropertyType);
|
|
313
|
+
plan.SerializedObject.ApplyModifiedProperties();
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
internal static string VerifySettingReadback(SettingMutationPlan plan, UnityEngine.Object reloadedPipeline)
|
|
317
|
+
{
|
|
318
|
+
if (plan == null || reloadedPipeline == null) throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_VERIFY_FAILED", "URP pipeline asset could not be independently reloaded.", "Check the active pipeline asset and retry.");
|
|
319
|
+
if (plan.PublicProperty != null)
|
|
320
|
+
{
|
|
321
|
+
var observed = reloadedPipeline.GetType().GetProperty(plan.PublicProperty.Name, BindingFlags.Instance | BindingFlags.Public);
|
|
322
|
+
var actual = observed == null || !observed.CanRead || observed.PropertyType != plan.PublicProperty.PropertyType ? null : observed.GetValue(reloadedPipeline, null);
|
|
323
|
+
if (!Equals(actual, plan.ExpectedValue)) throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_VERIFY_FAILED", "URP setting did not retain the requested value: " + plan.PropertyName, "Check the pipeline asset and retry.");
|
|
324
|
+
return Convert.ToString(actual, CultureInfo.InvariantCulture);
|
|
325
|
+
}
|
|
326
|
+
using (var observed = new SerializedObject(reloadedPipeline))
|
|
327
|
+
{
|
|
328
|
+
observed.Update();
|
|
329
|
+
var property = observed.FindProperty(plan.SerializedPropertyPath);
|
|
330
|
+
var actual = property == null || property.propertyType != plan.SerializedPropertyType ? null : ReadSerializedPropertyValue(property);
|
|
331
|
+
if (!string.Equals(actual, plan.ExpectedReadback, StringComparison.Ordinal)) throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_VERIFY_FAILED", "URP setting did not retain the requested value: " + plan.PropertyName, "Check the pipeline asset and retry.");
|
|
332
|
+
return actual;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// 保留现有调用方的验证入口;新写入路径应使用返回的冻结计划。
|
|
337
|
+
internal static void ValidateSetting(UnityEngine.Object pipelineAsset, string propertyName, string value)
|
|
338
|
+
{
|
|
339
|
+
PrepareSetting(pipelineAsset, propertyName, value);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
internal static void ValidateSerializedPropertyValue(SerializedProperty property, string value)
|
|
343
|
+
{
|
|
344
|
+
switch (property.propertyType)
|
|
345
|
+
{
|
|
346
|
+
case SerializedPropertyType.Float: ParseFiniteSingle(value, "URP setting"); break;
|
|
347
|
+
case SerializedPropertyType.Integer: int.Parse(value, CultureInfo.InvariantCulture); break;
|
|
348
|
+
case SerializedPropertyType.Boolean: bool.Parse(value); break;
|
|
349
|
+
case SerializedPropertyType.Enum: ParseSerializedEnumIndex(property, value, "URP setting"); break;
|
|
350
|
+
case SerializedPropertyType.String: break;
|
|
351
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_URP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + property.propertyType + " via string value.", "Use direct Unity editing for complex property types.");
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
private static object ConvertSerializedPropertyValue(SerializedProperty property, string value, string field)
|
|
356
|
+
{
|
|
357
|
+
switch (property.propertyType)
|
|
358
|
+
{
|
|
359
|
+
case SerializedPropertyType.Float: return ParseFiniteSingle(value, field);
|
|
360
|
+
case SerializedPropertyType.Integer: return int.Parse(value, CultureInfo.InvariantCulture);
|
|
361
|
+
case SerializedPropertyType.Boolean: return bool.Parse(value);
|
|
362
|
+
case SerializedPropertyType.Enum: return ParseSerializedEnumIndex(property, value, field);
|
|
363
|
+
case SerializedPropertyType.String: return value;
|
|
364
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_URP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + property.propertyType + " via string value.", "Use direct Unity editing for complex property types.");
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
private static string FormatSerializedPropertyValue(SerializedPropertyType type, object value)
|
|
369
|
+
{
|
|
370
|
+
if (type == SerializedPropertyType.Float) return ((float)value).ToString("R", CultureInfo.InvariantCulture);
|
|
371
|
+
if (type == SerializedPropertyType.Integer || type == SerializedPropertyType.Enum) return Convert.ToInt32(value, CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture);
|
|
372
|
+
if (type == SerializedPropertyType.Boolean) return (bool)value ? "true" : "false";
|
|
373
|
+
if (type == SerializedPropertyType.String) return (string)value;
|
|
374
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_PROPERTY_TYPE_UNSUPPORTED", "Cannot format property type " + type + ".", "Use a scalar pipeline setting.");
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
public static void SetSerializedPropertyValue(SerializedProperty property, string value)
|
|
378
|
+
{
|
|
379
|
+
switch (property.propertyType)
|
|
380
|
+
{
|
|
381
|
+
case SerializedPropertyType.Float:
|
|
382
|
+
property.floatValue = ParseFiniteSingle(value, "URP setting");
|
|
383
|
+
break;
|
|
384
|
+
case SerializedPropertyType.Integer:
|
|
385
|
+
property.intValue = int.Parse(value, CultureInfo.InvariantCulture);
|
|
386
|
+
break;
|
|
387
|
+
case SerializedPropertyType.Boolean:
|
|
388
|
+
property.boolValue = bool.Parse(value);
|
|
389
|
+
break;
|
|
390
|
+
case SerializedPropertyType.Enum:
|
|
391
|
+
property.enumValueIndex = ParseSerializedEnumIndex(property, value, "URP setting");
|
|
392
|
+
break;
|
|
393
|
+
case SerializedPropertyType.String:
|
|
394
|
+
property.stringValue = value;
|
|
395
|
+
break;
|
|
396
|
+
default:
|
|
397
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
398
|
+
"E_URP_PROPERTY_TYPE_UNSUPPORTED",
|
|
399
|
+
"Cannot set property type " + property.propertyType + " via string value.",
|
|
400
|
+
"Use direct Unity editing for complex property types.");
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
internal static void SetSerializedPropertyValue(SerializedProperty property, object value, SerializedPropertyType plannedType)
|
|
405
|
+
{
|
|
406
|
+
if (property == null || property.propertyType != plannedType)
|
|
407
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_SET_FAILED", "URP serialized setting no longer matches its prepared plan.", "Retry the request.");
|
|
408
|
+
switch (plannedType)
|
|
409
|
+
{
|
|
410
|
+
case SerializedPropertyType.Float: property.floatValue = (float)value; break;
|
|
411
|
+
case SerializedPropertyType.Integer: property.intValue = (int)value; break;
|
|
412
|
+
case SerializedPropertyType.Boolean: property.boolValue = (bool)value; break;
|
|
413
|
+
case SerializedPropertyType.Enum: property.enumValueIndex = (int)value; break;
|
|
414
|
+
case SerializedPropertyType.String: property.stringValue = (string)value; break;
|
|
415
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_URP_PROPERTY_TYPE_UNSUPPORTED", "Cannot set property type " + plannedType + " via a prepared value.", "Use a scalar pipeline setting.");
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// 仅允许可稳定比较的标量值作为写入完成证明。
|
|
420
|
+
public static string ReadSerializedPropertyValue(SerializedProperty property)
|
|
421
|
+
{
|
|
422
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_VERIFY_FAILED", "URP setting could not be read back.", "Check the pipeline asset and retry.");
|
|
423
|
+
switch (property.propertyType)
|
|
424
|
+
{
|
|
425
|
+
case SerializedPropertyType.Float: return property.floatValue.ToString("R", CultureInfo.InvariantCulture);
|
|
426
|
+
case SerializedPropertyType.Integer: return property.intValue.ToString(CultureInfo.InvariantCulture);
|
|
427
|
+
case SerializedPropertyType.Boolean: return property.boolValue ? "true" : "false";
|
|
428
|
+
case SerializedPropertyType.Enum: return property.enumValueIndex.ToString(CultureInfo.InvariantCulture);
|
|
429
|
+
case SerializedPropertyType.String: return property.stringValue;
|
|
430
|
+
default: throw new UnityCliBridge.BridgeCommandException("E_URP_SETTING_VERIFY_FAILED", "URP setting type cannot be read back: " + property.propertyType, "Use a scalar pipeline setting.");
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
internal static float ParseFiniteSingle(string value, string field)
|
|
435
|
+
{
|
|
436
|
+
var parsed = double.Parse(value, CultureInfo.InvariantCulture);
|
|
437
|
+
if (double.IsNaN(parsed) || double.IsInfinity(parsed) || parsed < -float.MaxValue || parsed > float.MaxValue)
|
|
438
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_VALUE_INVALID", field + " must be finite and representable as a single-precision float.", "Pass a finite value in the single-precision range.");
|
|
439
|
+
return (float)parsed;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
internal static double ParseFiniteDouble(string value, string field)
|
|
443
|
+
{
|
|
444
|
+
var parsed = double.Parse(value, CultureInfo.InvariantCulture);
|
|
445
|
+
if (double.IsNaN(parsed) || double.IsInfinity(parsed))
|
|
446
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_VALUE_INVALID", field + " must be finite.", "Pass a finite numeric value.");
|
|
447
|
+
return parsed;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
internal static object ParseDefinedEnum(Type enumType, string value, string field)
|
|
451
|
+
{
|
|
452
|
+
var parsed = Enum.Parse(enumType, value, true);
|
|
453
|
+
if (!Enum.IsDefined(enumType, parsed))
|
|
454
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_VALUE_INVALID", field + " must be a defined enum value.", "Pass a defined enum member name or value.");
|
|
455
|
+
return parsed;
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
internal static int ParseSerializedEnumIndex(SerializedProperty property, string value, string field)
|
|
459
|
+
{
|
|
460
|
+
var index = int.Parse(value, CultureInfo.InvariantCulture);
|
|
461
|
+
if (index < 0 || index >= property.enumDisplayNames.Length)
|
|
462
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_VALUE_INVALID", field + " must be a defined enum value.", "Pass an enum index exposed by the target property.");
|
|
463
|
+
return index;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
private static void InitializeTypes()
|
|
467
|
+
{
|
|
468
|
+
if (s_typesInitialized) return;
|
|
469
|
+
s_typesInitialized = true;
|
|
470
|
+
s_urpAssetType = GameObjectToolSupport.FindType("UnityEngine.Rendering.Universal.UniversalRenderPipelineAsset, Unity.RenderPipelines.Universal.Runtime");
|
|
471
|
+
s_rendererDataType = GameObjectToolSupport.FindType("UnityEngine.Rendering.Universal.ScriptableRendererData, Unity.RenderPipelines.Universal.Runtime");
|
|
472
|
+
s_rendererFeatureType = GameObjectToolSupport.FindType("UnityEngine.Rendering.Universal.ScriptableRendererFeature, Unity.RenderPipelines.Universal.Runtime");
|
|
473
|
+
s_volumeType = GameObjectToolSupport.FindType("UnityEngine.Rendering.Volume, Unity.RenderPipelines.Core.Runtime");
|
|
474
|
+
s_volumeProfileType = GameObjectToolSupport.FindType("UnityEngine.Rendering.VolumeProfile, Unity.RenderPipelines.Core.Runtime");
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
private static bool IsUrpActivePipeline()
|
|
478
|
+
{
|
|
479
|
+
var pipeline = GraphicsSettings.currentRenderPipeline ?? GraphicsSettings.defaultRenderPipeline;
|
|
480
|
+
if (pipeline == null) return false;
|
|
481
|
+
var typeName = pipeline.GetType().FullName ?? string.Empty;
|
|
482
|
+
return typeName.IndexOf("Universal", StringComparison.OrdinalIgnoreCase) >= 0
|
|
483
|
+
|| typeName.IndexOf("URP", StringComparison.OrdinalIgnoreCase) >= 0;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
internal static bool IsFeatureEnabled(UnityEngine.Object feature)
|
|
487
|
+
{
|
|
488
|
+
var activeProp = feature.GetType().GetProperty("isActive", BindingFlags.Instance | BindingFlags.Public);
|
|
489
|
+
if (activeProp != null) return Convert.ToBoolean(activeProp.GetValue(feature, null), CultureInfo.InvariantCulture);
|
|
490
|
+
var enabledProp = feature.GetType().GetProperty("enabled", BindingFlags.Instance | BindingFlags.Public);
|
|
491
|
+
if (enabledProp != null) return Convert.ToBoolean(enabledProp.GetValue(feature, null), CultureInfo.InvariantCulture);
|
|
492
|
+
return true;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
internal static class UrpVolumeOperations
|
|
497
|
+
{
|
|
498
|
+
internal sealed class CreatedVolume
|
|
499
|
+
{
|
|
500
|
+
public GameObject GameObject { get; set; }
|
|
501
|
+
public bool IsGlobal { get; set; }
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
internal sealed class SetVolumeResult
|
|
505
|
+
{
|
|
506
|
+
public GameObject GameObject { get; set; }
|
|
507
|
+
public string ObservedEffectType { get; set; }
|
|
508
|
+
public string Value { get; set; }
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
internal sealed class AddedVolumeEffectResult
|
|
512
|
+
{
|
|
513
|
+
public GameObject GameObject { get; set; }
|
|
514
|
+
public string ObservedEffectType { get; set; }
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
public static void RequireTarget(string target, string operation)
|
|
518
|
+
{
|
|
519
|
+
if (string.IsNullOrEmpty(target))
|
|
520
|
+
{
|
|
521
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
522
|
+
"E_URP_VOLUME_TARGET_REQUIRED",
|
|
523
|
+
operation + " requires a target.",
|
|
524
|
+
"Pass the target Volume GameObject name, hierarchy path, or instance id.");
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
internal sealed class VolumeCreateMutationPlan
|
|
529
|
+
{
|
|
530
|
+
internal float? Priority { get; set; }
|
|
531
|
+
internal float? Weight { get; set; }
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
public static VolumeCreateMutationPlan ValidateCreate(double? priority, double? weight, string errorPrefix)
|
|
535
|
+
{
|
|
536
|
+
if (priority.HasValue && (double.IsNaN(priority.Value) || double.IsInfinity(priority.Value))) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PRIORITY_INVALID", "Volume priority must be finite.", "Pass a finite priority.");
|
|
537
|
+
if (weight.HasValue && (double.IsNaN(weight.Value) || double.IsInfinity(weight.Value) || weight.Value < 0d || weight.Value > 1d)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_WEIGHT_OUT_OF_RANGE", "Volume weight must be finite and between 0 and 1.", "Pass a weight in the inclusive range [0, 1].");
|
|
538
|
+
var volumeType = UrpToolSupport.VolumeType;
|
|
539
|
+
var profileProperty = volumeType?.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
540
|
+
if (volumeType == null || UrpToolSupport.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.");
|
|
541
|
+
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.");
|
|
542
|
+
return new VolumeCreateMutationPlan
|
|
543
|
+
{
|
|
544
|
+
Priority = priority.HasValue ? (float)priority.Value : null,
|
|
545
|
+
Weight = weight.HasValue ? (float)weight.Value : null
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
public static CreatedVolume Create(string name, bool? isGlobal, VolumeCreateMutationPlan plan, string defaultPrefix, string errorPrefix)
|
|
550
|
+
{
|
|
551
|
+
var volumeType = UrpToolSupport.VolumeType;
|
|
552
|
+
var profileType = UrpToolSupport.VolumeProfileType;
|
|
553
|
+
if (volumeType == null || profileType == null)
|
|
554
|
+
{
|
|
555
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SYSTEM_NOT_FOUND", "Volume system types not found.", "Ensure the render pipeline package is fully imported.");
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
var gameObject = new GameObject(string.IsNullOrEmpty(name) ? defaultPrefix + "Volume" : name);
|
|
559
|
+
var volume = gameObject.AddComponent(volumeType);
|
|
560
|
+
var global = isGlobal ?? true;
|
|
561
|
+
SetMember(volumeType, volume, "isGlobal", global);
|
|
562
|
+
if (plan.Priority.HasValue) SetMember(volumeType, volume, "priority", plan.Priority.Value);
|
|
563
|
+
if (plan.Weight.HasValue) SetMember(volumeType, volume, "weight", plan.Weight.Value);
|
|
564
|
+
|
|
565
|
+
var profile = ScriptableObject.CreateInstance(profileType);
|
|
566
|
+
profile.name = gameObject.name + "Profile";
|
|
567
|
+
AssignProfile(volumeType, volume, profile, errorPrefix);
|
|
568
|
+
var observedObject = GameObjectToolSupport.ResolveUniqueTarget(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), "Created Volume could not be resolved.");
|
|
569
|
+
var observedVolume = observedObject.GetComponent(volumeType);
|
|
570
|
+
var observedProfile = observedVolume == null ? null : UrpToolSupport.GetVolumeProfile(observedVolume);
|
|
571
|
+
if (observedVolume == null || observedProfile == null || observedProfile.GetInstanceID() != profile.GetInstanceID())
|
|
572
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume component or profile could not be read back.", "Check the Volume system and retry.");
|
|
573
|
+
if (Convert.ToBoolean(ReadMember(volumeType, observedVolume, "isGlobal") ?? false, CultureInfo.InvariantCulture) != global)
|
|
574
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Created Volume global state did not retain the requested value.", "Check the Volume system and retry.");
|
|
575
|
+
var observedPriority = ReadMember(volumeType, observedVolume, "priority");
|
|
576
|
+
var observedWeight = ReadMember(volumeType, observedVolume, "weight");
|
|
577
|
+
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.");
|
|
578
|
+
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.");
|
|
579
|
+
UnityCliSceneMutation.RegisterCreatedObject(gameObject, "UnityCli " + defaultPrefix + " Volume Create");
|
|
580
|
+
UnityCliSceneMutation.MarkSceneDirty(gameObject.scene);
|
|
581
|
+
return new CreatedVolume { GameObject = observedObject, IsGlobal = global };
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
public static AddedVolumeEffectResult AddEffect(string target, string effectTypeName, string errorPrefix, Func<string, Type> findEffectType)
|
|
585
|
+
{
|
|
586
|
+
RequireTarget(target, "add-effect");
|
|
587
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "add-effect requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
588
|
+
var gameObject = ResolveVolume(target, errorPrefix);
|
|
589
|
+
var effectType = findEffectType(effectTypeName);
|
|
590
|
+
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.");
|
|
591
|
+
var profile = UrpToolSupport.GetVolumeProfile(gameObject.GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
592
|
+
var addMethod = UrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
593
|
+
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 urp.volume.create or assign a profile before adding an effect.");
|
|
594
|
+
var countBefore = profile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
595
|
+
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.");
|
|
596
|
+
addMethod.Invoke(profile, new object[] { effectType, true });
|
|
597
|
+
var observedObject = ResolveVolume(gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
598
|
+
var observedProfile = UrpToolSupport.GetVolumeProfile(observedObject.GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
599
|
+
var observed = observedProfile?.components.FirstOrDefault(component => component != null && effectType.IsInstanceOfType(component));
|
|
600
|
+
var countAfter = observedProfile == null ? 0 : observedProfile.components.Count(component => component != null && effectType.IsInstanceOfType(component));
|
|
601
|
+
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.");
|
|
602
|
+
UnityCliSceneMutation.MarkSceneDirty(gameObject.scene);
|
|
603
|
+
return new AddedVolumeEffectResult { GameObject = gameObject, ObservedEffectType = observed.GetType().FullName };
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
// 在提交前完成 target、effect type、profile 和序列化路径解析。
|
|
607
|
+
internal static void ValidateAddEffect(string target, string effectTypeName, string errorPrefix, Func<string, Type> findEffectType)
|
|
608
|
+
{
|
|
609
|
+
RequireTarget(target, "add-effect");
|
|
610
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "add-effect requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
611
|
+
var effectType = findEffectType(effectTypeName);
|
|
612
|
+
if (effectType == null || effectType == typeof(VolumeComponent) || effectType.IsAbstract || !typeof(VolumeComponent).IsAssignableFrom(effectType) || !IsPipelineEffectType(effectType)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_NOT_FOUND", "Concrete URP VolumeComponent effect type not found: " + effectTypeName, "Use a concrete effect from the active URP pipeline.");
|
|
613
|
+
var profile = UrpToolSupport.GetProfileForPlanning(ResolveVolume(target, errorPrefix).GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
614
|
+
var addMethod = UrpToolSupport.VolumeProfileType.GetMethod("Add", new[] { typeof(Type), typeof(bool) });
|
|
615
|
+
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 with urp.volume.create or assign a profile before adding an effect.");
|
|
616
|
+
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.");
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
internal sealed class VolumeSetMutationPlan
|
|
620
|
+
{
|
|
621
|
+
internal int GameObjectId { get; set; }
|
|
622
|
+
internal int PlanningProfileId { get; set; }
|
|
623
|
+
internal int SharedProfileId { get; set; }
|
|
624
|
+
internal Type EffectType { get; set; }
|
|
625
|
+
internal string PropertyPath { get; set; }
|
|
626
|
+
internal SerializedPropertyType PropertyType { get; set; }
|
|
627
|
+
internal object ExpectedValue { get; set; }
|
|
628
|
+
internal string ExpectedReadback { get; set; }
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
// 在 barrier 前冻结 Volume、profile、effect、属性路径和严格转换后的标量值。
|
|
632
|
+
internal static VolumeSetMutationPlan ValidateSet(string target, string effectTypeName, string propertyPath, string value, string errorPrefix, Func<string, Type> findEffectType)
|
|
633
|
+
{
|
|
634
|
+
RequireTarget(target, "set");
|
|
635
|
+
if (string.IsNullOrEmpty(effectTypeName)) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_EFFECT_TYPE_REQUIRED", "set requires effectType.", "Pass a VolumeComponent-derived type name.");
|
|
636
|
+
if (string.IsNullOrEmpty(propertyPath) || value == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROPERTY_REQUIRED", "set requires property and value.", "Pass a SerializedProperty path in property and the new value as a string.");
|
|
637
|
+
var gameObject = ResolveVolume(target, errorPrefix);
|
|
638
|
+
var effectType = findEffectType(effectTypeName);
|
|
639
|
+
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.");
|
|
640
|
+
var volume = gameObject.GetComponent(UrpToolSupport.VolumeType);
|
|
641
|
+
var profile = UrpToolSupport.GetProfileForPlanning(volume) as VolumeProfile;
|
|
642
|
+
var effect = profile == null ? null : profile.components.FirstOrDefault(component => component != null && component.GetType() == effectType);
|
|
643
|
+
if (effect == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_EFFECT_NOT_FOUND", "The requested effect is not present: " + effectTypeName, "Add the effect with urp.volume.add-effect before setting it.");
|
|
644
|
+
using (var serialized = new SerializedObject(effect))
|
|
645
|
+
{
|
|
646
|
+
var property = serialized.FindProperty(propertyPath);
|
|
647
|
+
if (property == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_PROPERTY_NOT_FOUND", "Volume effect property not found: " + propertyPath, "Pass a valid SerializedProperty path for the effect.");
|
|
648
|
+
var expected = PrepareVolumeScalar(property, value, errorPrefix);
|
|
649
|
+
var shared = volume.GetType().GetProperty("sharedProfile", BindingFlags.Instance | BindingFlags.Public)?.GetValue(volume, null) as UnityEngine.Object;
|
|
650
|
+
return new VolumeSetMutationPlan { GameObjectId = gameObject.GetInstanceID(), PlanningProfileId = profile.GetInstanceID(), SharedProfileId = shared == null ? 0 : shared.GetInstanceID(), EffectType = effectType, PropertyPath = propertyPath, PropertyType = property.propertyType, ExpectedValue = expected, ExpectedReadback = FormatVolumeScalar(property.propertyType, expected, errorPrefix) };
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// barrier 后首次访问 Volume.profile,随后只在该独立 runtime profile 中按冻结类型写入。
|
|
655
|
+
public static SetVolumeResult Set(VolumeSetMutationPlan plan, string errorPrefix)
|
|
656
|
+
{
|
|
657
|
+
if (plan == null) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SET_FAILED", "Prepared URP Volume mutation plan is no longer valid.", "Retry the request.");
|
|
658
|
+
var observedObject = ResolveVolume(plan.GameObjectId.ToString(CultureInfo.InvariantCulture), errorPrefix);
|
|
659
|
+
var mutationProfile = UrpToolSupport.GetVolumeProfile(observedObject.GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
660
|
+
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.");
|
|
661
|
+
var mutationEffect = mutationProfile.components.FirstOrDefault(component => component != null && component.GetType() == plan.EffectType);
|
|
662
|
+
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.");
|
|
663
|
+
using (var mutationSerialized = new SerializedObject(mutationEffect))
|
|
664
|
+
{
|
|
665
|
+
var mutationProperty = mutationSerialized.FindProperty(plan.PropertyPath);
|
|
666
|
+
if (mutationProperty == null || mutationProperty.propertyType != plan.PropertyType) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property no longer matches its prepared type.", "Check the Volume component parameter and retry.");
|
|
667
|
+
ApplyVolumeScalar(mutationProperty, plan.PropertyType, plan.ExpectedValue, errorPrefix);
|
|
668
|
+
mutationSerialized.ApplyModifiedProperties();
|
|
669
|
+
}
|
|
670
|
+
var observedProfile = UrpToolSupport.GetVolumeProfile(observedObject.GetComponent(UrpToolSupport.VolumeType)) as VolumeProfile;
|
|
671
|
+
var observedEffect = observedProfile?.components.FirstOrDefault(component => component != null && component.GetType() == plan.EffectType);
|
|
672
|
+
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.");
|
|
673
|
+
string actualValue;
|
|
674
|
+
using (var observedSerialized = new SerializedObject(observedEffect))
|
|
675
|
+
{
|
|
676
|
+
observedSerialized.Update();
|
|
677
|
+
var actualProperty = observedSerialized.FindProperty(plan.PropertyPath);
|
|
678
|
+
if (actualProperty == null || actualProperty.propertyType != plan.PropertyType) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property no longer matches its prepared type.", "Check the Volume component parameter and retry.");
|
|
679
|
+
actualValue = ReadSerializedValue(actualProperty, errorPrefix);
|
|
680
|
+
}
|
|
681
|
+
if (!string.Equals(actualValue, 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.");
|
|
682
|
+
UnityCliSceneMutation.MarkSceneDirty(observedObject.scene);
|
|
683
|
+
return new SetVolumeResult { GameObject = observedObject, ObservedEffectType = observedEffect.GetType().FullName, Value = actualValue };
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
private static object PrepareVolumeScalar(SerializedProperty property, string value, string errorPrefix)
|
|
687
|
+
{
|
|
688
|
+
switch (property.propertyType)
|
|
689
|
+
{
|
|
690
|
+
case SerializedPropertyType.Float: return UrpToolSupport.ParseFiniteSingle(value, "URP Volume value");
|
|
691
|
+
case SerializedPropertyType.Integer: return int.Parse(value, CultureInfo.InvariantCulture);
|
|
692
|
+
case SerializedPropertyType.Boolean: return bool.Parse(value);
|
|
693
|
+
case SerializedPropertyType.Enum: return UrpToolSupport.ParseSerializedEnumIndex(property, value, "URP Volume value");
|
|
694
|
+
case SerializedPropertyType.String: return value;
|
|
695
|
+
default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PROPERTY_TYPE_UNSUPPORTED", "Cannot set Volume property type " + property.propertyType + " via string value.", "Use a scalar Volume parameter.");
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
private static void ApplyVolumeScalar(SerializedProperty property, SerializedPropertyType type, object value, string errorPrefix)
|
|
700
|
+
{
|
|
701
|
+
if (property.propertyType != type) throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_SET_FAILED", "Prepared Volume property type changed before apply.", "Retry the request.");
|
|
702
|
+
switch (type)
|
|
703
|
+
{
|
|
704
|
+
case SerializedPropertyType.Float: property.floatValue = (float)value; break;
|
|
705
|
+
case SerializedPropertyType.Integer: property.intValue = (int)value; break;
|
|
706
|
+
case SerializedPropertyType.Boolean: property.boolValue = (bool)value; break;
|
|
707
|
+
case SerializedPropertyType.Enum: property.enumValueIndex = (int)value; break;
|
|
708
|
+
case SerializedPropertyType.String: property.stringValue = (string)value; break;
|
|
709
|
+
default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PROPERTY_TYPE_UNSUPPORTED", "Cannot set Volume property type " + type + " via a prepared value.", "Use a scalar Volume parameter.");
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
private static string FormatVolumeScalar(SerializedPropertyType type, object value, string errorPrefix)
|
|
714
|
+
{
|
|
715
|
+
if (type == SerializedPropertyType.Float) return ((float)value).ToString("R", CultureInfo.InvariantCulture);
|
|
716
|
+
if (type == SerializedPropertyType.Integer || type == SerializedPropertyType.Enum) return Convert.ToInt32(value, CultureInfo.InvariantCulture).ToString(CultureInfo.InvariantCulture);
|
|
717
|
+
if (type == SerializedPropertyType.Boolean) return (bool)value ? "true" : "false";
|
|
718
|
+
if (type == SerializedPropertyType.String) return (string)value;
|
|
719
|
+
throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_PROPERTY_TYPE_UNSUPPORTED", "Cannot format Volume property type " + type + ".", "Use a scalar Volume parameter.");
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
// 以序列化参数的实际类型规范化读回值,避免返回原始请求字符串。
|
|
723
|
+
private static string ReadSerializedValue(SerializedProperty property, string errorPrefix)
|
|
724
|
+
{
|
|
725
|
+
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.");
|
|
726
|
+
switch (property.propertyType)
|
|
727
|
+
{
|
|
728
|
+
case SerializedPropertyType.Float: return property.floatValue.ToString("R", CultureInfo.InvariantCulture);
|
|
729
|
+
case SerializedPropertyType.Integer: return property.intValue.ToString(CultureInfo.InvariantCulture);
|
|
730
|
+
case SerializedPropertyType.Boolean: return property.boolValue ? "true" : "false";
|
|
731
|
+
case SerializedPropertyType.Enum: return property.enumValueIndex.ToString(CultureInfo.InvariantCulture);
|
|
732
|
+
case SerializedPropertyType.String: return property.stringValue;
|
|
733
|
+
default: throw new UnityCliBridge.BridgeCommandException(errorPrefix + "_VOLUME_VERIFY_FAILED", "Volume effect property type cannot be read back: " + property.propertyType, "Use a scalar Volume parameter.");
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
private static GameObject ResolveVolume(string target, string errorPrefix)
|
|
738
|
+
{
|
|
739
|
+
var gameObject = GameObjectToolSupport.ResolveUniqueTarget(target, "A Volume target is required.");
|
|
740
|
+
if (UrpToolSupport.VolumeType == null || gameObject.GetComponent(UrpToolSupport.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.");
|
|
741
|
+
return gameObject;
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
private static bool FitsSingle(double value) => value >= -float.MaxValue && value <= float.MaxValue;
|
|
745
|
+
private static bool HasWritableMember(Type type, string name, Type expectedType)
|
|
746
|
+
{
|
|
747
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
748
|
+
var field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public);
|
|
749
|
+
return (property != null && property.CanWrite && property.PropertyType == expectedType) || (field != null && !field.IsInitOnly && field.FieldType == expectedType);
|
|
750
|
+
}
|
|
751
|
+
private static void SetMember(Type type, Component component, string name, object value)
|
|
752
|
+
{
|
|
753
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
754
|
+
if (property != null && property.CanWrite) { property.SetValue(component, value, null); return; }
|
|
755
|
+
var field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public);
|
|
756
|
+
if (field != null && !field.IsInitOnly) { field.SetValue(component, value); return; }
|
|
757
|
+
throw new UnityCliBridge.BridgeCommandException("E_URP_VOLUME_SYSTEM_NOT_FOUND", "Volume member is not writable: " + name, "Use a supported render pipeline version.");
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// 兼容 Core Volume 在不同包版本中使用 public property 或 field。
|
|
761
|
+
internal static object ReadMember(Type type, Component component, string name)
|
|
762
|
+
{
|
|
763
|
+
var property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);
|
|
764
|
+
if (property != null && property.CanRead) return property.GetValue(component, null);
|
|
765
|
+
return type.GetField(name, BindingFlags.Instance | BindingFlags.Public)?.GetValue(component);
|
|
766
|
+
}
|
|
767
|
+
private static bool IsPipelineEffectType(Type type) => type.Assembly == UrpToolSupport.VolumeType.Assembly || (type.Namespace ?? string.Empty).StartsWith("UnityEngine.Rendering.Universal", StringComparison.Ordinal);
|
|
768
|
+
|
|
769
|
+
private static void AssignProfile(Type volumeType, Component volume, UnityEngine.Object profile, string errorPrefix)
|
|
770
|
+
{
|
|
771
|
+
var property = volumeType.GetProperty("profile", BindingFlags.Instance | BindingFlags.Public);
|
|
772
|
+
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.");
|
|
773
|
+
property.SetValue(volume, profile, null);
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
public sealed class UrpFeatureInfo
|
|
778
|
+
{
|
|
779
|
+
public long RendererIndex { get; set; }
|
|
780
|
+
public long Index { get; set; }
|
|
781
|
+
public string Name { get; set; }
|
|
782
|
+
public string Type { get; set; }
|
|
783
|
+
public bool Enabled { get; set; }
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
public sealed class UrpPlannedEffect
|
|
787
|
+
{
|
|
788
|
+
public string Type { get; set; }
|
|
789
|
+
public string FeatureType { get; set; }
|
|
790
|
+
public string EffectType { get; set; }
|
|
791
|
+
public string Property { get; set; }
|
|
792
|
+
public string Value { get; set; }
|
|
793
|
+
public string Name { get; set; }
|
|
794
|
+
public string Target { get; set; }
|
|
795
|
+
public long? Index { get; set; }
|
|
796
|
+
public long? RendererIndex { get; set; }
|
|
797
|
+
public string SideEffects { get; set; }
|
|
798
|
+
public bool? Enabled { get; set; }
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
#endif
|