@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
package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderVertexObjectCompletionProof.cs
ADDED
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Linq;
|
|
5
|
+
using UnityEditor;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
using UnityEngine.SceneManagement;
|
|
8
|
+
using UnityEngine.ProBuilder;
|
|
9
|
+
|
|
10
|
+
namespace UnityCli.ProBuilder
|
|
11
|
+
{
|
|
12
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
13
|
+
internal static class ProBuilderVertexObjectCompletionProof
|
|
14
|
+
{
|
|
15
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
16
|
+
internal sealed class CreateShapePlan
|
|
17
|
+
{
|
|
18
|
+
internal readonly ProBuilderShapeTopologyRecords.Record Record;
|
|
19
|
+
internal readonly HashSet<int> IdentitiesBefore;
|
|
20
|
+
internal readonly Scene Scene;
|
|
21
|
+
internal readonly string Name;
|
|
22
|
+
internal readonly Vector3 Position, RequestedWorldSize, LocalScale, ExpectedWorldBoundsCenter;
|
|
23
|
+
internal CreateShapePlan(ProBuilderShapeTopologyRecords.Record record, HashSet<int> before, Scene scene, string name, Vector3 position, Vector3 requestedWorldSize, Vector3 localScale, Vector3 expectedWorldBoundsCenter)
|
|
24
|
+
{ Record = record; IdentitiesBefore = before; Scene = scene; Name = name; Position = position; RequestedWorldSize = requestedWorldSize; LocalScale = localScale; ExpectedWorldBoundsCenter = expectedWorldBoundsCenter; }
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
28
|
+
internal static CreateShapePlan CaptureCreateShapePlan(string shape, string name, Vector3 position, float? width, float? height, float? depth, Scene activeScene)
|
|
29
|
+
{
|
|
30
|
+
if (ProBuilderReflection.InstalledPackageVersion != ProBuilderShapeTopologyRecords.PackageVersion
|
|
31
|
+
|| !ProBuilderShapeTopologyRecords.TryGet(shape, out var record)
|
|
32
|
+
|| activeScene != SceneManager.GetActiveScene()
|
|
33
|
+
|| !Finite(record.DefaultLocalBounds.center)
|
|
34
|
+
|| !Finite(record.DefaultLocalBounds.size)
|
|
35
|
+
|| record.DefaultLocalBounds.center != Vector3.zero) return null;
|
|
36
|
+
var baseSize = record.DefaultLocalBounds.size;
|
|
37
|
+
var requested = new Vector3(width ?? baseSize.x, height ?? baseSize.y, depth ?? baseSize.z);
|
|
38
|
+
if (!Finite(position) || !Finite(requested) || !ScaleForBounds(baseSize, requested, out var scale)) return null;
|
|
39
|
+
return new CreateShapePlan(record, CaptureObjectIdentities(), activeScene, name, position, requested, scale, position);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
43
|
+
private static bool ScaleForBounds(Vector3 baseSize, Vector3 requested, out Vector3 scale)
|
|
44
|
+
{
|
|
45
|
+
scale = Vector3.one;
|
|
46
|
+
for (var axis = 0; axis < 3; axis++)
|
|
47
|
+
{
|
|
48
|
+
var source = baseSize[axis]; var target = requested[axis];
|
|
49
|
+
if (source == 0f) { if (target != 0f) return false; continue; }
|
|
50
|
+
if (!(target > 0f)) return false;
|
|
51
|
+
scale[axis] = target / source;
|
|
52
|
+
if (!Finite(scale[axis])) return false;
|
|
53
|
+
}
|
|
54
|
+
return Finite(scale);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
58
|
+
internal static HashSet<int> CaptureObjectIdentities() => new HashSet<int>(UnityEngine.Object.FindObjectsOfType<GameObject>(true)
|
|
59
|
+
.Where(value => value != null && value.scene.IsValid() && value.scene.isLoaded).Select(value => value.GetInstanceID()));
|
|
60
|
+
|
|
61
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
62
|
+
internal static string CreatedShapeMismatch(CreateShapePlan plan, GameObject go, object mesh, ProBuilderOperationProof.ObjectIdentityClaim identity)
|
|
63
|
+
{
|
|
64
|
+
if (plan == null) return "plan";
|
|
65
|
+
if (go == null || mesh == null || identity == null || plan.IdentitiesBefore == null) return "object-identity";
|
|
66
|
+
if (plan.IdentitiesBefore.Contains(go.GetInstanceID()) || go.GetInstanceID() != identity.InstanceId) return "fresh-object-identity";
|
|
67
|
+
if (go.scene != plan.Scene || go.scene.handle != identity.SceneHandle) return "scene-identity";
|
|
68
|
+
if (!string.Equals(GlobalObjectId.GetGlobalObjectIdSlow(go).ToString(), identity.GlobalObjectId, StringComparison.Ordinal)) return "global-object-id";
|
|
69
|
+
if (!string.Equals(go.name, plan.Name, StringComparison.Ordinal)) return "name";
|
|
70
|
+
if (!Approximately(go.transform.position, plan.Position)) return "position";
|
|
71
|
+
var pb = mesh as ProBuilderMesh;
|
|
72
|
+
if (pb == null || !BoundsFromPositions(pb.positions, out var localBounds) || !Approximately(localBounds.center, Vector3.zero)) return "center-pivot";
|
|
73
|
+
var renderer = go.GetComponent<Renderer>();
|
|
74
|
+
if (renderer == null) return "renderer";
|
|
75
|
+
if (!Approximately(renderer.bounds.center, plan.ExpectedWorldBoundsCenter)) return "renderer-bounds-center";
|
|
76
|
+
if (!Approximately(renderer.bounds.size, plan.RequestedWorldSize)) return "renderer-bounds-size";
|
|
77
|
+
return plan.Record.Mismatch(mesh);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
81
|
+
private static bool BoundsFromPositions(IList<Vector3> positions, out Bounds bounds)
|
|
82
|
+
{
|
|
83
|
+
bounds = default;
|
|
84
|
+
if (positions == null || positions.Count == 0 || !Finite(positions[0])) return false;
|
|
85
|
+
bounds = new Bounds(positions[0], Vector3.zero);
|
|
86
|
+
for (var i = 1; i < positions.Count; i++)
|
|
87
|
+
{
|
|
88
|
+
if (!Finite(positions[i])) return false;
|
|
89
|
+
bounds.Encapsulate(positions[i]);
|
|
90
|
+
}
|
|
91
|
+
return Finite(bounds.center) && Finite(bounds.size);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// 以下类型仅服务于批准的 merge-objects、merge-vertices 与 weld-vertices dedicated proof。
|
|
95
|
+
internal sealed class ExpectedMesh
|
|
96
|
+
{
|
|
97
|
+
internal readonly CanonicalMeshSnapshot.RawVertex[] Raw;
|
|
98
|
+
internal readonly ExpectedFace[] Faces;
|
|
99
|
+
internal readonly int[][] SharedPartitions, TexturePartitions;
|
|
100
|
+
internal readonly bool HasSharedTextures;
|
|
101
|
+
internal ExpectedMesh(CanonicalMeshSnapshot.RawVertex[] raw, IEnumerable<ExpectedFace> faces, IEnumerable<int[]> shared, bool hasSharedTextures, IEnumerable<int[]> textures)
|
|
102
|
+
{ Raw = (CanonicalMeshSnapshot.RawVertex[])raw.Clone(); Faces = faces.ToArray(); SharedPartitions = shared.Select(value => value.ToArray()).ToArray(); HasSharedTextures = hasSharedTextures; TexturePartitions = textures.Select(value => value.ToArray()).ToArray(); }
|
|
103
|
+
}
|
|
104
|
+
internal sealed class ExpectedFace
|
|
105
|
+
{
|
|
106
|
+
internal readonly CanonicalMeshSnapshot.FaceOccurrence Source; internal readonly int[] RawStream; internal readonly int SubmeshIndex; internal readonly CanonicalMeshSnapshot.MaterialClaim Material;
|
|
107
|
+
internal ExpectedFace(CanonicalMeshSnapshot.FaceOccurrence source, IEnumerable<int> raw, int? submeshIndex = null, CanonicalMeshSnapshot.MaterialClaim material = null) { Source = source; RawStream = raw.ToArray(); SubmeshIndex = submeshIndex ?? source.SubmeshIndex; Material = material ?? source.Material; }
|
|
108
|
+
}
|
|
109
|
+
internal sealed class MergeVerticesPlan { internal CanonicalMeshSnapshot Before; internal ExpectedMesh Expected; internal int ExpectedReturnedIndex; internal bool IsNoOp; }
|
|
110
|
+
internal sealed class WeldPlan { internal CanonicalMeshSnapshot Before; internal ExpectedMesh Expected; internal int[][] Clusters; internal int SelectedHandleCount; internal bool IsUnambiguous; }
|
|
111
|
+
// merge-objects 继续使用完整 request-specific terminal proof。
|
|
112
|
+
internal sealed class MergeObjectsPlan
|
|
113
|
+
{
|
|
114
|
+
internal readonly CanonicalMeshSnapshot[] Sources;
|
|
115
|
+
internal readonly ExpectedMesh Expected;
|
|
116
|
+
internal readonly Material[] MaterialSlots;
|
|
117
|
+
internal readonly string Name;
|
|
118
|
+
internal MergeObjectsPlan(IEnumerable<CanonicalMeshSnapshot> sources, ExpectedMesh expected, IEnumerable<Material> slots, string name)
|
|
119
|
+
{ Sources = sources.ToArray(); Expected = expected; MaterialSlots = slots.ToArray(); Name = name; }
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// 仅保留已批准的请求语义。
|
|
123
|
+
internal static MergeObjectsPlan CaptureMergeObjects(GameObject[] targets, string name)
|
|
124
|
+
{
|
|
125
|
+
if (targets == null || targets.Length < 2 || targets.Any(target => target == null) || string.IsNullOrWhiteSpace(name)
|
|
126
|
+
|| targets.Select(target => target.GetInstanceID()).Distinct().Count() != targets.Length
|
|
127
|
+
|| targets.Any(left => targets.Any(right => left != right && (left.transform.IsChildOf(right.transform) || right.transform.IsChildOf(left.transform))))) return null;
|
|
128
|
+
var sources = targets.Select(target => CanonicalMeshSnapshot.Capture(target)).ToArray();
|
|
129
|
+
if (sources.Any(source => source == null || !source.HasSharedTextures || HasUv1(source) || !ProBuilderRefreshUvProof.RefreshUvsAreTerminal(source) || Mathf.Abs(source.LocalToWorldMatrix.determinant) <= Mathf.Epsilon || Mathf.Abs(source.WorldToLocalMatrix.determinant) <= Mathf.Epsilon)
|
|
130
|
+
|| targets.Any(target => !target.scene.IsValid() || !target.scene.isLoaded || target.scene.handle != targets[0].scene.handle || (target != targets[0] && target.transform.childCount != 0))) return null;
|
|
131
|
+
var renderers = targets.Select(target => target.GetComponent<Renderer>()).ToArray();
|
|
132
|
+
if (renderers.Any(renderer => renderer == null || renderer.sharedMaterials == null || renderer.sharedMaterials.Length == 0 || renderer.sharedMaterials.Any(material => material == null))
|
|
133
|
+
|| sources.SelectMany(source => source.Faces).Any(face => face.Material.State != CanonicalMeshSnapshot.MaterialState.Object)
|
|
134
|
+
|| sources.Skip(1).SelectMany(source => source.Faces).Any(face => !face.ManualUv && !face.Uv.useWorldSpace)
|
|
135
|
+
|| sources.Sum(source => source.RawVertices.Length) >= 65535) return null;
|
|
136
|
+
var target = sources[0]; var slots = new List<Material>(renderers[0].sharedMaterials); var raw = new List<CanonicalMeshSnapshot.RawVertex>(); var faces = new List<ExpectedFace>(); var shared = new List<int[]>(); var textures = new List<int[]>();
|
|
137
|
+
for (var sourceIndex = 0; sourceIndex < sources.Length; sourceIndex++)
|
|
138
|
+
{
|
|
139
|
+
var source = sources[sourceIndex]; var offset = raw.Count;
|
|
140
|
+
foreach (var vertex in source.RawVertices)
|
|
141
|
+
{
|
|
142
|
+
var local = sourceIndex == 0 ? vertex.LocalPosition : target.WorldToLocalMatrix.MultiplyPoint3x4(source.LocalToWorldMatrix.MultiplyPoint3x4(vertex.LocalPosition));
|
|
143
|
+
raw.Add(CopyRaw(vertex, local, offset + vertex.RawIndex, target.LocalToWorldMatrix.MultiplyPoint3x4(local)));
|
|
144
|
+
}
|
|
145
|
+
foreach (var face in source.Faces)
|
|
146
|
+
{
|
|
147
|
+
var material = renderers[sourceIndex].sharedMaterials[Mathf.Clamp(face.SubmeshIndex, 0, renderers[sourceIndex].sharedMaterials.Length - 1)];
|
|
148
|
+
var slot = slots.IndexOf(material); if (slot < 0) { slots.Add(material); slot = slots.Count - 1; }
|
|
149
|
+
faces.Add(new ExpectedFace(face, face.DirectedRawTriangleStream.Select(index => offset + index), slot, CanonicalMeshSnapshot.WithEffectiveSlot(face.Material, slot)));
|
|
150
|
+
}
|
|
151
|
+
shared.AddRange(source.SharedVertices.Select(group => group.MemberRawIndexes.Select(index => offset + index).ToArray()));
|
|
152
|
+
textures.AddRange(source.SharedTextures.Select(group => group.MemberRawIndexes.Select(index => offset + index).ToArray()));
|
|
153
|
+
}
|
|
154
|
+
var expectedRaw = raw.ToArray();
|
|
155
|
+
var expected = new ExpectedMesh(expectedRaw, faces, shared, true, textures);
|
|
156
|
+
if (faces.Any(face => HasTriangleAtOrBelowEpsilon(face.RawStream, expectedRaw)) || !ExpectedMeshFinite(target, expected)) return null;
|
|
157
|
+
return new MergeObjectsPlan(sources, expected, slots, name);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
internal static bool MergeObjectsMatches(MergeObjectsPlan plan, GameObject freshGo, ProBuilderMesh freshMesh)
|
|
161
|
+
{
|
|
162
|
+
if (plan == null || freshGo == null || freshMesh == null || plan.Sources.Length < 2) return false;
|
|
163
|
+
var first = plan.Sources[0];
|
|
164
|
+
if (freshGo.GetInstanceID() != first.Identity.GameObjectInstanceId || freshMesh.GetInstanceID() != first.Identity.ProBuilderMeshInstanceId || freshGo.scene.handle != first.Identity.SceneHandle || !string.Equals(freshGo.scene.path, first.Identity.ScenePath, StringComparison.Ordinal) || !string.Equals(GlobalObjectId.GetGlobalObjectIdSlow(freshGo).ToString(), first.Identity.GlobalObjectId, StringComparison.Ordinal) || !string.Equals(freshGo.name, plan.Name, StringComparison.Ordinal) || plan.Sources.Skip(1).Any(source => EditorUtility.InstanceIDToObject(source.Identity.GameObjectInstanceId) != null)) return false;
|
|
165
|
+
var after = CanonicalMeshSnapshot.Capture(freshGo); var renderer = freshGo.GetComponent<Renderer>();
|
|
166
|
+
return after != null && SameIdentityAndTransform(first, after) && ExactExpectedEquals(after, plan.Expected) && renderer != null && renderer.sharedMaterials != null && renderer.sharedMaterials.Length == plan.MaterialSlots.Length && renderer.sharedMaterials.Zip(plan.MaterialSlots, (actual, expected) => actual == expected).All(value => value);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
internal static MergeVerticesPlan CaptureMergeVertices(object value, int[] requested, bool collapseToFirst)
|
|
170
|
+
{
|
|
171
|
+
var mesh = value as ProBuilderMesh; var before = mesh == null ? null : CanonicalMeshSnapshot.Capture(mesh.gameObject);
|
|
172
|
+
if (before == null || requested == null || requested.Length < 2 || requested.Any(raw => raw < 0 || raw >= before.RawVertices.Length)) return null;
|
|
173
|
+
var center = collapseToFirst ? before.RawVertices[requested[0]] : AverageRaw(before.RawVertices, requested);
|
|
174
|
+
if (!RawTerminalFinite(before, center)) return null;
|
|
175
|
+
var requestedHandles = requested.Select(raw => before.RawVertices[raw].SharedHandle).Distinct().ToArray();
|
|
176
|
+
var sharedGroups = mesh.sharedVertices;
|
|
177
|
+
if (sharedGroups == null || requestedHandles.Any(handle => handle < 0 || handle >= sharedGroups.Count)) return null;
|
|
178
|
+
// 仅保留已批准的请求语义。
|
|
179
|
+
var mergedMemberOrder = requestedHandles.OrderBy(handle => handle).SelectMany(handle => sharedGroups[handle].ToArray()).ToArray();
|
|
180
|
+
var memberSet = new HashSet<int>(mergedMemberOrder);
|
|
181
|
+
var raw = before.RawVertices.Select(value => CopyRaw(value, memberSet.Contains(value.RawIndex) ? center : value)).ToArray();
|
|
182
|
+
var handles = before.RawVertices.Select(value => requestedHandles.Contains(value.SharedHandle) ? requestedHandles[0] : value.SharedHandle).ToArray();
|
|
183
|
+
var textures = SplitRequestedTexturePartitions(before, requested);
|
|
184
|
+
var expected = RemoveDegenerateAndReindex(before, raw, handles, textures);
|
|
185
|
+
if (expected == null || !ExpectedMeshFinite(before, expected.Mesh)) return null;
|
|
186
|
+
var survivingMembers = mergedMemberOrder.Where(rawIndex => expected.OldToNew.ContainsKey(rawIndex)).ToArray();
|
|
187
|
+
var survivorOld = survivingMembers.Length == 0 ? -1 : survivingMembers[survivingMembers.Length - 1];
|
|
188
|
+
var survivor = survivorOld < 0 ? -1 : expected.OldToNew[survivorOld];
|
|
189
|
+
var isNoOp = ExactExpectedEquals(before, expected.Mesh);
|
|
190
|
+
if (!isNoOp && (!before.HasSharedTextures || HasUv1(before))) return null;
|
|
191
|
+
return new MergeVerticesPlan { Before = before, Expected = expected.Mesh, ExpectedReturnedIndex = survivor, IsNoOp = isNoOp };
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
internal static bool MergeVerticesMatches(MergeVerticesPlan plan, object value, int returnedIndex)
|
|
195
|
+
{
|
|
196
|
+
var mesh = value as ProBuilderMesh; var after = mesh == null ? null : CanonicalMeshSnapshot.CaptureAfterMergeVertices(mesh.gameObject);
|
|
197
|
+
return plan != null && after != null && returnedIndex == plan.ExpectedReturnedIndex && SameIdentityAndTransform(plan.Before, after) && CanonicalMeshSnapshot.RendererMaterialsEqual(plan.Before, after) && ExactExpectedEquals(after, plan.Expected);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
internal static WeldPlan CaptureWeld(object value, int[] requested, float radius)
|
|
201
|
+
{
|
|
202
|
+
var mesh = value as ProBuilderMesh; var before = mesh == null ? null : CanonicalMeshSnapshot.Capture(mesh.gameObject);
|
|
203
|
+
if (before == null || requested == null || float.IsNaN(radius) || float.IsInfinity(radius) || radius <= 0 || !Finite(radius * radius) || requested.Any(raw => raw < 0 || raw >= before.RawVertices.Length)) return null;
|
|
204
|
+
var handles = requested.Select(raw => before.RawVertices[raw].SharedHandle).Distinct().OrderBy(value => value).ToArray();
|
|
205
|
+
var components = Components(before, handles, radius);
|
|
206
|
+
// 5.2.4 KdTree 对大于两个 handle 的 transitive cluster 存在顺序歧义,effect 前必须拒绝。
|
|
207
|
+
var unambiguous = components.All(component => component.Length <= 2 && component.All(a => component.All(b => a == b || Near(before, a, b, radius))));
|
|
208
|
+
if (!unambiguous) return new WeldPlan { Before = before, IsUnambiguous = false, SelectedHandleCount = handles.Length };
|
|
209
|
+
if (components.All(component => component.Length == 1)) return new WeldPlan { Before = before, Clusters = components, SelectedHandleCount = handles.Length, IsUnambiguous = true };
|
|
210
|
+
if (HasUv1(before)) return null;
|
|
211
|
+
var raw = before.RawVertices.Select(value => CopyRaw(value, value)).ToArray();
|
|
212
|
+
var remap = before.RawVertices.Select(value => value.SharedHandle).ToArray();
|
|
213
|
+
foreach (var cluster in components)
|
|
214
|
+
{
|
|
215
|
+
var average = Average(cluster.Select(handle => Shared(before, handle).CanonicalPosition));
|
|
216
|
+
if (!Finite(average)) return null;
|
|
217
|
+
foreach (var rawIndex in cluster.SelectMany(handle => Shared(before, handle).MemberRawIndexes))
|
|
218
|
+
{ raw[rawIndex] = CopyRaw(raw[rawIndex], average); remap[rawIndex] = cluster[0]; }
|
|
219
|
+
}
|
|
220
|
+
var expected = new ExpectedMesh(raw, before.Faces.Select(face => new ExpectedFace(face, face.DirectedRawTriangleStream)), PartitionsFromHandles(remap), before.HasSharedTextures, before.SharedTextures.Select(group => group.MemberRawIndexes));
|
|
221
|
+
if (!ExpectedMeshFinite(before, expected)) return null;
|
|
222
|
+
return new WeldPlan { Before = before, Expected = expected, Clusters = components, SelectedHandleCount = handles.Length, IsUnambiguous = true };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
internal static bool WeldPlanIsUnambiguous(WeldPlan plan) => plan != null && plan.IsUnambiguous;
|
|
226
|
+
internal static bool WeldIsNoOp(WeldPlan plan) => plan != null && plan.IsUnambiguous && plan.Clusters.All(cluster => cluster.Length == 1);
|
|
227
|
+
internal static bool WeldMatches(WeldPlan plan, object value, int weldedCount)
|
|
228
|
+
{
|
|
229
|
+
var mesh = value as ProBuilderMesh; var after = mesh == null ? null : CanonicalMeshSnapshot.CaptureRelaxedAfterWeld(mesh.gameObject);
|
|
230
|
+
return plan != null && plan.IsUnambiguous && after != null && weldedCount == plan.SelectedHandleCount && SameIdentityAndTransform(plan.Before, after) && CanonicalMeshSnapshot.RendererMaterialsEqual(plan.Before, after) && ExactExpectedEquals(after, plan.Expected);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
234
|
+
private static ReindexedExpected RemoveDegenerateAndReindex(CanonicalMeshSnapshot before, CanonicalMeshSnapshot.RawVertex[] raw, int[] handles, int[][] textures)
|
|
235
|
+
{
|
|
236
|
+
var faces = new List<ExpectedFace>();
|
|
237
|
+
foreach (var face in before.Faces)
|
|
238
|
+
{
|
|
239
|
+
var canonical = new Dictionary<int, int>(); var stream = new List<int>(); var source = face.DirectedRawTriangleStream;
|
|
240
|
+
for (var i = 0; i < source.Length; i += 3)
|
|
241
|
+
{
|
|
242
|
+
var a = source[i]; var b = source[i + 1]; var c = source[i + 2];
|
|
243
|
+
var area = UnityEngine.ProBuilder.Math.TriangleArea(raw[a].LocalPosition, raw[b].LocalPosition, raw[c].LocalPosition);
|
|
244
|
+
if (!(area > Mathf.Epsilon) || handles[a] == handles[b] || handles[a] == handles[c] || handles[b] == handles[c]) continue;
|
|
245
|
+
if (!canonical.TryGetValue(handles[a], out var ca)) canonical.Add(handles[a], ca = a);
|
|
246
|
+
if (!canonical.TryGetValue(handles[b], out var cb)) canonical.Add(handles[b], cb = b);
|
|
247
|
+
if (!canonical.TryGetValue(handles[c], out var cc)) canonical.Add(handles[c], cc = c);
|
|
248
|
+
stream.Add(ca); stream.Add(cb); stream.Add(cc);
|
|
249
|
+
}
|
|
250
|
+
if (stream.Count > 0) faces.Add(new ExpectedFace(face, stream));
|
|
251
|
+
}
|
|
252
|
+
var used = new HashSet<int>(faces.SelectMany(face => face.RawStream)); var map = new Dictionary<int, int>(); var compact = new List<CanonicalMeshSnapshot.RawVertex>();
|
|
253
|
+
for (var old = 0; old < raw.Length; old++) if (used.Contains(old)) { map.Add(old, compact.Count); compact.Add(CopyRaw(raw[old], raw[old].LocalPosition, compact.Count)); }
|
|
254
|
+
var compactFaces = faces.Select(face => new ExpectedFace(face.Source, face.RawStream.Select(index => map[index]))).ToArray();
|
|
255
|
+
var compactHandles = map.OrderBy(pair => pair.Value).Select(pair => handles[pair.Key]).ToArray();
|
|
256
|
+
var compactTextures = textures.Select(group => group.Where(map.ContainsKey).Select(index => map[index]).ToArray()).Where(group => group.Length > 0);
|
|
257
|
+
return new ReindexedExpected { Mesh = new ExpectedMesh(compact.ToArray(), compactFaces, PartitionsFromHandles(compactHandles), before.HasSharedTextures, compactTextures), OldToNew = map };
|
|
258
|
+
}
|
|
259
|
+
private sealed class ReindexedExpected { internal ExpectedMesh Mesh; internal Dictionary<int, int> OldToNew; }
|
|
260
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, CanonicalMeshSnapshot.RawVertex authoritative)
|
|
261
|
+
=> CopyRaw(source, authoritative.LocalPosition, source.RawIndex, authoritative.LocalNormal, authoritative.Tangent, authoritative.Color, authoritative.Uvs);
|
|
262
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, Vector3 position)
|
|
263
|
+
=> CopyRaw(source, position, source.RawIndex, source.Color, source.Uvs);
|
|
264
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, Vector3 position, int rawIndex)
|
|
265
|
+
=> CopyRaw(source, position, rawIndex, source.Color, source.Uvs);
|
|
266
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, Vector3 position, int rawIndex, Vector3 world)
|
|
267
|
+
=> new CanonicalMeshSnapshot.RawVertex(rawIndex, source.SharedHandle, position, world, source.LocalNormal, source.Tangent, source.Color, source.Uvs);
|
|
268
|
+
private static CanonicalMeshSnapshot.RawVertex AverageRaw(CanonicalMeshSnapshot.RawVertex[] raw, int[] requested)
|
|
269
|
+
{
|
|
270
|
+
var selected = requested.Select(index => raw[index]).ToArray();
|
|
271
|
+
return CopyRaw(selected[0], Average(selected.Select(value => value.LocalPosition)), selected[0].RawIndex,
|
|
272
|
+
AverageChannel(selected.Select(value => value.LocalNormal)), AverageChannel(selected.Select(value => value.Tangent)),
|
|
273
|
+
AverageChannel(selected.Select(value => value.Color)), AverageUv(selected, 0, 1), AverageUv(selected, 1, 1), AverageUv(selected, 2, 1), AverageUv(selected, 3, 1));
|
|
274
|
+
}
|
|
275
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, Vector3 position, int rawIndex, CanonicalMeshSnapshot.ChannelValue color, params CanonicalMeshSnapshot.ChannelValue[] uvs)
|
|
276
|
+
=> CopyRaw(source, position, rawIndex, source.LocalNormal, source.Tangent, color, uvs);
|
|
277
|
+
private static CanonicalMeshSnapshot.RawVertex CopyRaw(CanonicalMeshSnapshot.RawVertex source, Vector3 position, int rawIndex,
|
|
278
|
+
CanonicalMeshSnapshot.ChannelValue normal, CanonicalMeshSnapshot.ChannelValue tangent, CanonicalMeshSnapshot.ChannelValue color,
|
|
279
|
+
params CanonicalMeshSnapshot.ChannelValue[] uvs)
|
|
280
|
+
=> new CanonicalMeshSnapshot.RawVertex(rawIndex, source.SharedHandle, position, source.WorldPosition, normal, tangent, color, uvs);
|
|
281
|
+
private static CanonicalMeshSnapshot.ChannelValue AverageChannel(IEnumerable<CanonicalMeshSnapshot.ChannelValue> values)
|
|
282
|
+
{ var present = values.Where(value => value.IsPresent).ToArray(); return present.Length == 0 ? new CanonicalMeshSnapshot.ChannelValue(false, Vector4.zero) : new CanonicalMeshSnapshot.ChannelValue(true, present.Aggregate(Vector4.zero, (sum, value) => sum + value.Value) / present.Length); }
|
|
283
|
+
private static CanonicalMeshSnapshot.ChannelValue AverageUv(CanonicalMeshSnapshot.RawVertex[] values, int channel, int ignored) => AverageChannel(values.Select(value => value.Uvs[channel]));
|
|
284
|
+
private static int[][] SplitRequestedTexturePartitions(CanonicalMeshSnapshot before, int[] requested)
|
|
285
|
+
{ var selected = new HashSet<int>(requested); return before.SharedTextures.SelectMany(group => group.MemberRawIndexes.Where(selected.Contains).Select(raw => new[] { raw }).Concat(new[] { group.MemberRawIndexes.Where(raw => !selected.Contains(raw)).ToArray() })).Where(group => group.Length > 0).ToArray(); }
|
|
286
|
+
private static int[][] PartitionsFromHandles(int[] handles) => handles.Select((handle, raw) => new { handle, raw }).GroupBy(value => value.handle).Select(group => group.Select(value => value.raw).ToArray()).ToArray();
|
|
287
|
+
private static int[][] Components(CanonicalMeshSnapshot before, int[] handles, float radius)
|
|
288
|
+
{ var remaining = new HashSet<int>(handles); var result = new List<int[]>(); while (remaining.Count > 0) { var root = remaining.Min(); var component = new List<int> { root }; remaining.Remove(root); for (var index = 0; index < component.Count; index++) foreach (var candidate in remaining.Where(candidate => Near(before, component[index], candidate, radius)).ToArray()) { remaining.Remove(candidate); component.Add(candidate); } result.Add(component.OrderBy(value => value).ToArray()); } return result.ToArray(); }
|
|
289
|
+
private static bool SameIdentityAndTransform(CanonicalMeshSnapshot before, CanonicalMeshSnapshot after) => CanonicalMeshSnapshot.IdentityAndTransformEqual(before, after);
|
|
290
|
+
private static bool ExactExpectedEquals(CanonicalMeshSnapshot actual, ExpectedMesh expected)
|
|
291
|
+
{
|
|
292
|
+
if (actual == null || expected == null || actual.HasSharedTextures != expected.HasSharedTextures || actual.RawVertices.Length != expected.Raw.Length || actual.Faces.Length != expected.Faces.Length || !CanonicalMeshSnapshot.DerivedChannelsMatch(actual)) return false;
|
|
293
|
+
for (var index = 0; index < expected.Raw.Length; index++) if (!RawExpectedEquals(actual.RawVertices[index], expected.Raw[index])) return false;
|
|
294
|
+
var remaining = actual.Faces.ToList(); foreach (var face in expected.Faces) { var index = remaining.FindIndex(candidate => FaceExpectedEquals(candidate, face)); if (index < 0) return false; remaining.RemoveAt(index); }
|
|
295
|
+
return PartitionEquals(actual.SharedVertices.Select(group => group.MemberRawIndexes), expected.SharedPartitions) && PartitionEquals(actual.SharedTextures.Select(group => group.MemberRawIndexes), expected.TexturePartitions);
|
|
296
|
+
}
|
|
297
|
+
private static bool RawExpectedEquals(CanonicalMeshSnapshot.RawVertex actual, CanonicalMeshSnapshot.RawVertex expected) => CanonicalMeshSnapshot.ExactEquals(actual.LocalPosition, expected.LocalPosition) && CanonicalMeshSnapshot.RawChannelValueEquals(actual, expected);
|
|
298
|
+
private static bool FaceExpectedEquals(CanonicalMeshSnapshot.FaceOccurrence actual, ExpectedFace expected) => actual.SubmeshIndex == expected.SubmeshIndex && actual.SmoothingGroup == expected.Source.SmoothingGroup && actual.TextureGroup == expected.Source.TextureGroup && actual.ElementGroup == expected.Source.ElementGroup && actual.ManualUv == expected.Source.ManualUv && CanonicalMeshSnapshot.UvValueEquals(actual.Uv, expected.Source.Uv) && CanonicalMeshSnapshot.MaterialValueEquals(actual.Material, expected.Material) && actual.DirectedRawTriangleStream.SequenceEqual(expected.RawStream);
|
|
299
|
+
private static bool PartitionEquals(IEnumerable<int[]> actual, IEnumerable<int[]> expected) => CanonicalMeshSnapshot.ExactMultisetEquals(actual.Select(group => group.OrderBy(value => value).ToArray()), expected.Select(group => group.OrderBy(value => value).ToArray()), (left, right) => left.SequenceEqual(right));
|
|
300
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
301
|
+
private static bool ExpectedMeshFinite(CanonicalMeshSnapshot before, ExpectedMesh expected)
|
|
302
|
+
{
|
|
303
|
+
if (before == null || expected == null || expected.Raw == null || expected.Faces == null || expected.Raw.Any(raw => !RawTerminalFinite(before, raw))) return false;
|
|
304
|
+
foreach (var face in expected.Faces)
|
|
305
|
+
{
|
|
306
|
+
var stream = face?.RawStream;
|
|
307
|
+
if (stream == null || stream.Length < 3 || stream.Length % 3 != 0 || stream.Any(raw => raw < 0 || raw >= expected.Raw.Length)) return false;
|
|
308
|
+
}
|
|
309
|
+
return CanonicalMeshSnapshot.RefreshArithmeticFinite(
|
|
310
|
+
expected.Raw.Select(raw => raw.LocalPosition).ToArray(),
|
|
311
|
+
expected.Raw.Select(raw => raw.Uvs[0]).ToArray(),
|
|
312
|
+
expected.Faces.Select(face => face.RawStream),
|
|
313
|
+
expected.Faces.Select(face => face.Source.SmoothingGroup));
|
|
314
|
+
}
|
|
315
|
+
private static bool RawTerminalFinite(CanonicalMeshSnapshot before, CanonicalMeshSnapshot.RawVertex raw)
|
|
316
|
+
{
|
|
317
|
+
if (before == null || raw == null || !Finite(raw.LocalPosition) || !Finite(before.LocalToWorldMatrix.MultiplyPoint3x4(raw.LocalPosition))
|
|
318
|
+
|| !Finite(raw.LocalNormal) || !Finite(raw.Tangent) || !Finite(raw.Color)) return false;
|
|
319
|
+
return raw.Uvs.All(Finite);
|
|
320
|
+
}
|
|
321
|
+
private static bool HasUv1(CanonicalMeshSnapshot snapshot) => snapshot != null && snapshot.RawVertices.Any(raw => raw.Uvs[1].IsPresent);
|
|
322
|
+
private static bool Finite(CanonicalMeshSnapshot.ChannelValue value) => value != null && (!value.IsPresent || Finite(value.Value));
|
|
323
|
+
private static bool Finite(float value) => !float.IsNaN(value) && !float.IsInfinity(value);
|
|
324
|
+
private static bool Approximately(Vector3 left, Vector3 right) => (left - right).sqrMagnitude <= 0.00000001f;
|
|
325
|
+
private static bool Finite(Vector3 value) => Finite(value.x) && Finite(value.y) && Finite(value.z);
|
|
326
|
+
private static bool Finite(Vector4 value) => Finite(value.x) && Finite(value.y) && Finite(value.z) && Finite(value.w);
|
|
327
|
+
/// <summary>内部证明辅助逻辑。</summary>
|
|
328
|
+
private static bool HasTriangleAtOrBelowEpsilon(IEnumerable<int> stream, IReadOnlyList<CanonicalMeshSnapshot.RawVertex> raw)
|
|
329
|
+
{
|
|
330
|
+
var indexes = stream.ToArray();
|
|
331
|
+
for (var index = 0; index < indexes.Length; index += 3)
|
|
332
|
+
if (!(UnityEngine.ProBuilder.Math.TriangleArea(raw[indexes[index]].LocalPosition, raw[indexes[index + 1]].LocalPosition, raw[indexes[index + 2]].LocalPosition) > Mathf.Epsilon)) return true;
|
|
333
|
+
return false;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
private static CanonicalMeshSnapshot.SharedVertexSnapshot Shared(CanonicalMeshSnapshot snapshot, int handle) => snapshot.SharedVertices.Single(item => item.Handle == handle);
|
|
337
|
+
private static bool Near(CanonicalMeshSnapshot snapshot, int a, int b, float radius)
|
|
338
|
+
{
|
|
339
|
+
var delta = Shared(snapshot, a).CanonicalPosition - Shared(snapshot, b).CanonicalPosition;
|
|
340
|
+
var squared = delta.sqrMagnitude; var radiusSquared = radius * radius;
|
|
341
|
+
return Finite(delta) && Finite(squared) && Finite(radiusSquared) && squared <= radiusSquared;
|
|
342
|
+
}
|
|
343
|
+
private static Vector3 Average(IEnumerable<Vector3> values) { var all = values.ToArray(); return all.Aggregate(Vector3.zero, (sum, item) => sum + item) / all.Length; }
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
#endif
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Linq;
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
using UnityEditor.SceneManagement;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
using UnityEngine.ProBuilder;
|
|
8
|
+
|
|
9
|
+
namespace UnityCli.ProBuilder
|
|
10
|
+
{
|
|
11
|
+
/// <summary>
|
|
12
|
+
/// probuilder.append-vertices-to-edge — 沿选定边追加新顶点。
|
|
13
|
+
/// </summary>
|
|
14
|
+
public class AppendVerticesToEdgeTool : IUnityCliTool<AppendVerticesToEdgeTool.Request, AppendVerticesToEdgeTool.Result>
|
|
15
|
+
{
|
|
16
|
+
// ── 协议类型 ──
|
|
17
|
+
public sealed class Request
|
|
18
|
+
{
|
|
19
|
+
[UnityCliRequired] public string Target { get; set; }
|
|
20
|
+
public long? Count { get; set; } // 可选,默认 1
|
|
21
|
+
public List<long> EdgeIndices { get; set; } // 可选,边索引列表
|
|
22
|
+
public List<EdgeRef> Edges { get; set; } // 可选,顶点对边列表
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/// <summary>边引用(顶点索引对)。</summary>
|
|
26
|
+
public sealed class EdgeRef
|
|
27
|
+
{
|
|
28
|
+
public long A { get; set; }
|
|
29
|
+
public long B { get; set; }
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public sealed class Result
|
|
33
|
+
{
|
|
34
|
+
public long InsertedCount { get; set; }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// ── desc ──
|
|
38
|
+
public ToolDescriptor Describe() => new()
|
|
39
|
+
{
|
|
40
|
+
Name = "probuilder.append-vertices-to-edge",
|
|
41
|
+
Summary = "Append new vertices along selected edges of a ProBuilder mesh.",
|
|
42
|
+
Description = "Append new vertices along an edge of a ProBuilder mesh. Specify edges by edgeIndices (indices into the unique edge list) or by vertex-pair edges [{a,b}]. Requires at least one edge selection. The mesh must have initialized sharedTextures. Selected edges must not rebuild the same face, and every raw vertex of an affected face must be owned exclusively by that face and not referenced by any retained face; this restriction preserves the deterministic ProBuilder 5.2.4 planning order required for complete readback proof. The target requires a Renderer with nonempty sharedMaterials, every face submeshIndex in that material-slot range, and at least one face exactly referencing every material slot; this complete material slot coverage restriction prevents ToMesh from compacting submeshes and reordering materials.",
|
|
43
|
+
Group = "probuilder",
|
|
44
|
+
DestructiveHint = false,
|
|
45
|
+
SideEffects = new[] { "scene-modify", "undo-stack" },
|
|
46
|
+
Target = "editor",
|
|
47
|
+
PlayModeSupport = "editor-only",
|
|
48
|
+
DefaultTimeoutMs = 10000,
|
|
49
|
+
MaxTimeoutMs = 30000,
|
|
50
|
+
Examples = new[]
|
|
51
|
+
{
|
|
52
|
+
new ToolExample { Description = "沿边 0 追加 1 个顶点", Input = new Request { Target = "MyCube", Count = 1, EdgeIndices = new List<long> { 0 } } }
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
// ── handler ──
|
|
57
|
+
public System.Threading.Tasks.ValueTask<Result> ExecuteAsync(Request request, UnityCliProjectToolContext ctx, System.Threading.CancellationToken ct = default)
|
|
58
|
+
{
|
|
59
|
+
if (!ProBuilderReflection.IsAvailable)
|
|
60
|
+
throw ProBuilderErrors.PackageNotAvailable();
|
|
61
|
+
|
|
62
|
+
var target = request.Target;
|
|
63
|
+
var go = ProBuilderInput.ResolveTarget(target);
|
|
64
|
+
if (go == null) throw ProBuilderErrors.TargetNotFound(request.Target);
|
|
65
|
+
|
|
66
|
+
var mesh = ProBuilderReflection.GetProBuilderMesh(go);
|
|
67
|
+
if (mesh == null) throw ProBuilderErrors.OperationFailed("append-vertices-to-edge", "No ProBuilderMesh on target.");
|
|
68
|
+
|
|
69
|
+
var count = ProBuilderOperationProof.CheckedInt(request.Count ?? 1, "count");
|
|
70
|
+
int[] edgeIndices = request.EdgeIndices?.Select(i => ProBuilderOperationProof.CheckedInt(i, "edgeIndices")).ToArray();
|
|
71
|
+
ProBuilderInput.EdgePair[] edgePairs = request.Edges?.Select(e => new ProBuilderInput.EdgePair { a = ProBuilderOperationProof.CheckedInt(e.A, "edges.a"), b = ProBuilderOperationProof.CheckedInt(e.B, "edges.b") }).ToArray();
|
|
72
|
+
|
|
73
|
+
if ((edgeIndices == null || edgeIndices.Length == 0) && (edgePairs == null || edgePairs.Length == 0))
|
|
74
|
+
throw ProBuilderErrors.SchemaInvalid("edgeIndices or edges parameter is required for append-vertices-to-edge.");
|
|
75
|
+
|
|
76
|
+
if (count < 1 || count > 512)
|
|
77
|
+
throw ProBuilderErrors.SchemaInvalid("count must be between 1 and 512 (the ProBuilder 5.2.4 AppendElements limit).");
|
|
78
|
+
var edgeArray = ProBuilderOperationProof.ValidateEdges(mesh, edgeIndices, edgePairs);
|
|
79
|
+
var frozenEdges = edgeArray.Cast<Edge>().Select(edge => new Edge(edge.a, edge.b)).ToArray();
|
|
80
|
+
var plan = ProBuilderAppendCompletionProof.TryCreate(go, mesh as ProBuilderMesh, frozenEdges, count);
|
|
81
|
+
if (plan == null)
|
|
82
|
+
throw ProBuilderErrors.SchemaInvalid("append-vertices-to-edge requires a uniquely ordered ProBuilder 5.2.4 terminal-state plan.");
|
|
83
|
+
ctx.CommitEffect();
|
|
84
|
+
try
|
|
85
|
+
{
|
|
86
|
+
Undo.RecordObject(go, "ProBuilder Append Vertices");
|
|
87
|
+
|
|
88
|
+
bool appended;
|
|
89
|
+
// effect 只消费 effect 前冻结的 typed Edge[];禁止从 mutation 后 mesh 重建选区。
|
|
90
|
+
try { appended = ProBuilderReflection.AppendVerticesToEdge(mesh, plan.FrozenEdges, plan.Count); }
|
|
91
|
+
catch (UnityCliBridge.BridgeCommandException) { throw; }
|
|
92
|
+
catch { throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "invoke", "AppendElements.AppendVerticesToEdge threw after the effect barrier."); }
|
|
93
|
+
if (!appended)
|
|
94
|
+
throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "invoke", "AppendElements.AppendVerticesToEdge method not found or failed in ProBuilder assembly.");
|
|
95
|
+
|
|
96
|
+
if (!ProBuilderReflection.RefreshMeshPreservingVertexPayload(mesh))
|
|
97
|
+
throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "readback", "ProBuilder mesh payload-preserving refresh failed after effect.");
|
|
98
|
+
EditorSceneManager.MarkSceneDirty(go.scene);
|
|
99
|
+
try
|
|
100
|
+
{
|
|
101
|
+
// complete proof 内部按 effect 前 identity fresh-resolve,并从 freshMesh.gameObject 捕获完整 canonical snapshot。
|
|
102
|
+
if (!ProBuilderAppendCompletionProof.Matches(plan, target))
|
|
103
|
+
throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "postcondition", "The complete ProBuilder 5.2.4 append terminal state was not proven by fresh readback.");
|
|
104
|
+
}
|
|
105
|
+
catch (UnityCliBridge.BridgeCommandException) { throw; }
|
|
106
|
+
catch (System.Exception)
|
|
107
|
+
{
|
|
108
|
+
throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "postcondition", "Append terminal-state readback threw after the effect barrier.");
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return new System.Threading.Tasks.ValueTask<Result>(new Result { InsertedCount = plan.InsertedCount });
|
|
112
|
+
}
|
|
113
|
+
catch (UnityCliBridge.BridgeCommandException) { throw; }
|
|
114
|
+
catch (System.Exception exception) { throw ProBuilderErrors.OutcomeUnknown("append-vertices-to-edge", "postcondition", exception.Message); }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
#endif
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Linq;
|
|
5
|
+
using UnityEditor;
|
|
6
|
+
using UnityEditor.SceneManagement;
|
|
7
|
+
using UnityEngine;
|
|
8
|
+
|
|
9
|
+
namespace UnityCli.ProBuilder
|
|
10
|
+
{
|
|
11
|
+
/// <summary>
|
|
12
|
+
/// probuilder.auto-smooth — 按角度阈值自动平滑选定面。
|
|
13
|
+
/// </summary>
|
|
14
|
+
public class AutoSmoothTool : IUnityCliTool<AutoSmoothTool.Request, AutoSmoothTool.Result>
|
|
15
|
+
{
|
|
16
|
+
public sealed class Request
|
|
17
|
+
{
|
|
18
|
+
[UnityCliRequired] public string Target { get; set; }
|
|
19
|
+
public double? AngleThreshold { get; set; } // 可选,默认 30
|
|
20
|
+
public List<long> FaceIndices { get; set; } // 可选,空则作用于全部面
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
public sealed class Result
|
|
24
|
+
{
|
|
25
|
+
public long SmoothedFaceCount { get; set; }
|
|
26
|
+
public bool Changed { get; set; }
|
|
27
|
+
public string NoOpReason { get; set; }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public ToolDescriptor Describe() => new()
|
|
31
|
+
{
|
|
32
|
+
Name = "probuilder.auto-smooth",
|
|
33
|
+
Summary = "Auto-apply smoothing groups to ProBuilder faces by an angle threshold.",
|
|
34
|
+
Description = "Apply ProBuilder 5.2.4 smoothing groups to selected faces. angleThreshold defaults to 30 and is clamped to 0..89.999 degrees; omitted faceIndices selects all faces. Isolated or hard-disconnected selected faces end in smoothing group 0. changed=false means every selected face already had its exact final group.",
|
|
35
|
+
Group = "probuilder",
|
|
36
|
+
DestructiveHint = false,
|
|
37
|
+
SideEffects = new[] { "scene-modify", "undo-stack" },
|
|
38
|
+
Target = "editor",
|
|
39
|
+
PlayModeSupport = "editor-only",
|
|
40
|
+
DefaultTimeoutMs = 10000,
|
|
41
|
+
MaxTimeoutMs = 30000,
|
|
42
|
+
Examples = new[]
|
|
43
|
+
{
|
|
44
|
+
new ToolExample { Description = "以 30 度阈值自动平滑全部面", Input = new Request { Target = "MyCube", AngleThreshold = 30 } }
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
public System.Threading.Tasks.ValueTask<Result> ExecuteAsync(Request request, UnityCliProjectToolContext ctx, System.Threading.CancellationToken ct = default)
|
|
49
|
+
{
|
|
50
|
+
if (!ProBuilderReflection.IsAvailable)
|
|
51
|
+
throw ProBuilderErrors.PackageNotAvailable();
|
|
52
|
+
|
|
53
|
+
var target = request.Target;
|
|
54
|
+
var go = ProBuilderInput.ResolveTarget(target);
|
|
55
|
+
if (go == null) throw ProBuilderErrors.TargetNotFound(request.Target);
|
|
56
|
+
|
|
57
|
+
var mesh = ProBuilderReflection.GetProBuilderMesh(go);
|
|
58
|
+
if (mesh == null) throw ProBuilderErrors.OperationFailed("auto-smooth", "No ProBuilderMesh on target.");
|
|
59
|
+
// Canonical snapshot owns the pre-effect identity claim.
|
|
60
|
+
|
|
61
|
+
var angleThreshold = ProBuilderOperationProof.CheckedFloat(request.AngleThreshold ?? 30, "angleThreshold");
|
|
62
|
+
// Smoothing.ApplySmoothingGroups clamps the threshold before calculating abs(cos).
|
|
63
|
+
// Keep the request and both proof paths on the exact 5.2.4 domain.
|
|
64
|
+
angleThreshold = Mathf.Clamp(angleThreshold, 0f, 89.999f);
|
|
65
|
+
var faceCount = ProBuilderReflection.GetFaceCount(mesh);
|
|
66
|
+
if (faceCount < 1)
|
|
67
|
+
throw ProBuilderErrors.OperationFailed("auto-smooth", "Target has no readable faces.");
|
|
68
|
+
int[] faceIndices = request.FaceIndices?.Select(i => ProBuilderOperationProof.CheckedInt(i, "faceIndices")).ToArray();
|
|
69
|
+
if (faceIndices == null || faceIndices.Length == 0)
|
|
70
|
+
faceIndices = Enumerable.Range(0, faceCount).ToArray();
|
|
71
|
+
ProBuilderOperationProof.ValidateFaceIndices(mesh, faceIndices);
|
|
72
|
+
var plan = ProBuilderFaceCompletionProof.CaptureAutoSmooth(go, faceIndices, angleThreshold);
|
|
73
|
+
if (plan == null) throw ProBuilderErrors.OperationFailed("auto-smooth", "Requested faces do not have an unambiguous readable 5.2.4 smoothing plan.");
|
|
74
|
+
if (ProBuilderFaceCompletionProof.AutoSmoothAlreadyMatches(plan))
|
|
75
|
+
return new System.Threading.Tasks.ValueTask<Result>(new Result { SmoothedFaceCount = 0, Changed = false, NoOpReason = "already-matches-angle-threshold" });
|
|
76
|
+
var before = plan.Before;
|
|
77
|
+
ctx.CommitEffect();
|
|
78
|
+
try
|
|
79
|
+
{
|
|
80
|
+
Undo.RecordObject(go, "ProBuilder Auto Smooth");
|
|
81
|
+
if (!ProBuilderReflection.ApplySmoothingGroups(mesh, faceIndices, angleThreshold))
|
|
82
|
+
throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "invoke", "ProBuilder 5.x Smoothing.ApplySmoothingGroups failed.");
|
|
83
|
+
|
|
84
|
+
if (!ProBuilderReflection.RefreshMesh(mesh))
|
|
85
|
+
throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "refresh", "ProBuilder mesh refresh failed.");
|
|
86
|
+
EditorSceneManager.MarkSceneDirty(go.scene);
|
|
87
|
+
var freshMesh = CanonicalMeshSnapshot.ResolveFreshMesh(target, before.Identity);
|
|
88
|
+
if (freshMesh == null)
|
|
89
|
+
throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "readback", "Fresh target identity could not be resolved.");
|
|
90
|
+
var after = CanonicalMeshSnapshot.Capture(freshMesh.gameObject, Array.Empty<int>());
|
|
91
|
+
if (after == null)
|
|
92
|
+
throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "readback", "Fresh canonical face geometry could not be read.");
|
|
93
|
+
if (!ProBuilderFaceCompletionProof.AutoSmoothMatches(plan, after))
|
|
94
|
+
throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "postcondition", "Requested smoothing compatibility was not proven by fresh readback.");
|
|
95
|
+
|
|
96
|
+
var smoothed = ProBuilderFaceCompletionProof.ExpectedSmoothedFaceCount(plan);
|
|
97
|
+
return new System.Threading.Tasks.ValueTask<Result>(new Result { SmoothedFaceCount = smoothed, Changed = true });
|
|
98
|
+
}
|
|
99
|
+
catch (UnityCliBridge.BridgeCommandException) { throw; }
|
|
100
|
+
catch (System.Exception exception) { throw ProBuilderErrors.OutcomeUnknown("auto-smooth", "postcondition", exception.Message); }
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
#endif
|