@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,696 @@
|
|
|
1
|
+
#if UNITY_EDITOR
|
|
2
|
+
using System;
|
|
3
|
+
using System.Collections;
|
|
4
|
+
using System.Collections.Generic;
|
|
5
|
+
using System.Globalization;
|
|
6
|
+
using System.IO;
|
|
7
|
+
using System.Reflection;
|
|
8
|
+
using System.Security.Cryptography;
|
|
9
|
+
using UnityEditor;
|
|
10
|
+
using UnityEngine;
|
|
11
|
+
|
|
12
|
+
namespace UnityCli
|
|
13
|
+
{
|
|
14
|
+
/// <summary>Timeline track/clip mutation 的 preflight、唯一 effect 调用与 fresh structure proof owner。</summary>
|
|
15
|
+
internal static class TimelineMutationToolSupport
|
|
16
|
+
{
|
|
17
|
+
private const int MaxScannedTracks = 10000;
|
|
18
|
+
private const int MaxScannedClips = 10000;
|
|
19
|
+
private const string TrackAssetTypeName = "UnityEngine.Timeline.TrackAsset, Unity.Timeline";
|
|
20
|
+
private const string TimelineClipTypeName = "UnityEngine.Timeline.TimelineClip, Unity.Timeline";
|
|
21
|
+
private const string TimelineCreateUtilitiesTypeName = "UnityEngine.Timeline.TimelineCreateUtilities, Unity.Timeline";
|
|
22
|
+
|
|
23
|
+
private static readonly Dictionary<string, string> TrackTypes = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
|
|
24
|
+
{
|
|
25
|
+
{ "Animation", "UnityEngine.Timeline.AnimationTrack, Unity.Timeline" },
|
|
26
|
+
{ "Audio", "UnityEngine.Timeline.AudioTrack, Unity.Timeline" },
|
|
27
|
+
{ "Activation", "UnityEngine.Timeline.ActivationTrack, Unity.Timeline" },
|
|
28
|
+
{ "Control", "UnityEngine.Timeline.ControlTrack, Unity.Timeline" },
|
|
29
|
+
{ "Playable", "UnityEngine.Timeline.PlayableTrack, Unity.Timeline" },
|
|
30
|
+
{ "Signal", "UnityEngine.Timeline.SignalTrack, Unity.Timeline" },
|
|
31
|
+
{ "Marker", "UnityEngine.Timeline.MarkerTrack, Unity.Timeline" }
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
internal sealed class AssetPlan
|
|
35
|
+
{
|
|
36
|
+
internal UnityEngine.Object Asset;
|
|
37
|
+
internal Type TimelineType;
|
|
38
|
+
internal string Path;
|
|
39
|
+
internal string Guid;
|
|
40
|
+
internal string HashBefore;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
internal sealed class TrackRecord
|
|
44
|
+
{
|
|
45
|
+
internal UnityEngine.Object Track;
|
|
46
|
+
internal UnityEngine.Object Parent;
|
|
47
|
+
internal TimelineObjectIdentity Identity;
|
|
48
|
+
internal TimelineObjectIdentity ParentIdentity;
|
|
49
|
+
internal int Index;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
internal sealed class TrackAddPlan
|
|
53
|
+
{
|
|
54
|
+
internal AssetPlan Timeline;
|
|
55
|
+
internal Type TrackAssetType;
|
|
56
|
+
internal Type ConcreteTrackType;
|
|
57
|
+
internal string TrackType;
|
|
58
|
+
internal string Name;
|
|
59
|
+
internal TrackRecord Parent;
|
|
60
|
+
internal MethodInfo CreateTrack;
|
|
61
|
+
internal int TrackCountBefore;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
internal sealed class ClipAddPlan
|
|
65
|
+
{
|
|
66
|
+
internal AssetPlan Timeline;
|
|
67
|
+
internal TrackRecord Track;
|
|
68
|
+
internal UnityEngine.Object SourceAsset;
|
|
69
|
+
internal TimelineObjectIdentity SourceIdentity;
|
|
70
|
+
internal MethodInfo CreateClip;
|
|
71
|
+
internal PropertyInfo StartProperty;
|
|
72
|
+
internal PropertyInfo DurationProperty;
|
|
73
|
+
internal double Start;
|
|
74
|
+
internal double Duration;
|
|
75
|
+
internal int ClipCountBefore;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// <summary>effect 前冻结 Timeline、built-in track type、parent identity、name uniqueness 与 CreateTrack contract。</summary>
|
|
79
|
+
internal static TrackAddPlan PrepareTrackAdd(string timelineReference, string trackType, string name,
|
|
80
|
+
string parentTrack, string parentLocalId)
|
|
81
|
+
{
|
|
82
|
+
var timeline = ResolveTimeline(timelineReference);
|
|
83
|
+
string fullName;
|
|
84
|
+
if (string.IsNullOrWhiteSpace(trackType) || !TrackTypes.TryGetValue(trackType.Trim(), out fullName))
|
|
85
|
+
throw Error("E_TIMELINE_TRACK_TYPE_INVALID", "trackType must be Animation, Audio, Activation, Control, Playable, Signal, or Marker.", timeline.Path, timeline.Guid);
|
|
86
|
+
var concreteType = Type.GetType(fullName, false);
|
|
87
|
+
var trackAssetType = Type.GetType(TrackAssetTypeName, false);
|
|
88
|
+
if (concreteType == null || trackAssetType == null || !trackAssetType.IsAssignableFrom(concreteType))
|
|
89
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "The requested built-in Timeline track type is unavailable.", timeline.Path, timeline.Guid);
|
|
90
|
+
|
|
91
|
+
var records = CollectTracks(timeline.Asset, timeline.TimelineType);
|
|
92
|
+
var parent = ResolveTrack(records, parentTrack, parentLocalId, false, timeline);
|
|
93
|
+
if (parent != null && !IsApprovedParentType(parent.Track.GetType()))
|
|
94
|
+
throw Error("E_TIMELINE_PARENT_TYPE_INVALID", "Parent track must be a built-in GroupTrack or supported built-in track.", timeline.Path, timeline.Guid);
|
|
95
|
+
ValidateParentTrack(parent == null ? null : parent.Track, concreteType, timeline);
|
|
96
|
+
|
|
97
|
+
var trackName = RequireName(string.IsNullOrWhiteSpace(name) ? CanonicalTrackType(concreteType) : name, "track name", timeline);
|
|
98
|
+
foreach (var record in records)
|
|
99
|
+
{
|
|
100
|
+
if (!SameParent(record, parent)) continue;
|
|
101
|
+
if (string.Equals(record.Track.name, trackName, StringComparison.Ordinal))
|
|
102
|
+
throw Error("E_TIMELINE_TRACK_EXISTS", "A sibling track already uses the requested name.", timeline.Path, timeline.Guid);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
var createTrack = timeline.TimelineType.GetMethod("CreateTrack", BindingFlags.Public | BindingFlags.Instance,
|
|
106
|
+
null, new[] { typeof(Type), trackAssetType, typeof(string) }, null);
|
|
107
|
+
if (createTrack == null)
|
|
108
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "TimelineAsset.CreateTrack(Type, TrackAsset, string) is unavailable.", timeline.Path, timeline.Guid);
|
|
109
|
+
return new TrackAddPlan
|
|
110
|
+
{
|
|
111
|
+
Timeline = timeline,
|
|
112
|
+
TrackAssetType = trackAssetType,
|
|
113
|
+
ConcreteTrackType = concreteType,
|
|
114
|
+
TrackType = CanonicalTrackType(concreteType),
|
|
115
|
+
Name = trackName,
|
|
116
|
+
Parent = parent,
|
|
117
|
+
CreateTrack = createTrack,
|
|
118
|
+
TrackCountBefore = records.Count
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// <summary>唯一 effect boundary 后创建 track,保存并 fresh 证明 GUID/hash/count/type/name/parent/localId。</summary>
|
|
123
|
+
internal static TimelineTrackMutationInfo AddTrack(TrackAddPlan plan)
|
|
124
|
+
{
|
|
125
|
+
var created = plan.CreateTrack.Invoke(plan.Timeline.Asset,
|
|
126
|
+
new object[] { plan.ConcreteTrackType, plan.Parent == null ? null : plan.Parent.Track, plan.Name }) as UnityEngine.Object;
|
|
127
|
+
if (created == null)
|
|
128
|
+
throw Error("E_TIMELINE_TRACK_ADD_PROOF_FAILED", "Timeline did not return the created track.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
129
|
+
EditorUtility.SetDirty(plan.Timeline.Asset);
|
|
130
|
+
AssetDatabase.SaveAssets();
|
|
131
|
+
var createdIdentity = RequireIdentity(created, "created Timeline track", plan.Timeline);
|
|
132
|
+
AssetDatabase.ImportAsset(plan.Timeline.Path, ImportAssetOptions.ForceSynchronousImport);
|
|
133
|
+
|
|
134
|
+
var fresh = RequireFreshTimeline(plan.Timeline);
|
|
135
|
+
var records = CollectTracks(fresh, plan.Timeline.TimelineType);
|
|
136
|
+
if (records.Count != plan.TrackCountBefore + 1)
|
|
137
|
+
throw Error("E_TIMELINE_TRACK_ADD_PROOF_FAILED", "Fresh Timeline track count did not increase by one.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
138
|
+
var observed = FindByLocalId(records, createdIdentity.LocalId);
|
|
139
|
+
if (observed == null
|
|
140
|
+
|| observed.Track.GetType() != plan.ConcreteTrackType
|
|
141
|
+
|| !string.Equals(observed.Track.name, plan.Name, StringComparison.Ordinal)
|
|
142
|
+
|| !SameIdentity(observed.ParentIdentity, plan.Parent == null ? null : plan.Parent.Identity)
|
|
143
|
+
|| !HashChanged(plan.Timeline))
|
|
144
|
+
throw Error("E_TIMELINE_TRACK_ADD_PROOF_FAILED", "Fresh Timeline track identity, type, name, parent, or serialized artifact did not match the frozen plan.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
145
|
+
return BuildTrackMutationInfo(observed);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/// <summary>effect 前冻结 target track、source asset、clip overload、timing range 与 serialized baseline。</summary>
|
|
149
|
+
internal static ClipAddPlan PrepareClipAdd(string timelineReference, string track, string trackLocalId,
|
|
150
|
+
double start, double duration, string assetReference)
|
|
151
|
+
{
|
|
152
|
+
var timeline = ResolveTimeline(timelineReference);
|
|
153
|
+
if (double.IsNaN(start) || double.IsInfinity(start) || start < 0d
|
|
154
|
+
|| double.IsNaN(duration) || double.IsInfinity(duration) || duration <= 0d)
|
|
155
|
+
throw Error("E_TIMELINE_CLIP_TIMING_INVALID", "start must be finite and >= 0; duration must be finite and > 0.", timeline.Path, timeline.Guid);
|
|
156
|
+
var clipType = Type.GetType(TimelineClipTypeName, false);
|
|
157
|
+
if (clipType == null)
|
|
158
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "TimelineClip type is unavailable.", timeline.Path, timeline.Guid);
|
|
159
|
+
var maxTime = ReadMaxClipTime(clipType, timeline);
|
|
160
|
+
if (start > maxTime || duration > maxTime || start + duration > maxTime * 2d)
|
|
161
|
+
throw Error("E_TIMELINE_CLIP_TIMING_INVALID", "start or duration exceeds the installed Timeline clip time range.", timeline.Path, timeline.Guid);
|
|
162
|
+
var startProperty = RequireWritableDoubleProperty(clipType, "start", timeline);
|
|
163
|
+
var durationProperty = RequireWritableDoubleProperty(clipType, "duration", timeline);
|
|
164
|
+
|
|
165
|
+
var records = CollectTracks(timeline.Asset, timeline.TimelineType);
|
|
166
|
+
var target = ResolveTrack(records, track, trackLocalId, true, timeline);
|
|
167
|
+
if (!IsApprovedTrackType(target.Track.GetType()))
|
|
168
|
+
throw Error("E_TIMELINE_TRACK_TYPE_INVALID", "Clip target must be one of the approved built-in Timeline track types.", timeline.Path, timeline.Guid);
|
|
169
|
+
|
|
170
|
+
UnityEngine.Object source = null;
|
|
171
|
+
TimelineObjectIdentity sourceIdentity = null;
|
|
172
|
+
if (!string.IsNullOrWhiteSpace(assetReference))
|
|
173
|
+
{
|
|
174
|
+
source = ResolveAssetReference(assetReference, timeline);
|
|
175
|
+
sourceIdentity = RequireIdentity(source, "Timeline clip source asset", timeline);
|
|
176
|
+
}
|
|
177
|
+
var createClip = ResolveCreateClip(target.Track, source, timeline);
|
|
178
|
+
return new ClipAddPlan
|
|
179
|
+
{
|
|
180
|
+
Timeline = timeline,
|
|
181
|
+
Track = target,
|
|
182
|
+
SourceAsset = source,
|
|
183
|
+
SourceIdentity = sourceIdentity,
|
|
184
|
+
CreateClip = createClip,
|
|
185
|
+
StartProperty = startProperty,
|
|
186
|
+
DurationProperty = durationProperty,
|
|
187
|
+
Start = start,
|
|
188
|
+
Duration = duration,
|
|
189
|
+
ClipCountBefore = CountClips(target.Track, timeline)
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/// <summary>唯一 effect boundary 后创建 clip,保存并 fresh 证明 count/timing/playable/source binding/hash。</summary>
|
|
194
|
+
internal static TimelineClipMutationInfo AddClip(ClipAddPlan plan)
|
|
195
|
+
{
|
|
196
|
+
var clip = plan.CreateClip.GetParameters().Length == 0
|
|
197
|
+
? plan.CreateClip.Invoke(plan.Track.Track, null)
|
|
198
|
+
: plan.CreateClip.Invoke(plan.Track.Track, new object[] { plan.SourceAsset });
|
|
199
|
+
if (clip == null)
|
|
200
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Timeline did not return the created clip.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
201
|
+
plan.StartProperty.SetValue(clip, plan.Start, null);
|
|
202
|
+
plan.DurationProperty.SetValue(clip, plan.Duration, null);
|
|
203
|
+
EditorUtility.SetDirty(plan.Timeline.Asset);
|
|
204
|
+
AssetDatabase.SaveAssets();
|
|
205
|
+
|
|
206
|
+
var playableAsset = ReadRequiredMember(clip, "asset", plan.Timeline) as UnityEngine.Object;
|
|
207
|
+
if (playableAsset == null)
|
|
208
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Created clip has no persistent playable asset identity.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
209
|
+
var playableIdentity = RequireIdentity(playableAsset, "created Timeline clip playable asset", plan.Timeline);
|
|
210
|
+
AssetDatabase.ImportAsset(plan.Timeline.Path, ImportAssetOptions.ForceSynchronousImport);
|
|
211
|
+
|
|
212
|
+
var fresh = RequireFreshTimeline(plan.Timeline);
|
|
213
|
+
var records = CollectTracks(fresh, plan.Timeline.TimelineType);
|
|
214
|
+
var freshTrack = FindByLocalId(records, plan.Track.Identity.LocalId);
|
|
215
|
+
if (freshTrack == null)
|
|
216
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Fresh target track identity was not found.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
217
|
+
var clips = CollectClips(freshTrack.Track, plan.Timeline);
|
|
218
|
+
if (clips.Count != plan.ClipCountBefore + 1)
|
|
219
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Fresh target clip count did not increase by one.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
220
|
+
object observed = null;
|
|
221
|
+
var observedIndex = -1;
|
|
222
|
+
for (var i = 0; i < clips.Count; i++)
|
|
223
|
+
{
|
|
224
|
+
var candidateAsset = ReadRequiredMember(clips[i], "asset", plan.Timeline) as UnityEngine.Object;
|
|
225
|
+
if (candidateAsset == null) continue;
|
|
226
|
+
var identity = RequireIdentity(candidateAsset, "fresh Timeline clip playable asset", plan.Timeline);
|
|
227
|
+
if (!string.Equals(identity.LocalId, playableIdentity.LocalId, StringComparison.Ordinal)) continue;
|
|
228
|
+
observed = clips[i];
|
|
229
|
+
observedIndex = i;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
if (observed == null)
|
|
233
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Fresh clip playable asset identity was not found.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
234
|
+
var observedStart = ReadDouble(observed, "start", plan.Timeline);
|
|
235
|
+
var observedDuration = ReadDouble(observed, "duration", plan.Timeline);
|
|
236
|
+
var sourceIdentity = ResolveClipSourceIdentity(observed, plan.Timeline);
|
|
237
|
+
if (Math.Abs(observedStart - plan.Start) > 0.000000001d
|
|
238
|
+
|| Math.Abs(observedDuration - plan.Duration) > 0.000000001d
|
|
239
|
+
|| !SameIdentity(sourceIdentity, plan.SourceIdentity)
|
|
240
|
+
|| !HashChanged(plan.Timeline))
|
|
241
|
+
throw Error("E_TIMELINE_CLIP_ADD_PROOF_FAILED", "Fresh clip timing, source binding, or serialized artifact did not match the frozen plan.", plan.Timeline.Path, plan.Timeline.Guid);
|
|
242
|
+
return BuildClipMutationInfo(observed, observedIndex, freshTrack, plan.Timeline);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
internal static TimelineTrackMutationInfo PreviewTrack(TrackAddPlan plan)
|
|
246
|
+
{
|
|
247
|
+
return new TimelineTrackMutationInfo
|
|
248
|
+
{
|
|
249
|
+
Parent = plan.Parent == null ? null : plan.Parent.Identity,
|
|
250
|
+
Name = plan.Name,
|
|
251
|
+
TrackType = plan.TrackType,
|
|
252
|
+
TypeName = plan.ConcreteTrackType.FullName
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
internal static TimelineClipMutationInfo PreviewClip(ClipAddPlan plan)
|
|
257
|
+
{
|
|
258
|
+
return new TimelineClipMutationInfo
|
|
259
|
+
{
|
|
260
|
+
Track = BuildTrackMutationInfo(plan.Track),
|
|
261
|
+
Index = plan.ClipCountBefore,
|
|
262
|
+
Start = plan.Start,
|
|
263
|
+
Duration = plan.Duration,
|
|
264
|
+
End = plan.Start + plan.Duration,
|
|
265
|
+
SourceAsset = plan.SourceIdentity
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
internal static TimelineAssetInfo BuildTimelineInfo(AssetPlan plan)
|
|
270
|
+
{
|
|
271
|
+
var fresh = AssetDatabase.LoadMainAssetAtPath(plan.Path);
|
|
272
|
+
var tracks = fresh == null ? new List<TrackRecord>() : CollectTracks(fresh, plan.TimelineType);
|
|
273
|
+
var file = new FileInfo(AssetToolSupport.AssetFullPath(plan.Path));
|
|
274
|
+
return new TimelineAssetInfo
|
|
275
|
+
{
|
|
276
|
+
Path = plan.Path,
|
|
277
|
+
Guid = plan.Guid,
|
|
278
|
+
Name = fresh == null ? null : fresh.name,
|
|
279
|
+
Type = fresh == null ? null : fresh.GetType().FullName,
|
|
280
|
+
FrameRate = fresh == null ? 0d : TimelineToolSupport.ReadFrameRate(fresh, plan.TimelineType),
|
|
281
|
+
Duration = fresh == null ? 0d : TimelineToolSupport.ReadDoubleProperty(fresh, plan.TimelineType, "duration"),
|
|
282
|
+
TrackCount = tracks.Count,
|
|
283
|
+
SizeBytes = file.Exists ? file.Length : 0L
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
private static AssetPlan ResolveTimeline(string reference)
|
|
288
|
+
{
|
|
289
|
+
var read = TimelineReadToolSupport.Prepare(reference, 0, 1, 32, 1);
|
|
290
|
+
return new AssetPlan
|
|
291
|
+
{
|
|
292
|
+
Asset = read.Asset,
|
|
293
|
+
TimelineType = read.TimelineType,
|
|
294
|
+
Path = read.Path,
|
|
295
|
+
Guid = read.Guid,
|
|
296
|
+
HashBefore = HashFile(read.Path)
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
private static UnityEngine.Object RequireFreshTimeline(AssetPlan plan)
|
|
301
|
+
{
|
|
302
|
+
var fresh = AssetDatabase.LoadMainAssetAtPath(plan.Path);
|
|
303
|
+
var guid = AssetDatabase.AssetPathToGUID(plan.Path);
|
|
304
|
+
if (fresh == null || !plan.TimelineType.IsInstanceOfType(fresh)
|
|
305
|
+
|| !string.Equals(guid, plan.Guid, StringComparison.Ordinal)
|
|
306
|
+
|| !string.Equals(AssetDatabase.GUIDToAssetPath(guid), plan.Path, StringComparison.Ordinal))
|
|
307
|
+
throw Error("E_TIMELINE_IDENTITY_UNAVAILABLE", "Fresh Timeline path, GUID, or type did not match the frozen identity.", plan.Path, guid);
|
|
308
|
+
return fresh;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
private static List<TrackRecord> CollectTracks(UnityEngine.Object timeline, Type timelineType)
|
|
312
|
+
{
|
|
313
|
+
var result = new List<TrackRecord>();
|
|
314
|
+
var visited = new HashSet<int>();
|
|
315
|
+
foreach (var value in InvokeEnumerable(timeline, timelineType, "GetRootTracks", null))
|
|
316
|
+
{
|
|
317
|
+
var track = value as UnityEngine.Object;
|
|
318
|
+
if (track != null) WalkTrack(track, null, result, visited, new AssetPlan { Path = AssetDatabase.GetAssetPath(timeline), Guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(timeline)) });
|
|
319
|
+
}
|
|
320
|
+
return result;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
private static void WalkTrack(UnityEngine.Object track, UnityEngine.Object parent, List<TrackRecord> result,
|
|
324
|
+
HashSet<int> visited, AssetPlan timeline)
|
|
325
|
+
{
|
|
326
|
+
if (!visited.Add(track.GetInstanceID()))
|
|
327
|
+
throw Error("E_TIMELINE_STRUCTURE_INVALID", "Timeline track hierarchy contains a duplicate or cycle.", timeline.Path, timeline.Guid);
|
|
328
|
+
if (result.Count >= MaxScannedTracks)
|
|
329
|
+
throw Error("E_TIMELINE_STRUCTURE_LIMIT_EXCEEDED", "Timeline contains more than 10000 tracks.", timeline.Path, timeline.Guid);
|
|
330
|
+
result.Add(new TrackRecord
|
|
331
|
+
{
|
|
332
|
+
Track = track,
|
|
333
|
+
Parent = parent,
|
|
334
|
+
Identity = RequireIdentity(track, "Timeline track", timeline),
|
|
335
|
+
ParentIdentity = parent == null ? null : RequireIdentity(parent, "Timeline parent track", timeline),
|
|
336
|
+
Index = result.Count
|
|
337
|
+
});
|
|
338
|
+
foreach (var value in InvokeEnumerable(track, track.GetType(), "GetChildTracks", timeline))
|
|
339
|
+
{
|
|
340
|
+
var child = value as UnityEngine.Object;
|
|
341
|
+
if (child != null) WalkTrack(child, track, result, visited, timeline);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
private static TrackRecord ResolveTrack(List<TrackRecord> records, string name, string localId, bool required, AssetPlan timeline)
|
|
346
|
+
{
|
|
347
|
+
if (!string.IsNullOrWhiteSpace(name) && !string.IsNullOrWhiteSpace(localId))
|
|
348
|
+
throw Error("E_TIMELINE_TRACK_SELECTOR_CONFLICT", "Pass track name or localId, not both.", timeline.Path, timeline.Guid);
|
|
349
|
+
if (!string.IsNullOrWhiteSpace(localId))
|
|
350
|
+
{
|
|
351
|
+
long parsed;
|
|
352
|
+
if (!long.TryParse(localId.Trim(), NumberStyles.Integer, CultureInfo.InvariantCulture, out parsed))
|
|
353
|
+
throw Error("E_TIMELINE_TRACK_SELECTOR_INVALID", "track localId must be a signed decimal Int64 string.", timeline.Path, timeline.Guid);
|
|
354
|
+
var canonical = parsed.ToString(CultureInfo.InvariantCulture);
|
|
355
|
+
var found = FindByLocalId(records, canonical);
|
|
356
|
+
if (found == null)
|
|
357
|
+
throw Error("E_TIMELINE_TRACK_NOT_FOUND", "Timeline track localId was not found.", timeline.Path, timeline.Guid);
|
|
358
|
+
return found;
|
|
359
|
+
}
|
|
360
|
+
if (!string.IsNullOrWhiteSpace(name))
|
|
361
|
+
{
|
|
362
|
+
TrackRecord found = null;
|
|
363
|
+
foreach (var record in records)
|
|
364
|
+
{
|
|
365
|
+
if (!string.Equals(record.Track.name, name.Trim(), StringComparison.Ordinal)) continue;
|
|
366
|
+
if (found != null)
|
|
367
|
+
throw Error("E_TIMELINE_TRACK_AMBIGUOUS", "Timeline track name is ambiguous; use localId from timeline.info.", timeline.Path, timeline.Guid);
|
|
368
|
+
found = record;
|
|
369
|
+
}
|
|
370
|
+
if (found == null)
|
|
371
|
+
throw Error("E_TIMELINE_TRACK_NOT_FOUND", "Timeline track name was not found.", timeline.Path, timeline.Guid);
|
|
372
|
+
return found;
|
|
373
|
+
}
|
|
374
|
+
if (required)
|
|
375
|
+
throw Error("E_TIMELINE_TRACK_REQUIRED", "track name or trackLocalId is required.", timeline.Path, timeline.Guid);
|
|
376
|
+
return null;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
private static TrackRecord FindByLocalId(List<TrackRecord> records, string localId)
|
|
380
|
+
{
|
|
381
|
+
foreach (var record in records)
|
|
382
|
+
if (string.Equals(record.Identity.LocalId, localId, StringComparison.Ordinal)) return record;
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
private static bool SameParent(TrackRecord record, TrackRecord parent)
|
|
387
|
+
{
|
|
388
|
+
return SameIdentity(record.ParentIdentity, parent == null ? null : parent.Identity);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
private static bool SameIdentity(TimelineObjectIdentity left, TimelineObjectIdentity right)
|
|
392
|
+
{
|
|
393
|
+
if (left == null || right == null) return left == null && right == null;
|
|
394
|
+
return string.Equals(left.Guid, right.Guid, StringComparison.Ordinal)
|
|
395
|
+
&& string.Equals(left.LocalId, right.LocalId, StringComparison.Ordinal);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
private static void ValidateParentTrack(UnityEngine.Object parent, Type childType, AssetPlan timeline)
|
|
399
|
+
{
|
|
400
|
+
if (parent == null) return;
|
|
401
|
+
var utilities = Type.GetType(TimelineCreateUtilitiesTypeName, false);
|
|
402
|
+
var method = utilities == null ? null : utilities.GetMethod("ValidateParentTrack", BindingFlags.Public | BindingFlags.Static);
|
|
403
|
+
if (method == null || method.ReturnType != typeof(bool))
|
|
404
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "Timeline parent validation API is unavailable.", timeline.Path, timeline.Guid);
|
|
405
|
+
var valid = Convert.ToBoolean(method.Invoke(null, new object[] { parent, childType }), CultureInfo.InvariantCulture);
|
|
406
|
+
if (!valid)
|
|
407
|
+
throw Error("E_TIMELINE_PARENT_TYPE_INVALID", "The requested track type cannot be nested under the selected parent.", timeline.Path, timeline.Guid);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
private static MethodInfo ResolveCreateClip(UnityEngine.Object track, UnityEngine.Object source, AssetPlan timeline)
|
|
411
|
+
{
|
|
412
|
+
var type = track.GetType();
|
|
413
|
+
var isAnimation = string.Equals(type.FullName, "UnityEngine.Timeline.AnimationTrack", StringComparison.Ordinal);
|
|
414
|
+
var isAudio = string.Equals(type.FullName, "UnityEngine.Timeline.AudioTrack", StringComparison.Ordinal);
|
|
415
|
+
if ((isAnimation || isAudio) && source == null)
|
|
416
|
+
throw Error("E_TIMELINE_CLIP_ASSET_REQUIRED", "Animation and Audio tracks require a source asset.", timeline.Path, timeline.Guid);
|
|
417
|
+
if (source != null)
|
|
418
|
+
{
|
|
419
|
+
MethodInfo best = null;
|
|
420
|
+
foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Instance))
|
|
421
|
+
{
|
|
422
|
+
if (!string.Equals(method.Name, "CreateClip", StringComparison.Ordinal) || method.IsGenericMethodDefinition) continue;
|
|
423
|
+
var parameters = method.GetParameters();
|
|
424
|
+
if (parameters.Length != 1 || !parameters[0].ParameterType.IsAssignableFrom(source.GetType())) continue;
|
|
425
|
+
if (parameters[0].ParameterType == source.GetType()) return method;
|
|
426
|
+
if (best == null) best = method;
|
|
427
|
+
}
|
|
428
|
+
if (best != null) return best;
|
|
429
|
+
throw Error("E_TIMELINE_CLIP_ASSET_TYPE_INVALID", "Target track has no CreateClip overload for the source asset type.", timeline.Path, timeline.Guid);
|
|
430
|
+
}
|
|
431
|
+
var createDefault = type.GetMethod("CreateDefaultClip", BindingFlags.Public | BindingFlags.Instance, null, Type.EmptyTypes, null);
|
|
432
|
+
if (createDefault == null || !HasDefaultClipType(type))
|
|
433
|
+
throw Error("E_TIMELINE_CLIP_UNSUPPORTED", "Target track cannot create a persistent default clip.", timeline.Path, timeline.Guid);
|
|
434
|
+
return createDefault;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
private static bool HasDefaultClipType(Type trackType)
|
|
438
|
+
{
|
|
439
|
+
foreach (var attribute in trackType.GetCustomAttributes(true))
|
|
440
|
+
{
|
|
441
|
+
if (attribute == null || !string.Equals(attribute.GetType().FullName, "UnityEngine.Timeline.TrackClipTypeAttribute", StringComparison.Ordinal)) continue;
|
|
442
|
+
var field = attribute.GetType().GetField("inspectedType", BindingFlags.Public | BindingFlags.Instance);
|
|
443
|
+
var inspectedType = field == null ? null : field.GetValue(attribute) as Type;
|
|
444
|
+
if (inspectedType != null
|
|
445
|
+
&& typeof(ScriptableObject).IsAssignableFrom(inspectedType)
|
|
446
|
+
&& typeof(UnityEngine.Playables.IPlayableAsset).IsAssignableFrom(inspectedType)) return true;
|
|
447
|
+
}
|
|
448
|
+
return false;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
private static UnityEngine.Object ResolveAssetReference(string reference, AssetPlan timeline)
|
|
452
|
+
{
|
|
453
|
+
var value = reference.Trim();
|
|
454
|
+
if (value.StartsWith("guid:", StringComparison.OrdinalIgnoreCase)) value = value.Substring(5);
|
|
455
|
+
string path;
|
|
456
|
+
if (IsGuid(value)) path = AssetDatabase.GUIDToAssetPath(value.ToLowerInvariant());
|
|
457
|
+
else path = AssetToolSupport.RequireAssetPath(value);
|
|
458
|
+
var asset = string.IsNullOrEmpty(path) ? null : AssetDatabase.LoadMainAssetAtPath(path);
|
|
459
|
+
if (asset == null)
|
|
460
|
+
throw Error("E_TIMELINE_CLIP_ASSET_NOT_FOUND", "Timeline clip source asset was not found.", path, IsGuid(value) ? value : null);
|
|
461
|
+
return asset;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
private static TimelineClipMutationInfo BuildClipMutationInfo(object clip, int index, TrackRecord track, AssetPlan timeline)
|
|
465
|
+
{
|
|
466
|
+
var playable = ReadRequiredMember(clip, "asset", timeline) as UnityEngine.Object;
|
|
467
|
+
var start = ReadDouble(clip, "start", timeline);
|
|
468
|
+
var duration = ReadDouble(clip, "duration", timeline);
|
|
469
|
+
return new TimelineClipMutationInfo
|
|
470
|
+
{
|
|
471
|
+
Track = BuildTrackMutationInfo(track),
|
|
472
|
+
Index = index,
|
|
473
|
+
DisplayName = Convert.ToString(ReadRequiredMember(clip, "displayName", timeline), CultureInfo.InvariantCulture),
|
|
474
|
+
Start = start,
|
|
475
|
+
Duration = duration,
|
|
476
|
+
End = start + duration,
|
|
477
|
+
PlayableAsset = playable == null ? null : RequireIdentity(playable, "Timeline clip playable asset", timeline),
|
|
478
|
+
SourceAsset = ResolveClipSourceIdentity(clip, timeline)
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
private static TimelineTrackMutationInfo BuildTrackMutationInfo(TrackRecord record)
|
|
483
|
+
{
|
|
484
|
+
return new TimelineTrackMutationInfo
|
|
485
|
+
{
|
|
486
|
+
Identity = record.Identity,
|
|
487
|
+
Parent = record.ParentIdentity,
|
|
488
|
+
Name = record.Track.name,
|
|
489
|
+
TrackType = CanonicalTrackType(record.Track.GetType()),
|
|
490
|
+
TypeName = record.Track.GetType().FullName
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
private static TimelineObjectIdentity ResolveClipSourceIdentity(object clip, AssetPlan timeline)
|
|
495
|
+
{
|
|
496
|
+
var playable = ReadRequiredMember(clip, "asset", timeline) as UnityEngine.Object;
|
|
497
|
+
if (playable == null) return null;
|
|
498
|
+
foreach (var name in new[] { "clip", "prefabGameObject" })
|
|
499
|
+
{
|
|
500
|
+
object value;
|
|
501
|
+
if (!TryReadMember(playable, name, out value)) continue;
|
|
502
|
+
var source = value as UnityEngine.Object;
|
|
503
|
+
if (source != null && source != playable) return RequireIdentity(source, "Timeline clip source asset", timeline);
|
|
504
|
+
}
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
private static int CountClips(UnityEngine.Object track, AssetPlan timeline)
|
|
509
|
+
{
|
|
510
|
+
return CollectClips(track, timeline).Count;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
private static List<object> CollectClips(UnityEngine.Object track, AssetPlan timeline)
|
|
514
|
+
{
|
|
515
|
+
var result = new List<object>();
|
|
516
|
+
foreach (var clip in InvokeEnumerable(track, track.GetType(), "GetClips", timeline))
|
|
517
|
+
{
|
|
518
|
+
if (clip == null) continue;
|
|
519
|
+
if (result.Count >= MaxScannedClips)
|
|
520
|
+
throw Error("E_TIMELINE_STRUCTURE_LIMIT_EXCEEDED", "Timeline track contains more than 10000 clips.", timeline.Path, timeline.Guid);
|
|
521
|
+
result.Add(clip);
|
|
522
|
+
}
|
|
523
|
+
return result;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
private static TimelineObjectIdentity RequireIdentity(UnityEngine.Object value, string label, AssetPlan timeline)
|
|
527
|
+
{
|
|
528
|
+
string guid = null;
|
|
529
|
+
long localId = 0L;
|
|
530
|
+
if (value == null || !AssetDatabase.TryGetGUIDAndLocalFileIdentifier(value, out guid, out localId) || string.IsNullOrEmpty(guid))
|
|
531
|
+
throw Error("E_TIMELINE_IDENTITY_UNAVAILABLE", label + " has no stable GUID/localId.", timeline.Path, guid);
|
|
532
|
+
var path = AssetDatabase.GUIDToAssetPath(guid);
|
|
533
|
+
if (string.IsNullOrEmpty(path))
|
|
534
|
+
throw Error("E_TIMELINE_IDENTITY_UNAVAILABLE", label + " GUID does not resolve to a path.", timeline.Path, guid);
|
|
535
|
+
return new TimelineObjectIdentity
|
|
536
|
+
{
|
|
537
|
+
Path = path,
|
|
538
|
+
Guid = guid,
|
|
539
|
+
LocalId = localId.ToString(CultureInfo.InvariantCulture),
|
|
540
|
+
Name = value.name,
|
|
541
|
+
Type = value.GetType().FullName
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
private static IEnumerable InvokeEnumerable(object target, Type type, string methodName, AssetPlan timeline)
|
|
546
|
+
{
|
|
547
|
+
var method = type.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance, null, Type.EmptyTypes, null);
|
|
548
|
+
var enumerable = method == null ? null : method.Invoke(target, null) as IEnumerable;
|
|
549
|
+
if (enumerable == null)
|
|
550
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "Timeline API does not expose " + methodName + "().", timeline == null ? null : timeline.Path, timeline == null ? null : timeline.Guid);
|
|
551
|
+
return enumerable;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
private static PropertyInfo RequireWritableDoubleProperty(Type type, string name, AssetPlan timeline)
|
|
555
|
+
{
|
|
556
|
+
var property = type.GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
|
557
|
+
if (property == null || !property.CanRead || !property.CanWrite || property.PropertyType != typeof(double))
|
|
558
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "TimelineClip." + name + " is not a writable double property.", timeline.Path, timeline.Guid);
|
|
559
|
+
return property;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
private static double ReadMaxClipTime(Type clipType, AssetPlan timeline)
|
|
563
|
+
{
|
|
564
|
+
var field = clipType.GetField("kMaxTimeValue", BindingFlags.NonPublic | BindingFlags.Static);
|
|
565
|
+
if (field == null)
|
|
566
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "TimelineClip time range contract is unavailable.", timeline.Path, timeline.Guid);
|
|
567
|
+
return Convert.ToDouble(field.GetValue(null), CultureInfo.InvariantCulture);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
private static object ReadRequiredMember(object target, string name, AssetPlan timeline)
|
|
571
|
+
{
|
|
572
|
+
object value;
|
|
573
|
+
if (target == null || !TryReadMember(target, name, out value))
|
|
574
|
+
throw Error("E_TIMELINE_API_UNAVAILABLE", "Timeline API does not expose required member " + name + ".", timeline.Path, timeline.Guid);
|
|
575
|
+
return value;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
private static bool TryReadMember(object target, string name, out object value)
|
|
579
|
+
{
|
|
580
|
+
value = null;
|
|
581
|
+
if (target == null) return false;
|
|
582
|
+
var property = target.GetType().GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
|
|
583
|
+
if (property != null && property.CanRead)
|
|
584
|
+
{
|
|
585
|
+
value = property.GetValue(target, null);
|
|
586
|
+
return true;
|
|
587
|
+
}
|
|
588
|
+
var field = target.GetType().GetField(name, BindingFlags.Public | BindingFlags.Instance);
|
|
589
|
+
if (field == null) return false;
|
|
590
|
+
value = field.GetValue(target);
|
|
591
|
+
return true;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
private static double ReadDouble(object target, string name, AssetPlan timeline)
|
|
595
|
+
{
|
|
596
|
+
return Convert.ToDouble(ReadRequiredMember(target, name, timeline), CultureInfo.InvariantCulture);
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
private static string HashFile(string assetPath)
|
|
600
|
+
{
|
|
601
|
+
try
|
|
602
|
+
{
|
|
603
|
+
using (var stream = File.OpenRead(AssetToolSupport.AssetFullPath(assetPath)))
|
|
604
|
+
using (var sha = SHA256.Create())
|
|
605
|
+
return BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", string.Empty).ToLowerInvariant();
|
|
606
|
+
}
|
|
607
|
+
catch (Exception)
|
|
608
|
+
{
|
|
609
|
+
throw Error("E_TIMELINE_SOURCE_PROOF_UNAVAILABLE", "Timeline serialized artifact could not be hashed.", assetPath, AssetDatabase.AssetPathToGUID(assetPath));
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
private static bool HashChanged(AssetPlan timeline)
|
|
614
|
+
{
|
|
615
|
+
return !string.Equals(timeline.HashBefore, HashFile(timeline.Path), StringComparison.Ordinal);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
private static string RequireName(string value, string label, AssetPlan timeline)
|
|
619
|
+
{
|
|
620
|
+
var name = string.IsNullOrWhiteSpace(value) ? null : value.Trim();
|
|
621
|
+
if (string.IsNullOrEmpty(name) || name.Length > 128)
|
|
622
|
+
throw Error("E_TIMELINE_TRACK_NAME_INVALID", label + " must contain 1 to 128 characters.", timeline.Path, timeline.Guid);
|
|
623
|
+
for (var i = 0; i < name.Length; i++)
|
|
624
|
+
if (char.IsControl(name[i]) || name[i] == '/')
|
|
625
|
+
throw Error("E_TIMELINE_TRACK_NAME_INVALID", label + " cannot contain control characters or '/'.", timeline.Path, timeline.Guid);
|
|
626
|
+
return name;
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
private static bool IsApprovedTrackType(Type type)
|
|
630
|
+
{
|
|
631
|
+
foreach (var value in TrackTypes.Values)
|
|
632
|
+
if (string.Equals(type.AssemblyQualifiedName, value, StringComparison.Ordinal)
|
|
633
|
+
|| string.Equals(type.FullName + ", " + type.Assembly.GetName().Name, value, StringComparison.Ordinal)) return true;
|
|
634
|
+
return false;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
private static bool IsApprovedParentType(Type type)
|
|
638
|
+
{
|
|
639
|
+
return string.Equals(type.FullName, "UnityEngine.Timeline.GroupTrack", StringComparison.Ordinal) || IsApprovedTrackType(type);
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
private static string CanonicalTrackType(Type type)
|
|
643
|
+
{
|
|
644
|
+
foreach (var pair in TrackTypes)
|
|
645
|
+
if (pair.Value.StartsWith(type.FullName + ",", StringComparison.Ordinal)) return pair.Key;
|
|
646
|
+
var name = type.Name;
|
|
647
|
+
return name.EndsWith("Track", StringComparison.Ordinal) ? name.Substring(0, name.Length - 5) : name;
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
private static bool IsGuid(string value)
|
|
651
|
+
{
|
|
652
|
+
if (string.IsNullOrEmpty(value) || value.Length != 32) return false;
|
|
653
|
+
for (var i = 0; i < value.Length; i++) if (!Uri.IsHexDigit(value[i])) return false;
|
|
654
|
+
return true;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
private static UnityCliBridge.BridgeCommandException Error(string code, string message, string path, string guid)
|
|
658
|
+
{
|
|
659
|
+
return new UnityCliBridge.BridgeCommandException(
|
|
660
|
+
code,
|
|
661
|
+
message,
|
|
662
|
+
new Dictionary<string, object> { { "path", path }, { "guid", guid }, { "requiredPackage", TimelineToolSupport.PackageId } },
|
|
663
|
+
new[] { "Run tools describe timeline.track.add or timeline.clip.add, then use timeline.info for current track identities." });
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
public sealed class TimelineMutationPlannedEffect
|
|
668
|
+
{
|
|
669
|
+
public string Type { get; set; }
|
|
670
|
+
public string Path { get; set; }
|
|
671
|
+
public string Target { get; set; }
|
|
672
|
+
public string SideEffects { get; set; }
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
public sealed class TimelineTrackMutationInfo
|
|
676
|
+
{
|
|
677
|
+
public TimelineObjectIdentity Identity { get; set; }
|
|
678
|
+
public TimelineObjectIdentity Parent { get; set; }
|
|
679
|
+
public string Name { get; set; }
|
|
680
|
+
public string TrackType { get; set; }
|
|
681
|
+
public string TypeName { get; set; }
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
public sealed class TimelineClipMutationInfo
|
|
685
|
+
{
|
|
686
|
+
public TimelineTrackMutationInfo Track { get; set; }
|
|
687
|
+
public long Index { get; set; }
|
|
688
|
+
public string DisplayName { get; set; }
|
|
689
|
+
public double Start { get; set; }
|
|
690
|
+
public double Duration { get; set; }
|
|
691
|
+
public double End { get; set; }
|
|
692
|
+
public TimelineObjectIdentity PlayableAsset { get; set; }
|
|
693
|
+
public TimelineObjectIdentity SourceAsset { get; set; }
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
#endif
|