@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,701 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Globalization;
|
|
4
|
+
using System.IO;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
using System.Security.Cryptography;
|
|
8
|
+
using System.Text;
|
|
9
|
+
using UnityEngine;
|
|
10
|
+
using UnityEngine.Profiling;
|
|
11
|
+
using UnityEngine.SceneManagement;
|
|
12
|
+
using UnityEngine.UIElements;
|
|
13
|
+
|
|
14
|
+
namespace UnityCli
|
|
15
|
+
{
|
|
16
|
+
/// <summary>批准的 development Player Runtime Tool 执行器;所有入口只由主线程 dispatcher 调用。</summary>
|
|
17
|
+
internal static class UnityCliRuntimeTools
|
|
18
|
+
{
|
|
19
|
+
private const int MaxLogEntries = 1000;
|
|
20
|
+
private const int MaxConsoleLimit = 200;
|
|
21
|
+
private const int MaxMessageLength = 4096;
|
|
22
|
+
private const int MaxStackTraceLength = 8192;
|
|
23
|
+
private const int MaxUiDocuments = 32;
|
|
24
|
+
private const int MaxUiElementsScanned = 4096;
|
|
25
|
+
private const int MaxCaptureDimension = 4096;
|
|
26
|
+
private const int MaxCapturePixels = 16 * 1024 * 1024;
|
|
27
|
+
private const int MaxPngBytes = 32 * 1024 * 1024;
|
|
28
|
+
private static readonly object LogSync = new object();
|
|
29
|
+
private static readonly List<RuntimeLogEntry> LogEntries = new List<RuntimeLogEntry>();
|
|
30
|
+
private static string runtimeSessionId;
|
|
31
|
+
private static string buildId;
|
|
32
|
+
private static string instanceId;
|
|
33
|
+
private static long logSequence;
|
|
34
|
+
private static int currentFrameCount;
|
|
35
|
+
private static bool initialized;
|
|
36
|
+
|
|
37
|
+
/// <summary>绑定一个Player session并注册有界log观察器。</summary>
|
|
38
|
+
internal static void Initialize(string session, string build, string instance)
|
|
39
|
+
{
|
|
40
|
+
if (initialized) Shutdown();
|
|
41
|
+
runtimeSessionId = session;
|
|
42
|
+
buildId = build;
|
|
43
|
+
instanceId = instance;
|
|
44
|
+
lock (LogSync) { LogEntries.Clear(); logSequence = 0L; }
|
|
45
|
+
currentFrameCount = Time.frameCount;
|
|
46
|
+
Application.logMessageReceivedThreaded += OnLogMessage;
|
|
47
|
+
initialized = true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// <summary>解除session观察器并清空所有进程内bounded state。</summary>
|
|
51
|
+
internal static void Shutdown()
|
|
52
|
+
{
|
|
53
|
+
if (initialized) Application.logMessageReceivedThreaded -= OnLogMessage;
|
|
54
|
+
initialized = false;
|
|
55
|
+
lock (LogSync) { LogEntries.Clear(); logSequence = 0L; }
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
internal static void TickFrame(int frameCount) { currentFrameCount = frameCount; }
|
|
59
|
+
|
|
60
|
+
/// <summary>按唯一 canonical name 分派;未批准名称绝不进入反射或任意代码路径。</summary>
|
|
61
|
+
internal static object Execute(string name, Dictionary<string, object> input, bool dryRun)
|
|
62
|
+
{
|
|
63
|
+
if (!initialized) throw Error("E_RUNTIME_NOT_READY", "Runtime Tool executor is not initialized.");
|
|
64
|
+
if (input == null) throw Error("E_SCHEMA_INVALID", "Runtime Tool input must be an object.");
|
|
65
|
+
switch (name)
|
|
66
|
+
{
|
|
67
|
+
case "runtime.state": return RuntimeState(input);
|
|
68
|
+
case "runtime.console": return RuntimeConsole(input);
|
|
69
|
+
case "runtime.log": return RuntimeLog(input, dryRun);
|
|
70
|
+
case "runtime.target-framerate.set": return SetTargetFramerate(input, dryRun);
|
|
71
|
+
case "runtime.time-scale.set": return SetTimeScale(input, dryRun);
|
|
72
|
+
case "runtime.input.key": return SimulateKey(input, dryRun);
|
|
73
|
+
case "runtime.input.pointer": return SimulatePointer(input, dryRun);
|
|
74
|
+
case "runtime.ui.capture-element": return CaptureElement(input, dryRun);
|
|
75
|
+
default: throw Error("E_TOOL_NOT_FOUND", "Runtime Tool is not approved: " + name + ".");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/// <summary>读取当前Player主线程可证明的bounded状态快照。</summary>
|
|
80
|
+
private static object RuntimeState(Dictionary<string, object> input)
|
|
81
|
+
{
|
|
82
|
+
RequireOnly(input);
|
|
83
|
+
var scene = SceneManager.GetActiveScene();
|
|
84
|
+
return new Dictionary<string, object>
|
|
85
|
+
{
|
|
86
|
+
{ "runtimeSessionId", runtimeSessionId }, { "buildId", buildId }, { "observedAt", UtcNow() },
|
|
87
|
+
{ "unityVersion", Application.unityVersion }, { "platform", Application.platform.ToString() },
|
|
88
|
+
{ "productName", Bounded(Application.productName, 256) }, { "applicationVersion", Bounded(Application.version, 128) },
|
|
89
|
+
{ "scene", new Dictionary<string, object> { { "name", Bounded(scene.name, 256) }, { "buildIndex", (long)scene.buildIndex }, { "isLoaded", scene.isLoaded } } },
|
|
90
|
+
{ "frame", new Dictionary<string, object> { { "frameCount", (long)Time.frameCount }, { "realtimeSinceStartup", Finite(Time.realtimeSinceStartup) }, { "targetFrameRate", (long)Application.targetFrameRate } } },
|
|
91
|
+
{ "time", new Dictionary<string, object> { { "timeScale", Finite(Time.timeScale) }, { "time", Finite(Time.time) }, { "unscaledTime", Finite(Time.unscaledTime) } } },
|
|
92
|
+
{ "screen", new Dictionary<string, object> { { "width", (long)Screen.width }, { "height", (long)Screen.height }, { "dpi", Finite(Screen.dpi) }, { "fullScreen", Screen.fullScreen }, { "focused", Application.isFocused } } },
|
|
93
|
+
{ "memory", new Dictionary<string, object>
|
|
94
|
+
{
|
|
95
|
+
{ "totalAllocatedBytes", Profiler.GetTotalAllocatedMemoryLong() },
|
|
96
|
+
{ "totalReservedBytes", Profiler.GetTotalReservedMemoryLong() },
|
|
97
|
+
{ "totalUnusedReservedBytes", Profiler.GetTotalUnusedReservedMemoryLong() }
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/// <summary>按cursor、level和limit读取当前session的有界console窗口。</summary>
|
|
104
|
+
private static object RuntimeConsole(Dictionary<string, object> input)
|
|
105
|
+
{
|
|
106
|
+
RequireOnly(input, "since", "limit", "level", "includeStackTrace");
|
|
107
|
+
var since = OptionalInteger(input, "since", -1L);
|
|
108
|
+
var limit = (int)OptionalInteger(input, "limit", 50L);
|
|
109
|
+
var level = OptionalString(input, "level", "log");
|
|
110
|
+
var includeStackTrace = OptionalBool(input, "includeStackTrace", false);
|
|
111
|
+
if (since < -1L) throw Error("E_SCHEMA_INVALID", "runtime.console since must be -1 or a non-negative cursor.");
|
|
112
|
+
if (limit < 1 || limit > MaxConsoleLimit) throw Error("E_SCHEMA_INVALID", "runtime.console limit must be between 1 and 200.");
|
|
113
|
+
var minimum = Severity(level);
|
|
114
|
+
List<RuntimeLogEntry> selected;
|
|
115
|
+
long cursor;
|
|
116
|
+
long droppedBefore;
|
|
117
|
+
lock (LogSync)
|
|
118
|
+
{
|
|
119
|
+
cursor = logSequence;
|
|
120
|
+
droppedBefore = LogEntries.Count == 0 ? cursor + 1L : LogEntries[0].Sequence;
|
|
121
|
+
selected = LogEntries.Where(entry => entry.Sequence > since && entry.Severity >= minimum).ToList();
|
|
122
|
+
if (selected.Count > limit) selected = selected.Skip(selected.Count - limit).ToList();
|
|
123
|
+
}
|
|
124
|
+
return new Dictionary<string, object>
|
|
125
|
+
{
|
|
126
|
+
{ "runtimeSessionId", runtimeSessionId }, { "cursor", cursor }, { "droppedBeforeSequence", droppedBefore },
|
|
127
|
+
{ "count", (long)selected.Count }, { "entries", selected.Select(entry => LogEntryData(entry, includeStackTrace)).Cast<object>().ToList() }
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/// <summary>写入一条bounded日志,并通过同一session callback证明sequence。</summary>
|
|
132
|
+
private static object RuntimeLog(Dictionary<string, object> input, bool dryRun)
|
|
133
|
+
{
|
|
134
|
+
RequireOnly(input, "message", "level");
|
|
135
|
+
var message = RequiredString(input, "message", MaxMessageLength);
|
|
136
|
+
if (string.IsNullOrWhiteSpace(message)) throw Error("E_SCHEMA_INVALID", "runtime.log message must not be empty.");
|
|
137
|
+
var level = OptionalString(input, "level", "info");
|
|
138
|
+
if (level != "info" && level != "warning" && level != "error") throw Error("E_SCHEMA_INVALID", "runtime.log level must be info, warning, or error.");
|
|
139
|
+
long? sequence = null;
|
|
140
|
+
if (!dryRun)
|
|
141
|
+
{
|
|
142
|
+
var before = CurrentSequence();
|
|
143
|
+
if (level == "warning") Debug.LogWarning(message);
|
|
144
|
+
else if (level == "error") Debug.LogError(message);
|
|
145
|
+
else Debug.Log(message);
|
|
146
|
+
sequence = FindObservedSequence(before, message, level == "info" ? "log" : level);
|
|
147
|
+
if (!sequence.HasValue) throw Error("E_RUNTIME_LOG_UNPROVEN", "The Player log callback did not observe the emitted message.");
|
|
148
|
+
}
|
|
149
|
+
return new Dictionary<string, object>
|
|
150
|
+
{
|
|
151
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "logged", !dryRun },
|
|
152
|
+
{ "level", level }, { "message", message }, { "sequence", sequence.HasValue ? (object)sequence.Value : null },
|
|
153
|
+
{ "observedAt", UtcNow() }, { "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-log" }, { "level", level } } } }
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/// <summary>设置当前session帧率目标,并从Application执行fresh readback。</summary>
|
|
158
|
+
private static object SetTargetFramerate(Dictionary<string, object> input, bool dryRun)
|
|
159
|
+
{
|
|
160
|
+
RequireOnly(input, "frameRate");
|
|
161
|
+
var target = RequiredInteger(input, "frameRate");
|
|
162
|
+
if (target < -1L || target > 1000L) throw Error("E_SCHEMA_INVALID", "runtime.target-framerate.set frameRate must be between -1 and 1000.");
|
|
163
|
+
var before = Application.targetFrameRate;
|
|
164
|
+
if (!dryRun && before != (int)target) Application.targetFrameRate = (int)target;
|
|
165
|
+
var after = Application.targetFrameRate;
|
|
166
|
+
if (!dryRun && after != (int)target) throw Error("E_RUNTIME_TARGET_FRAMERATE_UNPROVEN", "Application.targetFrameRate did not match the requested value after assignment.");
|
|
167
|
+
return new Dictionary<string, object>
|
|
168
|
+
{
|
|
169
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "changed", before != (int)target },
|
|
170
|
+
{ "before", (long)before }, { "after", (long)after },
|
|
171
|
+
{ "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-target-framerate-set" }, { "frameRate", target } } } }
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/// <summary>设置当前session time scale,并从Time执行fresh readback。</summary>
|
|
176
|
+
private static object SetTimeScale(Dictionary<string, object> input, bool dryRun)
|
|
177
|
+
{
|
|
178
|
+
RequireOnly(input, "scale");
|
|
179
|
+
var target = RequiredFiniteNumber(input, "scale");
|
|
180
|
+
if (target < 0d || target > 1000d) throw Error("E_SCHEMA_INVALID", "runtime.time-scale.set scale must be between 0 and 1000.");
|
|
181
|
+
var expected = (float)target;
|
|
182
|
+
var before = Time.timeScale;
|
|
183
|
+
if (!dryRun && before != expected) Time.timeScale = expected;
|
|
184
|
+
var after = Time.timeScale;
|
|
185
|
+
if (!dryRun && after != expected) throw Error("E_RUNTIME_TIME_SCALE_UNPROVEN", "Time.timeScale did not match the requested value after assignment.");
|
|
186
|
+
return new Dictionary<string, object>
|
|
187
|
+
{
|
|
188
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "changed", before != expected },
|
|
189
|
+
{ "before", Finite(before) }, { "after", Finite(after) },
|
|
190
|
+
{ "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-time-scale-set" }, { "scale", (double)expected } } } }
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/// <summary>向current keyboard注入一个批准的key action并返回flush后的状态序列。</summary>
|
|
195
|
+
private static object SimulateKey(Dictionary<string, object> input, bool dryRun)
|
|
196
|
+
{
|
|
197
|
+
RequireOnly(input, "key", "event");
|
|
198
|
+
var key = RequiredString(input, "key", 128);
|
|
199
|
+
var eventName = OptionalString(input, "event", "press");
|
|
200
|
+
if (eventName != "down" && eventName != "up" && eventName != "press") throw Error("E_SCHEMA_INVALID", "runtime.input.key event must be down, up, or press.");
|
|
201
|
+
var facade = InputSystemFacade.Create();
|
|
202
|
+
var control = facade.ResolveKey(key);
|
|
203
|
+
var canonicalKey = facade.CanonicalKey(control);
|
|
204
|
+
var path = facade.ControlPath(control);
|
|
205
|
+
// actual调用先消费已排队的native状态,再冻结before并注入排在其后的full StateEvent。
|
|
206
|
+
if (!dryRun) facade.Update();
|
|
207
|
+
var before = facade.IsPressed(control);
|
|
208
|
+
var observed = new List<object>();
|
|
209
|
+
if (!dryRun)
|
|
210
|
+
{
|
|
211
|
+
if (eventName == "down" || eventName == "press") { facade.QueueButton(control, true); facade.Update(); observed.Add(facade.IsPressed(control)); }
|
|
212
|
+
if (eventName == "up" || eventName == "press") { facade.QueueButton(control, false); facade.Update(); observed.Add(facade.IsPressed(control)); }
|
|
213
|
+
}
|
|
214
|
+
var after = facade.IsPressed(control);
|
|
215
|
+
var expected = eventName == "down" ? true : eventName == "up" || eventName == "press" ? false : before;
|
|
216
|
+
var phasesProven = eventName == "down"
|
|
217
|
+
? observed.Count == 1 && observed[0] is bool && (bool)observed[0]
|
|
218
|
+
: eventName == "up"
|
|
219
|
+
? observed.Count == 1 && observed[0] is bool && !(bool)observed[0]
|
|
220
|
+
: observed.Count == 2 && observed[0] is bool && (bool)observed[0] && observed[1] is bool && !(bool)observed[1];
|
|
221
|
+
if (!dryRun && (after != expected || !phasesProven)) throw Error("E_RUNTIME_INPUT_UNPROVEN", "Keyboard pressed-state phases did not match the requested event after InputSystem.Update.");
|
|
222
|
+
return new Dictionary<string, object>
|
|
223
|
+
{
|
|
224
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "simulated", !dryRun },
|
|
225
|
+
{ "key", canonicalKey }, { "event", eventName }, { "controlPath", path },
|
|
226
|
+
{ "beforePressed", before }, { "afterPressed", after }, { "observedPressedStates", observed },
|
|
227
|
+
{ "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-input-key" }, { "key", canonicalKey }, { "event", eventName } } } }
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/// <summary>向current mouse注入一个屏幕内pointer action并返回position/button readback。</summary>
|
|
232
|
+
private static object SimulatePointer(Dictionary<string, object> input, bool dryRun)
|
|
233
|
+
{
|
|
234
|
+
RequireOnly(input, "x", "y", "event", "button");
|
|
235
|
+
var x = RequiredFiniteNumber(input, "x");
|
|
236
|
+
var y = RequiredFiniteNumber(input, "y");
|
|
237
|
+
if (x < 0d || y < 0d || x >= Screen.width || y >= Screen.height) throw Error("E_SCHEMA_INVALID", "runtime.input.pointer coordinates must be inside the current Player screen.");
|
|
238
|
+
var eventName = OptionalString(input, "event", "click");
|
|
239
|
+
var button = OptionalString(input, "button", "left");
|
|
240
|
+
if (eventName != "move" && eventName != "down" && eventName != "up" && eventName != "click") throw Error("E_SCHEMA_INVALID", "runtime.input.pointer event must be move, down, up, or click.");
|
|
241
|
+
if (button != "left" && button != "right" && button != "middle") throw Error("E_SCHEMA_INVALID", "runtime.input.pointer button must be left, right, or middle.");
|
|
242
|
+
var facade = InputSystemFacade.Create();
|
|
243
|
+
var pointer = facade.ResolvePointer(button);
|
|
244
|
+
// pointer与keyboard共享相同的native-event flush边界,避免读到将被同次Update覆盖的前态。
|
|
245
|
+
if (!dryRun) facade.Update();
|
|
246
|
+
var beforePosition = facade.ReadPosition(pointer.PositionControl);
|
|
247
|
+
var beforePressed = facade.IsPressed(pointer.ButtonControl);
|
|
248
|
+
var observed = new List<object>();
|
|
249
|
+
var requestedPosition = new Vector2((float)x, (float)y);
|
|
250
|
+
if (!dryRun)
|
|
251
|
+
{
|
|
252
|
+
facade.QueuePointer(pointer.PositionControl, eventName == "move" ? null : pointer.ButtonControl, requestedPosition, eventName == "down" || eventName == "click");
|
|
253
|
+
facade.Update();
|
|
254
|
+
if (eventName != "move") observed.Add(facade.IsPressed(pointer.ButtonControl));
|
|
255
|
+
if (eventName == "click") { facade.QueueButton(pointer.ButtonControl, false); facade.Update(); observed.Add(facade.IsPressed(pointer.ButtonControl)); }
|
|
256
|
+
}
|
|
257
|
+
var afterPosition = facade.ReadPosition(pointer.PositionControl);
|
|
258
|
+
var afterPressed = facade.IsPressed(pointer.ButtonControl);
|
|
259
|
+
var expectedPressed = eventName == "down" ? true : eventName == "up" || eventName == "click" ? false : beforePressed;
|
|
260
|
+
var phasesProven = eventName == "move"
|
|
261
|
+
? observed.Count == 0
|
|
262
|
+
: eventName == "down"
|
|
263
|
+
? observed.Count == 1 && observed[0] is bool && (bool)observed[0]
|
|
264
|
+
: eventName == "up"
|
|
265
|
+
? observed.Count == 1 && observed[0] is bool && !(bool)observed[0]
|
|
266
|
+
: observed.Count == 2 && observed[0] is bool && (bool)observed[0] && observed[1] is bool && !(bool)observed[1];
|
|
267
|
+
if (!dryRun && (afterPosition != requestedPosition || afterPressed != expectedPressed || !phasesProven)) throw Error("E_RUNTIME_INPUT_UNPROVEN", "Pointer position or pressed-state phases did not match the requested event after InputSystem.Update.");
|
|
268
|
+
return new Dictionary<string, object>
|
|
269
|
+
{
|
|
270
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "simulated", !dryRun },
|
|
271
|
+
{ "event", eventName }, { "button", button }, { "controlPath", facade.ControlPath(pointer.ButtonControl) },
|
|
272
|
+
{ "beforePosition", PointData(beforePosition) }, { "afterPosition", PointData(afterPosition) },
|
|
273
|
+
{ "beforePressed", beforePressed }, { "afterPressed", afterPressed }, { "observedPressedStates", observed },
|
|
274
|
+
{ "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-input-pointer" }, { "x", x }, { "y", y }, { "event", eventName }, { "button", button } } } }
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/// <summary>解析一个bounded UI Toolkit selector并写入固定runtime artifact。</summary>
|
|
279
|
+
private static object CaptureElement(Dictionary<string, object> input, bool dryRun)
|
|
280
|
+
{
|
|
281
|
+
RequireOnly(input, "selector", "panel");
|
|
282
|
+
var selector = RequiredString(input, "selector", 256);
|
|
283
|
+
if (string.IsNullOrWhiteSpace(selector)) throw Error("E_SCHEMA_INVALID", "runtime.ui.capture-element selector must not be empty.");
|
|
284
|
+
var panelName = OptionalString(input, "panel", string.Empty);
|
|
285
|
+
#if !UNITY_6000_7_OR_NEWER
|
|
286
|
+
throw Error("E_RUNTIME_ELEMENT_CAPTURE_UNAVAILABLE", "runtime.ui.capture-element requires Unity 6000.7 or newer.");
|
|
287
|
+
#else
|
|
288
|
+
var panel = ResolvePanel(panelName);
|
|
289
|
+
var element = ResolveElement(panel.Root, selector);
|
|
290
|
+
var width = CheckedDimension(element.resolvedStyle.width, "width");
|
|
291
|
+
var height = CheckedDimension(element.resolvedStyle.height, "height");
|
|
292
|
+
if ((long)width * height > MaxCapturePixels) throw Error("E_RUNTIME_ELEMENT_CAPTURE_BOUNDS", "The selected runtime element exceeds the 16 megapixel capture limit.");
|
|
293
|
+
var result = new Dictionary<string, object>
|
|
294
|
+
{
|
|
295
|
+
{ "runtimeSessionId", runtimeSessionId }, { "dryRun", dryRun }, { "captured", !dryRun },
|
|
296
|
+
{ "panel", panel.Name }, { "selector", selector },
|
|
297
|
+
{ "element", new Dictionary<string, object> { { "name", element.name ?? string.Empty }, { "type", element.GetType().FullName }, { "width", (long)width }, { "height", (long)height } } },
|
|
298
|
+
{ "plannedEffects", new List<object> { new Dictionary<string, object> { { "type", "runtime-element-capture" }, { "artifactName", "runtime-element.png" } } } }
|
|
299
|
+
};
|
|
300
|
+
if (dryRun) return result;
|
|
301
|
+
var artifact = WriteCaptureArtifact(element);
|
|
302
|
+
result["artifact"] = artifact;
|
|
303
|
+
return result;
|
|
304
|
+
#endif
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
#if UNITY_6000_7_OR_NEWER
|
|
308
|
+
private sealed class RuntimePanel { internal string Name; internal VisualElement Root; }
|
|
309
|
+
|
|
310
|
+
private static RuntimePanel ResolvePanel(string requested)
|
|
311
|
+
{
|
|
312
|
+
var documents = UnityEngine.Object.FindObjectsOfType<UIDocument>(true).Take(MaxUiDocuments + 1).ToArray();
|
|
313
|
+
if (documents.Length > MaxUiDocuments) throw Error("E_RUNTIME_PANEL_BOUNDS", "More than 32 runtime UIDocuments are active.");
|
|
314
|
+
var panels = documents.Where(document => document != null && document.rootVisualElement != null && document.rootVisualElement.panel != null)
|
|
315
|
+
.Select(document => new RuntimePanel { Name = document.panelSettings != null && !string.IsNullOrEmpty(document.panelSettings.name) ? document.panelSettings.name : document.gameObject.name, Root = document.rootVisualElement }).ToList();
|
|
316
|
+
if (!string.IsNullOrEmpty(requested)) panels = panels.Where(panel => string.Equals(panel.Name, requested, StringComparison.Ordinal)).ToList();
|
|
317
|
+
if (panels.Count == 0) throw Error("E_RUNTIME_PANEL_NOT_FOUND", "No attached runtime UI Toolkit panel matches the request.");
|
|
318
|
+
if (panels.Count > 1) throw Error("E_RUNTIME_PANEL_AMBIGUOUS", "The runtime panel request matches more than one UIDocument.");
|
|
319
|
+
return panels[0];
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
private static VisualElement ResolveElement(VisualElement root, string selector)
|
|
323
|
+
{
|
|
324
|
+
var matches = new List<VisualElement>();
|
|
325
|
+
var stack = new Stack<VisualElement>();
|
|
326
|
+
stack.Push(root);
|
|
327
|
+
var scanned = 0;
|
|
328
|
+
while (stack.Count > 0)
|
|
329
|
+
{
|
|
330
|
+
var current = stack.Pop();
|
|
331
|
+
scanned++;
|
|
332
|
+
if (scanned > MaxUiElementsScanned) throw Error("E_RUNTIME_ELEMENT_SELECTOR_BOUNDS", "Runtime UI selector scan exceeds 4096 elements.");
|
|
333
|
+
if (MatchesSelector(current, selector)) { matches.Add(current); if (matches.Count > 1) break; }
|
|
334
|
+
for (var index = current.hierarchy.childCount - 1; index >= 0; index--) stack.Push(current.hierarchy[index]);
|
|
335
|
+
}
|
|
336
|
+
if (matches.Count == 0) throw Error("E_RUNTIME_ELEMENT_NOT_FOUND", "Runtime UI element selector did not match an attached element.");
|
|
337
|
+
if (matches.Count > 1) throw Error("E_RUNTIME_ELEMENT_AMBIGUOUS", "Runtime UI element selector matched more than one element.");
|
|
338
|
+
return matches[0];
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
private static bool MatchesSelector(VisualElement element, string selector)
|
|
342
|
+
{
|
|
343
|
+
if (selector[0] == '#') return selector.Length > 1 && string.Equals(element.name, selector.Substring(1), StringComparison.Ordinal);
|
|
344
|
+
if (selector[0] == '.') return selector.Length > 1 && element.ClassListContains(selector.Substring(1));
|
|
345
|
+
return string.Equals(element.GetType().Name, selector, StringComparison.Ordinal) || string.Equals(element.GetType().FullName, selector, StringComparison.Ordinal);
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
private static Dictionary<string, object> WriteCaptureArtifact(VisualElement element)
|
|
349
|
+
{
|
|
350
|
+
RenderTexture texture = null;
|
|
351
|
+
Texture2D readable = null;
|
|
352
|
+
var previous = RenderTexture.active;
|
|
353
|
+
byte[] png;
|
|
354
|
+
try
|
|
355
|
+
{
|
|
356
|
+
texture = element.CaptureToRenderTexture();
|
|
357
|
+
if (texture == null) throw Error("E_RUNTIME_ELEMENT_CAPTURE_FAILED", "Unity did not return a capture texture.");
|
|
358
|
+
RenderTexture.active = texture;
|
|
359
|
+
readable = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
|
|
360
|
+
readable.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0, false);
|
|
361
|
+
readable.Apply(false, false);
|
|
362
|
+
png = readable.EncodeToPNG();
|
|
363
|
+
}
|
|
364
|
+
finally
|
|
365
|
+
{
|
|
366
|
+
RenderTexture.active = previous;
|
|
367
|
+
if (readable != null) UnityEngine.Object.Destroy(readable);
|
|
368
|
+
if (texture != null) UnityEngine.Object.Destroy(texture);
|
|
369
|
+
}
|
|
370
|
+
if (png == null || png.Length == 0 || png.Length > MaxPngBytes) throw Error("E_RUNTIME_ELEMENT_CAPTURE_BOUNDS", "Runtime element PNG is empty or exceeds 32 MiB.");
|
|
371
|
+
var directory = RuntimeArtifactDirectory();
|
|
372
|
+
Directory.CreateDirectory(directory);
|
|
373
|
+
var path = Path.Combine(directory, "runtime-element.png");
|
|
374
|
+
var temporary = path + ".tmp";
|
|
375
|
+
try
|
|
376
|
+
{
|
|
377
|
+
File.WriteAllBytes(temporary, png);
|
|
378
|
+
if (File.Exists(path)) File.Replace(temporary, path, null); else File.Move(temporary, path);
|
|
379
|
+
}
|
|
380
|
+
finally { if (File.Exists(temporary)) File.Delete(temporary); }
|
|
381
|
+
var bytes = File.ReadAllBytes(path);
|
|
382
|
+
return new Dictionary<string, object> { { "path", path }, { "size", (long)bytes.Length }, { "sha256", Sha256(bytes) }, { "mimeType", "image/png" } };
|
|
383
|
+
}
|
|
384
|
+
#endif
|
|
385
|
+
|
|
386
|
+
private static void OnLogMessage(string message, string stackTrace, LogType type)
|
|
387
|
+
{
|
|
388
|
+
var severity = type == LogType.Error || type == LogType.Exception || type == LogType.Assert ? 2 : type == LogType.Warning ? 1 : 0;
|
|
389
|
+
var level = severity == 2 ? "error" : severity == 1 ? "warning" : "log";
|
|
390
|
+
lock (LogSync)
|
|
391
|
+
{
|
|
392
|
+
logSequence++;
|
|
393
|
+
LogEntries.Add(new RuntimeLogEntry
|
|
394
|
+
{
|
|
395
|
+
Sequence = logSequence, ObservedAt = UtcNow(), FrameCount = currentFrameCount, Severity = severity,
|
|
396
|
+
Level = level, Message = Bounded(message, MaxMessageLength), StackTrace = Bounded(stackTrace, MaxStackTraceLength)
|
|
397
|
+
});
|
|
398
|
+
if (LogEntries.Count > MaxLogEntries) LogEntries.RemoveRange(0, LogEntries.Count - MaxLogEntries);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
private static Dictionary<string, object> LogEntryData(RuntimeLogEntry entry, bool includeStackTrace)
|
|
403
|
+
{
|
|
404
|
+
return new Dictionary<string, object>
|
|
405
|
+
{
|
|
406
|
+
{ "sequence", entry.Sequence }, { "observedAt", entry.ObservedAt }, { "frameCount", (long)entry.FrameCount },
|
|
407
|
+
{ "level", entry.Level }, { "message", entry.Message }, { "stackTrace", includeStackTrace ? entry.StackTrace : string.Empty }
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
private static long CurrentSequence() { lock (LogSync) return logSequence; }
|
|
412
|
+
|
|
413
|
+
private static long? FindObservedSequence(long after, string message, string level)
|
|
414
|
+
{
|
|
415
|
+
lock (LogSync)
|
|
416
|
+
{
|
|
417
|
+
var entry = LogEntries.LastOrDefault(candidate => candidate.Sequence > after && candidate.Level == level && candidate.Message == message);
|
|
418
|
+
return entry == null ? (long?)null : entry.Sequence;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
private static int Severity(string level)
|
|
423
|
+
{
|
|
424
|
+
if (level == "log") return 0;
|
|
425
|
+
if (level == "warning") return 1;
|
|
426
|
+
if (level == "error") return 2;
|
|
427
|
+
throw Error("E_SCHEMA_INVALID", "runtime.console level must be log, warning, or error.");
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
private static void RequireOnly(Dictionary<string, object> input, params string[] names)
|
|
431
|
+
{
|
|
432
|
+
var allowed = new HashSet<string>(names, StringComparer.Ordinal);
|
|
433
|
+
foreach (var key in input.Keys) if (!allowed.Contains(key)) throw Error("E_SCHEMA_INVALID", "Runtime Tool input contains an unknown field: " + key + ".");
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
private static string RequiredString(Dictionary<string, object> input, string key, int maximum)
|
|
437
|
+
{
|
|
438
|
+
object value;
|
|
439
|
+
var text = input.TryGetValue(key, out value) ? value as string : null;
|
|
440
|
+
if (text == null || text.Length > maximum) throw Error("E_SCHEMA_INVALID", key + " must be a string no longer than " + maximum.ToString(CultureInfo.InvariantCulture) + " characters.");
|
|
441
|
+
return text;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
private static string OptionalString(Dictionary<string, object> input, string key, string fallback)
|
|
445
|
+
{
|
|
446
|
+
object value;
|
|
447
|
+
if (!input.TryGetValue(key, out value)) return fallback;
|
|
448
|
+
var text = value as string;
|
|
449
|
+
if (text == null) throw Error("E_SCHEMA_INVALID", key + " must be a string.");
|
|
450
|
+
return text;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
private static bool OptionalBool(Dictionary<string, object> input, string key, bool fallback)
|
|
454
|
+
{
|
|
455
|
+
object value;
|
|
456
|
+
if (!input.TryGetValue(key, out value)) return fallback;
|
|
457
|
+
if (value is bool) return (bool)value;
|
|
458
|
+
throw Error("E_SCHEMA_INVALID", key + " must be a boolean.");
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
private static long RequiredInteger(Dictionary<string, object> input, string key)
|
|
462
|
+
{
|
|
463
|
+
if (!input.ContainsKey(key)) throw Error("E_SCHEMA_INVALID", key + " is required.");
|
|
464
|
+
return OptionalInteger(input, key, 0L);
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
private static double RequiredFiniteNumber(Dictionary<string, object> input, string key)
|
|
468
|
+
{
|
|
469
|
+
object value;
|
|
470
|
+
if (!input.TryGetValue(key, out value)) throw Error("E_SCHEMA_INVALID", key + " is required.");
|
|
471
|
+
double number;
|
|
472
|
+
if (value is long) number = (long)value;
|
|
473
|
+
else if (value is double) number = (double)value;
|
|
474
|
+
else throw Error("E_SCHEMA_INVALID", key + " must be a number.");
|
|
475
|
+
if (double.IsNaN(number) || double.IsInfinity(number)) throw Error("E_SCHEMA_INVALID", key + " must be finite.");
|
|
476
|
+
return number;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
private static long OptionalInteger(Dictionary<string, object> input, string key, long fallback)
|
|
480
|
+
{
|
|
481
|
+
object value;
|
|
482
|
+
if (!input.TryGetValue(key, out value)) return fallback;
|
|
483
|
+
if (value is long) return (long)value;
|
|
484
|
+
if (value is double)
|
|
485
|
+
{
|
|
486
|
+
var number = (double)value;
|
|
487
|
+
if (!double.IsNaN(number) && !double.IsInfinity(number) && Math.Floor(number) == number && number >= long.MinValue && number <= long.MaxValue) return (long)number;
|
|
488
|
+
}
|
|
489
|
+
throw Error("E_SCHEMA_INVALID", key + " must be an integer.");
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
private static Dictionary<string, object> PointData(Vector2 value) { return new Dictionary<string, object> { { "x", Finite(value.x) }, { "y", Finite(value.y) } }; }
|
|
493
|
+
|
|
494
|
+
private static int CheckedDimension(float value, string name)
|
|
495
|
+
{
|
|
496
|
+
if (float.IsNaN(value) || float.IsInfinity(value)) throw Error("E_RUNTIME_ELEMENT_CAPTURE_BOUNDS", "Runtime element " + name + " is not finite.");
|
|
497
|
+
var rounded = Mathf.CeilToInt(value);
|
|
498
|
+
if (rounded < 1 || rounded > MaxCaptureDimension) throw Error("E_RUNTIME_ELEMENT_CAPTURE_BOUNDS", "Runtime element " + name + " must be between 1 and 4096 pixels.");
|
|
499
|
+
return rounded;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
private static double Finite(float value) { return float.IsNaN(value) || float.IsInfinity(value) ? 0d : value; }
|
|
503
|
+
private static string UtcNow() { return DateTime.UtcNow.ToString("O", CultureInfo.InvariantCulture); }
|
|
504
|
+
private static string Bounded(string value, int maximum) { value = value ?? string.Empty; return value.Length <= maximum ? value : value.Substring(0, maximum); }
|
|
505
|
+
private static string RuntimeArtifactDirectory()
|
|
506
|
+
{
|
|
507
|
+
var configured = Environment.GetEnvironmentVariable("UNITYCLI_DATA_DIR");
|
|
508
|
+
var data = !string.IsNullOrWhiteSpace(configured) ? configured : Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "UnityCli");
|
|
509
|
+
return Path.Combine(data, ".temp", "artifacts", "runtime-" + instanceId.Substring("unity-".Length));
|
|
510
|
+
}
|
|
511
|
+
private static string Sha256(byte[] bytes) { using (var sha = SHA256.Create()) { var hash = sha.ComputeHash(bytes); var result = new StringBuilder(hash.Length * 2); foreach (var item in hash) result.Append(item.ToString("x2")); return result.ToString(); } }
|
|
512
|
+
private static UnityCliRuntimeToolException Error(string code, string message) { return new UnityCliRuntimeToolException(code, message); }
|
|
513
|
+
|
|
514
|
+
/// <summary>固定绑定 Input System 已知 API;用户输入只选择 enum/control,不参与类型或方法解析。</summary>
|
|
515
|
+
private sealed class InputSystemFacade
|
|
516
|
+
{
|
|
517
|
+
private readonly Type keyType;
|
|
518
|
+
private readonly Type inputEventPtrType;
|
|
519
|
+
private readonly object tempAllocator;
|
|
520
|
+
private readonly object keyboard;
|
|
521
|
+
private readonly object mouse;
|
|
522
|
+
private readonly MethodInfo stateEventFromMethod;
|
|
523
|
+
private readonly MethodInfo writeValueMethod;
|
|
524
|
+
private readonly MethodInfo queueEventMethod;
|
|
525
|
+
private readonly MethodInfo updateMethod;
|
|
526
|
+
private readonly PropertyInfo currentTimeProperty;
|
|
527
|
+
private readonly PropertyInfo eventTimeProperty;
|
|
528
|
+
private readonly Dictionary<object, string> canonicalKeys = new Dictionary<object, string>();
|
|
529
|
+
|
|
530
|
+
private InputSystemFacade(Type keyType, Type inputEventPtrType, object tempAllocator, object keyboard, object mouse, MethodInfo stateEventFromMethod, MethodInfo writeValueMethod, MethodInfo queueEventMethod, MethodInfo updateMethod, PropertyInfo currentTimeProperty, PropertyInfo eventTimeProperty)
|
|
531
|
+
{
|
|
532
|
+
this.keyType = keyType;
|
|
533
|
+
this.inputEventPtrType = inputEventPtrType;
|
|
534
|
+
this.tempAllocator = tempAllocator;
|
|
535
|
+
this.keyboard = keyboard;
|
|
536
|
+
this.mouse = mouse;
|
|
537
|
+
this.stateEventFromMethod = stateEventFromMethod;
|
|
538
|
+
this.writeValueMethod = writeValueMethod;
|
|
539
|
+
this.queueEventMethod = queueEventMethod;
|
|
540
|
+
this.updateMethod = updateMethod;
|
|
541
|
+
this.currentTimeProperty = currentTimeProperty;
|
|
542
|
+
this.eventTimeProperty = eventTimeProperty;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
internal static InputSystemFacade Create()
|
|
546
|
+
{
|
|
547
|
+
var inputSystemType = Type.GetType("UnityEngine.InputSystem.InputSystem, Unity.InputSystem", false);
|
|
548
|
+
var keyboardType = Type.GetType("UnityEngine.InputSystem.Keyboard, Unity.InputSystem", false);
|
|
549
|
+
var mouseType = Type.GetType("UnityEngine.InputSystem.Mouse, Unity.InputSystem", false);
|
|
550
|
+
var keyType = Type.GetType("UnityEngine.InputSystem.Key, Unity.InputSystem", false);
|
|
551
|
+
var stateEventType = Type.GetType("UnityEngine.InputSystem.LowLevel.StateEvent, Unity.InputSystem", false);
|
|
552
|
+
var inputEventPtrType = Type.GetType("UnityEngine.InputSystem.LowLevel.InputEventPtr, Unity.InputSystem", false);
|
|
553
|
+
var inputStateType = Type.GetType("UnityEngine.InputSystem.LowLevel.InputState, Unity.InputSystem", false);
|
|
554
|
+
var inputControlExtensionsType = Type.GetType("UnityEngine.InputSystem.InputControlExtensions, Unity.InputSystem", false);
|
|
555
|
+
if (inputSystemType == null || keyboardType == null || mouseType == null || keyType == null || stateEventType == null || inputEventPtrType == null || inputStateType == null || inputControlExtensionsType == null) throw Error("E_RUNTIME_INPUT_SYSTEM_UNAVAILABLE", "com.unity.inputsystem is not loaded in this development Player.");
|
|
556
|
+
var from = stateEventType.GetMethods(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(method => method.Name == "From" && method.GetParameters().Length == 3 && method.GetParameters()[1].IsOut && method.GetParameters()[1].ParameterType.GetElementType() == inputEventPtrType);
|
|
557
|
+
var write = inputControlExtensionsType.GetMethods(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(method => method.Name == "WriteValueIntoEvent" && method.IsGenericMethodDefinition && method.GetParameters().Length == 3 && method.GetParameters()[0].ParameterType.FullName == "UnityEngine.InputSystem.InputControl" && method.GetParameters()[2].ParameterType == inputEventPtrType);
|
|
558
|
+
var queue = inputSystemType.GetMethods(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(method => method.Name == "QueueEvent" && method.GetParameters().Length == 1 && method.GetParameters()[0].ParameterType == inputEventPtrType);
|
|
559
|
+
var update = inputSystemType.GetMethods(BindingFlags.Public | BindingFlags.Static).FirstOrDefault(method => method.Name == "Update" && method.GetParameters().Length == 0);
|
|
560
|
+
var currentTime = inputStateType.GetProperty("currentTime", BindingFlags.Public | BindingFlags.Static);
|
|
561
|
+
var eventTime = inputEventPtrType.GetProperty("time", BindingFlags.Public | BindingFlags.Instance);
|
|
562
|
+
var allocatorType = from == null ? null : from.GetParameters()[2].ParameterType;
|
|
563
|
+
if (from == null || write == null || queue == null || update == null || currentTime == null || currentTime.PropertyType != typeof(double)
|
|
564
|
+
|| eventTime == null || eventTime.PropertyType != typeof(double) || !eventTime.CanWrite || allocatorType == null || !allocatorType.IsEnum)
|
|
565
|
+
throw Error("E_RUNTIME_INPUT_SYSTEM_UNAVAILABLE", "The loaded Input System does not expose the required timestamped state-event API.");
|
|
566
|
+
var keyboard = ReadStaticCurrent(keyboardType);
|
|
567
|
+
var mouse = ReadStaticCurrent(mouseType);
|
|
568
|
+
return new InputSystemFacade(keyType, inputEventPtrType, Enum.Parse(allocatorType, "Temp"), keyboard, mouse, from, write, queue, update, currentTime, eventTime);
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
internal object ResolveKey(string requested)
|
|
572
|
+
{
|
|
573
|
+
if (keyboard == null) throw Error("E_RUNTIME_INPUT_DEVICE_UNAVAILABLE", "No current Input System keyboard is present.");
|
|
574
|
+
object key;
|
|
575
|
+
try { key = Enum.Parse(keyType, requested, true); }
|
|
576
|
+
catch { throw Error("E_SCHEMA_INVALID", "Unknown Input System key: " + requested + "."); }
|
|
577
|
+
var canonical = Enum.GetName(keyType, key);
|
|
578
|
+
if (string.IsNullOrEmpty(canonical) || canonical == "None") throw Error("E_SCHEMA_INVALID", "runtime.input.key requires a concrete Input System key.");
|
|
579
|
+
var indexer = keyboard.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).FirstOrDefault(property => property.Name == "Item" && property.GetIndexParameters().Length == 1 && property.GetIndexParameters()[0].ParameterType == keyType);
|
|
580
|
+
var control = indexer == null ? null : indexer.GetValue(keyboard, new[] { key });
|
|
581
|
+
if (control == null) throw Error("E_RUNTIME_INPUT_DEVICE_UNAVAILABLE", "The current keyboard does not expose the requested key control.");
|
|
582
|
+
canonicalKeys[control] = canonical;
|
|
583
|
+
return control;
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
internal string CanonicalKey(object control) { string value; return canonicalKeys.TryGetValue(control, out value) ? value : string.Empty; }
|
|
587
|
+
|
|
588
|
+
internal ResolvedPointer ResolvePointer(string button)
|
|
589
|
+
{
|
|
590
|
+
if (mouse == null) throw Error("E_RUNTIME_INPUT_DEVICE_UNAVAILABLE", "No current Input System mouse is present.");
|
|
591
|
+
var position = ReadProperty(mouse, "position");
|
|
592
|
+
var buttonControl = ReadProperty(mouse, button + "Button");
|
|
593
|
+
if (position == null || buttonControl == null) throw Error("E_RUNTIME_INPUT_DEVICE_UNAVAILABLE", "The current mouse does not expose the requested controls.");
|
|
594
|
+
return new ResolvedPointer { PositionControl = position, ButtonControl = buttonControl };
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
internal bool IsPressed(object control)
|
|
598
|
+
{
|
|
599
|
+
var property = control.GetType().GetProperty("isPressed", BindingFlags.Public | BindingFlags.Instance);
|
|
600
|
+
if (property == null || property.PropertyType != typeof(bool)) throw Error("E_RUNTIME_INPUT_SYSTEM_UNAVAILABLE", "Input System button readback API is unavailable.");
|
|
601
|
+
return (bool)property.GetValue(control, null);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
internal Vector2 ReadPosition(object control)
|
|
605
|
+
{
|
|
606
|
+
var method = control.GetType().GetMethods(BindingFlags.Public | BindingFlags.Instance).FirstOrDefault(candidate => candidate.Name == "ReadValue" && candidate.GetParameters().Length == 0 && candidate.ReturnType == typeof(Vector2));
|
|
607
|
+
if (method == null) throw Error("E_RUNTIME_INPUT_SYSTEM_UNAVAILABLE", "Input System pointer position readback API is unavailable.");
|
|
608
|
+
return (Vector2)method.Invoke(control, null);
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
internal string ControlPath(object control)
|
|
612
|
+
{
|
|
613
|
+
var property = control.GetType().GetProperty("path", BindingFlags.Public | BindingFlags.Instance);
|
|
614
|
+
var path = property == null ? null : Convert.ToString(property.GetValue(control, null), CultureInfo.InvariantCulture);
|
|
615
|
+
if (string.IsNullOrEmpty(path)) throw Error("E_RUNTIME_INPUT_UNPROVEN", "Input System control path readback is unavailable.");
|
|
616
|
+
return path;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
internal void QueueButton(object control, bool pressed)
|
|
620
|
+
{
|
|
621
|
+
QueueState(control, eventPtr => WriteValue(control, pressed ? (object)1f : 0f, eventPtr));
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
internal void QueuePointer(object positionControl, object buttonControl, Vector2 position, bool pressed)
|
|
625
|
+
{
|
|
626
|
+
QueueState(positionControl, eventPtr =>
|
|
627
|
+
{
|
|
628
|
+
WriteValue(positionControl, position, eventPtr);
|
|
629
|
+
if (buttonControl != null) WriteValue(buttonControl, pressed ? (object)1f : 0f, eventPtr);
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
internal void Update() { Invoke(updateMethod, null, null); }
|
|
634
|
+
|
|
635
|
+
private void QueueState(object control, Action<object> write)
|
|
636
|
+
{
|
|
637
|
+
var device = ReadProperty(control, "device");
|
|
638
|
+
if (device == null) throw Error("E_RUNTIME_INPUT_DEVICE_UNAVAILABLE", "The selected Input System control is detached from its device.");
|
|
639
|
+
var arguments = new[] { device, (object)null, tempAllocator };
|
|
640
|
+
var allocation = Invoke(stateEventFromMethod, null, arguments) as IDisposable;
|
|
641
|
+
var eventPtr = arguments[1];
|
|
642
|
+
if (allocation == null || eventPtr == null) throw Error("E_RUNTIME_INPUT_EXECUTION_FAILED", "Input System could not allocate a bounded state event.");
|
|
643
|
+
try
|
|
644
|
+
{
|
|
645
|
+
// full StateEvent必须使用Input System当前时钟,保证本次注入排在已排队硬件状态之后。
|
|
646
|
+
var currentTime = Convert.ToDouble(currentTimeProperty.GetValue(null, null), CultureInfo.InvariantCulture);
|
|
647
|
+
eventTimeProperty.SetValue(eventPtr, currentTime, null);
|
|
648
|
+
write(eventPtr);
|
|
649
|
+
Invoke(queueEventMethod, null, new[] { eventPtr });
|
|
650
|
+
}
|
|
651
|
+
finally { allocation.Dispose(); }
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
private void WriteValue(object control, object value, object eventPtr)
|
|
655
|
+
{
|
|
656
|
+
MethodInfo method;
|
|
657
|
+
try { method = writeValueMethod.MakeGenericMethod(value.GetType()); }
|
|
658
|
+
catch { throw Error("E_RUNTIME_INPUT_SYSTEM_UNAVAILABLE", "Input System control write API could not bind the requested value."); }
|
|
659
|
+
Invoke(method, null, new[] { control, value, eventPtr });
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
private static object ReadStaticCurrent(Type type)
|
|
663
|
+
{
|
|
664
|
+
var property = type.GetProperty("current", BindingFlags.Public | BindingFlags.Static);
|
|
665
|
+
return property == null ? null : property.GetValue(null, null);
|
|
666
|
+
}
|
|
667
|
+
|
|
668
|
+
private static object ReadProperty(object target, string name)
|
|
669
|
+
{
|
|
670
|
+
var property = target.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
|
671
|
+
return property == null ? null : property.GetValue(target, null);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
private static object Invoke(MethodInfo method, object target, object[] args)
|
|
675
|
+
{
|
|
676
|
+
try { return method.Invoke(target, args); }
|
|
677
|
+
catch (TargetInvocationException) { throw Error("E_RUNTIME_INPUT_EXECUTION_FAILED", "Input System rejected the queued runtime event."); }
|
|
678
|
+
catch (Exception) { throw Error("E_RUNTIME_INPUT_EXECUTION_FAILED", "Input System invocation failed before readback."); }
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
internal sealed class ResolvedPointer { internal object PositionControl; internal object ButtonControl; }
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
private sealed class RuntimeLogEntry
|
|
685
|
+
{
|
|
686
|
+
internal long Sequence;
|
|
687
|
+
internal string ObservedAt;
|
|
688
|
+
internal int FrameCount;
|
|
689
|
+
internal int Severity;
|
|
690
|
+
internal string Level;
|
|
691
|
+
internal string Message;
|
|
692
|
+
internal string StackTrace;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
internal sealed class UnityCliRuntimeToolException : Exception
|
|
697
|
+
{
|
|
698
|
+
internal string Code { get; private set; }
|
|
699
|
+
internal UnityCliRuntimeToolException(string code, string message) : base(message) { Code = code; }
|
|
700
|
+
}
|
|
701
|
+
}
|