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