@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,1325 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections.Generic;
|
|
4
|
+
using System.Globalization;
|
|
5
|
+
using System.IO;
|
|
6
|
+
using System.Reflection;
|
|
7
|
+
using System.Security.Cryptography;
|
|
8
|
+
using UnityEditor;
|
|
9
|
+
using UnityEditor.SceneManagement;
|
|
10
|
+
using UnityEngine;
|
|
11
|
+
|
|
12
|
+
namespace UnityCli
|
|
13
|
+
{
|
|
14
|
+
/// <summary>
|
|
15
|
+
/// VFX Graph / ParticleSystem / LineRenderer / TrailRenderer 工具共享支持层。
|
|
16
|
+
/// 负责包探测、目标解析、公共 DTO 构造与渲染组件字段应用,不参与工具发现。
|
|
17
|
+
/// </summary>
|
|
18
|
+
internal static class VfxToolSupport
|
|
19
|
+
{
|
|
20
|
+
public static void EnsureEditorReady(string toolName)
|
|
21
|
+
{
|
|
22
|
+
GameObjectToolSupport.EnsureEditorNotBusy(toolName);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public static void RequireVfxPackageInstalled()
|
|
26
|
+
{
|
|
27
|
+
if (PackageManifestContains("com.unity.visualeffectgraph") || PackageLockContains("com.unity.visualeffectgraph"))
|
|
28
|
+
{
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
33
|
+
"E_VFX_PACKAGE_MISSING",
|
|
34
|
+
"Visual Effect Graph package is not installed in this Unity project.",
|
|
35
|
+
"Install com.unity.visualeffectgraph manually via Unity Package Manager or Packages/manifest.json, then run unitycli extensions install vfx-graph --project <path>.");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public static Type RequireVfxAssetType()
|
|
39
|
+
{
|
|
40
|
+
RequireVfxPackageInstalled();
|
|
41
|
+
var type = GameObjectToolSupport.FindType("UnityEngine.VFX.VisualEffectAsset");
|
|
42
|
+
if (type == null)
|
|
43
|
+
{
|
|
44
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
45
|
+
"E_VFX_PACKAGE_MISSING",
|
|
46
|
+
"Visual Effect Graph package is installed in the manifest but its editor/runtime assemblies are not loaded.",
|
|
47
|
+
"Wait for Unity PackageManager resolve/import to finish, then retry.");
|
|
48
|
+
}
|
|
49
|
+
return type;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public static Type RequireVisualEffectType()
|
|
53
|
+
{
|
|
54
|
+
RequireVfxPackageInstalled();
|
|
55
|
+
var type = GameObjectToolSupport.FindType("UnityEngine.VFX.VisualEffect");
|
|
56
|
+
if (type == null)
|
|
57
|
+
{
|
|
58
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
59
|
+
"E_VFX_PACKAGE_MISSING",
|
|
60
|
+
"Visual Effect Graph package is installed in the manifest but its runtime assembly is not loaded.",
|
|
61
|
+
"Wait for Unity PackageManager resolve/import to finish, then retry.");
|
|
62
|
+
}
|
|
63
|
+
return type;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public static string RequireVfxGraphPath(string rawPath)
|
|
67
|
+
{
|
|
68
|
+
var path = AssetToolSupport.NormalizeAssetPath(rawPath);
|
|
69
|
+
if (string.IsNullOrEmpty(path))
|
|
70
|
+
{
|
|
71
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
72
|
+
"E_VFX_GRAPH_PATH_REQUIRED",
|
|
73
|
+
"Pass an Assets/*.vfx path.",
|
|
74
|
+
"Use unitycli tools run vfx.graph.info --input '{\"path\":\"Assets/VFX/Effect.vfx\"}'.");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (!path.StartsWith("Assets/", StringComparison.OrdinalIgnoreCase) || !path.EndsWith(".vfx", StringComparison.OrdinalIgnoreCase))
|
|
78
|
+
{
|
|
79
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
80
|
+
"E_VFX_GRAPH_PATH_INVALID",
|
|
81
|
+
"VFX Graph path must be under Assets/ and end with .vfx: " + path,
|
|
82
|
+
"Pass a Unity asset path such as Assets/VFX/Explosion.vfx.");
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return path;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public static VfxGraphInfo BuildGraphInfo(string path, UnityEngine.Object asset)
|
|
89
|
+
{
|
|
90
|
+
return new VfxGraphInfo
|
|
91
|
+
{
|
|
92
|
+
Path = path,
|
|
93
|
+
Guid = AssetDatabase.AssetPathToGUID(path),
|
|
94
|
+
Name = asset == null ? null : asset.name,
|
|
95
|
+
Type = asset == null ? null : asset.GetType().FullName,
|
|
96
|
+
Hash = HashAsset(path)
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public static VfxEffectInfo BuildEffectInfo(Component component)
|
|
101
|
+
{
|
|
102
|
+
var property = component.GetType().GetProperty("visualEffectAsset", BindingFlags.Instance | BindingFlags.Public);
|
|
103
|
+
var graph = property == null ? null : property.GetValue(component, null) as UnityEngine.Object;
|
|
104
|
+
return new VfxEffectInfo
|
|
105
|
+
{
|
|
106
|
+
ComponentType = component.GetType().FullName,
|
|
107
|
+
Enabled = GameObjectToolSupport.ComponentEnabled(component),
|
|
108
|
+
Graph = BuildAssetRef(graph)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
public static ParticleSystem ResolveParticleSystem(string target)
|
|
113
|
+
{
|
|
114
|
+
if (string.IsNullOrWhiteSpace(target))
|
|
115
|
+
{
|
|
116
|
+
var all = UnityEngine.Object.FindObjectsOfType<ParticleSystem>(true);
|
|
117
|
+
return all.Length == 0 ? null : all[0];
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var gameObject = FindGameObjectByTarget(target);
|
|
121
|
+
return gameObject == null ? null : gameObject.GetComponent<ParticleSystem>();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
public static LineRenderer ResolveLineRenderer(string target)
|
|
125
|
+
{
|
|
126
|
+
if (string.IsNullOrWhiteSpace(target))
|
|
127
|
+
{
|
|
128
|
+
var all = UnityEngine.Object.FindObjectsOfType<LineRenderer>(true);
|
|
129
|
+
return all.Length == 0 ? null : all[0];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
var gameObject = FindGameObjectByTarget(target);
|
|
133
|
+
return gameObject == null ? null : gameObject.GetComponent<LineRenderer>();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
public static TrailRenderer ResolveTrailRenderer(string target)
|
|
137
|
+
{
|
|
138
|
+
if (string.IsNullOrWhiteSpace(target))
|
|
139
|
+
{
|
|
140
|
+
var all = UnityEngine.Object.FindObjectsOfType<TrailRenderer>(true);
|
|
141
|
+
return all.Length == 0 ? null : all[0];
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
var gameObject = FindGameObjectByTarget(target);
|
|
145
|
+
return gameObject == null ? null : gameObject.GetComponent<TrailRenderer>();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
public static GameObject FindGameObjectByTarget(string target)
|
|
149
|
+
{
|
|
150
|
+
foreach (var gameObject in UnityEngine.Object.FindObjectsOfType<GameObject>(true))
|
|
151
|
+
{
|
|
152
|
+
if (gameObject.name == target
|
|
153
|
+
|| gameObject.GetInstanceID().ToString(CultureInfo.InvariantCulture) == target
|
|
154
|
+
|| GameObjectToolSupport.HierarchyPath(gameObject) == target)
|
|
155
|
+
{
|
|
156
|
+
return gameObject;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
public static GameObject CreateSceneObject(string name)
|
|
164
|
+
{
|
|
165
|
+
return new GameObject(string.IsNullOrWhiteSpace(name) ? "GameObject" : name);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Commit 后只能通过稳定 instance ID 重新取得场景对象,不能把提交前的组件引用当作完成证明。
|
|
169
|
+
public static T ResolveObservedComponent<T>(int gameObjectId, string toolName) where T : Component
|
|
170
|
+
{
|
|
171
|
+
var gameObject = FindGameObjectByTarget(gameObjectId.ToString(CultureInfo.InvariantCulture));
|
|
172
|
+
var component = gameObject == null ? null : gameObject.GetComponent<T>();
|
|
173
|
+
if (component == null)
|
|
174
|
+
throw new UnityCliBridge.BridgeCommandException("E_VFX_OBSERVED_TARGET_MISSING", toolName + " target/component disappeared after commit.", "Retry after checking the target still exists.");
|
|
175
|
+
return component;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
public static void RequireFinite(double? value, string field, double? minimum = null, double? maximum = null)
|
|
179
|
+
{
|
|
180
|
+
if (!value.HasValue) return;
|
|
181
|
+
if (double.IsNaN(value.Value) || double.IsInfinity(value.Value) || value.Value < -float.MaxValue || value.Value > float.MaxValue || (minimum.HasValue && value.Value < minimum.Value) || (maximum.HasValue && value.Value > maximum.Value))
|
|
182
|
+
throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "Invalid " + field + " value.", "Pass a finite value within the supported range.");
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
public static void PrepareParticleBursts(List<ParticleBurstInput> bursts)
|
|
186
|
+
{
|
|
187
|
+
if (bursts == null) return;
|
|
188
|
+
foreach (var burst in bursts)
|
|
189
|
+
{
|
|
190
|
+
if (burst == null) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "bursts cannot contain null entries.", "Pass a complete burst object for every entry.");
|
|
191
|
+
RequireFinite(burst.Time, "bursts.time", 0);
|
|
192
|
+
RequireFinite(burst.RepeatInterval, "bursts.repeatInterval", 0);
|
|
193
|
+
if (burst.Count.HasValue && (burst.Count.Value < 0 || burst.Count.Value > short.MaxValue)) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "bursts.count must be a non-negative Int16.", "Pass a count between 0 and 32767.");
|
|
194
|
+
if (burst.Cycles.HasValue && (burst.Cycles.Value < 1 || burst.Cycles.Value > short.MaxValue)) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "bursts.cycles must fit positive Int16.", "Pass cycles between 1 and 32767.");
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
public static void RequireMutation(bool hasMutation, string toolName)
|
|
199
|
+
{
|
|
200
|
+
if (!hasMutation)
|
|
201
|
+
throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_REQUIRED", toolName + " requires at least one field to modify.", "Provide one or more supported mutation fields.");
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
public static void PrepareLineRendererFields(LineRendererFields request)
|
|
205
|
+
{
|
|
206
|
+
RequireFinite(request.StartWidth, "startWidth", 0); RequireFinite(request.EndWidth, "endWidth", 0); RequireFinite(request.WidthMultiplier, "widthMultiplier", 0);
|
|
207
|
+
RequireFinite(request.PositionCount, "positionCount", 0); RequireFinite(request.NumCornerVertices, "numCornerVertices", 0); RequireFinite(request.NumCapVertices, "numCapVertices", 0);
|
|
208
|
+
if (request.WidthCurve != null) BuildCurve(request.WidthCurve);
|
|
209
|
+
if (request.ColorGradient != null) BuildGradient(request.ColorGradient);
|
|
210
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor)) GraphicsToolSupport.ParseColor(request.StartColor);
|
|
211
|
+
if (!string.IsNullOrWhiteSpace(request.EndColor)) GraphicsToolSupport.ParseColor(request.EndColor);
|
|
212
|
+
if (!string.IsNullOrWhiteSpace(request.Material)) ResolveOptionalMaterial(request.Material);
|
|
213
|
+
if (!string.IsNullOrWhiteSpace(request.Alignment)) ParseEnum<LineAlignment>(request.Alignment, "E_LINE_ALIGNMENT_INVALID", "Use View or TransformZ.");
|
|
214
|
+
if (!string.IsNullOrWhiteSpace(request.TextureMode)) ParseEnum<LineTextureMode>(request.TextureMode, "E_LINE_TEXTURE_MODE_INVALID", "Use a valid LineTextureMode.");
|
|
215
|
+
if (request.Positions != null) foreach (var position in request.Positions) { RequireFinite(position.X, "positions.x"); RequireFinite(position.Y, "positions.y"); RequireFinite(position.Z, "positions.z"); }
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
public static void PrepareTrailRendererFields(TrailRendererFields request)
|
|
219
|
+
{
|
|
220
|
+
RequireFinite(request.Time, "time", 0); RequireFinite(request.StartWidth, "startWidth", 0); RequireFinite(request.EndWidth, "endWidth", 0); RequireFinite(request.WidthMultiplier, "widthMultiplier", 0); RequireFinite(request.MinVertexDistance, "minVertexDistance", 0);
|
|
221
|
+
RequireFinite(request.NumCornerVertices, "numCornerVertices", 0); RequireFinite(request.NumCapVertices, "numCapVertices", 0);
|
|
222
|
+
if (request.WidthCurve != null) BuildCurve(request.WidthCurve);
|
|
223
|
+
if (request.ColorGradient != null) BuildGradient(request.ColorGradient);
|
|
224
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor)) GraphicsToolSupport.ParseColor(request.StartColor);
|
|
225
|
+
if (!string.IsNullOrWhiteSpace(request.EndColor)) GraphicsToolSupport.ParseColor(request.EndColor);
|
|
226
|
+
if (!string.IsNullOrWhiteSpace(request.Material)) ResolveOptionalMaterial(request.Material);
|
|
227
|
+
if (!string.IsNullOrWhiteSpace(request.Alignment)) ParseEnum<LineAlignment>(request.Alignment, "E_TRAIL_ALIGNMENT_INVALID", "Use View or TransformZ.");
|
|
228
|
+
if (!string.IsNullOrWhiteSpace(request.TextureMode)) ParseEnum<LineTextureMode>(request.TextureMode, "E_TRAIL_TEXTURE_MODE_INVALID", "Use a valid LineTextureMode.");
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
public static void VerifyLineRendererFields(LineRenderer line, LineRendererFields request)
|
|
232
|
+
{
|
|
233
|
+
if ((request.StartWidth.HasValue && !Mathf.Approximately((float)request.StartWidth.Value, line.startWidth)) ||
|
|
234
|
+
(request.EndWidth.HasValue && !Mathf.Approximately((float)request.EndWidth.Value, line.endWidth)) ||
|
|
235
|
+
(request.WidthMultiplier.HasValue && !Mathf.Approximately((float)request.WidthMultiplier.Value, line.widthMultiplier)) ||
|
|
236
|
+
(request.WidthCurve != null && request.WidthCurve.Count > 0 && !CurveEquals(line.widthCurve, request.WidthCurve)) ||
|
|
237
|
+
(!string.IsNullOrWhiteSpace(request.StartColor) && line.startColor != GraphicsToolSupport.ParseColor(request.StartColor)) ||
|
|
238
|
+
(!string.IsNullOrWhiteSpace(request.EndColor) && line.endColor != GraphicsToolSupport.ParseColor(request.EndColor)) ||
|
|
239
|
+
(request.ColorGradient != null && request.ColorGradient.Count > 0 && !GradientEquals(line.colorGradient, request.ColorGradient)) ||
|
|
240
|
+
(request.PositionCount.HasValue && line.positionCount != request.PositionCount.Value) ||
|
|
241
|
+
(request.Positions != null && request.Positions.Count > 0 && !PositionsEqual(line, ToUnityVector3Array(request.Positions))) ||
|
|
242
|
+
(request.Loop.HasValue && line.loop != request.Loop.Value) || (request.UseWorldSpace.HasValue && line.useWorldSpace != request.UseWorldSpace.Value) ||
|
|
243
|
+
(!string.IsNullOrWhiteSpace(request.Alignment) && line.alignment != ParseEnum<LineAlignment>(request.Alignment, "E_LINE_ALIGNMENT_INVALID", "Use View or TransformZ.")) ||
|
|
244
|
+
(!string.IsNullOrWhiteSpace(request.TextureMode) && line.textureMode != ParseEnum<LineTextureMode>(request.TextureMode, "E_LINE_TEXTURE_MODE_INVALID", "Use a valid LineTextureMode.")) ||
|
|
245
|
+
(request.NumCornerVertices.HasValue && line.numCornerVertices != request.NumCornerVertices.Value) || (request.NumCapVertices.HasValue && line.numCapVertices != request.NumCapVertices.Value) ||
|
|
246
|
+
(!string.IsNullOrWhiteSpace(request.Material) && !SameAssetPathOrGuid(line.sharedMaterial, ResolveOptionalMaterial(request.Material))))
|
|
247
|
+
throw new UnityCliBridge.BridgeCommandException("E_LINE_VERIFY_FAILED", "LineRenderer did not retain every requested field.", "Check the LineRenderer state and retry.");
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
public static void VerifyTrailRendererFields(TrailRenderer trail, TrailRendererFields request)
|
|
251
|
+
{
|
|
252
|
+
if ((request.Time.HasValue && !Mathf.Approximately((float)request.Time.Value, trail.time)) ||
|
|
253
|
+
(request.StartWidth.HasValue && !Mathf.Approximately((float)request.StartWidth.Value, trail.startWidth)) ||
|
|
254
|
+
(request.EndWidth.HasValue && !Mathf.Approximately((float)request.EndWidth.Value, trail.endWidth)) ||
|
|
255
|
+
(request.WidthMultiplier.HasValue && !Mathf.Approximately((float)request.WidthMultiplier.Value, trail.widthMultiplier)) ||
|
|
256
|
+
(request.MinVertexDistance.HasValue && !Mathf.Approximately((float)request.MinVertexDistance.Value, trail.minVertexDistance)) ||
|
|
257
|
+
(request.WidthCurve != null && request.WidthCurve.Count > 0 && !CurveEquals(trail.widthCurve, request.WidthCurve)) ||
|
|
258
|
+
(!string.IsNullOrWhiteSpace(request.StartColor) && trail.startColor != GraphicsToolSupport.ParseColor(request.StartColor)) ||
|
|
259
|
+
(!string.IsNullOrWhiteSpace(request.EndColor) && trail.endColor != GraphicsToolSupport.ParseColor(request.EndColor)) ||
|
|
260
|
+
(request.ColorGradient != null && request.ColorGradient.Count > 0 && !GradientEquals(trail.colorGradient, request.ColorGradient)) ||
|
|
261
|
+
(request.Autodestruct.HasValue && trail.autodestruct != request.Autodestruct.Value) || (request.Emitting.HasValue && trail.emitting != request.Emitting.Value) ||
|
|
262
|
+
(!string.IsNullOrWhiteSpace(request.Alignment) && trail.alignment != ParseEnum<LineAlignment>(request.Alignment, "E_TRAIL_ALIGNMENT_INVALID", "Use View or TransformZ.")) ||
|
|
263
|
+
(!string.IsNullOrWhiteSpace(request.TextureMode) && trail.textureMode != ParseEnum<LineTextureMode>(request.TextureMode, "E_TRAIL_TEXTURE_MODE_INVALID", "Use a valid LineTextureMode.")) ||
|
|
264
|
+
(request.NumCornerVertices.HasValue && trail.numCornerVertices != request.NumCornerVertices.Value) || (request.NumCapVertices.HasValue && trail.numCapVertices != request.NumCapVertices.Value) ||
|
|
265
|
+
(!string.IsNullOrWhiteSpace(request.Material) && !SameAssetPathOrGuid(trail.sharedMaterial, ResolveOptionalMaterial(request.Material))))
|
|
266
|
+
throw new UnityCliBridge.BridgeCommandException("E_TRAIL_VERIFY_FAILED", "TrailRenderer did not retain every requested field.", "Check the TrailRenderer state and retry.");
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
private static bool PositionsEqual(LineRenderer line, Vector3[] expected)
|
|
270
|
+
{
|
|
271
|
+
if (line.positionCount != expected.Length) return false;
|
|
272
|
+
var actual = new Vector3[expected.Length]; line.GetPositions(actual);
|
|
273
|
+
for (var index = 0; index < actual.Length; index++) if (actual[index] != expected[index]) return false;
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
private static bool CurveEquals(AnimationCurve actual, List<VfxCurveKeyInput> expected)
|
|
278
|
+
{
|
|
279
|
+
var keys = actual == null ? new Keyframe[0] : actual.keys;
|
|
280
|
+
if (keys.Length != expected.Count) return false;
|
|
281
|
+
for (var index = 0; index < keys.Length; index++) if (!Mathf.Approximately(keys[index].time, (float)expected[index].Time) || !Mathf.Approximately(keys[index].value, (float)expected[index].Value)) return false;
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
private static bool GradientEquals(Gradient actual, List<VfxGradientStopInput> expected)
|
|
286
|
+
{
|
|
287
|
+
var colors = actual == null ? new GradientColorKey[0] : actual.colorKeys;
|
|
288
|
+
var alphas = actual == null ? new GradientAlphaKey[0] : actual.alphaKeys;
|
|
289
|
+
if (colors.Length != expected.Count || alphas.Length != expected.Count) return false;
|
|
290
|
+
for (var index = 0; index < expected.Count; index++)
|
|
291
|
+
{
|
|
292
|
+
var color = GraphicsToolSupport.ParseColor(expected[index].Color);
|
|
293
|
+
if (!Mathf.Approximately(colors[index].time, (float)expected[index].Time) || colors[index].color != color || !Mathf.Approximately(alphas[index].time, (float)expected[index].Time) || !Mathf.Approximately(alphas[index].alpha, color.a)) return false;
|
|
294
|
+
}
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
private static bool SameAssetPathOrGuid(UnityEngine.Object actual, UnityEngine.Object expected)
|
|
299
|
+
{
|
|
300
|
+
if (actual == expected) return true;
|
|
301
|
+
if (actual == null || expected == null) return false;
|
|
302
|
+
var actualPath = AssetDatabase.GetAssetPath(actual); var expectedPath = AssetDatabase.GetAssetPath(expected);
|
|
303
|
+
return string.Equals(actualPath, expectedPath, StringComparison.OrdinalIgnoreCase) ||
|
|
304
|
+
string.Equals(AssetDatabase.AssetPathToGUID(actualPath), AssetDatabase.AssetPathToGUID(expectedPath), StringComparison.OrdinalIgnoreCase);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
public static void MarkSceneDirty(GameObject gameObject)
|
|
308
|
+
{
|
|
309
|
+
if (gameObject != null && gameObject.scene.IsValid())
|
|
310
|
+
{
|
|
311
|
+
UnityCliSceneMutation.MarkSceneDirty(gameObject.scene);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
public static UnityEngine.Object CreateVfxGraphAsset(string path, Type assetType)
|
|
316
|
+
{
|
|
317
|
+
try
|
|
318
|
+
{
|
|
319
|
+
var created = CreateVfxGraphAssetWithUnityUtility(path, assetType);
|
|
320
|
+
if (created == null)
|
|
321
|
+
throw new UnityCliBridge.BridgeCommandException("E_VFX_GRAPH_FACTORY_UNAVAILABLE", "VisualEffectAssetEditorUtility did not create a readable VisualEffectAsset.", "Use a Visual Effect Graph package exposing UnityEditor.VisualEffectAssetEditorUtility.CreateNewAsset(string).");
|
|
322
|
+
return created;
|
|
323
|
+
}
|
|
324
|
+
catch (UnityCliBridge.BridgeCommandException)
|
|
325
|
+
{
|
|
326
|
+
throw;
|
|
327
|
+
}
|
|
328
|
+
catch (Exception exception)
|
|
329
|
+
{
|
|
330
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
331
|
+
"E_VFX_GRAPH_CREATE_FAILED",
|
|
332
|
+
"Failed to create VFX Graph asset: " + exception.GetType().Name + ": " + exception.Message,
|
|
333
|
+
"Check Unity Console and UnityCliBridge.log; the Visual Effect Graph package import pipeline may have changed.");
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
public static List<string> DiscoverVfxTemplates()
|
|
338
|
+
{
|
|
339
|
+
var results = new List<string>();
|
|
340
|
+
var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph");
|
|
341
|
+
if (packageInfo == null)
|
|
342
|
+
{
|
|
343
|
+
return results;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
foreach (var searchPath in GetTemplateSearchPaths(packageInfo.resolvedPath))
|
|
347
|
+
{
|
|
348
|
+
if (!Directory.Exists(searchPath))
|
|
349
|
+
{
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
foreach (var file in Directory.GetFiles(searchPath, "*.vfx", SearchOption.AllDirectories))
|
|
354
|
+
{
|
|
355
|
+
var relative = file.Substring(searchPath.Length).TrimStart(Path.DirectorySeparatorChar, '/');
|
|
356
|
+
var name = Path.GetFileNameWithoutExtension(relative);
|
|
357
|
+
if (!results.Contains(name))
|
|
358
|
+
{
|
|
359
|
+
results.Add(name);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
results.Sort(StringComparer.OrdinalIgnoreCase);
|
|
365
|
+
return results;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
public static string ResolveVfxTemplatePath(string templateName)
|
|
369
|
+
{
|
|
370
|
+
var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/com.unity.visualeffectgraph");
|
|
371
|
+
if (packageInfo == null)
|
|
372
|
+
{
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
foreach (var searchPath in GetTemplateSearchPaths(packageInfo.resolvedPath))
|
|
377
|
+
{
|
|
378
|
+
if (!Directory.Exists(searchPath))
|
|
379
|
+
{
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
var exactFile = Path.Combine(searchPath, templateName + ".vfx");
|
|
384
|
+
if (File.Exists(exactFile))
|
|
385
|
+
{
|
|
386
|
+
return ToPackageAssetPath(exactFile, packageInfo.resolvedPath, packageInfo.name);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
foreach (var file in Directory.GetFiles(searchPath, "*.vfx", SearchOption.AllDirectories))
|
|
390
|
+
{
|
|
391
|
+
var name = Path.GetFileNameWithoutExtension(file);
|
|
392
|
+
if (string.Equals(name, templateName, StringComparison.OrdinalIgnoreCase))
|
|
393
|
+
{
|
|
394
|
+
return ToPackageAssetPath(file, packageInfo.resolvedPath, packageInfo.name);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
var relative = file.Substring(searchPath.Length).TrimStart(Path.DirectorySeparatorChar, '/');
|
|
398
|
+
if (string.Equals(relative, templateName + ".vfx", StringComparison.OrdinalIgnoreCase))
|
|
399
|
+
{
|
|
400
|
+
return ToPackageAssetPath(file, packageInfo.resolvedPath, packageInfo.name);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
public static void PrepareParticleMainFields(ParticleMainFields request)
|
|
409
|
+
{
|
|
410
|
+
RequireFinite(request.Duration, "duration", 0); RequireFinite(request.StartLifetime, "startLifetime", 0); RequireFinite(request.StartSpeed, "startSpeed"); RequireFinite(request.StartSize, "startSize", 0); RequireFinite(request.StartRotation, "startRotation"); RequireFinite(request.GravityModifier, "gravityModifier");
|
|
411
|
+
if (request.MaxParticles.HasValue && request.MaxParticles.Value < 1) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "maxParticles must be positive.", "Pass maxParticles greater than zero.");
|
|
412
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor)) GraphicsToolSupport.ParseColor(request.StartColor);
|
|
413
|
+
if (!string.IsNullOrWhiteSpace(request.SimulationSpace)) ParseEnum<ParticleSystemSimulationSpace>(request.SimulationSpace, "E_PARTICLE_SIMULATION_SPACE_INVALID", "Use Local, World, or Custom.");
|
|
414
|
+
if (!string.IsNullOrWhiteSpace(request.ScalingMode)) ParseEnum<ParticleSystemScalingMode>(request.ScalingMode, "E_PARTICLE_SCALING_MODE_INVALID", "Use Hierarchy, Local, or Shape.");
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
public static void ApplyParticleMainFields(ParticleSystem particleSystem, ParticleMainFields request, string effectType, List<VfxPlannedEffect> effects)
|
|
418
|
+
{
|
|
419
|
+
var main = particleSystem.main;
|
|
420
|
+
if (request.Duration.HasValue)
|
|
421
|
+
{
|
|
422
|
+
main.duration = (float)request.Duration.Value;
|
|
423
|
+
effects.Add(Effect(effectType, "duration", Number(main.duration)));
|
|
424
|
+
}
|
|
425
|
+
if (request.StartLifetime.HasValue)
|
|
426
|
+
{
|
|
427
|
+
main.startLifetime = (float)request.StartLifetime.Value;
|
|
428
|
+
effects.Add(Effect(effectType, "startLifetime", Number(main.startLifetime.constant)));
|
|
429
|
+
}
|
|
430
|
+
if (request.StartSpeed.HasValue)
|
|
431
|
+
{
|
|
432
|
+
main.startSpeed = (float)request.StartSpeed.Value;
|
|
433
|
+
effects.Add(Effect(effectType, "startSpeed", Number(main.startSpeed.constant)));
|
|
434
|
+
}
|
|
435
|
+
if (request.StartSize.HasValue)
|
|
436
|
+
{
|
|
437
|
+
main.startSize = (float)request.StartSize.Value;
|
|
438
|
+
effects.Add(Effect(effectType, "startSize", Number(main.startSize.constant)));
|
|
439
|
+
}
|
|
440
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor))
|
|
441
|
+
{
|
|
442
|
+
main.startColor = GraphicsToolSupport.ParseColor(request.StartColor);
|
|
443
|
+
effects.Add(Effect(effectType, "startColor", request.StartColor));
|
|
444
|
+
}
|
|
445
|
+
if (request.StartRotation.HasValue)
|
|
446
|
+
{
|
|
447
|
+
main.startRotation = (float)request.StartRotation.Value * Mathf.Deg2Rad;
|
|
448
|
+
effects.Add(Effect(effectType, "startRotation", Number(main.startRotation.constant * Mathf.Rad2Deg)));
|
|
449
|
+
}
|
|
450
|
+
if (request.GravityModifier.HasValue)
|
|
451
|
+
{
|
|
452
|
+
main.gravityModifier = (float)request.GravityModifier.Value;
|
|
453
|
+
effects.Add(Effect(effectType, "gravityModifier", Number(main.gravityModifier.constant)));
|
|
454
|
+
}
|
|
455
|
+
if (request.MaxParticles.HasValue)
|
|
456
|
+
{
|
|
457
|
+
main.maxParticles = request.MaxParticles.Value;
|
|
458
|
+
effects.Add(Effect(effectType, "maxParticles", main.maxParticles.ToString(CultureInfo.InvariantCulture)));
|
|
459
|
+
}
|
|
460
|
+
if (request.Loop.HasValue)
|
|
461
|
+
{
|
|
462
|
+
main.loop = request.Loop.Value;
|
|
463
|
+
effects.Add(Effect(effectType, "loop", Bool(main.loop)));
|
|
464
|
+
}
|
|
465
|
+
if (request.PlayOnAwake.HasValue)
|
|
466
|
+
{
|
|
467
|
+
main.playOnAwake = request.PlayOnAwake.Value;
|
|
468
|
+
effects.Add(Effect(effectType, "playOnAwake", Bool(main.playOnAwake)));
|
|
469
|
+
}
|
|
470
|
+
if (!string.IsNullOrWhiteSpace(request.SimulationSpace))
|
|
471
|
+
{
|
|
472
|
+
main.simulationSpace = ParseEnum<ParticleSystemSimulationSpace>(request.SimulationSpace, "E_PARTICLE_SIMULATION_SPACE_INVALID", "Use Local, World, or Custom.");
|
|
473
|
+
effects.Add(Effect(effectType, "simulationSpace", main.simulationSpace.ToString()));
|
|
474
|
+
}
|
|
475
|
+
if (!string.IsNullOrWhiteSpace(request.ScalingMode))
|
|
476
|
+
{
|
|
477
|
+
main.scalingMode = ParseEnum<ParticleSystemScalingMode>(request.ScalingMode, "E_PARTICLE_SCALING_MODE_INVALID", "Use Hierarchy, Local, or Shape.");
|
|
478
|
+
effects.Add(Effect(effectType, "scalingMode", main.scalingMode.ToString()));
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
// 每个请求字段都从模块 getter 重新读取,避免把写入时的局部模块缓存当成完成证明。
|
|
483
|
+
public static void VerifyParticleMainFields(ParticleSystem particleSystem, ParticleMainFields request)
|
|
484
|
+
{
|
|
485
|
+
var main = particleSystem.main;
|
|
486
|
+
if ((request.Duration.HasValue && !Mathf.Approximately(main.duration, (float)request.Duration.Value)) ||
|
|
487
|
+
(request.StartLifetime.HasValue && !Mathf.Approximately(main.startLifetime.constant, (float)request.StartLifetime.Value)) ||
|
|
488
|
+
(request.StartSpeed.HasValue && !Mathf.Approximately(main.startSpeed.constant, (float)request.StartSpeed.Value)) ||
|
|
489
|
+
(request.StartSize.HasValue && !Mathf.Approximately(main.startSize.constant, (float)request.StartSize.Value)) ||
|
|
490
|
+
(!string.IsNullOrWhiteSpace(request.StartColor) && main.startColor.color != GraphicsToolSupport.ParseColor(request.StartColor)) ||
|
|
491
|
+
(request.StartRotation.HasValue && !Mathf.Approximately(main.startRotation.constant * Mathf.Rad2Deg, (float)request.StartRotation.Value)) ||
|
|
492
|
+
(request.GravityModifier.HasValue && !Mathf.Approximately(main.gravityModifier.constant, (float)request.GravityModifier.Value)) ||
|
|
493
|
+
(request.MaxParticles.HasValue && main.maxParticles != request.MaxParticles.Value) ||
|
|
494
|
+
(request.Loop.HasValue && main.loop != request.Loop.Value) ||
|
|
495
|
+
(request.PlayOnAwake.HasValue && main.playOnAwake != request.PlayOnAwake.Value) ||
|
|
496
|
+
(!string.IsNullOrWhiteSpace(request.SimulationSpace) && !string.Equals(main.simulationSpace.ToString(), request.SimulationSpace, StringComparison.OrdinalIgnoreCase)) ||
|
|
497
|
+
(!string.IsNullOrWhiteSpace(request.ScalingMode) && !string.Equals(main.scalingMode.ToString(), request.ScalingMode, StringComparison.OrdinalIgnoreCase)))
|
|
498
|
+
throw new UnityCliBridge.BridgeCommandException("E_PARTICLE_VERIFY_FAILED", "ParticleSystem main module did not retain every requested field.", "Check the ParticleSystem main module and retry.");
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
public static void VerifyParticleEmissionFields(ParticleSystem particleSystem, bool? enabled, double? rateOverTime, double? rateOverDistance, int? burstCount, List<ParticleBurstInput> bursts)
|
|
502
|
+
{
|
|
503
|
+
var emission = particleSystem.emission;
|
|
504
|
+
if ((enabled.HasValue && emission.enabled != enabled.Value) || (rateOverTime.HasValue && !Mathf.Approximately(emission.rateOverTime.constant, (float)rateOverTime.Value)) || (rateOverDistance.HasValue && !Mathf.Approximately(emission.rateOverDistance.constant, (float)rateOverDistance.Value)) || (burstCount.HasValue && emission.burstCount != burstCount.Value))
|
|
505
|
+
throw new UnityCliBridge.BridgeCommandException("E_PARTICLE_VERIFY_FAILED", "ParticleSystem emission module did not retain every requested field.", "Check the ParticleSystem emission module and retry.");
|
|
506
|
+
if (burstCount.HasValue)
|
|
507
|
+
{
|
|
508
|
+
var actual = new ParticleSystem.Burst[emission.burstCount]; emission.GetBursts(actual);
|
|
509
|
+
for (var index = 0; index < actual.Length; index++)
|
|
510
|
+
{
|
|
511
|
+
var expected = bursts != null && index < bursts.Count ? bursts[index] : null;
|
|
512
|
+
if (!Mathf.Approximately(actual[index].time, (float)(expected?.Time ?? 0d)) || actual[index].minCount != (short)(expected?.Count ?? 10) || actual[index].maxCount != (short)(expected?.Count ?? 10) || actual[index].cycleCount != (short)(expected?.Cycles ?? 1) || !Mathf.Approximately(actual[index].repeatInterval, (float)(expected?.RepeatInterval ?? 0.01d)))
|
|
513
|
+
throw new UnityCliBridge.BridgeCommandException("E_PARTICLE_VERIFY_FAILED", "ParticleSystem burst did not retain every requested field.", "Check burst time, count, cycles, and repeatInterval.");
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
public static void VerifyParticleShapeFields(ParticleSystem particleSystem, bool? enabled, string shapeType, double? radius, double? angle, double? arc, double? length, double? boxX, double? boxY, double? boxZ, bool? randomDirection)
|
|
519
|
+
{
|
|
520
|
+
var shape = particleSystem.shape;
|
|
521
|
+
if ((enabled.HasValue && shape.enabled != enabled.Value) || (!string.IsNullOrWhiteSpace(shapeType) && !string.Equals(shape.shapeType.ToString(), shapeType, StringComparison.OrdinalIgnoreCase)) || (radius.HasValue && !Mathf.Approximately(shape.radius, (float)radius.Value)) || (angle.HasValue && !Mathf.Approximately(shape.angle, (float)angle.Value)) || (arc.HasValue && !Mathf.Approximately(shape.arc, (float)arc.Value)) || (length.HasValue && !Mathf.Approximately(shape.length, (float)length.Value)) || (boxX.HasValue && !Mathf.Approximately(shape.scale.x, (float)boxX.Value)) || (boxY.HasValue && !Mathf.Approximately(shape.scale.y, (float)boxY.Value)) || (boxZ.HasValue && !Mathf.Approximately(shape.scale.z, (float)boxZ.Value)) || (randomDirection.HasValue && !Mathf.Approximately(shape.randomDirectionAmount, randomDirection.Value ? 1f : 0f)))
|
|
522
|
+
throw new UnityCliBridge.BridgeCommandException("E_PARTICLE_VERIFY_FAILED", "ParticleSystem shape module did not retain every requested field.", "Check the ParticleSystem shape module and retry.");
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
public static void ApplyLineRendererFields(LineRenderer line, LineRendererFields request, string effectType, List<VfxPlannedEffect> effects)
|
|
526
|
+
{
|
|
527
|
+
if (request.StartWidth.HasValue)
|
|
528
|
+
{
|
|
529
|
+
line.startWidth = (float)request.StartWidth.Value;
|
|
530
|
+
effects.Add(Effect(effectType, "startWidth", Number(line.startWidth)));
|
|
531
|
+
}
|
|
532
|
+
if (request.EndWidth.HasValue)
|
|
533
|
+
{
|
|
534
|
+
line.endWidth = (float)request.EndWidth.Value;
|
|
535
|
+
effects.Add(Effect(effectType, "endWidth", Number(line.endWidth)));
|
|
536
|
+
}
|
|
537
|
+
if (request.WidthMultiplier.HasValue)
|
|
538
|
+
{
|
|
539
|
+
line.widthMultiplier = (float)request.WidthMultiplier.Value;
|
|
540
|
+
effects.Add(Effect(effectType, "widthMultiplier", Number(line.widthMultiplier)));
|
|
541
|
+
}
|
|
542
|
+
if (request.WidthCurve != null && request.WidthCurve.Count > 0)
|
|
543
|
+
{
|
|
544
|
+
line.widthCurve = BuildCurve(request.WidthCurve);
|
|
545
|
+
effects.Add(Effect(effectType, "widthCurve", "keys=" + request.WidthCurve.Count.ToString(CultureInfo.InvariantCulture)));
|
|
546
|
+
}
|
|
547
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor))
|
|
548
|
+
{
|
|
549
|
+
line.startColor = GraphicsToolSupport.ParseColor(request.StartColor);
|
|
550
|
+
effects.Add(Effect(effectType, "startColor", request.StartColor));
|
|
551
|
+
}
|
|
552
|
+
if (!string.IsNullOrWhiteSpace(request.EndColor))
|
|
553
|
+
{
|
|
554
|
+
line.endColor = GraphicsToolSupport.ParseColor(request.EndColor);
|
|
555
|
+
effects.Add(Effect(effectType, "endColor", request.EndColor));
|
|
556
|
+
}
|
|
557
|
+
if (request.ColorGradient != null && request.ColorGradient.Count > 0)
|
|
558
|
+
{
|
|
559
|
+
line.colorGradient = BuildGradient(request.ColorGradient);
|
|
560
|
+
effects.Add(Effect(effectType, "colorGradient", "keys=" + request.ColorGradient.Count.ToString(CultureInfo.InvariantCulture)));
|
|
561
|
+
}
|
|
562
|
+
if (!string.IsNullOrWhiteSpace(request.Material))
|
|
563
|
+
{
|
|
564
|
+
line.sharedMaterial = ResolveOptionalMaterial(request.Material);
|
|
565
|
+
effects.Add(Effect(effectType, "material", line.sharedMaterial == null ? "null" : AssetDatabase.GetAssetPath(line.sharedMaterial)));
|
|
566
|
+
}
|
|
567
|
+
if (request.PositionCount.HasValue)
|
|
568
|
+
{
|
|
569
|
+
line.positionCount = request.PositionCount.Value;
|
|
570
|
+
effects.Add(Effect(effectType, "positionCount", line.positionCount.ToString(CultureInfo.InvariantCulture)));
|
|
571
|
+
}
|
|
572
|
+
if (request.Positions != null && request.Positions.Count > 0)
|
|
573
|
+
{
|
|
574
|
+
var positions = ToUnityVector3Array(request.Positions);
|
|
575
|
+
line.positionCount = positions.Length;
|
|
576
|
+
line.SetPositions(positions);
|
|
577
|
+
effects.Add(Effect(effectType, "positions", positions.Length.ToString(CultureInfo.InvariantCulture)));
|
|
578
|
+
}
|
|
579
|
+
if (request.Loop.HasValue)
|
|
580
|
+
{
|
|
581
|
+
line.loop = request.Loop.Value;
|
|
582
|
+
effects.Add(Effect(effectType, "loop", Bool(line.loop)));
|
|
583
|
+
}
|
|
584
|
+
if (request.UseWorldSpace.HasValue)
|
|
585
|
+
{
|
|
586
|
+
line.useWorldSpace = request.UseWorldSpace.Value;
|
|
587
|
+
effects.Add(Effect(effectType, "useWorldSpace", Bool(line.useWorldSpace)));
|
|
588
|
+
}
|
|
589
|
+
if (!string.IsNullOrWhiteSpace(request.Alignment))
|
|
590
|
+
{
|
|
591
|
+
line.alignment = ParseEnum<LineAlignment>(request.Alignment, "E_LINE_ALIGNMENT_INVALID", "Use View or TransformZ.");
|
|
592
|
+
effects.Add(Effect(effectType, "alignment", line.alignment.ToString()));
|
|
593
|
+
}
|
|
594
|
+
if (!string.IsNullOrWhiteSpace(request.TextureMode))
|
|
595
|
+
{
|
|
596
|
+
line.textureMode = ParseEnum<LineTextureMode>(request.TextureMode, "E_LINE_TEXTURE_MODE_INVALID", "Use Stretch, Tile, DistributePerSegment, or RepeatPerSegment.");
|
|
597
|
+
effects.Add(Effect(effectType, "textureMode", line.textureMode.ToString()));
|
|
598
|
+
}
|
|
599
|
+
if (request.NumCornerVertices.HasValue)
|
|
600
|
+
{
|
|
601
|
+
line.numCornerVertices = request.NumCornerVertices.Value;
|
|
602
|
+
effects.Add(Effect(effectType, "numCornerVertices", line.numCornerVertices.ToString(CultureInfo.InvariantCulture)));
|
|
603
|
+
}
|
|
604
|
+
if (request.NumCapVertices.HasValue)
|
|
605
|
+
{
|
|
606
|
+
line.numCapVertices = request.NumCapVertices.Value;
|
|
607
|
+
effects.Add(Effect(effectType, "numCapVertices", line.numCapVertices.ToString(CultureInfo.InvariantCulture)));
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
public static void ApplyTrailRendererFields(TrailRenderer trail, TrailRendererFields request, List<VfxPlannedEffect> effects, string toolName)
|
|
612
|
+
{
|
|
613
|
+
if (request.Time.HasValue)
|
|
614
|
+
{
|
|
615
|
+
trail.time = (float)request.Time.Value;
|
|
616
|
+
effects.Add(Effect(toolName, "time", Number(trail.time)));
|
|
617
|
+
}
|
|
618
|
+
if (request.StartWidth.HasValue)
|
|
619
|
+
{
|
|
620
|
+
trail.startWidth = (float)request.StartWidth.Value;
|
|
621
|
+
effects.Add(Effect(toolName, "startWidth", Number(trail.startWidth)));
|
|
622
|
+
}
|
|
623
|
+
if (request.EndWidth.HasValue)
|
|
624
|
+
{
|
|
625
|
+
trail.endWidth = (float)request.EndWidth.Value;
|
|
626
|
+
effects.Add(Effect(toolName, "endWidth", Number(trail.endWidth)));
|
|
627
|
+
}
|
|
628
|
+
if (request.WidthMultiplier.HasValue)
|
|
629
|
+
{
|
|
630
|
+
trail.widthMultiplier = (float)request.WidthMultiplier.Value;
|
|
631
|
+
effects.Add(Effect(toolName, "widthMultiplier", Number(trail.widthMultiplier)));
|
|
632
|
+
}
|
|
633
|
+
if (request.WidthCurve != null && request.WidthCurve.Count > 0)
|
|
634
|
+
{
|
|
635
|
+
trail.widthCurve = BuildCurve(request.WidthCurve);
|
|
636
|
+
effects.Add(Effect(toolName, "widthCurve", "keys=" + request.WidthCurve.Count.ToString(CultureInfo.InvariantCulture)));
|
|
637
|
+
}
|
|
638
|
+
if (!string.IsNullOrWhiteSpace(request.StartColor))
|
|
639
|
+
{
|
|
640
|
+
trail.startColor = GraphicsToolSupport.ParseColor(request.StartColor);
|
|
641
|
+
effects.Add(Effect(toolName, "startColor", request.StartColor));
|
|
642
|
+
}
|
|
643
|
+
if (!string.IsNullOrWhiteSpace(request.EndColor))
|
|
644
|
+
{
|
|
645
|
+
trail.endColor = GraphicsToolSupport.ParseColor(request.EndColor);
|
|
646
|
+
effects.Add(Effect(toolName, "endColor", request.EndColor));
|
|
647
|
+
}
|
|
648
|
+
if (request.ColorGradient != null && request.ColorGradient.Count > 0)
|
|
649
|
+
{
|
|
650
|
+
trail.colorGradient = BuildGradient(request.ColorGradient);
|
|
651
|
+
effects.Add(Effect(toolName, "colorGradient", "keys=" + request.ColorGradient.Count.ToString(CultureInfo.InvariantCulture)));
|
|
652
|
+
}
|
|
653
|
+
if (!string.IsNullOrWhiteSpace(request.Material))
|
|
654
|
+
{
|
|
655
|
+
trail.sharedMaterial = ResolveOptionalMaterial(request.Material);
|
|
656
|
+
effects.Add(Effect(toolName, "material", trail.sharedMaterial == null ? "null" : AssetDatabase.GetAssetPath(trail.sharedMaterial)));
|
|
657
|
+
}
|
|
658
|
+
if (request.MinVertexDistance.HasValue)
|
|
659
|
+
{
|
|
660
|
+
trail.minVertexDistance = (float)request.MinVertexDistance.Value;
|
|
661
|
+
effects.Add(Effect(toolName, "minVertexDistance", Number(trail.minVertexDistance)));
|
|
662
|
+
}
|
|
663
|
+
if (request.Autodestruct.HasValue)
|
|
664
|
+
{
|
|
665
|
+
trail.autodestruct = request.Autodestruct.Value;
|
|
666
|
+
effects.Add(Effect(toolName, "autodestruct", Bool(trail.autodestruct)));
|
|
667
|
+
}
|
|
668
|
+
if (request.Emitting.HasValue)
|
|
669
|
+
{
|
|
670
|
+
trail.emitting = request.Emitting.Value;
|
|
671
|
+
effects.Add(Effect(toolName, "emitting", Bool(trail.emitting)));
|
|
672
|
+
}
|
|
673
|
+
if (!string.IsNullOrWhiteSpace(request.Alignment))
|
|
674
|
+
{
|
|
675
|
+
trail.alignment = ParseEnum<LineAlignment>(request.Alignment, "E_TRAIL_ALIGNMENT_INVALID", "Use View or TransformZ.");
|
|
676
|
+
effects.Add(Effect(toolName, "alignment", trail.alignment.ToString()));
|
|
677
|
+
}
|
|
678
|
+
if (!string.IsNullOrWhiteSpace(request.TextureMode))
|
|
679
|
+
{
|
|
680
|
+
trail.textureMode = ParseEnum<LineTextureMode>(request.TextureMode, "E_TRAIL_TEXTURE_MODE_INVALID", "Use Stretch, Tile, DistributePerSegment, or RepeatPerSegment.");
|
|
681
|
+
effects.Add(Effect(toolName, "textureMode", trail.textureMode.ToString()));
|
|
682
|
+
}
|
|
683
|
+
if (request.NumCornerVertices.HasValue)
|
|
684
|
+
{
|
|
685
|
+
trail.numCornerVertices = request.NumCornerVertices.Value;
|
|
686
|
+
effects.Add(Effect(toolName, "numCornerVertices", trail.numCornerVertices.ToString(CultureInfo.InvariantCulture)));
|
|
687
|
+
}
|
|
688
|
+
if (request.NumCapVertices.HasValue)
|
|
689
|
+
{
|
|
690
|
+
trail.numCapVertices = request.NumCapVertices.Value;
|
|
691
|
+
effects.Add(Effect(toolName, "numCapVertices", trail.numCapVertices.ToString(CultureInfo.InvariantCulture)));
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
public static VfxParticleSystemInfo BuildParticleSystemInfo(ParticleSystem particleSystem)
|
|
697
|
+
{
|
|
698
|
+
var main = particleSystem.main;
|
|
699
|
+
var emission = particleSystem.emission;
|
|
700
|
+
var shape = particleSystem.shape;
|
|
701
|
+
var color = particleSystem.colorOverLifetime;
|
|
702
|
+
var size = particleSystem.sizeOverLifetime;
|
|
703
|
+
var rotation = particleSystem.rotationOverLifetime;
|
|
704
|
+
var velocity = particleSystem.velocityOverLifetime;
|
|
705
|
+
var noise = particleSystem.noise;
|
|
706
|
+
var collision = particleSystem.collision;
|
|
707
|
+
var sub = particleSystem.subEmitters;
|
|
708
|
+
var trails = particleSystem.trails;
|
|
709
|
+
return new VfxParticleSystemInfo
|
|
710
|
+
{
|
|
711
|
+
IsPlaying = particleSystem.isPlaying,
|
|
712
|
+
IsPaused = particleSystem.isPaused,
|
|
713
|
+
IsEmitting = particleSystem.isEmitting,
|
|
714
|
+
ParticleCount = particleSystem.particleCount,
|
|
715
|
+
Main = new VfxParticleMainInfo
|
|
716
|
+
{
|
|
717
|
+
Duration = main.duration,
|
|
718
|
+
StartLifetime = main.startLifetime.constant,
|
|
719
|
+
StartSpeed = main.startSpeed.constant,
|
|
720
|
+
StartSize = main.startSize.constant,
|
|
721
|
+
StartRotationDegrees = main.startRotation.constant * Mathf.Rad2Deg,
|
|
722
|
+
MaxParticles = main.maxParticles,
|
|
723
|
+
Loop = main.loop,
|
|
724
|
+
PlayOnAwake = main.playOnAwake,
|
|
725
|
+
SimulationSpace = main.simulationSpace.ToString(),
|
|
726
|
+
ScalingMode = main.scalingMode.ToString(),
|
|
727
|
+
GravityModifier = main.gravityModifier.constant
|
|
728
|
+
},
|
|
729
|
+
Emission = new VfxParticleEmissionInfo
|
|
730
|
+
{
|
|
731
|
+
Enabled = emission.enabled,
|
|
732
|
+
RateOverTime = emission.rateOverTime.constant,
|
|
733
|
+
RateOverDistance = emission.rateOverDistance.constant,
|
|
734
|
+
BurstCount = emission.burstCount
|
|
735
|
+
},
|
|
736
|
+
Shape = new VfxParticleShapeInfo
|
|
737
|
+
{
|
|
738
|
+
Enabled = shape.enabled,
|
|
739
|
+
ShapeType = shape.shapeType.ToString(),
|
|
740
|
+
Radius = shape.radius,
|
|
741
|
+
Angle = shape.angle,
|
|
742
|
+
Arc = shape.arc,
|
|
743
|
+
Length = shape.length,
|
|
744
|
+
Box = new Vector3Data(shape.scale),
|
|
745
|
+
RandomDirection = shape.randomDirectionAmount > 0f
|
|
746
|
+
},
|
|
747
|
+
Modules = new VfxParticleModulesInfo
|
|
748
|
+
{
|
|
749
|
+
ColorOverLifetime = color.enabled,
|
|
750
|
+
SizeOverLifetime = size.enabled,
|
|
751
|
+
RotationOverLifetime = rotation.enabled,
|
|
752
|
+
VelocityOverLifetime = velocity.enabled,
|
|
753
|
+
Noise = noise.enabled,
|
|
754
|
+
Collision = collision.enabled,
|
|
755
|
+
SubEmitters = sub.enabled,
|
|
756
|
+
SubEmittersCount = sub.subEmittersCount,
|
|
757
|
+
Trails = trails.enabled
|
|
758
|
+
}
|
|
759
|
+
};
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
public static VfxLineRendererInfo BuildLineRendererInfo(LineRenderer line)
|
|
763
|
+
{
|
|
764
|
+
var positions = new Vector3[line.positionCount];
|
|
765
|
+
line.GetPositions(positions);
|
|
766
|
+
var items = new List<Vector3Data>();
|
|
767
|
+
foreach (var position in positions)
|
|
768
|
+
{
|
|
769
|
+
items.Add(new Vector3Data(position));
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
return new VfxLineRendererInfo
|
|
773
|
+
{
|
|
774
|
+
StartWidth = line.startWidth,
|
|
775
|
+
EndWidth = line.endWidth,
|
|
776
|
+
WidthMultiplier = line.widthMultiplier,
|
|
777
|
+
WidthCurve = BuildCurveData(line.widthCurve),
|
|
778
|
+
StartColor = GraphicsToolSupport.ColorHtml(line.startColor),
|
|
779
|
+
EndColor = GraphicsToolSupport.ColorHtml(line.endColor),
|
|
780
|
+
ColorGradient = BuildGradientData(line.colorGradient),
|
|
781
|
+
Material = line.sharedMaterial == null ? null : AssetToolSupport.NormalizeAssetPath(AssetDatabase.GetAssetPath(line.sharedMaterial)),
|
|
782
|
+
PositionCount = line.positionCount,
|
|
783
|
+
Positions = items,
|
|
784
|
+
Loop = line.loop,
|
|
785
|
+
UseWorldSpace = line.useWorldSpace,
|
|
786
|
+
Alignment = line.alignment.ToString(),
|
|
787
|
+
TextureMode = line.textureMode.ToString(),
|
|
788
|
+
NumCornerVertices = line.numCornerVertices,
|
|
789
|
+
NumCapVertices = line.numCapVertices
|
|
790
|
+
};
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
public static VfxTrailRendererInfo BuildTrailRendererInfo(TrailRenderer trail)
|
|
794
|
+
{
|
|
795
|
+
return new VfxTrailRendererInfo
|
|
796
|
+
{
|
|
797
|
+
Time = trail.time,
|
|
798
|
+
StartWidth = trail.startWidth,
|
|
799
|
+
EndWidth = trail.endWidth,
|
|
800
|
+
WidthMultiplier = trail.widthMultiplier,
|
|
801
|
+
WidthCurve = BuildCurveData(trail.widthCurve),
|
|
802
|
+
StartColor = GraphicsToolSupport.ColorHtml(trail.startColor),
|
|
803
|
+
EndColor = GraphicsToolSupport.ColorHtml(trail.endColor),
|
|
804
|
+
ColorGradient = BuildGradientData(trail.colorGradient),
|
|
805
|
+
Material = trail.sharedMaterial == null ? null : AssetToolSupport.NormalizeAssetPath(AssetDatabase.GetAssetPath(trail.sharedMaterial)),
|
|
806
|
+
MinVertexDistance = trail.minVertexDistance,
|
|
807
|
+
Emitting = trail.emitting,
|
|
808
|
+
Autodestruct = trail.autodestruct,
|
|
809
|
+
Alignment = trail.alignment.ToString(),
|
|
810
|
+
TextureMode = trail.textureMode.ToString(),
|
|
811
|
+
NumCornerVertices = trail.numCornerVertices,
|
|
812
|
+
NumCapVertices = trail.numCapVertices
|
|
813
|
+
};
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
public static AnimationCurve BuildCurve(List<VfxCurveKeyInput> keys)
|
|
817
|
+
{
|
|
818
|
+
var items = new List<Keyframe>();
|
|
819
|
+
double? previousTime = null;
|
|
820
|
+
foreach (var key in keys)
|
|
821
|
+
{
|
|
822
|
+
if (key == null) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "widthCurve cannot contain null keys.", "Pass finite time/value curve keys.");
|
|
823
|
+
RequireFinite(key.Time, "widthCurve.time"); RequireFinite(key.Value, "widthCurve.value");
|
|
824
|
+
if (previousTime.HasValue && key.Time <= previousTime.Value) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "widthCurve key times must be strictly increasing.", "Sort keys by time and do not repeat a time value.");
|
|
825
|
+
items.Add(new Keyframe((float)key.Time, (float)key.Value));
|
|
826
|
+
previousTime = key.Time;
|
|
827
|
+
}
|
|
828
|
+
return new AnimationCurve(items.ToArray());
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
public static Gradient BuildGradient(List<VfxGradientStopInput> stops)
|
|
832
|
+
{
|
|
833
|
+
var colorKeys = new List<GradientColorKey>();
|
|
834
|
+
var alphaKeys = new List<GradientAlphaKey>();
|
|
835
|
+
double? previousTime = null;
|
|
836
|
+
foreach (var stop in stops)
|
|
837
|
+
{
|
|
838
|
+
if (stop == null) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "colorGradient cannot contain null stops.", "Pass color stops with times from zero through one.");
|
|
839
|
+
RequireFinite(stop.Time, "colorGradient.time", 0, 1);
|
|
840
|
+
if (previousTime.HasValue && stop.Time <= previousTime.Value) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "colorGradient stop times must be strictly increasing.", "Sort stops by time and do not repeat a time value.");
|
|
841
|
+
var color = GraphicsToolSupport.ParseColor(stop.Color);
|
|
842
|
+
var time = (float)stop.Time;
|
|
843
|
+
colorKeys.Add(new GradientColorKey(color, time));
|
|
844
|
+
alphaKeys.Add(new GradientAlphaKey(color.a, time));
|
|
845
|
+
previousTime = stop.Time;
|
|
846
|
+
}
|
|
847
|
+
if (colorKeys.Count < 2) throw new UnityCliBridge.BridgeCommandException("E_VFX_INPUT_RANGE_INVALID", "colorGradient requires at least two stops.", "Provide at least two strictly time-ordered color stops.");
|
|
848
|
+
var gradient = new Gradient();
|
|
849
|
+
gradient.SetKeys(colorKeys.ToArray(), alphaKeys.ToArray());
|
|
850
|
+
return gradient;
|
|
851
|
+
}
|
|
852
|
+
|
|
853
|
+
public static Vector3 ToUnityVector3(Vector3Input value)
|
|
854
|
+
{
|
|
855
|
+
if (value == null)
|
|
856
|
+
{
|
|
857
|
+
return Vector3.zero;
|
|
858
|
+
}
|
|
859
|
+
return new Vector3((float)value.X, (float)value.Y, (float)value.Z);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
public static Vector3[] ToUnityVector3Array(List<Vector3Input> values)
|
|
863
|
+
{
|
|
864
|
+
var results = new List<Vector3>();
|
|
865
|
+
if (values != null)
|
|
866
|
+
{
|
|
867
|
+
foreach (var value in values)
|
|
868
|
+
{
|
|
869
|
+
results.Add(ToUnityVector3(value));
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
return results.ToArray();
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
public static Vector4 ToUnityVector4(Vector4Input value)
|
|
876
|
+
{
|
|
877
|
+
if (value == null)
|
|
878
|
+
{
|
|
879
|
+
return Vector4.zero;
|
|
880
|
+
}
|
|
881
|
+
return new Vector4((float)value.X, (float)value.Y, (float)value.Z, (float)value.W);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
public static Color ToUnityColor(ColorInput value)
|
|
885
|
+
{
|
|
886
|
+
if (value == null)
|
|
887
|
+
{
|
|
888
|
+
return Color.white;
|
|
889
|
+
}
|
|
890
|
+
return new Color((float)value.R, (float)value.G, (float)value.B, (float)(value.A ?? 1d));
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
public static T ParseEnum<T>(string value, string code, string nextAction) where T : struct
|
|
894
|
+
{
|
|
895
|
+
T parsed;
|
|
896
|
+
if (Enum.TryParse<T>(value, true, out parsed) && Enum.IsDefined(typeof(T), parsed))
|
|
897
|
+
{
|
|
898
|
+
return parsed;
|
|
899
|
+
}
|
|
900
|
+
throw new UnityCliBridge.BridgeCommandException(code, "Invalid " + typeof(T).Name + " value: " + value, nextAction);
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
public static VfxPlannedEffect Effect(string type, string property, string value)
|
|
904
|
+
{
|
|
905
|
+
return new VfxPlannedEffect
|
|
906
|
+
{
|
|
907
|
+
Type = type,
|
|
908
|
+
Property = property,
|
|
909
|
+
Value = value
|
|
910
|
+
};
|
|
911
|
+
}
|
|
912
|
+
|
|
913
|
+
public static string Bool(bool value)
|
|
914
|
+
{
|
|
915
|
+
return value ? "true" : "false";
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
public static string Number(double value)
|
|
919
|
+
{
|
|
920
|
+
return value.ToString("0.###", CultureInfo.InvariantCulture);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
private static UnityEngine.Object CreateVfxGraphAssetWithUnityUtility(string path, Type assetType)
|
|
924
|
+
{
|
|
925
|
+
var created = RequireVfxGraphFactory().Invoke(null, new object[] { path }) as UnityEngine.Object;
|
|
926
|
+
AssetDatabase.ImportAsset(path, ImportAssetOptions.ForceUpdate);
|
|
927
|
+
return created == null || !assetType.IsInstanceOfType(created)
|
|
928
|
+
? AssetDatabase.LoadAssetAtPath(path, assetType)
|
|
929
|
+
: created;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
public static void PrepareVfxGraphFactory()
|
|
933
|
+
{
|
|
934
|
+
RequireVfxGraphFactory();
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
private static MethodInfo RequireVfxGraphFactory()
|
|
938
|
+
{
|
|
939
|
+
var utilityType = GameObjectToolSupport.FindType("UnityEditor.VisualEffectAssetEditorUtility");
|
|
940
|
+
var createMethod = utilityType == null ? null : utilityType.GetMethod("CreateNewAsset", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null, new[] { typeof(string) }, null);
|
|
941
|
+
if (createMethod == null)
|
|
942
|
+
throw new UnityCliBridge.BridgeCommandException("E_VFX_GRAPH_FACTORY_UNAVAILABLE", "VisualEffectAssetEditorUtility.CreateNewAsset(string) is unavailable.", "Use a Visual Effect Graph package exposing UnityEditor.VisualEffectAssetEditorUtility.CreateNewAsset(string).");
|
|
943
|
+
return createMethod;
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
private static string[] GetTemplateSearchPaths(string resolvedPath)
|
|
947
|
+
{
|
|
948
|
+
return new[]
|
|
949
|
+
{
|
|
950
|
+
Path.Combine(resolvedPath, "Editor", "Templates"),
|
|
951
|
+
Path.Combine(resolvedPath, "Samples"),
|
|
952
|
+
Path.Combine(resolvedPath, "Samples~")
|
|
953
|
+
};
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
/// <summary>把 PackageCache/embedded package 的物理路径转换为 AssetDatabase 可识别的 Packages 路径。</summary>
|
|
957
|
+
private static string ToPackageAssetPath(string fullPath, string resolvedPath, string packageName)
|
|
958
|
+
{
|
|
959
|
+
if (string.IsNullOrEmpty(fullPath) || string.IsNullOrEmpty(resolvedPath) || string.IsNullOrEmpty(packageName)) return null;
|
|
960
|
+
var normalizedRoot = resolvedPath.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
|
|
961
|
+
if (!fullPath.StartsWith(normalizedRoot + Path.DirectorySeparatorChar, StringComparison.OrdinalIgnoreCase)
|
|
962
|
+
&& !fullPath.StartsWith(normalizedRoot + Path.AltDirectorySeparatorChar, StringComparison.OrdinalIgnoreCase)) return null;
|
|
963
|
+
var relative = fullPath.Substring(normalizedRoot.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Replace('\\', '/');
|
|
964
|
+
return "Packages/" + packageName + "/" + relative;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// 创建类工具返回工件内容哈希,调用方可证明路径上的资产确实是本次可读取结果。
|
|
968
|
+
private static string HashAsset(string path)
|
|
969
|
+
{
|
|
970
|
+
try
|
|
971
|
+
{
|
|
972
|
+
var fullPath = Path.Combine(AssetToolSupport.ProjectRoot(), path.Replace('/', Path.DirectorySeparatorChar));
|
|
973
|
+
if (!File.Exists(fullPath)) return null;
|
|
974
|
+
using (var stream = File.OpenRead(fullPath))
|
|
975
|
+
using (var hash = SHA256.Create()) return BitConverter.ToString(hash.ComputeHash(stream)).Replace("-", string.Empty).ToLowerInvariant();
|
|
976
|
+
}
|
|
977
|
+
catch { return null; }
|
|
978
|
+
}
|
|
979
|
+
|
|
980
|
+
private static bool PackageManifestContains(string packageName)
|
|
981
|
+
{
|
|
982
|
+
return FileContains(Path.Combine(AssetToolSupport.ProjectRoot(), "Packages", "manifest.json"), "\"" + packageName + "\"");
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
private static bool PackageLockContains(string packageName)
|
|
986
|
+
{
|
|
987
|
+
return FileContains(Path.Combine(AssetToolSupport.ProjectRoot(), "Packages", "packages-lock.json"), "\"" + packageName + "\"");
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
private static bool FileContains(string path, string value)
|
|
991
|
+
{
|
|
992
|
+
try
|
|
993
|
+
{
|
|
994
|
+
return File.Exists(path) && File.ReadAllText(path).IndexOf(value, StringComparison.OrdinalIgnoreCase) >= 0;
|
|
995
|
+
}
|
|
996
|
+
catch
|
|
997
|
+
{
|
|
998
|
+
return false;
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
private static Material ResolveOptionalMaterial(string rawPath)
|
|
1003
|
+
{
|
|
1004
|
+
if (string.IsNullOrWhiteSpace(rawPath)
|
|
1005
|
+
|| string.Equals(rawPath, "null", StringComparison.OrdinalIgnoreCase)
|
|
1006
|
+
|| string.Equals(rawPath, "none", StringComparison.OrdinalIgnoreCase))
|
|
1007
|
+
{
|
|
1008
|
+
return null;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
var path = AssetToolSupport.NormalizeAssetPath(rawPath);
|
|
1012
|
+
var material = AssetDatabase.LoadAssetAtPath<Material>(path);
|
|
1013
|
+
if (material == null)
|
|
1014
|
+
{
|
|
1015
|
+
throw new UnityCliBridge.BridgeCommandException(
|
|
1016
|
+
"E_VFX_MATERIAL_NOT_FOUND",
|
|
1017
|
+
"Material not found: " + rawPath,
|
|
1018
|
+
"Pass an existing Assets/*.mat path or omit material.");
|
|
1019
|
+
}
|
|
1020
|
+
return material;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
private static AssetRef BuildAssetRef(UnityEngine.Object asset)
|
|
1024
|
+
{
|
|
1025
|
+
if (asset == null)
|
|
1026
|
+
{
|
|
1027
|
+
return null;
|
|
1028
|
+
}
|
|
1029
|
+
var path = AssetToolSupport.NormalizeAssetPath(AssetDatabase.GetAssetPath(asset));
|
|
1030
|
+
return new AssetRef
|
|
1031
|
+
{
|
|
1032
|
+
Name = asset.name,
|
|
1033
|
+
Path = path,
|
|
1034
|
+
Guid = string.IsNullOrEmpty(path) ? null : AssetDatabase.AssetPathToGUID(path)
|
|
1035
|
+
};
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
private static VfxCurveData BuildCurveData(AnimationCurve curve)
|
|
1040
|
+
{
|
|
1041
|
+
var keys = new List<VfxCurveKeyData>();
|
|
1042
|
+
foreach (var key in curve == null ? new Keyframe[0] : curve.keys)
|
|
1043
|
+
{
|
|
1044
|
+
keys.Add(new VfxCurveKeyData { Time = key.time, Value = key.value });
|
|
1045
|
+
}
|
|
1046
|
+
return new VfxCurveData { Keys = keys };
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
private static VfxGradientData BuildGradientData(Gradient gradient)
|
|
1050
|
+
{
|
|
1051
|
+
var colors = new List<VfxGradientColorStopData>();
|
|
1052
|
+
var alphas = new List<VfxGradientAlphaStopData>();
|
|
1053
|
+
foreach (var key in gradient == null ? new GradientColorKey[0] : gradient.colorKeys)
|
|
1054
|
+
{
|
|
1055
|
+
colors.Add(new VfxGradientColorStopData { Time = key.time, Color = GraphicsToolSupport.ColorHtml(key.color) });
|
|
1056
|
+
}
|
|
1057
|
+
foreach (var key in gradient == null ? new GradientAlphaKey[0] : gradient.alphaKeys)
|
|
1058
|
+
{
|
|
1059
|
+
alphas.Add(new VfxGradientAlphaStopData { Time = key.time, Alpha = key.alpha });
|
|
1060
|
+
}
|
|
1061
|
+
return new VfxGradientData { Colors = colors, Alphas = alphas };
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1065
|
+
/// <summary>粒子系统主模块通用输入字段。</summary>
|
|
1066
|
+
public class ParticleMainFields
|
|
1067
|
+
{
|
|
1068
|
+
public double? Duration { get; set; }
|
|
1069
|
+
public double? StartLifetime { get; set; }
|
|
1070
|
+
public double? StartSpeed { get; set; }
|
|
1071
|
+
public double? StartSize { get; set; }
|
|
1072
|
+
public string StartColor { get; set; }
|
|
1073
|
+
public double? StartRotation { get; set; }
|
|
1074
|
+
public double? GravityModifier { get; set; }
|
|
1075
|
+
public int? MaxParticles { get; set; }
|
|
1076
|
+
public bool? Loop { get; set; }
|
|
1077
|
+
public bool? PlayOnAwake { get; set; }
|
|
1078
|
+
public string SimulationSpace { get; set; }
|
|
1079
|
+
public string ScalingMode { get; set; }
|
|
1080
|
+
}
|
|
1081
|
+
|
|
1082
|
+
/// <summary>LineRenderer 通用输入字段。</summary>
|
|
1083
|
+
public class LineRendererFields
|
|
1084
|
+
{
|
|
1085
|
+
public double? StartWidth { get; set; }
|
|
1086
|
+
public double? EndWidth { get; set; }
|
|
1087
|
+
public double? WidthMultiplier { get; set; }
|
|
1088
|
+
public List<VfxCurveKeyInput> WidthCurve { get; set; }
|
|
1089
|
+
public string StartColor { get; set; }
|
|
1090
|
+
public string EndColor { get; set; }
|
|
1091
|
+
public List<VfxGradientStopInput> ColorGradient { get; set; }
|
|
1092
|
+
public string Material { get; set; }
|
|
1093
|
+
public int? PositionCount { get; set; }
|
|
1094
|
+
public List<Vector3Input> Positions { get; set; }
|
|
1095
|
+
public bool? Loop { get; set; }
|
|
1096
|
+
public bool? UseWorldSpace { get; set; }
|
|
1097
|
+
public string Alignment { get; set; }
|
|
1098
|
+
public string TextureMode { get; set; }
|
|
1099
|
+
public int? NumCornerVertices { get; set; }
|
|
1100
|
+
public int? NumCapVertices { get; set; }
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
/// <summary>TrailRenderer 通用输入字段。</summary>
|
|
1104
|
+
public class TrailRendererFields
|
|
1105
|
+
{
|
|
1106
|
+
public double? Time { get; set; }
|
|
1107
|
+
public double? StartWidth { get; set; }
|
|
1108
|
+
public double? EndWidth { get; set; }
|
|
1109
|
+
public double? WidthMultiplier { get; set; }
|
|
1110
|
+
public List<VfxCurveKeyInput> WidthCurve { get; set; }
|
|
1111
|
+
public string StartColor { get; set; }
|
|
1112
|
+
public string EndColor { get; set; }
|
|
1113
|
+
public List<VfxGradientStopInput> ColorGradient { get; set; }
|
|
1114
|
+
public string Material { get; set; }
|
|
1115
|
+
public double? MinVertexDistance { get; set; }
|
|
1116
|
+
public bool? Autodestruct { get; set; }
|
|
1117
|
+
public bool? Emitting { get; set; }
|
|
1118
|
+
public string Alignment { get; set; }
|
|
1119
|
+
public string TextureMode { get; set; }
|
|
1120
|
+
public int? NumCornerVertices { get; set; }
|
|
1121
|
+
public int? NumCapVertices { get; set; }
|
|
1122
|
+
}
|
|
1123
|
+
|
|
1124
|
+
public sealed class VfxCurveKeyInput
|
|
1125
|
+
{
|
|
1126
|
+
public double Time { get; set; }
|
|
1127
|
+
public double Value { get; set; }
|
|
1128
|
+
}
|
|
1129
|
+
|
|
1130
|
+
public sealed class VfxGradientStopInput
|
|
1131
|
+
{
|
|
1132
|
+
public double Time { get; set; }
|
|
1133
|
+
public string Color { get; set; }
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
public sealed class Vector3Input
|
|
1137
|
+
{
|
|
1138
|
+
public double X { get; set; }
|
|
1139
|
+
public double Y { get; set; }
|
|
1140
|
+
public double Z { get; set; }
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
public sealed class Vector4Input
|
|
1144
|
+
{
|
|
1145
|
+
public double X { get; set; }
|
|
1146
|
+
public double Y { get; set; }
|
|
1147
|
+
public double Z { get; set; }
|
|
1148
|
+
public double W { get; set; }
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
public sealed class ColorInput
|
|
1152
|
+
{
|
|
1153
|
+
public double R { get; set; }
|
|
1154
|
+
public double G { get; set; }
|
|
1155
|
+
public double B { get; set; }
|
|
1156
|
+
public double? A { get; set; }
|
|
1157
|
+
}
|
|
1158
|
+
|
|
1159
|
+
public sealed class ParticleBurstInput
|
|
1160
|
+
{
|
|
1161
|
+
public double? Time { get; set; }
|
|
1162
|
+
public int? Count { get; set; }
|
|
1163
|
+
public int? Cycles { get; set; }
|
|
1164
|
+
public double? RepeatInterval { get; set; }
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
public sealed class VfxPlannedEffect
|
|
1168
|
+
{
|
|
1169
|
+
public string Type { get; set; }
|
|
1170
|
+
public string Target { get; set; }
|
|
1171
|
+
public string Path { get; set; }
|
|
1172
|
+
public string Property { get; set; }
|
|
1173
|
+
public string Value { get; set; }
|
|
1174
|
+
public string Module { get; set; }
|
|
1175
|
+
public string EventName { get; set; }
|
|
1176
|
+
public string Template { get; set; }
|
|
1177
|
+
public string Graph { get; set; }
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
public sealed class VfxGraphInfo
|
|
1181
|
+
{
|
|
1182
|
+
public string Path { get; set; }
|
|
1183
|
+
public string Guid { get; set; }
|
|
1184
|
+
public string Name { get; set; }
|
|
1185
|
+
public string Type { get; set; }
|
|
1186
|
+
public string Hash { get; set; }
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
public sealed class VfxEffectInfo
|
|
1190
|
+
{
|
|
1191
|
+
public string ComponentType { get; set; }
|
|
1192
|
+
public bool Enabled { get; set; }
|
|
1193
|
+
public AssetRef Graph { get; set; }
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
public sealed class VfxParticleSystemInfo
|
|
1197
|
+
{
|
|
1198
|
+
public bool IsPlaying { get; set; }
|
|
1199
|
+
public bool IsPaused { get; set; }
|
|
1200
|
+
public bool IsEmitting { get; set; }
|
|
1201
|
+
public long ParticleCount { get; set; }
|
|
1202
|
+
public VfxParticleMainInfo Main { get; set; }
|
|
1203
|
+
public VfxParticleEmissionInfo Emission { get; set; }
|
|
1204
|
+
public VfxParticleShapeInfo Shape { get; set; }
|
|
1205
|
+
public VfxParticleModulesInfo Modules { get; set; }
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
public sealed class VfxParticleMainInfo
|
|
1209
|
+
{
|
|
1210
|
+
public double Duration { get; set; }
|
|
1211
|
+
public double StartLifetime { get; set; }
|
|
1212
|
+
public double StartSpeed { get; set; }
|
|
1213
|
+
public double StartSize { get; set; }
|
|
1214
|
+
public double StartRotationDegrees { get; set; }
|
|
1215
|
+
public long MaxParticles { get; set; }
|
|
1216
|
+
public bool Loop { get; set; }
|
|
1217
|
+
public bool PlayOnAwake { get; set; }
|
|
1218
|
+
public string SimulationSpace { get; set; }
|
|
1219
|
+
public string ScalingMode { get; set; }
|
|
1220
|
+
public double GravityModifier { get; set; }
|
|
1221
|
+
}
|
|
1222
|
+
|
|
1223
|
+
public sealed class VfxParticleEmissionInfo
|
|
1224
|
+
{
|
|
1225
|
+
public bool Enabled { get; set; }
|
|
1226
|
+
public double RateOverTime { get; set; }
|
|
1227
|
+
public double RateOverDistance { get; set; }
|
|
1228
|
+
public long BurstCount { get; set; }
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
public sealed class VfxParticleShapeInfo
|
|
1232
|
+
{
|
|
1233
|
+
public bool Enabled { get; set; }
|
|
1234
|
+
public string ShapeType { get; set; }
|
|
1235
|
+
public double Radius { get; set; }
|
|
1236
|
+
public double Angle { get; set; }
|
|
1237
|
+
public double Arc { get; set; }
|
|
1238
|
+
public double Length { get; set; }
|
|
1239
|
+
public Vector3Data Box { get; set; }
|
|
1240
|
+
public bool RandomDirection { get; set; }
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
public sealed class VfxParticleModulesInfo
|
|
1244
|
+
{
|
|
1245
|
+
public bool ColorOverLifetime { get; set; }
|
|
1246
|
+
public bool SizeOverLifetime { get; set; }
|
|
1247
|
+
public bool RotationOverLifetime { get; set; }
|
|
1248
|
+
public bool VelocityOverLifetime { get; set; }
|
|
1249
|
+
public bool Noise { get; set; }
|
|
1250
|
+
public bool Collision { get; set; }
|
|
1251
|
+
public bool SubEmitters { get; set; }
|
|
1252
|
+
public long SubEmittersCount { get; set; }
|
|
1253
|
+
public bool Trails { get; set; }
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
public sealed class VfxLineRendererInfo
|
|
1257
|
+
{
|
|
1258
|
+
public double StartWidth { get; set; }
|
|
1259
|
+
public double EndWidth { get; set; }
|
|
1260
|
+
public double WidthMultiplier { get; set; }
|
|
1261
|
+
public VfxCurveData WidthCurve { get; set; }
|
|
1262
|
+
public string StartColor { get; set; }
|
|
1263
|
+
public string EndColor { get; set; }
|
|
1264
|
+
public VfxGradientData ColorGradient { get; set; }
|
|
1265
|
+
public string Material { get; set; }
|
|
1266
|
+
public long PositionCount { get; set; }
|
|
1267
|
+
public List<Vector3Data> Positions { get; set; }
|
|
1268
|
+
public bool Loop { get; set; }
|
|
1269
|
+
public bool UseWorldSpace { get; set; }
|
|
1270
|
+
public string Alignment { get; set; }
|
|
1271
|
+
public string TextureMode { get; set; }
|
|
1272
|
+
public long NumCornerVertices { get; set; }
|
|
1273
|
+
public long NumCapVertices { get; set; }
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
public sealed class VfxTrailRendererInfo
|
|
1277
|
+
{
|
|
1278
|
+
public double Time { get; set; }
|
|
1279
|
+
public double StartWidth { get; set; }
|
|
1280
|
+
public double EndWidth { get; set; }
|
|
1281
|
+
public double WidthMultiplier { get; set; }
|
|
1282
|
+
public VfxCurveData WidthCurve { get; set; }
|
|
1283
|
+
public string StartColor { get; set; }
|
|
1284
|
+
public string EndColor { get; set; }
|
|
1285
|
+
public VfxGradientData ColorGradient { get; set; }
|
|
1286
|
+
public string Material { get; set; }
|
|
1287
|
+
public double MinVertexDistance { get; set; }
|
|
1288
|
+
public bool Emitting { get; set; }
|
|
1289
|
+
public bool Autodestruct { get; set; }
|
|
1290
|
+
public string Alignment { get; set; }
|
|
1291
|
+
public string TextureMode { get; set; }
|
|
1292
|
+
public long NumCornerVertices { get; set; }
|
|
1293
|
+
public long NumCapVertices { get; set; }
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
public sealed class VfxCurveData
|
|
1297
|
+
{
|
|
1298
|
+
public List<VfxCurveKeyData> Keys { get; set; }
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
public sealed class VfxCurveKeyData
|
|
1302
|
+
{
|
|
1303
|
+
public double Time { get; set; }
|
|
1304
|
+
public double Value { get; set; }
|
|
1305
|
+
}
|
|
1306
|
+
|
|
1307
|
+
public sealed class VfxGradientData
|
|
1308
|
+
{
|
|
1309
|
+
public List<VfxGradientColorStopData> Colors { get; set; }
|
|
1310
|
+
public List<VfxGradientAlphaStopData> Alphas { get; set; }
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
public sealed class VfxGradientColorStopData
|
|
1314
|
+
{
|
|
1315
|
+
public double Time { get; set; }
|
|
1316
|
+
public string Color { get; set; }
|
|
1317
|
+
}
|
|
1318
|
+
|
|
1319
|
+
public sealed class VfxGradientAlphaStopData
|
|
1320
|
+
{
|
|
1321
|
+
public double Time { get; set; }
|
|
1322
|
+
public double Alpha { get; set; }
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
#endif
|