@alpsckr/unitycli 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +389 -0
- package/contracts/command-contract.json +3972 -0
- package/contracts/stable-session/admission-acquire-v1.schema.json +16 -0
- package/contracts/stable-session/admission-response-v1.schema.json +30 -0
- package/contracts/stable-session/admission-revoke-v1.schema.json +15 -0
- package/contracts/stable-session/admission-transport-v1.json +36 -0
- package/contracts/stable-session/bridge-request-v2.schema.json +26 -0
- package/contracts/stable-session/canonical-path-v1-golden.json +23 -0
- package/contracts/stable-session/completion-contract.schema.json +46 -0
- package/contracts/stable-session/direct-call-semantics.json +102 -0
- package/contracts/stable-session/editor-state.schema.json +92 -0
- package/contracts/stable-session/health-v3.schema.json +47 -0
- package/contracts/stable-session/instance-registry-v3.schema.json +152 -0
- package/contracts/stable-session/removal-map.json +27 -0
- package/contracts/stable-session/request-digest-v1-golden.json +7 -0
- package/contracts/stable-session/runtime-config-v2.schema.json +27 -0
- package/contracts/static-capability-catalog.json +48226 -0
- package/contracts/tool-completion-contract.json +11322 -0
- package/dist/args.d.ts +27 -0
- package/dist/args.js +109 -0
- package/dist/args.js.map +1 -0
- package/dist/bridge/admission.d.ts +28 -0
- package/dist/bridge/admission.js +29 -0
- package/dist/bridge/admission.js.map +1 -0
- package/dist/bridge/args.d.ts +16 -0
- package/dist/bridge/args.js +123 -0
- package/dist/bridge/args.js.map +1 -0
- package/dist/bridge/domains/animation.d.ts +2 -0
- package/dist/bridge/domains/animation.js +199 -0
- package/dist/bridge/domains/animation.js.map +1 -0
- package/dist/bridge/domains/asset.d.ts +2 -0
- package/dist/bridge/domains/asset.js +85 -0
- package/dist/bridge/domains/asset.js.map +1 -0
- package/dist/bridge/domains/build.d.ts +2 -0
- package/dist/bridge/domains/build.js +35 -0
- package/dist/bridge/domains/build.js.map +1 -0
- package/dist/bridge/domains/camera.d.ts +2 -0
- package/dist/bridge/domains/camera.js +54 -0
- package/dist/bridge/domains/camera.js.map +1 -0
- package/dist/bridge/domains/code.d.ts +2 -0
- package/dist/bridge/domains/code.js +17 -0
- package/dist/bridge/domains/code.js.map +1 -0
- package/dist/bridge/domains/console.d.ts +2 -0
- package/dist/bridge/domains/console.js +34 -0
- package/dist/bridge/domains/console.js.map +1 -0
- package/dist/bridge/domains/diagnose.d.ts +2 -0
- package/dist/bridge/domains/diagnose.js +11 -0
- package/dist/bridge/domains/diagnose.js.map +1 -0
- package/dist/bridge/domains/editor.d.ts +2 -0
- package/dist/bridge/domains/editor.js +66 -0
- package/dist/bridge/domains/editor.js.map +1 -0
- package/dist/bridge/domains/extension.d.ts +8 -0
- package/dist/bridge/domains/extension.js +20 -0
- package/dist/bridge/domains/extension.js.map +1 -0
- package/dist/bridge/domains/game-object.d.ts +2 -0
- package/dist/bridge/domains/game-object.js +179 -0
- package/dist/bridge/domains/game-object.js.map +1 -0
- package/dist/bridge/domains/graphics.d.ts +2 -0
- package/dist/bridge/domains/graphics.js +185 -0
- package/dist/bridge/domains/graphics.js.map +1 -0
- package/dist/bridge/domains/material.d.ts +2 -0
- package/dist/bridge/domains/material.js +70 -0
- package/dist/bridge/domains/material.js.map +1 -0
- package/dist/bridge/domains/navmesh.d.ts +2 -0
- package/dist/bridge/domains/navmesh.js +34 -0
- package/dist/bridge/domains/navmesh.js.map +1 -0
- package/dist/bridge/domains/object.d.ts +2 -0
- package/dist/bridge/domains/object.js +43 -0
- package/dist/bridge/domains/object.js.map +1 -0
- package/dist/bridge/domains/occlusion.d.ts +2 -0
- package/dist/bridge/domains/occlusion.js +12 -0
- package/dist/bridge/domains/occlusion.js.map +1 -0
- package/dist/bridge/domains/package.d.ts +2 -0
- package/dist/bridge/domains/package.js +2 -0
- package/dist/bridge/domains/package.js.map +1 -0
- package/dist/bridge/domains/physics.d.ts +2 -0
- package/dist/bridge/domains/physics.js +139 -0
- package/dist/bridge/domains/physics.js.map +1 -0
- package/dist/bridge/domains/prefab.d.ts +2 -0
- package/dist/bridge/domains/prefab.js +104 -0
- package/dist/bridge/domains/prefab.js.map +1 -0
- package/dist/bridge/domains/profiler.d.ts +2 -0
- package/dist/bridge/domains/profiler.js +105 -0
- package/dist/bridge/domains/profiler.js.map +1 -0
- package/dist/bridge/domains/project-tool.d.ts +2 -0
- package/dist/bridge/domains/project-tool.js +46 -0
- package/dist/bridge/domains/project-tool.js.map +1 -0
- package/dist/bridge/domains/reflection.d.ts +2 -0
- package/dist/bridge/domains/reflection.js +48 -0
- package/dist/bridge/domains/reflection.js.map +1 -0
- package/dist/bridge/domains/runtime-tool.d.ts +2 -0
- package/dist/bridge/domains/runtime-tool.js +48 -0
- package/dist/bridge/domains/runtime-tool.js.map +1 -0
- package/dist/bridge/domains/scene.d.ts +2 -0
- package/dist/bridge/domains/scene.js +100 -0
- package/dist/bridge/domains/scene.js.map +1 -0
- package/dist/bridge/domains/screenshot.d.ts +2 -0
- package/dist/bridge/domains/screenshot.js +85 -0
- package/dist/bridge/domains/screenshot.js.map +1 -0
- package/dist/bridge/domains/scriptable-object.d.ts +2 -0
- package/dist/bridge/domains/scriptable-object.js +53 -0
- package/dist/bridge/domains/scriptable-object.js.map +1 -0
- package/dist/bridge/domains/shader.d.ts +2 -0
- package/dist/bridge/domains/shader.js +66 -0
- package/dist/bridge/domains/shader.js.map +1 -0
- package/dist/bridge/domains/texture.d.ts +2 -0
- package/dist/bridge/domains/texture.js +78 -0
- package/dist/bridge/domains/texture.js.map +1 -0
- package/dist/bridge/domains/timeline.d.ts +2 -0
- package/dist/bridge/domains/timeline.js +75 -0
- package/dist/bridge/domains/timeline.js.map +1 -0
- package/dist/bridge/domains/ui.d.ts +2 -0
- package/dist/bridge/domains/ui.js +193 -0
- package/dist/bridge/domains/ui.js.map +1 -0
- package/dist/bridge/index.d.ts +9 -0
- package/dist/bridge/index.js +124 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/registry.d.ts +19 -0
- package/dist/bridge/registry.js +114 -0
- package/dist/bridge/registry.js.map +1 -0
- package/dist/bridge/session-supervisor.d.ts +138 -0
- package/dist/bridge/session-supervisor.js +873 -0
- package/dist/bridge/session-supervisor.js.map +1 -0
- package/dist/bridge/types.d.ts +61 -0
- package/dist/bridge/types.js +17 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/capabilities.d.ts +5 -0
- package/dist/capabilities.js +84 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli-commands/command.d.ts +7 -0
- package/dist/cli-commands/command.js +513 -0
- package/dist/cli-commands/command.js.map +1 -0
- package/dist/cli-commands/extension-auto-detect.d.ts +62 -0
- package/dist/cli-commands/extension-auto-detect.js +119 -0
- package/dist/cli-commands/extension-auto-detect.js.map +1 -0
- package/dist/cli-commands/extensions.d.ts +24 -0
- package/dist/cli-commands/extensions.js +428 -0
- package/dist/cli-commands/extensions.js.map +1 -0
- package/dist/cli-commands/package.d.ts +4 -0
- package/dist/cli-commands/package.js +151 -0
- package/dist/cli-commands/package.js.map +1 -0
- package/dist/cli-commands/skill-installer.d.ts +83 -0
- package/dist/cli-commands/skill-installer.js +703 -0
- package/dist/cli-commands/skill-installer.js.map +1 -0
- package/dist/cli-commands/types.d.ts +17 -0
- package/dist/cli-commands/types.js +2 -0
- package/dist/cli-commands/types.js.map +1 -0
- package/dist/cli.d.ts +17 -0
- package/dist/cli.js +302 -0
- package/dist/cli.js.map +1 -0
- package/dist/contracts/command-contract.d.ts +21 -0
- package/dist/contracts/command-contract.js +143 -0
- package/dist/contracts/command-contract.js.map +1 -0
- package/dist/contracts/csharp-command-extractor.d.ts +1 -0
- package/dist/contracts/csharp-command-extractor.js +89 -0
- package/dist/contracts/csharp-command-extractor.js.map +1 -0
- package/dist/contracts/validate-command-contract.d.ts +1 -0
- package/dist/contracts/validate-command-contract.js +86 -0
- package/dist/contracts/validate-command-contract.js.map +1 -0
- package/dist/doctor.d.ts +22 -0
- package/dist/doctor.js +498 -0
- package/dist/doctor.js.map +1 -0
- package/dist/editor-blocker-observer.d.ts +45 -0
- package/dist/editor-blocker-observer.js +55 -0
- package/dist/editor-blocker-observer.js.map +1 -0
- package/dist/editor-dialogs.d.ts +53 -0
- package/dist/editor-dialogs.js +79 -0
- package/dist/editor-dialogs.js.map +1 -0
- package/dist/extension-availability.d.ts +30 -0
- package/dist/extension-availability.js +83 -0
- package/dist/extension-availability.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js +104 -0
- package/dist/extensions/.generated-bridge-domains/cinemachine.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js +35 -0
- package/dist/extensions/.generated-bridge-domains/hdrp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.d.ts +13 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js +342 -0
- package/dist/extensions/.generated-bridge-domains/probuilder.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/urp.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/urp.js +52 -0
- package/dist/extensions/.generated-bridge-domains/urp.js.map +1 -0
- package/dist/extensions/.generated-bridge-domains/vfx.d.ts +2 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js +312 -0
- package/dist/extensions/.generated-bridge-domains/vfx.js.map +1 -0
- package/dist/extensions/.generated-registry-data.d.ts +7 -0
- package/dist/extensions/.generated-registry-data.js +895 -0
- package/dist/extensions/.generated-registry-data.js.map +1 -0
- package/dist/extensions/contribution-loader.d.ts +27 -0
- package/dist/extensions/contribution-loader.js +60 -0
- package/dist/extensions/contribution-loader.js.map +1 -0
- package/dist/extensions/descriptor-loader.d.ts +73 -0
- package/dist/extensions/descriptor-loader.js +126 -0
- package/dist/extensions/descriptor-loader.js.map +1 -0
- package/dist/extensions/index.d.ts +19 -0
- package/dist/extensions/index.js +23 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/installer.d.ts +80 -0
- package/dist/extensions/installer.js +594 -0
- package/dist/extensions/installer.js.map +1 -0
- package/dist/extensions/metadata/index.d.ts +15 -0
- package/dist/extensions/metadata/index.js +41 -0
- package/dist/extensions/metadata/index.js.map +1 -0
- package/dist/extensions/metadata/types.d.ts +38 -0
- package/dist/extensions/metadata/types.js +11 -0
- package/dist/extensions/metadata/types.js.map +1 -0
- package/dist/extensions/project-resolver.d.ts +35 -0
- package/dist/extensions/project-resolver.js +61 -0
- package/dist/extensions/project-resolver.js.map +1 -0
- package/dist/extensions/registry.d.ts +86 -0
- package/dist/extensions/registry.js +262 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/tool-manifest.d.ts +29 -0
- package/dist/extensions/tool-manifest.js +53 -0
- package/dist/extensions/tool-manifest.js.map +1 -0
- package/dist/extensions/types.d.ts +115 -0
- package/dist/extensions/types.js +12 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/instances.d.ts +163 -0
- package/dist/instances.js +1137 -0
- package/dist/instances.js.map +1 -0
- package/dist/output.d.ts +119 -0
- package/dist/output.js +204 -0
- package/dist/output.js.map +1 -0
- package/dist/package-manager.d.ts +280 -0
- package/dist/package-manager.js +1832 -0
- package/dist/package-manager.js.map +1 -0
- package/dist/platform.d.ts +3 -0
- package/dist/platform.js +19 -0
- package/dist/platform.js.map +1 -0
- package/dist/project-identity.d.ts +48 -0
- package/dist/project-identity.js +254 -0
- package/dist/project-identity.js.map +1 -0
- package/dist/project-tool-discovery.d.ts +23 -0
- package/dist/project-tool-discovery.js +292 -0
- package/dist/project-tool-discovery.js.map +1 -0
- package/dist/protocol/envelope.d.ts +64 -0
- package/dist/protocol/envelope.js +8 -0
- package/dist/protocol/envelope.js.map +1 -0
- package/dist/protocol/index.d.ts +7 -0
- package/dist/protocol/index.js +2 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/runtime-code.d.ts +20 -0
- package/dist/runtime-code.js +232 -0
- package/dist/runtime-code.js.map +1 -0
- package/dist/schema/any-json.d.ts +4 -0
- package/dist/schema/any-json.js +2 -0
- package/dist/schema/any-json.js.map +1 -0
- package/dist/schema/validator.d.ts +7 -0
- package/dist/schema/validator.js +135 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/services/docs-reflect-cache.d.ts +106 -0
- package/dist/services/docs-reflect-cache.js +301 -0
- package/dist/services/docs-reflect-cache.js.map +1 -0
- package/dist/services/docs-service.d.ts +16 -0
- package/dist/services/docs-service.js +208 -0
- package/dist/services/docs-service.js.map +1 -0
- package/dist/services/reflect-service.d.ts +12 -0
- package/dist/services/reflect-service.js +122 -0
- package/dist/services/reflect-service.js.map +1 -0
- package/dist/static-capability-catalog.d.ts +13 -0
- package/dist/static-capability-catalog.js +41 -0
- package/dist/static-capability-catalog.js.map +1 -0
- package/dist/test-results.d.ts +13 -0
- package/dist/test-results.js +44 -0
- package/dist/test-results.js.map +1 -0
- package/dist/tools/.generated-completion-registry.d.ts +17 -0
- package/dist/tools/.generated-completion-registry.js +5862 -0
- package/dist/tools/.generated-completion-registry.js.map +1 -0
- package/dist/tools/.generated-registry.d.ts +53 -0
- package/dist/tools/.generated-registry.js +55 -0
- package/dist/tools/.generated-registry.js.map +1 -0
- package/dist/tools/.generated-schemas.d.ts +1 -0
- package/dist/tools/.generated-schemas.js +56 -0
- package/dist/tools/.generated-schemas.js.map +1 -0
- package/dist/tools/asset/refresh.d.ts +26 -0
- package/dist/tools/asset/refresh.js +97 -0
- package/dist/tools/asset/refresh.js.map +1 -0
- package/dist/tools/build/run.d.ts +45 -0
- package/dist/tools/build/run.js +115 -0
- package/dist/tools/build/run.js.map +1 -0
- package/dist/tools/catalog.d.ts +33 -0
- package/dist/tools/catalog.js +202 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/code/exec.d.ts +53 -0
- package/dist/tools/code/exec.js +59 -0
- package/dist/tools/code/exec.js.map +1 -0
- package/dist/tools/commands.d.ts +5 -0
- package/dist/tools/commands.js +45 -0
- package/dist/tools/commands.js.map +1 -0
- package/dist/tools/completion-probe.d.ts +22 -0
- package/dist/tools/completion-probe.js +2 -0
- package/dist/tools/completion-probe.js.map +1 -0
- package/dist/tools/define.d.ts +77 -0
- package/dist/tools/define.js +58 -0
- package/dist/tools/define.js.map +1 -0
- package/dist/tools/diagnose/capabilities.d.ts +13 -0
- package/dist/tools/diagnose/capabilities.js +34 -0
- package/dist/tools/diagnose/capabilities.js.map +1 -0
- package/dist/tools/dispatcher.d.ts +27 -0
- package/dist/tools/dispatcher.js +971 -0
- package/dist/tools/dispatcher.js.map +1 -0
- package/dist/tools/docs/get.d.ts +22 -0
- package/dist/tools/docs/get.js +22 -0
- package/dist/tools/docs/get.js.map +1 -0
- package/dist/tools/docs/search.d.ts +31 -0
- package/dist/tools/docs/search.js +22 -0
- package/dist/tools/docs/search.js.map +1 -0
- package/dist/tools/editor/compile.d.ts +66 -0
- package/dist/tools/editor/compile.js +225 -0
- package/dist/tools/editor/compile.js.map +1 -0
- package/dist/tools/editor/dialog/click.d.ts +12 -0
- package/dist/tools/editor/dialog/click.js +71 -0
- package/dist/tools/editor/dialog/click.js.map +1 -0
- package/dist/tools/editor/dialogs.d.ts +12 -0
- package/dist/tools/editor/dialogs.js +58 -0
- package/dist/tools/editor/dialogs.js.map +1 -0
- package/dist/tools/editor/readiness.d.ts +13 -0
- package/dist/tools/editor/readiness.js +24 -0
- package/dist/tools/editor/readiness.js.map +1 -0
- package/dist/tools/editor/refresh.d.ts +25 -0
- package/dist/tools/editor/refresh.js +154 -0
- package/dist/tools/editor/refresh.js.map +1 -0
- package/dist/tools/editor/state.d.ts +63 -0
- package/dist/tools/editor/state.js +286 -0
- package/dist/tools/editor/state.js.map +1 -0
- package/dist/tools/errors.d.ts +30 -0
- package/dist/tools/errors.js +46 -0
- package/dist/tools/errors.js.map +1 -0
- package/dist/tools/metadata/derived.d.ts +34 -0
- package/dist/tools/metadata/derived.js +136 -0
- package/dist/tools/metadata/derived.js.map +1 -0
- package/dist/tools/metadata/index.d.ts +34 -0
- package/dist/tools/metadata/index.js +130 -0
- package/dist/tools/metadata/index.js.map +1 -0
- package/dist/tools/metadata/schemas.d.ts +3 -0
- package/dist/tools/metadata/schemas.js +19 -0
- package/dist/tools/metadata/schemas.js.map +1 -0
- package/dist/tools/metadata/status.d.ts +4 -0
- package/dist/tools/metadata/status.js +61 -0
- package/dist/tools/metadata/status.js.map +1 -0
- package/dist/tools/metadata/types.d.ts +79 -0
- package/dist/tools/metadata/types.js +2 -0
- package/dist/tools/metadata/types.js.map +1 -0
- package/dist/tools/navmesh/bake-cancel.d.ts +7 -0
- package/dist/tools/navmesh/bake-cancel.js +21 -0
- package/dist/tools/navmesh/bake-cancel.js.map +1 -0
- package/dist/tools/navmesh/bake-status.d.ts +5 -0
- package/dist/tools/navmesh/bake-status.js +18 -0
- package/dist/tools/navmesh/bake-status.js.map +1 -0
- package/dist/tools/navmesh/bake.d.ts +5 -0
- package/dist/tools/navmesh/bake.js +23 -0
- package/dist/tools/navmesh/bake.js.map +1 -0
- package/dist/tools/navmesh/live.d.ts +86 -0
- package/dist/tools/navmesh/live.js +206 -0
- package/dist/tools/navmesh/live.js.map +1 -0
- package/dist/tools/navmesh/surface-bake.d.ts +5 -0
- package/dist/tools/navmesh/surface-bake.js +24 -0
- package/dist/tools/navmesh/surface-bake.js.map +1 -0
- package/dist/tools/occlusion/bake-cancel.d.ts +7 -0
- package/dist/tools/occlusion/bake-cancel.js +21 -0
- package/dist/tools/occlusion/bake-cancel.js.map +1 -0
- package/dist/tools/occlusion/bake-status.d.ts +5 -0
- package/dist/tools/occlusion/bake-status.js +18 -0
- package/dist/tools/occlusion/bake-status.js.map +1 -0
- package/dist/tools/occlusion/bake.d.ts +11 -0
- package/dist/tools/occlusion/bake.js +23 -0
- package/dist/tools/occlusion/bake.js.map +1 -0
- package/dist/tools/occlusion/live.d.ts +74 -0
- package/dist/tools/occlusion/live.js +201 -0
- package/dist/tools/occlusion/live.js.map +1 -0
- package/dist/tools/package/bridge-remove.d.ts +26 -0
- package/dist/tools/package/bridge-remove.js +32 -0
- package/dist/tools/package/bridge-remove.js.map +1 -0
- package/dist/tools/package/deploy.d.ts +49 -0
- package/dist/tools/package/deploy.js +134 -0
- package/dist/tools/package/deploy.js.map +1 -0
- package/dist/tools/package/embed.d.ts +14 -0
- package/dist/tools/package/embed.js +93 -0
- package/dist/tools/package/embed.js.map +1 -0
- package/dist/tools/package/file-mutation-worker.d.ts +6 -0
- package/dist/tools/package/file-mutation-worker.js +154 -0
- package/dist/tools/package/file-mutation-worker.js.map +1 -0
- package/dist/tools/package/info.d.ts +19 -0
- package/dist/tools/package/info.js +27 -0
- package/dist/tools/package/info.js.map +1 -0
- package/dist/tools/package/install.d.ts +24 -0
- package/dist/tools/package/install.js +65 -0
- package/dist/tools/package/install.js.map +1 -0
- package/dist/tools/package/list.d.ts +27 -0
- package/dist/tools/package/list.js +21 -0
- package/dist/tools/package/list.js.map +1 -0
- package/dist/tools/package/live-resolve.d.ts +46 -0
- package/dist/tools/package/live-resolve.js +497 -0
- package/dist/tools/package/live-resolve.js.map +1 -0
- package/dist/tools/package/public-result.d.ts +4 -0
- package/dist/tools/package/public-result.js +25 -0
- package/dist/tools/package/public-result.js.map +1 -0
- package/dist/tools/package/registry-clear.d.ts +15 -0
- package/dist/tools/package/registry-clear.js +27 -0
- package/dist/tools/package/registry-clear.js.map +1 -0
- package/dist/tools/package/registry-get.d.ts +10 -0
- package/dist/tools/package/registry-get.js +22 -0
- package/dist/tools/package/registry-get.js.map +1 -0
- package/dist/tools/package/registry-set.d.ts +17 -0
- package/dist/tools/package/registry-set.js +28 -0
- package/dist/tools/package/registry-set.js.map +1 -0
- package/dist/tools/package/remove.d.ts +47 -0
- package/dist/tools/package/remove.js +67 -0
- package/dist/tools/package/remove.js.map +1 -0
- package/dist/tools/package/resolve.d.ts +6 -0
- package/dist/tools/package/resolve.js +14 -0
- package/dist/tools/package/resolve.js.map +1 -0
- package/dist/tools/package/restore.d.ts +42 -0
- package/dist/tools/package/restore.js +122 -0
- package/dist/tools/package/restore.js.map +1 -0
- package/dist/tools/package/scoped-registry-add.d.ts +25 -0
- package/dist/tools/package/scoped-registry-add.js +30 -0
- package/dist/tools/package/scoped-registry-add.js.map +1 -0
- package/dist/tools/package/scoped-registry-list.d.ts +14 -0
- package/dist/tools/package/scoped-registry-list.js +22 -0
- package/dist/tools/package/scoped-registry-list.js.map +1 -0
- package/dist/tools/package/scoped-registry-remove.d.ts +29 -0
- package/dist/tools/package/scoped-registry-remove.js +31 -0
- package/dist/tools/package/scoped-registry-remove.js.map +1 -0
- package/dist/tools/package/search.d.ts +17 -0
- package/dist/tools/package/search.js +39 -0
- package/dist/tools/package/search.js.map +1 -0
- package/dist/tools/package/status.d.ts +21 -0
- package/dist/tools/package/status.js +37 -0
- package/dist/tools/package/status.js.map +1 -0
- package/dist/tools/reflect/member.d.ts +22 -0
- package/dist/tools/reflect/member.js +22 -0
- package/dist/tools/reflect/member.js.map +1 -0
- package/dist/tools/reflect/search.d.ts +30 -0
- package/dist/tools/reflect/search.js +22 -0
- package/dist/tools/reflect/search.js.map +1 -0
- package/dist/tools/reflect/type.d.ts +21 -0
- package/dist/tools/reflect/type.js +22 -0
- package/dist/tools/reflect/type.js.map +1 -0
- package/dist/tools/runtime/console.d.ts +24 -0
- package/dist/tools/runtime/console.js +17 -0
- package/dist/tools/runtime/console.js.map +1 -0
- package/dist/tools/runtime/input/key.d.ts +23 -0
- package/dist/tools/runtime/input/key.js +18 -0
- package/dist/tools/runtime/input/key.js.map +1 -0
- package/dist/tools/runtime/input/pointer.d.ts +34 -0
- package/dist/tools/runtime/input/pointer.js +18 -0
- package/dist/tools/runtime/input/pointer.js.map +1 -0
- package/dist/tools/runtime/log.d.ts +20 -0
- package/dist/tools/runtime/log.js +17 -0
- package/dist/tools/runtime/log.js.map +1 -0
- package/dist/tools/runtime/state.d.ts +45 -0
- package/dist/tools/runtime/state.js +17 -0
- package/dist/tools/runtime/state.js.map +1 -0
- package/dist/tools/runtime/target-framerate/set.d.ts +16 -0
- package/dist/tools/runtime/target-framerate/set.js +17 -0
- package/dist/tools/runtime/target-framerate/set.js.map +1 -0
- package/dist/tools/runtime/time-scale/set.d.ts +16 -0
- package/dist/tools/runtime/time-scale/set.js +17 -0
- package/dist/tools/runtime/time-scale/set.js.map +1 -0
- package/dist/tools/runtime/ui/capture-element.d.ts +31 -0
- package/dist/tools/runtime/ui/capture-element.js +17 -0
- package/dist/tools/runtime/ui/capture-element.js.map +1 -0
- package/dist/tools/test/cancel.d.ts +19 -0
- package/dist/tools/test/cancel.js +94 -0
- package/dist/tools/test/cancel.js.map +1 -0
- package/dist/tools/test/run.d.ts +39 -0
- package/dist/tools/test/run.js +101 -0
- package/dist/tools/test/run.js.map +1 -0
- package/dist/tools/tools/describe.d.ts +27 -0
- package/dist/tools/tools/describe.js +35 -0
- package/dist/tools/tools/describe.js.map +1 -0
- package/dist/tools/tools/group-list.d.ts +20 -0
- package/dist/tools/tools/group-list.js +39 -0
- package/dist/tools/tools/group-list.js.map +1 -0
- package/dist/tools/tools/group-summaries.d.ts +3 -0
- package/dist/tools/tools/group-summaries.js +52 -0
- package/dist/tools/tools/group-summaries.js.map +1 -0
- package/dist/tools/tools/group.d.ts +13 -0
- package/dist/tools/tools/group.js +34 -0
- package/dist/tools/tools/group.js.map +1 -0
- package/dist/tools/tools/search.d.ts +17 -0
- package/dist/tools/tools/search.js +42 -0
- package/dist/tools/tools/search.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/unity-project-processes.d.ts +12 -0
- package/dist/unity-project-processes.js +59 -0
- package/dist/unity-project-processes.js.map +1 -0
- package/dist/util.d.ts +11 -0
- package/dist/util.js +22 -0
- package/dist/util.js.map +1 -0
- package/dist/windows-editor-state.d.ts +31 -0
- package/dist/windows-editor-state.js +98 -0
- package/dist/windows-editor-state.js.map +1 -0
- package/docs/README.md +43 -0
- package/docs/availability-differences.md +97 -0
- package/docs/command-execution.md +89 -0
- package/docs/error-codes.md +204 -0
- package/docs/extensions.md +132 -0
- package/docs/risk-and-side-effects.md +93 -0
- package/docs/safety-boundaries.md +103 -0
- package/docs/target-and-instance.md +83 -0
- package/docs/tool-discovery.md +104 -0
- package/docs/tool-execution.md +178 -0
- package/extensions/cinemachine/bridge/domains/cinemachine.ts +115 -0
- package/extensions/cinemachine/docs/cinemachine.md +50 -0
- package/extensions/cinemachine/extension.json +129 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineExtensionToolSupport.cs +15 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/CinemachineToolSupport.cs +854 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/aim.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/blend.cs +140 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/body.cs +96 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-ensure.cs +16 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/brain-status.cs +12 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/create.cs +147 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-add.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-list.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/extension-remove.cs +13 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/lens.cs +142 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/noise.cs +126 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/ping.cs +43 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/priority.cs +113 -0
- package/extensions/cinemachine/unitypkg/Editor/Cinemachine/target.cs +84 -0
- package/extensions/cinemachine/unitypkg/UnityCli.Extensions.Cinemachine.Editor.asmdef +18 -0
- package/extensions/hdrp/bridge/domains/hdrp.ts +41 -0
- package/extensions/hdrp/docs/hdrp.md +15 -0
- package/extensions/hdrp/extension.json +31 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/HdrpToolSupport.cs +607 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-get.cs +29 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/settings-set.cs +47 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-add-effect.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-create.cs +28 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-info.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-list.cs +25 -0
- package/extensions/hdrp/unitypkg/Editor/Hdrp/volume-set.cs +28 -0
- package/extensions/hdrp/unitypkg/UnityCli.Extensions.Hdrp.Editor.asmdef +19 -0
- package/extensions/probuilder/bridge/domains/probuilder.ts +386 -0
- package/extensions/probuilder/docs/probuilder.md +125 -0
- package/extensions/probuilder/extension.json +291 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAppendCompletionProof.cs +254 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderAtomicReadback.cs +293 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderBevelCompletionProof.cs +299 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderCanonicalMeshSnapshot.cs +951 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderConnectCompletionProof.cs +407 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderEdgeCompletionProof.cs +318 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderErrors.cs +83 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceCompletionProof.cs +152 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFaceExtrudeCompletionProof.cs +283 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderFlipCompletionProof.cs +170 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInput.cs +85 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderInsertCompletionProof.cs +674 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderOperationProof.cs +137 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderReflection.cs +1064 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderRefreshUvProof.cs +53 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderSceneTool.cs +184 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderShapeTopologyRecords.g.cs +82 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ProBuilderVertexObjectCompletionProof.cs +346 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/append-vertices-to-edge.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/auto-smooth.cs +104 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bevel-edges.cs +119 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/bridge-edges.cs +113 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/center-pivot.cs +43 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/combine-meshes.cs +58 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/connect-elements.cs +128 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/convert-to-probuilder.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-poly-shape.cs +55 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-polygon.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/create-shape.cs +168 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/delete-faces.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/detach-faces.cs +46 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/duplicate-and-flip.cs +100 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-edges.cs +118 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/extrude-faces.cs +110 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/flip-normals.cs +102 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/freeze-transform.cs +45 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/insert-vertex.cs +132 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-faces.cs +44 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-objects.cs +130 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/merge-vertices.cs +109 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/mesh-info.cs +117 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/move-vertices.cs +33 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/ping.cs +51 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/repair-mesh.cs +40 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/select-faces.cs +161 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-color.cs +24 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-material.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-face-uvs.cs +28 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-pivot.cs +42 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/set-smoothing.cs +23 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/split-vertices.cs +64 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/subdivide.cs +111 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/validate-mesh.cs +75 -0
- package/extensions/probuilder/unitypkg/Editor/ProBuilder/weld-vertices.cs +112 -0
- package/extensions/probuilder/unitypkg/UnityCli.Extensions.ProBuilder.Editor.asmdef +25 -0
- package/extensions/urp/bridge/domains/urp.ts +62 -0
- package/extensions/urp/docs/urp.md +20 -0
- package/extensions/urp/extension.json +41 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpFeatureToolSupport.cs +336 -0
- package/extensions/urp/unitypkg/Editor/Urp/UrpToolSupport.cs +801 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-add.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-configure.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-list.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-remove.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/feature-toggle.cs +12 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-get.cs +27 -0
- package/extensions/urp/unitypkg/Editor/Urp/settings-set.cs +47 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-add-effect.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-create.cs +33 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-info.cs +31 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-list.cs +39 -0
- package/extensions/urp/unitypkg/Editor/Urp/volume-set.cs +33 -0
- package/extensions/urp/unitypkg/UnityCli.Extensions.Urp.Editor.asmdef +19 -0
- package/extensions/vfx-graph/bridge/domains/vfx.ts +337 -0
- package/extensions/vfx-graph/docs/vfx.md +28 -0
- package/extensions/vfx-graph/extension.json +72 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxActionToolSupport.cs +248 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/VfxToolSupport.cs +1325 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-pause.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-play.cs +40 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-reinitialize.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-rate.cs +36 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-set-seed.cs +42 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/control-stop.cs +37 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-add.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-assign.cs +44 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/effect-info.cs +30 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-create.cs +62 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/graph-info.cs +32 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-create.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/line-positions.cs +100 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/parameter.cs +216 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-clear.cs +39 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-create.cs +80 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-emission.cs +126 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-info.cs +55 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-main.cs +75 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-pause.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-play.cs +38 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-shape.cs +148 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/particle-stop.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-create.cs +58 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/template-list.cs +31 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-create.cs +41 -0
- package/extensions/vfx-graph/unitypkg/Editor/Vfx/trail-set.cs +44 -0
- package/extensions/vfx-graph/unitypkg/UnityCli.Extensions.VfxGraph.Editor.asmdef +18 -0
- package/package.json +46 -0
- package/schemas/error-code.schema.json +70 -0
- package/schemas/extension-descriptor.schema.json +88 -0
- package/schemas/extension-manifest.schema.json +125 -0
- package/schemas/request-envelope.schema.json +34 -0
- package/schemas/response-envelope.schema.json +42 -0
- package/schemas/tool-metadata.schema.json +111 -0
- package/skills/unitycli/SKILL.md +61 -0
- package/skills/unitycli/agents/interface.yaml +30 -0
- package/skills/unitycli/evals/history/2026-08-05-governed-baseline.json +44 -0
- package/skills/unitycli/evals/output/cases.jsonl +5 -0
- package/skills/unitycli/evals/output/fixtures/feedback-scenario.json +27 -0
- package/skills/unitycli/evals/output/schema.json +32 -0
- package/skills/unitycli/evals/semantic_config.json +46 -0
- package/skills/unitycli/evals/trigger_cases.json +39 -0
- package/skills/unitycli/examples/feedback-event.input.json +8 -0
- package/skills/unitycli/examples/feedback-record.output.json +12 -0
- package/skills/unitycli/manifest.json +112 -0
- package/skills/unitycli/references/custom-tools.md +111 -0
- package/skills/unitycli/references/feedback.md +59 -0
- package/skills/unitycli/references/operation-protocol.md +83 -0
- package/skills/unitycli/reports/output_quality_scorecard.md +56 -0
- package/skills/unitycli/reports/trust-report.md +57 -0
- package/skills/unitycli/scripts/record-feedback.ps1 +210 -0
- package/skills/unitycli/security/network_policy.json +18 -0
- package/skills/unitycli/security/permission_policy.json +40 -0
- package/unitypkg/Editor/Bridge/BridgeCommandContext.cs +64 -0
- package/unitypkg/Editor/Bridge/BridgeCommandException.cs +39 -0
- package/unitypkg/Editor/Bridge/BridgeCommandRegistry.cs +172 -0
- package/unitypkg/Editor/Bridge/BridgeHttpServer.cs +534 -0
- package/unitypkg/Editor/Bridge/BridgeResponse.cs +58 -0
- package/unitypkg/Editor/Bridge/BridgeWorkQueue.cs +325 -0
- package/unitypkg/Editor/BridgeStartupStateMachine.cs +81 -0
- package/unitypkg/Editor/Commands/ProjectToolCommands.cs +43 -0
- package/unitypkg/Editor/Commands/RuntimeToolCommands.cs +43 -0
- package/unitypkg/Editor/Generated/UnityCliToolCompletionRegistry.g.cs +428 -0
- package/unitypkg/Editor/Infrastructure/CodeExecSupport.cs +664 -0
- package/unitypkg/Editor/Infrastructure/RegistryOwnershipResolver.cs +148 -0
- package/unitypkg/Editor/Infrastructure/UnityCliActiveOperation.cs +411 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAdmission.cs +485 -0
- package/unitypkg/Editor/Infrastructure/UnityCliArtifacts.cs +110 -0
- package/unitypkg/Editor/Infrastructure/UnityCliAssetRefreshCoordinator.cs +106 -0
- package/unitypkg/Editor/Infrastructure/UnityCliBridgeHelpers.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCanonicalProjectPath.cs +325 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompilationEventBroker.cs +192 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompileCoordinator.cs +271 -0
- package/unitypkg/Editor/Infrastructure/UnityCliCompletionProbe.cs +515 -0
- package/unitypkg/Editor/Infrastructure/UnityCliEditorStateSnapshot.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliInstanceRegistry.cs +558 -0
- package/unitypkg/Editor/Infrastructure/UnityCliJson.cs +155 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLargeOutput.cs +128 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveBuildCoordinator.cs +230 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLiveRefreshCoordinator.cs +164 -0
- package/unitypkg/Editor/Infrastructure/UnityCliLog.cs +127 -0
- package/unitypkg/Editor/Infrastructure/UnityCliNavMeshBakeCoordinator.cs +2073 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectPatch.cs +193 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectRef.cs +278 -0
- package/unitypkg/Editor/Infrastructure/UnityCliObjectSerializer.cs +620 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOcclusionBakeCoordinator.cs +1739 -0
- package/unitypkg/Editor/Infrastructure/UnityCliOperationCoordinator.cs +828 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageEmbedCoordinator.cs +147 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveCoordinator.cs +454 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPackageResolveState.cs +561 -0
- package/unitypkg/Editor/Infrastructure/UnityCliPipelineHandoff.cs +742 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProjectSettings.cs +92 -0
- package/unitypkg/Editor/Infrastructure/UnityCliProtocolRequest.cs +116 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReflection.cs +477 -0
- package/unitypkg/Editor/Infrastructure/UnityCliReloadOperation.cs +664 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRequestDigest.cs +34 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeBuildInjection.cs +121 -0
- package/unitypkg/Editor/Infrastructure/UnityCliRuntimeExecutor.cs +391 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSceneMutation.cs +84 -0
- package/unitypkg/Editor/Infrastructure/UnityCliScriptableObjectHelpers.cs +235 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSerializer.cs +580 -0
- package/unitypkg/Editor/Infrastructure/UnityCliSessionMutationLease.cs +568 -0
- package/unitypkg/Editor/Infrastructure/UnityCliStateIO.cs +73 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTestRunCoordinator.cs +598 -0
- package/unitypkg/Editor/Infrastructure/UnityCliTransactionLog.cs +112 -0
- package/unitypkg/Editor/Infrastructure/UnityCliValueConverter.cs +146 -0
- package/unitypkg/Editor/Infrastructure/UnityCliWaiter.cs +716 -0
- package/unitypkg/Editor/ProjectTools/IUnityCliTool.cs +152 -0
- package/unitypkg/Editor/ProjectTools/OfficialAttributeToolRegistry.cs +992 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolRegistry.cs +938 -0
- package/unitypkg/Editor/ProjectTools/ProjectToolSchemaValidator.cs +258 -0
- package/unitypkg/Editor/ProjectTools/RegisteredTool.cs +75 -0
- package/unitypkg/Editor/ProjectTools/UnityCliProjectToolContext.cs +68 -0
- package/unitypkg/Editor/ProjectTools/UnityCliSchemaDeriver.cs +297 -0
- package/unitypkg/Editor/Protocol/ProtocolEnvelopeFactory.cs +92 -0
- package/unitypkg/Editor/Protocol/envelope.cs +50 -0
- package/unitypkg/Editor/Roslyn/LICENSE.txt +23 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/unitypkg/Editor/Roslyn/Microsoft.CodeAnalysis.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Collections.Immutable.dll +0 -0
- package/unitypkg/Editor/Roslyn/System.Reflection.Metadata.dll +0 -0
- package/unitypkg/Editor/Tools/animation/AnimationToolSupport.cs +335 -0
- package/unitypkg/Editor/Tools/animation/AnimatorRuntimeToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/crossfade.cs +117 -0
- package/unitypkg/Editor/Tools/animation/animator/get-info.cs +24 -0
- package/unitypkg/Editor/Tools/animation/animator/get-parameter.cs +36 -0
- package/unitypkg/Editor/Tools/animation/animator/set-enabled.cs +33 -0
- package/unitypkg/Editor/Tools/animation/animator/set-parameter.cs +71 -0
- package/unitypkg/Editor/Tools/animation/animator/set-speed.cs +33 -0
- package/unitypkg/Editor/Tools/animation/clip/create.cs +48 -0
- package/unitypkg/Editor/Tools/animation/clip/modify.cs +43 -0
- package/unitypkg/Editor/Tools/animation/clip.cs +23 -0
- package/unitypkg/Editor/Tools/animation/play.cs +41 -0
- package/unitypkg/Editor/Tools/animation/state.cs +25 -0
- package/unitypkg/Editor/Tools/animation/stop.cs +45 -0
- package/unitypkg/Editor/Tools/asset/AssetImportSettingsToolSupport.cs +633 -0
- package/unitypkg/Editor/Tools/asset/AssetToolSupport.cs +253 -0
- package/unitypkg/Editor/Tools/asset/create.cs +84 -0
- package/unitypkg/Editor/Tools/asset/delete.cs +88 -0
- package/unitypkg/Editor/Tools/asset/duplicate.cs +68 -0
- package/unitypkg/Editor/Tools/asset/get-components.cs +177 -0
- package/unitypkg/Editor/Tools/asset/get-data.cs +73 -0
- package/unitypkg/Editor/Tools/asset/import-settings/set.cs +127 -0
- package/unitypkg/Editor/Tools/asset/import-settings.cs +54 -0
- package/unitypkg/Editor/Tools/asset/import.cs +132 -0
- package/unitypkg/Editor/Tools/asset/info.cs +48 -0
- package/unitypkg/Editor/Tools/asset/modify.cs +69 -0
- package/unitypkg/Editor/Tools/asset/move.cs +70 -0
- package/unitypkg/Editor/Tools/asset/preview.cs +86 -0
- package/unitypkg/Editor/Tools/asset/rename.cs +84 -0
- package/unitypkg/Editor/Tools/asset/search-built-in.cs +90 -0
- package/unitypkg/Editor/Tools/asset/search.cs +83 -0
- package/unitypkg/Editor/Tools/build/BuildSceneStateTool.cs +37 -0
- package/unitypkg/Editor/Tools/build/BuildSettingsToolSupport.cs +4 -0
- package/unitypkg/Editor/Tools/build/BuildToolDtos.cs +15 -0
- package/unitypkg/Editor/Tools/build/BuildToolSupport.cs +111 -0
- package/unitypkg/Editor/Tools/build/platform/get.cs +12 -0
- package/unitypkg/Editor/Tools/build/platform/set.cs +45 -0
- package/unitypkg/Editor/Tools/build/profile/create.cs +44 -0
- package/unitypkg/Editor/Tools/build/profile/list.cs +12 -0
- package/unitypkg/Editor/Tools/build/profile/modify.cs +42 -0
- package/unitypkg/Editor/Tools/build/profile/switch.cs +30 -0
- package/unitypkg/Editor/Tools/build/scene/add.cs +45 -0
- package/unitypkg/Editor/Tools/build/scene/disable.cs +3 -0
- package/unitypkg/Editor/Tools/build/scene/enable.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/list.cs +4 -0
- package/unitypkg/Editor/Tools/build/scene/remove.cs +29 -0
- package/unitypkg/Editor/Tools/build/settings/get.cs +3 -0
- package/unitypkg/Editor/Tools/build/settings/set.cs +74 -0
- package/unitypkg/Editor/Tools/camera/CameraToolSupport.cs +292 -0
- package/unitypkg/Editor/Tools/camera/create.cs +114 -0
- package/unitypkg/Editor/Tools/camera/info.cs +49 -0
- package/unitypkg/Editor/Tools/camera/lens.cs +119 -0
- package/unitypkg/Editor/Tools/camera/list.cs +52 -0
- package/unitypkg/Editor/Tools/camera/multiview.cs +96 -0
- package/unitypkg/Editor/Tools/camera/screenshot.cs +65 -0
- package/unitypkg/Editor/Tools/camera/target.cs +94 -0
- package/unitypkg/Editor/Tools/component/add.cs +125 -0
- package/unitypkg/Editor/Tools/component/get.cs +73 -0
- package/unitypkg/Editor/Tools/component/list-types.cs +90 -0
- package/unitypkg/Editor/Tools/component/modify.cs +103 -0
- package/unitypkg/Editor/Tools/component/remove.cs +147 -0
- package/unitypkg/Editor/Tools/component/set.cs +93 -0
- package/unitypkg/Editor/Tools/console/clear.cs +38 -0
- package/unitypkg/Editor/Tools/console/get.cs +28 -0
- package/unitypkg/Editor/Tools/controller/add-blend-tree-child.cs +88 -0
- package/unitypkg/Editor/Tools/controller/add-layer.cs +43 -0
- package/unitypkg/Editor/Tools/controller/add-parameter.cs +51 -0
- package/unitypkg/Editor/Tools/controller/add-state.cs +44 -0
- package/unitypkg/Editor/Tools/controller/add-transition.cs +71 -0
- package/unitypkg/Editor/Tools/controller/assign.cs +38 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-1d.cs +40 -0
- package/unitypkg/Editor/Tools/controller/create-blend-tree-2d.cs +42 -0
- package/unitypkg/Editor/Tools/controller/create.cs +31 -0
- package/unitypkg/Editor/Tools/controller/get-info.cs +27 -0
- package/unitypkg/Editor/Tools/controller/remove-layer.cs +57 -0
- package/unitypkg/Editor/Tools/controller/set-layer-weight.cs +42 -0
- package/unitypkg/Editor/Tools/diagnose/preflight.cs +269 -0
- package/unitypkg/Editor/Tools/editor/EditorActionToolSupport.cs +117 -0
- package/unitypkg/Editor/Tools/editor/EditorSearchToolSupport.cs +146 -0
- package/unitypkg/Editor/Tools/editor/EditorToolSupport.cs +132 -0
- package/unitypkg/Editor/Tools/editor/EditorWindowFocusToolSupport.cs +194 -0
- package/unitypkg/Editor/Tools/editor/active-tool/set.cs +33 -0
- package/unitypkg/Editor/Tools/editor/active-tool.cs +100 -0
- package/unitypkg/Editor/Tools/editor/autotick/set.cs +102 -0
- package/unitypkg/Editor/Tools/editor/console.cs +26 -0
- package/unitypkg/Editor/Tools/editor/focus.cs +80 -0
- package/unitypkg/Editor/Tools/editor/menu-items.cs +50 -0
- package/unitypkg/Editor/Tools/editor/menu.cs +53 -0
- package/unitypkg/Editor/Tools/editor/pause.cs +38 -0
- package/unitypkg/Editor/Tools/editor/play.cs +43 -0
- package/unitypkg/Editor/Tools/editor/redo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/resolution.cs +34 -0
- package/unitypkg/Editor/Tools/editor/search.cs +55 -0
- package/unitypkg/Editor/Tools/editor/selection/set.cs +37 -0
- package/unitypkg/Editor/Tools/editor/selection.cs +153 -0
- package/unitypkg/Editor/Tools/editor/stop.cs +43 -0
- package/unitypkg/Editor/Tools/editor/tool-states.cs +140 -0
- package/unitypkg/Editor/Tools/editor/undo.cs +56 -0
- package/unitypkg/Editor/Tools/editor/windows.cs +87 -0
- package/unitypkg/Editor/Tools/extension/status.cs +87 -0
- package/unitypkg/Editor/Tools/go/GameObjectToolSupport.cs +524 -0
- package/unitypkg/Editor/Tools/go/create.cs +333 -0
- package/unitypkg/Editor/Tools/go/delete.cs +87 -0
- package/unitypkg/Editor/Tools/go/duplicate.cs +76 -0
- package/unitypkg/Editor/Tools/go/find.cs +152 -0
- package/unitypkg/Editor/Tools/go/inspect.cs +49 -0
- package/unitypkg/Editor/Tools/go/look-at.cs +76 -0
- package/unitypkg/Editor/Tools/go/modify.cs +156 -0
- package/unitypkg/Editor/Tools/go/move-relative.cs +74 -0
- package/unitypkg/Editor/Tools/go/set-parent.cs +84 -0
- package/unitypkg/Editor/Tools/graphics/GraphicsToolSupport.cs +396 -0
- package/unitypkg/Editor/Tools/graphics/bake-cancel.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-clear.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/bake-reflection-probe.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/bake-settings.cs +131 -0
- package/unitypkg/Editor/Tools/graphics/bake-start.cs +27 -0
- package/unitypkg/Editor/Tools/graphics/bake-status.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/light-probe-group.cs +56 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-info.cs +19 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-quality.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/pipeline-settings.cs +46 -0
- package/unitypkg/Editor/Tools/graphics/probe-positions.cs +58 -0
- package/unitypkg/Editor/Tools/graphics/quality.cs +85 -0
- package/unitypkg/Editor/Tools/graphics/reflection-probe.cs +73 -0
- package/unitypkg/Editor/Tools/graphics/scene-debug.cs +37 -0
- package/unitypkg/Editor/Tools/graphics/settings.cs +104 -0
- package/unitypkg/Editor/Tools/graphics/skybox-get.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-ambient.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-fog.cs +24 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-material.cs +33 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-properties.cs +51 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-reflection.cs +31 -0
- package/unitypkg/Editor/Tools/graphics/skybox-set-sun.cs +35 -0
- package/unitypkg/Editor/Tools/graphics/stats-counters.cs +28 -0
- package/unitypkg/Editor/Tools/graphics/stats-memory.cs +21 -0
- package/unitypkg/Editor/Tools/graphics/stats.cs +17 -0
- package/unitypkg/Editor/Tools/graphics/volume.cs +59 -0
- package/unitypkg/Editor/Tools/instances/list.cs +71 -0
- package/unitypkg/Editor/Tools/material/MaterialToolSupport.cs +401 -0
- package/unitypkg/Editor/Tools/material/assign.cs +124 -0
- package/unitypkg/Editor/Tools/material/create.cs +82 -0
- package/unitypkg/Editor/Tools/material/info.cs +55 -0
- package/unitypkg/Editor/Tools/material/set-renderer-color.cs +108 -0
- package/unitypkg/Editor/Tools/material/set.cs +114 -0
- package/unitypkg/Editor/Tools/navmesh/NavMeshToolSupport.cs +404 -0
- package/unitypkg/Editor/Tools/navmesh/bake-clear.cs +70 -0
- package/unitypkg/Editor/Tools/navmesh/settings/set.cs +73 -0
- package/unitypkg/Editor/Tools/navmesh/settings.cs +37 -0
- package/unitypkg/Editor/Tools/object/ObjectToolSupport.cs +99 -0
- package/unitypkg/Editor/Tools/object/get-data.cs +69 -0
- package/unitypkg/Editor/Tools/object/modify.cs +126 -0
- package/unitypkg/Editor/Tools/occlusion/OcclusionToolSupport.cs +422 -0
- package/unitypkg/Editor/Tools/occlusion/bake-clear.cs +67 -0
- package/unitypkg/Editor/Tools/physics/PhysicsJointToolSupport.cs +13 -0
- package/unitypkg/Editor/Tools/physics/PhysicsToolSupport.cs +389 -0
- package/unitypkg/Editor/Tools/physics/assign-material.cs +88 -0
- package/unitypkg/Editor/Tools/physics/collision-matrix.cs +90 -0
- package/unitypkg/Editor/Tools/physics/force.cs +127 -0
- package/unitypkg/Editor/Tools/physics/joint/add.cs +99 -0
- package/unitypkg/Editor/Tools/physics/joint/remove.cs +4 -0
- package/unitypkg/Editor/Tools/physics/linecast.cs +59 -0
- package/unitypkg/Editor/Tools/physics/material.cs +73 -0
- package/unitypkg/Editor/Tools/physics/overlap.cs +84 -0
- package/unitypkg/Editor/Tools/physics/raycast-all.cs +67 -0
- package/unitypkg/Editor/Tools/physics/raycast.cs +96 -0
- package/unitypkg/Editor/Tools/physics/rigidbody.cs +116 -0
- package/unitypkg/Editor/Tools/physics/settings.cs +116 -0
- package/unitypkg/Editor/Tools/physics/shapecast.cs +127 -0
- package/unitypkg/Editor/Tools/physics/simulation.cs +89 -0
- package/unitypkg/Editor/Tools/physics/validate.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/PrefabOverrideToolSupport.cs +355 -0
- package/unitypkg/Editor/Tools/prefab/PrefabToolSupport.cs +446 -0
- package/unitypkg/Editor/Tools/prefab/create.cs +125 -0
- package/unitypkg/Editor/Tools/prefab/hierarchy.cs +157 -0
- package/unitypkg/Editor/Tools/prefab/info.cs +44 -0
- package/unitypkg/Editor/Tools/prefab/instantiate.cs +106 -0
- package/unitypkg/Editor/Tools/prefab/modify.cs +112 -0
- package/unitypkg/Editor/Tools/prefab/overrides/apply.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/overrides/revert.cs +51 -0
- package/unitypkg/Editor/Tools/prefab/stage-close.cs +67 -0
- package/unitypkg/Editor/Tools/prefab/stage-open.cs +69 -0
- package/unitypkg/Editor/Tools/prefab/stage-save.cs +64 -0
- package/unitypkg/Editor/Tools/prefab/stage.cs +68 -0
- package/unitypkg/Editor/Tools/prefab/unpack.cs +80 -0
- package/unitypkg/Editor/Tools/prefab/variant/create.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerFrameDebuggerSupport.cs +68 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerMemorySnapshotSupport.cs +30 -0
- package/unitypkg/Editor/Tools/profiler/ProfilerToolSupport.cs +515 -0
- package/unitypkg/Editor/Tools/profiler/areas.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/capture.cs +188 -0
- package/unitypkg/Editor/Tools/profiler/clear.cs +57 -0
- package/unitypkg/Editor/Tools/profiler/counter.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/deep.cs +48 -0
- package/unitypkg/Editor/Tools/profiler/export.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/disable.cs +53 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/enable.cs +66 -0
- package/unitypkg/Editor/Tools/profiler/frame-debugger/events.cs +140 -0
- package/unitypkg/Editor/Tools/profiler/frame.cs +38 -0
- package/unitypkg/Editor/Tools/profiler/hierarchy.cs +183 -0
- package/unitypkg/Editor/Tools/profiler/load.cs +85 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/compare.cs +78 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/list.cs +73 -0
- package/unitypkg/Editor/Tools/profiler/memory-snapshot/take.cs +147 -0
- package/unitypkg/Editor/Tools/profiler/memory.cs +34 -0
- package/unitypkg/Editor/Tools/profiler/module-enable.cs +52 -0
- package/unitypkg/Editor/Tools/profiler/modules.cs +33 -0
- package/unitypkg/Editor/Tools/profiler/object-memory.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/pause.cs +49 -0
- package/unitypkg/Editor/Tools/profiler/rendering-stats.cs +109 -0
- package/unitypkg/Editor/Tools/profiler/script-stats.cs +35 -0
- package/unitypkg/Editor/Tools/profiler/start.cs +55 -0
- package/unitypkg/Editor/Tools/profiler/status.cs +36 -0
- package/unitypkg/Editor/Tools/profiler/stop.cs +53 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsReader.cs +31 -0
- package/unitypkg/Editor/Tools/project/ProjectSettingsToolSupport.cs +757 -0
- package/unitypkg/Editor/Tools/project/ProjectTagLayerToolSupport.cs +23 -0
- package/unitypkg/Editor/Tools/project/audio-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/audio-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/info.cs +52 -0
- package/unitypkg/Editor/Tools/project/input-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/input-settings.cs +35 -0
- package/unitypkg/Editor/Tools/project/layer/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/layer/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/layers.cs +61 -0
- package/unitypkg/Editor/Tools/project/player-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/player-settings.cs +31 -0
- package/unitypkg/Editor/Tools/project/tag/add.cs +3 -0
- package/unitypkg/Editor/Tools/project/tag/remove.cs +3 -0
- package/unitypkg/Editor/Tools/project/tags.cs +45 -0
- package/unitypkg/Editor/Tools/project/time-settings/set.cs +35 -0
- package/unitypkg/Editor/Tools/project/time-settings.cs +31 -0
- package/unitypkg/Editor/Tools/reflection/method/call.cs +114 -0
- package/unitypkg/Editor/Tools/reflection/method/find.cs +72 -0
- package/unitypkg/Editor/Tools/reflection/type/schema.cs +56 -0
- package/unitypkg/Editor/Tools/scene/SceneToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/scene/active.cs +62 -0
- package/unitypkg/Editor/Tools/scene/build-settings.cs +69 -0
- package/unitypkg/Editor/Tools/scene/create.cs +78 -0
- package/unitypkg/Editor/Tools/scene/data.cs +125 -0
- package/unitypkg/Editor/Tools/scene/gameobject/component.cs +63 -0
- package/unitypkg/Editor/Tools/scene/gameobject/components.cs +77 -0
- package/unitypkg/Editor/Tools/scene/gameobject-support.cs +101 -0
- package/unitypkg/Editor/Tools/scene/gameobject.cs +83 -0
- package/unitypkg/Editor/Tools/scene/hierarchy.cs +250 -0
- package/unitypkg/Editor/Tools/scene/list-opened.cs +77 -0
- package/unitypkg/Editor/Tools/scene/load.cs +68 -0
- package/unitypkg/Editor/Tools/scene/move-object.cs +122 -0
- package/unitypkg/Editor/Tools/scene/save.cs +231 -0
- package/unitypkg/Editor/Tools/scene/set-active.cs +76 -0
- package/unitypkg/Editor/Tools/scene/unload.cs +109 -0
- package/unitypkg/Editor/Tools/scene/validate.cs +115 -0
- package/unitypkg/Editor/Tools/scene/view-frame.cs +218 -0
- package/unitypkg/Editor/Tools/screenshot/EditorElementCaptureToolSupport.cs +181 -0
- package/unitypkg/Editor/Tools/screenshot/ScreenshotToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/screenshot/editor-element.cs +87 -0
- package/unitypkg/Editor/Tools/screenshot/game-view.cs +116 -0
- package/unitypkg/Editor/Tools/screenshot/isolated-object.cs +93 -0
- package/unitypkg/Editor/Tools/screenshot/orbit.cs +103 -0
- package/unitypkg/Editor/Tools/screenshot/scene-view.cs +99 -0
- package/unitypkg/Editor/Tools/screenshot/screen.cs +89 -0
- package/unitypkg/Editor/Tools/screenshot/surround.cs +181 -0
- package/unitypkg/Editor/Tools/scriptable-object/ScriptableObjectToolSupport.cs +196 -0
- package/unitypkg/Editor/Tools/scriptable-object/create.cs +79 -0
- package/unitypkg/Editor/Tools/scriptable-object/info.cs +49 -0
- package/unitypkg/Editor/Tools/scriptable-object/list-types.cs +103 -0
- package/unitypkg/Editor/Tools/scriptable-object/modify.cs +208 -0
- package/unitypkg/Editor/Tools/shader/ShaderToolSupport.cs +326 -0
- package/unitypkg/Editor/Tools/shader/create.cs +82 -0
- package/unitypkg/Editor/Tools/shader/delete.cs +90 -0
- package/unitypkg/Editor/Tools/shader/get-data.cs +125 -0
- package/unitypkg/Editor/Tools/shader/info.cs +48 -0
- package/unitypkg/Editor/Tools/shader/list.cs +82 -0
- package/unitypkg/Editor/Tools/shader/read.cs +84 -0
- package/unitypkg/Editor/Tools/shader/update.cs +71 -0
- package/unitypkg/Editor/Tools/tests/list.cs +98 -0
- package/unitypkg/Editor/Tools/texture/TextureToolSupport.cs +327 -0
- package/unitypkg/Editor/Tools/texture/create.cs +182 -0
- package/unitypkg/Editor/Tools/texture/delete.cs +89 -0
- package/unitypkg/Editor/Tools/texture/generate.cs +189 -0
- package/unitypkg/Editor/Tools/texture/import-settings.cs +104 -0
- package/unitypkg/Editor/Tools/texture/info.cs +50 -0
- package/unitypkg/Editor/Tools/texture/modify.cs +154 -0
- package/unitypkg/Editor/Tools/texture/sprite.cs +132 -0
- package/unitypkg/Editor/Tools/timeline/TimelineMutationToolSupport.cs +696 -0
- package/unitypkg/Editor/Tools/timeline/TimelineReadToolSupport.cs +439 -0
- package/unitypkg/Editor/Tools/timeline/TimelineToolSupport.cs +203 -0
- package/unitypkg/Editor/Tools/timeline/clip/add.cs +93 -0
- package/unitypkg/Editor/Tools/timeline/create.cs +88 -0
- package/unitypkg/Editor/Tools/timeline/info.cs +54 -0
- package/unitypkg/Editor/Tools/timeline/track/add.cs +91 -0
- package/unitypkg/Editor/Tools/ui/UiToolSupport.cs +162 -0
- package/unitypkg/Editor/Tools/ui/UiUguiToolSupport.cs +24 -0
- package/unitypkg/Editor/Tools/ui/attach-document.cs +46 -0
- package/unitypkg/Editor/Tools/ui/button/create.cs +58 -0
- package/unitypkg/Editor/Tools/ui/canvas/create.cs +40 -0
- package/unitypkg/Editor/Tools/ui/create-panel-settings.cs +44 -0
- package/unitypkg/Editor/Tools/ui/detach-document.cs +41 -0
- package/unitypkg/Editor/Tools/ui/document/create.cs +49 -0
- package/unitypkg/Editor/Tools/ui/document/delete.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/info.cs +33 -0
- package/unitypkg/Editor/Tools/ui/document/update.cs +36 -0
- package/unitypkg/Editor/Tools/ui/get-visual-tree.cs +34 -0
- package/unitypkg/Editor/Tools/ui/hierarchy.cs +27 -0
- package/unitypkg/Editor/Tools/ui/image/create.cs +47 -0
- package/unitypkg/Editor/Tools/ui/link-stylesheet.cs +54 -0
- package/unitypkg/Editor/Tools/ui/list-documents.cs +34 -0
- package/unitypkg/Editor/Tools/ui/modify-visual-element.cs +76 -0
- package/unitypkg/Editor/Tools/ui/render-preview.cs +128 -0
- package/unitypkg/Editor/Tools/ui/text/create.cs +45 -0
- package/unitypkg/Editor/Tools/ui/update-panel-settings.cs +49 -0
- package/unitypkg/Editor/UnityCliBridge.cs +431 -0
- package/unitypkg/Editor/UnityCliBridgeBuildInfo.cs +9 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeBridge.cs +580 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeJson.cs +232 -0
- package/unitypkg/Runtime/Infrastructure/UnityCliRuntimeRegistry.cs +297 -0
- package/unitypkg/Runtime/Tools/UnityCliRuntimeTools.cs +701 -0
- package/unitypkg/Runtime/UnityCli.Runtime.asmdef +14 -0
- package/unitypkg/Shared/UnityCli.Shared.asmdef +14 -0
- package/unitypkg/Shared/UnityCliAdmissionPool.cs +426 -0
- package/unitypkg/Tests/Editor/UnityCli.Editor.Tests.asmdef +15 -0
- package/unitypkg/Tests/Editor/UnityCliAdmissionPoolTests.cs +262 -0
- package/unitypkg/UnityCli.Editor.asmdef +26 -0
- package/unitypkg/package.json +11 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections;
|
|
4
|
+
using System.Collections.Generic;
|
|
5
|
+
using System.Linq;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
using UnityEngine;
|
|
8
|
+
using UnityEngine.ProBuilder;
|
|
9
|
+
|
|
10
|
+
namespace UnityCli.ProBuilder
|
|
11
|
+
{
|
|
12
|
+
/// <summary>AppendVerticesToEdge 的请求终态证明;planner 只操作托管 Vertex/Face 克隆,绝不读取或修改 effect mesh。</summary>
|
|
13
|
+
internal static class ProBuilderAppendCompletionProof
|
|
14
|
+
{
|
|
15
|
+
// PB 5.2.4 Smoothing 的 internal 范围常量;proof 必须保持同一分组判定但不能引用 internal API。
|
|
16
|
+
private const int SmoothingGroupNone = 0;
|
|
17
|
+
private const int SmoothRangeMax = 24;
|
|
18
|
+
private const int HardRangeMin = 42;
|
|
19
|
+
|
|
20
|
+
internal sealed class Plan
|
|
21
|
+
{
|
|
22
|
+
internal readonly CanonicalMeshSnapshot Before;
|
|
23
|
+
internal readonly Edge[] FrozenEdges;
|
|
24
|
+
internal readonly int Count;
|
|
25
|
+
internal readonly long InsertedCount;
|
|
26
|
+
internal readonly RawPlan[] Raw;
|
|
27
|
+
internal readonly FacePlan[] Faces;
|
|
28
|
+
internal readonly int[][] Shared;
|
|
29
|
+
internal readonly int[][] SharedTextures;
|
|
30
|
+
internal Plan(CanonicalMeshSnapshot before, Edge[] edges, int count, long insertedCount, IEnumerable<RawPlan> raw, IEnumerable<FacePlan> faces, IEnumerable<int[]> shared, IEnumerable<int[]> textures)
|
|
31
|
+
{ Before = before; FrozenEdges = edges.Select(edge => new Edge(edge.a, edge.b)).ToArray(); Count = count; InsertedCount = insertedCount; Raw = raw.ToArray(); Faces = faces.ToArray(); Shared = shared.Select(value => value.ToArray()).ToArray(); SharedTextures = textures.Select(value => value.ToArray()).ToArray(); }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
internal sealed class RawPlan
|
|
35
|
+
{
|
|
36
|
+
internal readonly Vector3 Position; internal CanonicalMeshSnapshot.ChannelValue Normal, Tangent; internal readonly CanonicalMeshSnapshot.ChannelValue Color; internal readonly CanonicalMeshSnapshot.ChannelValue[] Uvs;
|
|
37
|
+
internal RawPlan(Vertex vertex, CanonicalMeshSnapshot.RawVertex profile) { Position = vertex.position; Normal = Channel(profile.LocalNormal.IsPresent, vertex.normal); Tangent = Channel(profile.Tangent.IsPresent, vertex.tangent); Color = Channel(profile.Color.IsPresent, (Vector4)vertex.color); var uv = profile.Uvs; Uvs = new[] { Channel(uv[0].IsPresent, (Vector4)vertex.uv0), Channel(uv[1].IsPresent, (Vector4)vertex.uv2), Channel(uv[2].IsPresent, vertex.uv3), Channel(uv[3].IsPresent, vertex.uv4) }; }
|
|
38
|
+
internal RawPlan(CanonicalMeshSnapshot.RawVertex vertex) { Position = vertex.LocalPosition; Normal = vertex.LocalNormal; Tangent = vertex.Tangent; Color = vertex.Color; Uvs = vertex.Uvs; }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
internal sealed class FacePlan
|
|
42
|
+
{
|
|
43
|
+
internal readonly CanonicalMeshSnapshot.FaceOccurrence Source; internal readonly int[] RawStream; internal readonly bool Rebuilt;
|
|
44
|
+
internal readonly CanonicalMeshSnapshot.MaterialClaim Material;
|
|
45
|
+
internal FacePlan(CanonicalMeshSnapshot.FaceOccurrence source, IEnumerable<int> raw, bool rebuilt = false, Material rebuiltMaterial = null)
|
|
46
|
+
{ Source = source; RawStream = raw.ToArray(); Rebuilt = rebuilt; Material = rebuilt ? CanonicalMeshSnapshot.WithSerializedFaceMaterial(source.Material, rebuiltMaterial) : source.Material; }
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/// <summary>effect 前冻结 target identity、typed edges、全部 canonical channels,并忠实模拟 5.2.4 append 的 terminal mesh。</summary>
|
|
50
|
+
internal static Plan TryCreate(GameObject target, ProBuilderMesh mesh, Edge[] requestedEdges, int count)
|
|
51
|
+
{
|
|
52
|
+
if (target == null || mesh == null || requestedEdges == null || requestedEdges.Length == 0 || count < 1 || count > 512) return null;
|
|
53
|
+
var frozenEdges = requestedEdges.Select(edge => new Edge(edge.a, edge.b)).ToArray();
|
|
54
|
+
var before = CanonicalMeshSnapshot.Capture(target);
|
|
55
|
+
var renderer = target.GetComponent<Renderer>();
|
|
56
|
+
if (before == null || !before.HasSharedTextures || !CanonicalMeshSnapshot.RefreshArithmeticFinite(before) || !MaterialSlotsStable(before, renderer) || !FrozenEdgesAreReadable(before, frozenEdges)) return null;
|
|
57
|
+
// sharedVertices 的原成员顺序决定 AppendElements localEdge 端点;必须从 live group 冻结首 raw。
|
|
58
|
+
var firstRaw = FreezeFirstRaw(mesh, before);
|
|
59
|
+
if (firstRaw == null) return null;
|
|
60
|
+
|
|
61
|
+
// Dictionary insertion order follows frozen edge then exact neighbor-face order; overlapping faces would require mutable loop state, so reject before effect.
|
|
62
|
+
var selected = frozenEdges.Select(edge => SharedEdge(before, edge)).ToArray();
|
|
63
|
+
if (selected.Any(edge => edge == null) || selected.Distinct().Count() != selected.Length) return null;
|
|
64
|
+
var affected = selected.SelectMany(edge => NeighborFaces(before, edge.Item1, edge.Item2)).ToArray();
|
|
65
|
+
if (affected.Length == 0 || affected.Distinct().Count() != affected.Length || !FacesHaveExclusiveRawOwnership(before, affected)) return null;
|
|
66
|
+
var insertedCount = (long)frozenEdges.Length * count;
|
|
67
|
+
var workingRawCount = (long)before.RawVertices.Length + affected.Sum(face => (long)face.Boundary.Length + count);
|
|
68
|
+
if (insertedCount <= 0L || insertedCount > int.MaxValue - (long)before.RawVertices.Length || workingRawCount > int.MaxValue) return null;
|
|
69
|
+
|
|
70
|
+
try
|
|
71
|
+
{
|
|
72
|
+
var rebuiltMaterial = BuiltinMaterials.defaultMaterial;
|
|
73
|
+
if (rebuiltMaterial == null) return null;
|
|
74
|
+
var deleted = new HashSet<int>(affected.SelectMany(face => face.DirectedRawTriangleStream).Distinct());
|
|
75
|
+
var raw = before.RawVertices.Where(vertex => !deleted.Contains(vertex.RawIndex)).Select(vertex => new RawPlan(vertex)).ToList();
|
|
76
|
+
// lookup handle 是 raw-index keyed Dictionary;保留空 slot 直至所有 AddShared 完成,不能压缩旧 handle。
|
|
77
|
+
var shared = before.SharedVertices.Select(group => group.MemberRawIndexes.Where(index => !deleted.Contains(index)).Select(index => Remap(index, deleted)).ToList()).ToList();
|
|
78
|
+
var textures = before.SharedTextures.Select(group => group.MemberRawIndexes.Where(index => !deleted.Contains(index)).Select(index => Remap(index, deleted)).ToArray()).Where(group => group.Length > 0).ToList();
|
|
79
|
+
var modified = new Dictionary<int, FacePlan>();
|
|
80
|
+
|
|
81
|
+
// 5.2.4 Dictionary insertion/raw append 顺序是 frozen common-edge order 再 GetNeighborFaces order,不是 face occurrence order。
|
|
82
|
+
foreach (var face in affected)
|
|
83
|
+
{
|
|
84
|
+
var edge = selected.Single(value => NeighborFaces(before, value.Item1, value.Item2).Contains(face));
|
|
85
|
+
var ordered = OrderedFaceVertices(before, face);
|
|
86
|
+
var edgePosition = FindBoundaryPosition(before, ordered.RawIndexes, edge.Item1, edge.Item2);
|
|
87
|
+
if (edgePosition < 0) return null;
|
|
88
|
+
var profile = before.RawVertices[0];
|
|
89
|
+
var inserted = MixedVertices(before, firstRaw, edge.Item1, edge.Item2, count);
|
|
90
|
+
if (inserted.Any(vertex => !FiniteForProfile(vertex, profile))) return null;
|
|
91
|
+
var insertedHandles = Enumerable.Range(0, count).Select(index => before.RawVertices.Length + selected.ToList().IndexOf(edge) * count + index).ToArray();
|
|
92
|
+
if (ordered.Forward(edgePosition, edge.Item1, edge.Item2)) { ordered.Insert(edgePosition + 1, inserted, insertedHandles); }
|
|
93
|
+
else { ordered.Insert(edgePosition + 1, inserted.Reverse<Vertex>(), insertedHandles.Reverse()); }
|
|
94
|
+
|
|
95
|
+
var relative = TriangulateExact(ordered.Vertices);
|
|
96
|
+
if (relative == null) return null;
|
|
97
|
+
var offset = raw.Count;
|
|
98
|
+
raw.AddRange(ordered.Vertices.Select(vertex => new RawPlan(vertex, profile)));
|
|
99
|
+
for (var index = 0; index < ordered.Handles.Count; index++) AddShared(shared, ordered.Handles[index], offset + index);
|
|
100
|
+
modified.Add(face.OccurrenceIndex, new FacePlan(face, relative.Select(index => offset + index), true, rebuiltMaterial));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// face array 保留原 occurrence 顺序;仅 raw append 使用 modifiedFaces insertion 顺序。
|
|
104
|
+
var orderedFaces = before.Faces.Select(face => modified.TryGetValue(face.OccurrenceIndex, out var replacement) ? replacement : new FacePlan(face, face.DirectedRawTriangleStream.Select(index => Remap(index, deleted)))).ToArray();
|
|
105
|
+
var terminalShared = shared.Where(group => group.Count > 0).Select(group => group.ToArray()).ToArray();
|
|
106
|
+
// ProBuilderMeshFunction.ToMesh 无条件清空 mesh.uv2;canonical UV1 从 MeshFilter.sharedMesh.uv2 读取。
|
|
107
|
+
foreach (var vertex in raw) vertex.Uvs[1] = new CanonicalMeshSnapshot.ChannelValue(false, Vector4.zero);
|
|
108
|
+
var positions = raw.Select(vertex => vertex.Position).ToArray();
|
|
109
|
+
var streams = orderedFaces.Select(face => face.RawStream).ToArray();
|
|
110
|
+
// 5.2.4 会把跨面的插入顶点共享给不同 UV 岛;tangent 中间倒数可非有限,但最终归一化结果仍确定且有限。
|
|
111
|
+
// CalculateDerivedChannels 逐句重放该终态并验证最终 normal/tangent,不能再用通用中间有限性门禁拒绝合法 Cube edge。
|
|
112
|
+
if (!CanonicalMeshSnapshot.TerminalTopologyReadable(positions, streams, terminalShared)
|
|
113
|
+
|| !CalculateDerivedChannels(raw, orderedFaces, terminalShared)) return null;
|
|
114
|
+
return new Plan(before, frozenEdges, count, insertedCount, raw, orderedFaces, terminalShared, textures);
|
|
115
|
+
}
|
|
116
|
+
catch { return null; }
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/// <summary>effect 后必须从 effect 前 identity fresh-resolve,并对全部 operation-owned terminal channels 作精确比较。</summary>
|
|
120
|
+
internal static bool Matches(Plan plan, string target)
|
|
121
|
+
{
|
|
122
|
+
if (plan == null) return false;
|
|
123
|
+
var freshMesh = CanonicalMeshSnapshot.ResolveFreshMesh(target, plan.Before.Identity);
|
|
124
|
+
var after = freshMesh == null ? null : CanonicalMeshSnapshot.Capture(freshMesh.gameObject);
|
|
125
|
+
if (after == null || !IdentityAndTransformEqual(plan.Before, after) || after.RawVertices.Length != plan.Raw.Length || after.Faces.Length != plan.Faces.Length || after.HasSharedTextures != true) return false;
|
|
126
|
+
for (var index = 0; index < plan.Raw.Length; index++) if (!RawBaseEquals(after.RawVertices[index], plan.Raw[index])) return false;
|
|
127
|
+
for (var index = 0; index < plan.Faces.Length; index++) if (!FaceEquals(after.Faces[index], plan.Faces[index])) return false;
|
|
128
|
+
if (!OrderedPartitionsEqual(after.SharedVertices.Select(group => group.MemberRawIndexes), plan.Shared) || !OrderedPartitionsEqual(after.SharedTextures.Select(group => group.MemberRawIndexes), plan.SharedTextures)) return false;
|
|
129
|
+
// positions/faces/attrs/shared/UV0 已先完整证明,derived replay 才消费最终 normal/tangent。
|
|
130
|
+
return plan.Raw.Select((expected, index) => CanonicalMeshSnapshot.ChannelValueEquals(after.RawVertices[index].LocalNormal, expected.Normal) && CanonicalMeshSnapshot.ChannelValueEquals(after.RawVertices[index].Tangent, expected.Tangent)).All(value => value);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private sealed class OrderedFace
|
|
134
|
+
{
|
|
135
|
+
internal readonly List<Vertex> Vertices; internal readonly List<int> RawIndexes; internal readonly List<int> Handles;
|
|
136
|
+
internal OrderedFace(IEnumerable<Vertex> vertices, IEnumerable<int> raw, IEnumerable<int> handles) { Vertices = vertices.ToList(); RawIndexes = raw.ToList(); Handles = handles.ToList(); }
|
|
137
|
+
internal bool Forward(int index, int a, int b) => Handles[index] == a && Handles[(index + 1) % Handles.Count] == b;
|
|
138
|
+
internal void Insert(int index, IEnumerable<Vertex> vertices, IEnumerable<int> handles) { var values = vertices.ToArray(); Vertices.InsertRange(index, values); RawIndexes.InsertRange(index, Enumerable.Repeat(-1, values.Length)); Handles.InsertRange(index, handles); }
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 通过 package-internal exact helper 获取外围循环;reflection 的输入是新建 Face,不访问真实 mesh。
|
|
142
|
+
private static OrderedFace OrderedFaceVertices(CanonicalMeshSnapshot before, CanonicalMeshSnapshot.FaceOccurrence face)
|
|
143
|
+
{
|
|
144
|
+
var clone = new Face(face.DirectedRawTriangleStream);
|
|
145
|
+
var type = typeof(Face).Assembly.GetType("UnityEngine.ProBuilder.WingedEdge");
|
|
146
|
+
var method = type?.GetMethod("SortEdgesByAdjacency", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null, new[] { typeof(Face) }, null);
|
|
147
|
+
var edges = method?.Invoke(null, new object[] { clone }) as IEnumerable;
|
|
148
|
+
if (edges == null) return null;
|
|
149
|
+
var raw = edges.Cast<Edge>().Select(edge => edge.a).ToArray();
|
|
150
|
+
return raw.Length < 3 || raw.Distinct().Count() != raw.Length ? null : new OrderedFace(raw.Select(index => ToVertex(before.RawVertices[index])), raw, raw.Select(index => before.RawVertices[index].SharedHandle));
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// 通过 package-internal exact helper 三角化克隆的 managed Vertex 列表;失败即 effect 前拒绝。
|
|
154
|
+
private static List<int> TriangulateExact(List<Vertex> vertices)
|
|
155
|
+
{
|
|
156
|
+
var type = typeof(Face).Assembly.GetType("UnityEngine.ProBuilder.MeshOperations.Triangulation");
|
|
157
|
+
var method = type?.GetMethod("TriangulateVertices", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null,
|
|
158
|
+
new[] { typeof(IList<Vertex>), typeof(List<int>).MakeByRefType(), typeof(bool), typeof(bool) }, null);
|
|
159
|
+
var args = new object[] { vertices.Select(vertex => new Vertex(vertex)).ToList(), null, false, false };
|
|
160
|
+
return method != null && (bool)method.Invoke(null, args) && args[1] is List<int> result ? result : null;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
private static bool FrozenEdgesAreReadable(CanonicalMeshSnapshot before, IEnumerable<Edge> edges) => edges.All(edge => edge.a >= 0 && edge.b >= 0 && edge.a < before.RawVertices.Length && edge.b < before.RawVertices.Length && edge.a != edge.b);
|
|
164
|
+
/// <summary>ToMesh 会删除空 submesh 并重排 material slots;仅接受每个 slot 都有原始 face 精确引用的稳定布局。</summary>
|
|
165
|
+
private static bool MaterialSlotsStable(CanonicalMeshSnapshot before, Renderer renderer)
|
|
166
|
+
{
|
|
167
|
+
var materials = renderer == null ? null : renderer.sharedMaterials;
|
|
168
|
+
return before != null && materials != null && materials.Length > 0
|
|
169
|
+
&& before.Faces.All(face => face.SubmeshIndex >= 0 && face.SubmeshIndex < materials.Length)
|
|
170
|
+
&& Enumerable.Range(0, materials.Length).All(slot => before.Faces.Any(face => face.SubmeshIndex == slot));
|
|
171
|
+
}
|
|
172
|
+
private static Tuple<int, int> SharedEdge(CanonicalMeshSnapshot before, Edge edge) { var a = before.RawVertices[edge.a].SharedHandle; var b = before.RawVertices[edge.b].SharedHandle; return Tuple.Create(a, b); }
|
|
173
|
+
private static CanonicalMeshSnapshot.FaceOccurrence[] NeighborFaces(CanonicalMeshSnapshot before, int a, int b) => before.Faces.Where(face => face.Boundary.Any(edge => (edge.SharedA == a && edge.SharedB == b) || (edge.SharedA == b && edge.SharedB == a))).ToArray();
|
|
174
|
+
private static bool FacesHaveExclusiveRawOwnership(CanonicalMeshSnapshot before, IEnumerable<CanonicalMeshSnapshot.FaceOccurrence> faces)
|
|
175
|
+
{
|
|
176
|
+
if (before == null || faces == null) return false;
|
|
177
|
+
var affected = faces.ToArray();
|
|
178
|
+
var occurrences = new HashSet<int>(affected.Select(face => face.OccurrenceIndex));
|
|
179
|
+
var perFace = affected.Select(face => face.DirectedRawTriangleStream.Distinct().ToArray()).ToArray();
|
|
180
|
+
var deleted = new HashSet<int>(perFace.SelectMany(raw => raw));
|
|
181
|
+
return deleted.Count == perFace.Sum(raw => raw.Length)
|
|
182
|
+
&& before.Faces.Where(face => !occurrences.Contains(face.OccurrenceIndex)).All(face => face.DirectedRawTriangleStream.All(raw => !deleted.Contains(raw)));
|
|
183
|
+
}
|
|
184
|
+
private static int FindBoundaryPosition(CanonicalMeshSnapshot before, List<int> raw, int a, int b) { for (var index = 0; index < raw.Count; index++) { var x = before.RawVertices[raw[index]].SharedHandle; var y = before.RawVertices[raw[(index + 1) % raw.Count]].SharedHandle; if ((x == a && y == b) || (x == b && y == a)) return index; } return -1; }
|
|
185
|
+
private static int[] FreezeFirstRaw(ProBuilderMesh mesh, CanonicalMeshSnapshot before) { var groups = mesh.sharedVertices; if (groups == null || groups.Count != before.SharedVertices.Length) return null; var first = new int[groups.Count]; for (var handle = 0; handle < groups.Count; handle++) { if (groups[handle] == null || groups[handle].Count == 0) return null; first[handle] = groups[handle][0]; if (!before.SharedVertices[handle].MemberRawIndexes.Contains(first[handle])) return null; } return first; }
|
|
186
|
+
private static List<Vertex> MixedVertices(CanonicalMeshSnapshot before, int[] firstRaw, int a, int b, int count) { var x = ToVertex(before.RawVertices[firstRaw[a]]); var y = ToVertex(before.RawVertices[firstRaw[b]]); return Enumerable.Range(0, count).Select(index => Vertex.Mix(x, y, (index + 1) / ((float)count + 1))).ToList(); }
|
|
187
|
+
private static Vertex ToVertex(CanonicalMeshSnapshot.RawVertex raw) { var vertex = new Vertex { position = raw.LocalPosition }; Set(vertex, raw.LocalNormal, MeshArrays.Normal, value => vertex.normal = (Vector3)value); Set(vertex, raw.Tangent, MeshArrays.Tangent, value => vertex.tangent = value); Set(vertex, raw.Color, MeshArrays.Color, value => vertex.color = (Color)value); var uv = raw.Uvs; Set(vertex, uv[0], MeshArrays.Texture0, value => vertex.uv0 = (Vector2)value); Set(vertex, uv[1], MeshArrays.Texture1, value => vertex.uv2 = (Vector2)value); Set(vertex, uv[2], MeshArrays.Texture2, value => vertex.uv3 = value); Set(vertex, uv[3], MeshArrays.Texture3, value => vertex.uv4 = value); return vertex; }
|
|
188
|
+
private static void Set(Vertex vertex, CanonicalMeshSnapshot.ChannelValue value, MeshArrays attribute, Action<Vector4> set) { if (value.IsPresent) set(value.Value); }
|
|
189
|
+
private static CanonicalMeshSnapshot.ChannelValue Channel(bool present, Vector4 value) => new CanonicalMeshSnapshot.ChannelValue(present, value);
|
|
190
|
+
private static bool FiniteForProfile(Vertex vertex, CanonicalMeshSnapshot.RawVertex profile)
|
|
191
|
+
{
|
|
192
|
+
if (vertex == null || profile == null || !Finite(vertex.position)) return false;
|
|
193
|
+
var uv = profile.Uvs;
|
|
194
|
+
return (!profile.LocalNormal.IsPresent || Finite(vertex.normal)) && (!profile.Tangent.IsPresent || Finite(vertex.tangent))
|
|
195
|
+
&& (!profile.Color.IsPresent || Finite((Vector4)vertex.color)) && (!uv[0].IsPresent || Finite((Vector4)vertex.uv0))
|
|
196
|
+
&& (!uv[1].IsPresent || Finite((Vector4)vertex.uv2)) && (!uv[2].IsPresent || Finite(vertex.uv3)) && (!uv[3].IsPresent || Finite(vertex.uv4));
|
|
197
|
+
}
|
|
198
|
+
private static void AddShared(List<List<int>> shared, int handle, int raw) { while (shared.Count <= handle) shared.Add(new List<int>()); shared[handle].Add(raw); }
|
|
199
|
+
private static int Remap(int raw, HashSet<int> deleted) => raw - deleted.Count(index => index < raw);
|
|
200
|
+
private static bool IdentityAndTransformEqual(CanonicalMeshSnapshot before, CanonicalMeshSnapshot after) => CanonicalMeshSnapshot.IdentityAndTransformEqual(before, after);
|
|
201
|
+
private static bool RawBaseEquals(CanonicalMeshSnapshot.RawVertex actual, RawPlan expected) => CanonicalMeshSnapshot.ExactEquals(actual.LocalPosition, expected.Position) && CanonicalMeshSnapshot.ChannelValueEquals(actual.Color, expected.Color) && actual.Uvs.Zip(expected.Uvs, CanonicalMeshSnapshot.ChannelValueEquals).All(value => value);
|
|
202
|
+
private static bool FaceEquals(CanonicalMeshSnapshot.FaceOccurrence actual, FacePlan expected) => actual.SubmeshIndex == expected.Source.SubmeshIndex && (!expected.Rebuilt ? 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) : actual.SmoothingGroup == 0 && actual.TextureGroup == -1 && actual.ElementGroup == 0 && !actual.ManualUv && CanonicalMeshSnapshot.UvValueEquals(actual.Uv, AutoUnwrapSettings.tile)) && CanonicalMeshSnapshot.MaterialValueEquals(actual.Material, expected.Material) && actual.DirectedRawTriangleStream.SequenceEqual(expected.RawStream);
|
|
203
|
+
/// <summary>逐句重放 5.2.4 CalculateHardNormals、shared smoothing pass 和 CalculateTangents;只使用 terminal managed plan。</summary>
|
|
204
|
+
private static bool CalculateDerivedChannels(IList<RawPlan> raw, IList<FacePlan> faces, IEnumerable<int[]> shared)
|
|
205
|
+
{
|
|
206
|
+
var count = raw.Count; var normals = new Vector3[count]; var occurrences = new int[count];
|
|
207
|
+
foreach (var face in faces) for (var tri = 0; tri < face.RawStream.Length; tri += 3)
|
|
208
|
+
{
|
|
209
|
+
var a = face.RawStream[tri]; var b = face.RawStream[tri + 1]; var c = face.RawStream[tri + 2];
|
|
210
|
+
var cross = UnityEngine.ProBuilder.Math.Normal(raw[a].Position, raw[b].Position, raw[c].Position); cross.Normalize();
|
|
211
|
+
normals[a] += cross; normals[b] += cross; normals[c] += cross; occurrences[a]++; occurrences[b]++; occurrences[c]++;
|
|
212
|
+
}
|
|
213
|
+
for (var index = 0; index < count; index++) normals[index] /= occurrences[index];
|
|
214
|
+
var smoothing = new int[count]; var smoothGroupMax = SmoothRangeMax;
|
|
215
|
+
foreach (var face in faces)
|
|
216
|
+
{
|
|
217
|
+
foreach (var index in face.RawStream.Distinct()) { smoothing[index] = face.Rebuilt ? 0 : face.Source.SmoothingGroup; if (smoothing[index] >= smoothGroupMax) smoothGroupMax = smoothing[index] + 1; }
|
|
218
|
+
}
|
|
219
|
+
foreach (var members in shared)
|
|
220
|
+
{
|
|
221
|
+
var sums = new Vector3[smoothGroupMax]; var groupCounts = new float[smoothGroupMax];
|
|
222
|
+
foreach (var index in members) { var group = smoothing[index]; if (group <= SmoothingGroupNone || (group > SmoothRangeMax && group < HardRangeMin)) continue; sums[group] += normals[index]; groupCounts[group] += 1f; }
|
|
223
|
+
foreach (var index in members) { var group = smoothing[index]; if (group <= SmoothingGroupNone || (group > SmoothRangeMax && group < HardRangeMin)) continue; normals[index] = EnsureUnitVector(sums[group] / groupCounts[group]); }
|
|
224
|
+
}
|
|
225
|
+
for (var index = 0; index < count; index++) raw[index].Normal = new CanonicalMeshSnapshot.ChannelValue(true, normals[index]);
|
|
226
|
+
// CalculateTangents creates tangent storage before the position/UV0 early-return path.
|
|
227
|
+
if (raw.Any(vertex => !vertex.Uvs[0].IsPresent)) { for (var index = 0; index < count; index++) raw[index].Tangent = new CanonicalMeshSnapshot.ChannelValue(true, Vector4.zero); return Finite(raw); }
|
|
228
|
+
var tan1 = new Vector3[count]; var tan2 = new Vector3[count];
|
|
229
|
+
foreach (var face in faces) for (var tri = 0; tri < face.RawStream.Length; tri += 3)
|
|
230
|
+
{
|
|
231
|
+
var i1 = face.RawStream[tri]; var i2 = face.RawStream[tri + 1]; var i3 = face.RawStream[tri + 2]; var v1 = raw[i1].Position; var v2 = raw[i2].Position; var v3 = raw[i3].Position; var w1 = raw[i1].Uvs[0].Value; var w2 = raw[i2].Uvs[0].Value; var w3 = raw[i3].Uvs[0].Value;
|
|
232
|
+
var x1 = v2.x-v1.x; var x2 = v3.x-v1.x; var y1 = v2.y-v1.y; var y2 = v3.y-v1.y; var z1 = v2.z-v1.z; var z2 = v3.z-v1.z; var s1 = w2.x-w1.x; var s2 = w3.x-w1.x; var t1 = w2.y-w1.y; var t2 = w3.y-w1.y; var r = 1.0f/(s1*t2-s2*t1);
|
|
233
|
+
var sdir = new Vector3((t2*x1-t1*x2)*r,(t2*y1-t1*y2)*r,(t2*z1-t1*z2)*r); var tdir = new Vector3((s1*x2-s2*x1)*r,(s1*y2-s2*y1)*r,(s1*z2-s2*z1)*r);
|
|
234
|
+
tan1[i1]+=sdir; tan1[i2]+=sdir; tan1[i3]+=sdir; tan2[i1]+=tdir; tan2[i2]+=tdir; tan2[i3]+=tdir;
|
|
235
|
+
}
|
|
236
|
+
for (var index = 0; index < count; index++) { var n = normals[index]; var t = EnsureUnitVector(tan1[index]); Vector3.OrthoNormalize(ref n, ref t); raw[index].Tangent = new CanonicalMeshSnapshot.ChannelValue(true, new Vector4(t.x,t.y,t.z,Vector3.Dot(Vector3.Cross(n,t),tan2[index]) < 0f ? -1f : 1f)); }
|
|
237
|
+
return Finite(raw);
|
|
238
|
+
}
|
|
239
|
+
private static Vector3 EnsureUnitVector(Vector3 v) => Mathf.Abs(v.sqrMagnitude) < float.Epsilon ? Vector3.up : v.normalized;
|
|
240
|
+
private static bool Finite(IEnumerable<RawPlan> raw) => raw.All(vertex => Finite(vertex.Normal.Value.x) && Finite(vertex.Normal.Value.y) && Finite(vertex.Normal.Value.z) && Finite(vertex.Tangent.Value.x) && Finite(vertex.Tangent.Value.y) && Finite(vertex.Tangent.Value.z) && Finite(vertex.Tangent.Value.w));
|
|
241
|
+
private static bool Finite(float value) => !float.IsNaN(value) && !float.IsInfinity(value);
|
|
242
|
+
private static bool Finite(Vector3 value) => Finite(value.x) && Finite(value.y) && Finite(value.z);
|
|
243
|
+
private static bool Finite(Vector4 value) => Finite(value.x) && Finite(value.y) && Finite(value.z) && Finite(value.w);
|
|
244
|
+
/// <summary>Append 后的 group 与 member 顺序会决定后续 first-member 语义,必须逐层精确比较。</summary>
|
|
245
|
+
private static bool OrderedPartitionsEqual(IEnumerable<IEnumerable<int>> actual, IEnumerable<IEnumerable<int>> expected)
|
|
246
|
+
{
|
|
247
|
+
if (actual == null || expected == null) return false;
|
|
248
|
+
var left = actual.Select(group => group == null ? null : group.ToArray()).ToArray();
|
|
249
|
+
var right = expected.Select(group => group == null ? null : group.ToArray()).ToArray();
|
|
250
|
+
return left.Length == right.Length && left.Select((group, index) => group != null && right[index] != null && group.SequenceEqual(right[index])).All(value => value);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
#endif
|
|
@@ -0,0 +1,293 @@
|
|
|
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.ProBuilder;
|
|
8
|
+
|
|
9
|
+
namespace UnityCli.ProBuilder
|
|
10
|
+
{
|
|
11
|
+
/// <summary>普通属性、变换和拓扑 Tool 的最小业务读回;不捕获完整 canonical 状态。</summary>
|
|
12
|
+
internal static class ProBuilderAtomicReadback
|
|
13
|
+
{
|
|
14
|
+
private const float Epsilon = 0.0001f;
|
|
15
|
+
|
|
16
|
+
internal sealed class SourceMeshGeometry
|
|
17
|
+
{
|
|
18
|
+
internal Vector3[] Vertices;
|
|
19
|
+
internal int[] Triangles;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
internal sealed class ScaleBakeClaim
|
|
23
|
+
{
|
|
24
|
+
internal Vector3 LocalPosition;
|
|
25
|
+
internal Quaternion LocalRotation;
|
|
26
|
+
internal Vector3[] ExpectedLocalPositions;
|
|
27
|
+
internal Vector3[] ExpectedWorldPositions;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
internal sealed class SplitVertexClaim
|
|
31
|
+
{
|
|
32
|
+
internal int[] Requested;
|
|
33
|
+
internal Vector3[] Positions;
|
|
34
|
+
internal bool HasObservableEffect;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// <summary>读取 raw local positions,调用方必须将返回值视为不可变快照。</summary>
|
|
38
|
+
internal static List<Vector3> CapturePositions(object mesh)
|
|
39
|
+
{
|
|
40
|
+
var positions = ProBuilderReflection.GetPositions(mesh);
|
|
41
|
+
return positions == null ? null : new List<Vector3>(positions);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/// <summary>冻结 FreezeScaleTransform 的最小业务终态:local scale 烘焙、局部姿态不变且世界几何不变。</summary>
|
|
45
|
+
internal static ScaleBakeClaim CaptureScaleBake(GameObject go, object mesh)
|
|
46
|
+
{
|
|
47
|
+
var positions = CapturePositions(mesh);
|
|
48
|
+
if (go == null || positions == null || positions.Count == 0 || !Finite(go.transform.localScale)) return null;
|
|
49
|
+
var expectedLocal = positions.Select(value => Vector3.Scale(value, go.transform.localScale)).ToArray();
|
|
50
|
+
var expectedWorld = positions.Select(go.transform.TransformPoint).ToArray();
|
|
51
|
+
if (expectedLocal.Any(value => !Finite(value)) || expectedWorld.Any(value => !Finite(value))) return null;
|
|
52
|
+
return new ScaleBakeClaim
|
|
53
|
+
{
|
|
54
|
+
LocalPosition = go.transform.localPosition,
|
|
55
|
+
LocalRotation = go.transform.localRotation,
|
|
56
|
+
ExpectedLocalPositions = expectedLocal,
|
|
57
|
+
ExpectedWorldPositions = expectedWorld
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/// <summary>验证 FreezeScaleTransform 的 fresh typed readback,不比较无关 mesh channel。</summary>
|
|
62
|
+
internal static bool ScaleWasBaked(GameObject go, object mesh, ScaleBakeClaim claim)
|
|
63
|
+
{
|
|
64
|
+
var after = CapturePositions(mesh);
|
|
65
|
+
if (go == null || claim == null || after == null || claim.ExpectedLocalPositions == null || claim.ExpectedWorldPositions == null
|
|
66
|
+
|| after.Count != claim.ExpectedLocalPositions.Length || after.Count != claim.ExpectedWorldPositions.Length
|
|
67
|
+
|| !Approximately(go.transform.localScale, Vector3.one)
|
|
68
|
+
|| go.transform.localPosition != claim.LocalPosition || go.transform.localRotation != claim.LocalRotation) return false;
|
|
69
|
+
for (var index = 0; index < after.Count; index++)
|
|
70
|
+
if (!Approximately(after[index], claim.ExpectedLocalPositions[index])
|
|
71
|
+
|| !Approximately(go.transform.TransformPoint(after[index]), claim.ExpectedWorldPositions[index])) return false;
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/// <summary>冻结 split 请求对应的 raw indexes、positions 与是否存在可观察 shared partition 变化。</summary>
|
|
76
|
+
internal static SplitVertexClaim CaptureSplitVertexClaim(object mesh, int[] requested)
|
|
77
|
+
{
|
|
78
|
+
var pb = mesh as ProBuilderMesh;
|
|
79
|
+
var positions = CapturePositions(mesh);
|
|
80
|
+
if (pb == null || requested == null || requested.Length == 0 || positions == null || pb.sharedVertices == null) return null;
|
|
81
|
+
var groups = pb.sharedVertices.Select(value => value == null ? null : value.ToArray()).ToArray();
|
|
82
|
+
if (groups.Any(value => value == null) || requested.Any(index => index < 0 || index >= positions.Count)) return null;
|
|
83
|
+
var observable = false;
|
|
84
|
+
foreach (var raw in requested)
|
|
85
|
+
{
|
|
86
|
+
var owners = groups.Where(group => group.Contains(raw)).ToArray();
|
|
87
|
+
if (owners.Length != 1) return null;
|
|
88
|
+
if (owners[0].Length > 1) observable = true;
|
|
89
|
+
}
|
|
90
|
+
return new SplitVertexClaim { Requested = (int[])requested.Clone(), Positions = positions.ToArray(), HasObservableEffect = observable };
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/// <summary>fresh shared partition 中每个请求 raw 必须成为 singleton,且 split 不得移动顶点。</summary>
|
|
94
|
+
internal static bool SplitVerticesMatch(object mesh, SplitVertexClaim claim)
|
|
95
|
+
{
|
|
96
|
+
var pb = mesh as ProBuilderMesh;
|
|
97
|
+
var positions = CapturePositions(mesh);
|
|
98
|
+
if (pb == null || claim == null || claim.Requested == null || claim.Positions == null || positions == null
|
|
99
|
+
|| positions.Count != claim.Positions.Length || pb.sharedVertices == null) return false;
|
|
100
|
+
if (positions.Where((value, index) => !Approximately(value, claim.Positions[index])).Any()) return false;
|
|
101
|
+
var groups = pb.sharedVertices.Select(value => value == null ? null : value.ToArray()).ToArray();
|
|
102
|
+
return !groups.Any(value => value == null)
|
|
103
|
+
&& claim.Requested.All(raw => groups.Count(group => group.Contains(raw)) == 1 && groups.Single(group => group.Contains(raw)).Length == 1);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/// <summary>为 ProBuilder scene mutation 登记真正持有 serialized mesh 状态的对象。</summary>
|
|
107
|
+
internal static void RegisterMeshUndo(GameObject go, object mesh, string name, bool includeTransform = false, params UnityEngine.Object[] additional)
|
|
108
|
+
{
|
|
109
|
+
var values = new List<UnityEngine.Object>();
|
|
110
|
+
if (go != null) values.Add(go);
|
|
111
|
+
if (includeTransform && go != null) values.Add(go.transform);
|
|
112
|
+
if (mesh is UnityEngine.Object meshObject) values.Add(meshObject);
|
|
113
|
+
var compiled = go == null ? null : go.GetComponent<MeshFilter>()?.sharedMesh;
|
|
114
|
+
if (compiled != null) values.Add(compiled);
|
|
115
|
+
if (additional != null) values.AddRange(additional.Where(value => value != null));
|
|
116
|
+
var unique = values.Where(value => value != null).Distinct().ToArray();
|
|
117
|
+
if (unique.Length > 0) Undo.RegisterCompleteObjectUndo(unique, name);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
internal static SourceMeshGeometry CaptureSourceMeshGeometry(MeshFilter filter)
|
|
121
|
+
{
|
|
122
|
+
var source = filter == null ? null : filter.sharedMesh;
|
|
123
|
+
if (source == null || source.vertexCount < 1) return null;
|
|
124
|
+
var vertices = source.vertices;
|
|
125
|
+
var triangles = source.triangles;
|
|
126
|
+
if (vertices == null || triangles == null || triangles.Length < 3 || triangles.Length % 3 != 0
|
|
127
|
+
|| vertices.Length != source.vertexCount || vertices.Any(value => !Finite(value))
|
|
128
|
+
|| triangles.Any(index => index < 0 || index >= vertices.Length)) return null;
|
|
129
|
+
return new SourceMeshGeometry { Vertices = vertices, Triangles = triangles };
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/// <summary>以有向 triangle 几何多重集验证 MeshImporter 结果,允许 importer 重排或复制 raw vertices。</summary>
|
|
133
|
+
internal static bool ConvertedGeometryMatchesSource(object mesh, SourceMeshGeometry source)
|
|
134
|
+
{
|
|
135
|
+
var positions = CapturePositions(mesh);
|
|
136
|
+
var faces = ProBuilderReflection.GetAllFaces(mesh);
|
|
137
|
+
if (source == null || positions == null || faces == null || positions.Count == 0) return false;
|
|
138
|
+
var expected = TriangleSignatures(source.Vertices, source.Triangles);
|
|
139
|
+
var actual = new List<string>();
|
|
140
|
+
foreach (var value in faces)
|
|
141
|
+
{
|
|
142
|
+
var indexes = (value as Face)?.indexes;
|
|
143
|
+
if (indexes == null || indexes.Count < 3 || indexes.Count % 3 != 0 || indexes.Any(index => index < 0 || index >= positions.Count)) return false;
|
|
144
|
+
for (var index = 0; index < indexes.Count; index += 3)
|
|
145
|
+
actual.Add(TriangleSignature(positions[indexes[index]], positions[indexes[index + 1]], positions[indexes[index + 2]]));
|
|
146
|
+
}
|
|
147
|
+
actual.Sort(StringComparer.Ordinal);
|
|
148
|
+
return expected.SequenceEqual(actual);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// <summary>验证输入 polygon、挤出距离与 Package 使用的 up-relative normal 方向。</summary>
|
|
152
|
+
internal static bool PolyShapeMatchesRequest(GameObject go, object mesh, IList<Vector3> points, float height, bool flipNormals)
|
|
153
|
+
{
|
|
154
|
+
var pb = mesh as ProBuilderMesh;
|
|
155
|
+
var positions = CapturePositions(mesh);
|
|
156
|
+
if (go == null || pb == null || points == null || points.Count < 3 || positions == null || !ReadableGeometry(mesh)
|
|
157
|
+
|| points.Any(point => !positions.Any(value => Approximately(value, point)))) return false;
|
|
158
|
+
if (!Approximately(height, 0f) && !HasCommonExtrusionOffset(positions, points, Mathf.Abs(height))) return false;
|
|
159
|
+
if (pb.faces == null || pb.faces.Count == 0 || pb.faces[0] == null) return false;
|
|
160
|
+
var localNormal = UnityEngine.ProBuilder.Math.Normal(pb, pb.faces[0]);
|
|
161
|
+
if (!Finite(localNormal)) return false;
|
|
162
|
+
var dot = Vector3.Dot(go.transform.up, go.transform.TransformDirection(localNormal));
|
|
163
|
+
return flipNormals ? dot <= Epsilon : dot >= -Epsilon;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
internal static bool SourcesWereRemovedAndGeometryIncluded(GameObject result, object mesh, int[] sourceIds, int minimumFaceCount)
|
|
167
|
+
=> result != null && sourceIds != null && sourceIds.Length > 1 && sourceIds[0] == result.GetInstanceID()
|
|
168
|
+
&& ReadableGeometry(mesh) && ProBuilderReflection.GetFaceCount(mesh) >= minimumFaceCount
|
|
169
|
+
&& sourceIds.Skip(1).All(id => EditorUtility.InstanceIDToObject(id) == null);
|
|
170
|
+
|
|
171
|
+
internal static bool PolygonWasCreatedFromRequestedVertices(object mesh, int[] vertexIndices, int expectedFaceCount)
|
|
172
|
+
{
|
|
173
|
+
var faces = ProBuilderReflection.GetAllFaces(mesh);
|
|
174
|
+
if (faces == null || faces.Length != expectedFaceCount || vertexIndices == null) return false;
|
|
175
|
+
var indexes = (faces.GetValue(faces.Length - 1) as Face)?.indexes;
|
|
176
|
+
var requested = vertexIndices.Distinct().OrderBy(value => value).ToArray();
|
|
177
|
+
var actual = indexes?.Distinct().OrderBy(value => value).ToArray();
|
|
178
|
+
return actual != null && actual.SequenceEqual(requested);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
internal static bool VerticesMovedByOffset(object mesh, IList<Vector3> before, int[] indices, Vector3 offset)
|
|
182
|
+
{
|
|
183
|
+
var after = CapturePositions(mesh);
|
|
184
|
+
return before != null && after != null && indices != null && indices.Length > 0
|
|
185
|
+
&& indices.All(index => index >= 0 && index < before.Count && index < after.Count && Approximately(after[index], before[index] + offset));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
internal static List<Vector3> CaptureWorldPositions(GameObject go, object mesh)
|
|
189
|
+
{
|
|
190
|
+
var positions = CapturePositions(mesh);
|
|
191
|
+
return go == null || positions == null ? null : positions.Select(go.transform.TransformPoint).ToList();
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
internal static bool PivotPreservesWorldGeometry(GameObject go, object mesh, Vector3 expectedPivot, IList<Vector3> worldPositions, bool requireBoundsCenter)
|
|
195
|
+
{
|
|
196
|
+
var positions = CapturePositions(mesh);
|
|
197
|
+
var renderer = go == null ? null : go.GetComponent<Renderer>();
|
|
198
|
+
return go != null && positions != null && worldPositions != null && positions.Count == worldPositions.Count
|
|
199
|
+
&& Approximately(go.transform.position, expectedPivot)
|
|
200
|
+
&& (!requireBoundsCenter || renderer != null && Approximately(renderer.bounds.center, expectedPivot))
|
|
201
|
+
&& !positions.Where((value, index) => !Approximately(go.transform.TransformPoint(value), worldPositions[index])).Any();
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
internal static bool RequestedFacesHaveColor(object mesh, int[] faceIndices, Color color)
|
|
205
|
+
{
|
|
206
|
+
var pb = mesh as ProBuilderMesh;
|
|
207
|
+
var colors = pb?.colors;
|
|
208
|
+
var faces = ProBuilderReflection.GetFacesByIndices(mesh, faceIndices);
|
|
209
|
+
return pb != null && colors != null && faces != null && colors.Count == pb.vertexCount
|
|
210
|
+
&& faces.Cast<Face>().All(face => face != null && face.indexes.Count > 0
|
|
211
|
+
&& !face.indexes.Any(index => index < 0 || index >= colors.Count || !Approximately(colors[index], color)));
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
internal static bool RequestedFacesUseMaterial(object mesh, int[] faceIndices, Material material)
|
|
215
|
+
{
|
|
216
|
+
var pb = mesh as ProBuilderMesh;
|
|
217
|
+
var faces = ProBuilderReflection.GetFacesByIndices(mesh, faceIndices);
|
|
218
|
+
var materials = pb == null ? null : pb.GetComponent<Renderer>()?.sharedMaterials;
|
|
219
|
+
var slot = materials == null || material == null ? -1 : Array.IndexOf(materials, material);
|
|
220
|
+
return faces != null && slot >= 0 && faces.Cast<Face>().All(face => face != null && face.submeshIndex == slot);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
internal static bool RequestedFacesHaveUv(object mesh, int[] faceIndices, float? scale, float? offsetU, float? offsetV, float? rotation, bool flipU, bool flipV)
|
|
224
|
+
{
|
|
225
|
+
var faces = ProBuilderReflection.GetFacesByIndices(mesh, faceIndices);
|
|
226
|
+
return faces != null && faces.Cast<Face>().All(face => FaceUvMatches(face, scale, offsetU, offsetV, rotation, flipU, flipV));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
internal static bool RequestedFacesHaveSmoothingGroup(object mesh, int[] faceIndices, int smoothingGroup)
|
|
230
|
+
{
|
|
231
|
+
var faces = ProBuilderReflection.GetFacesByIndices(mesh, faceIndices);
|
|
232
|
+
return faces != null && faces.Cast<Face>().All(face => face != null && face.smoothingGroup == smoothingGroup);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
private static bool FaceUvMatches(Face face, float? scale, float? offsetU, float? offsetV, float? rotation, bool flipU, bool flipV)
|
|
236
|
+
{
|
|
237
|
+
if (face == null) return false;
|
|
238
|
+
var uv = face.uv;
|
|
239
|
+
return (!scale.HasValue || Approximately(uv.scale.x, scale.Value) && Approximately(uv.scale.y, scale.Value))
|
|
240
|
+
&& (!offsetU.HasValue || Approximately(uv.offset.x, offsetU.Value))
|
|
241
|
+
&& (!offsetV.HasValue || Approximately(uv.offset.y, offsetV.Value))
|
|
242
|
+
&& (!rotation.HasValue || Approximately(uv.rotation, rotation.Value))
|
|
243
|
+
&& uv.flipU == flipU && uv.flipV == flipV;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
private static bool HasCommonExtrusionOffset(IList<Vector3> positions, IList<Vector3> points, float distance)
|
|
247
|
+
{
|
|
248
|
+
var first = points[0];
|
|
249
|
+
foreach (var candidate in positions)
|
|
250
|
+
{
|
|
251
|
+
var offset = candidate - first;
|
|
252
|
+
if (!Finite(offset) || !Approximately(offset.magnitude, distance)) continue;
|
|
253
|
+
if (points.All(point => positions.Any(value => Approximately(value, point + offset)))) return true;
|
|
254
|
+
}
|
|
255
|
+
return false;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
private static bool ReadableGeometry(object mesh)
|
|
259
|
+
=> mesh != null && ProBuilderReflection.GetVertexCount(mesh) > 0 && ProBuilderReflection.GetFaceCount(mesh) > 0 && CapturePositions(mesh) != null;
|
|
260
|
+
|
|
261
|
+
private static List<string> TriangleSignatures(IList<Vector3> vertices, IList<int> triangles)
|
|
262
|
+
{
|
|
263
|
+
var result = new List<string>();
|
|
264
|
+
for (var index = 0; index < triangles.Count; index += 3)
|
|
265
|
+
result.Add(TriangleSignature(vertices[triangles[index]], vertices[triangles[index + 1]], vertices[triangles[index + 2]]));
|
|
266
|
+
result.Sort(StringComparer.Ordinal);
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
private static string TriangleSignature(Vector3 a, Vector3 b, Vector3 c)
|
|
271
|
+
{
|
|
272
|
+
var values = new[] { Describe(a), Describe(b), Describe(c) };
|
|
273
|
+
var rotations = new[]
|
|
274
|
+
{
|
|
275
|
+
values[0] + "|" + values[1] + "|" + values[2],
|
|
276
|
+
values[1] + "|" + values[2] + "|" + values[0],
|
|
277
|
+
values[2] + "|" + values[0] + "|" + values[1]
|
|
278
|
+
};
|
|
279
|
+
Array.Sort(rotations, StringComparer.Ordinal);
|
|
280
|
+
return rotations[0];
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
private static string Describe(Vector3 value)
|
|
284
|
+
=> string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0:R},{1:R},{2:R}", value.x, value.y, value.z);
|
|
285
|
+
|
|
286
|
+
private static bool Finite(Vector3 value) => Finite(value.x) && Finite(value.y) && Finite(value.z);
|
|
287
|
+
private static bool Finite(float value) => !float.IsNaN(value) && !float.IsInfinity(value);
|
|
288
|
+
private static bool Approximately(Vector3 left, Vector3 right) => (left - right).sqrMagnitude <= Epsilon * Epsilon;
|
|
289
|
+
private static bool Approximately(Color left, Color right) => Mathf.Abs(left.r - right.r) <= Epsilon && Mathf.Abs(left.g - right.g) <= Epsilon && Mathf.Abs(left.b - right.b) <= Epsilon && Mathf.Abs(left.a - right.a) <= Epsilon;
|
|
290
|
+
private static bool Approximately(float left, float right) => Mathf.Abs(left - right) <= Epsilon;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
#endif
|