@holoscript/core 7.0.0 → 8.0.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 (345) hide show
  1. package/README.md +2 -2
  2. package/bin/holoscript.cjs +3 -0
  3. package/dist/GLTFPipeline-276GE64O.js +16 -0
  4. package/dist/GLTFPipeline-M7WSSJED.cjs +37 -0
  5. package/dist/HoloScriptPlusParser-7FBIFUFC.js +693 -0
  6. package/dist/HoloScriptPlusParser-A2W7OCN2.cjs +698 -0
  7. package/dist/HoloScriptPlusParser-F2Z56FJR.js +10 -0
  8. package/dist/HoloScriptPlusParser-WKHRIH6T.cjs +27 -0
  9. package/dist/HoloScriptRuntime-3URVTKPJ.js +10 -0
  10. package/dist/HoloScriptRuntime-SXEAEU2N.cjs +19 -0
  11. package/dist/USDZExporter-3FWJ25JI.cjs +1037 -0
  12. package/dist/USDZExporter-D2HQLQYK.js +1035 -0
  13. package/dist/agents/index.cjs +19 -0
  14. package/dist/agents/index.d.ts +100 -0
  15. package/dist/agents/index.js +17 -0
  16. package/dist/chunk-23J755AR.js +1046 -0
  17. package/dist/chunk-253GBQZY.cjs +627 -0
  18. package/dist/chunk-25IQCHTO.cjs +781 -0
  19. package/dist/chunk-2BSMSUCE.js +1941 -0
  20. package/dist/chunk-2M2DPHKB.js +762 -0
  21. package/dist/chunk-2YSNA2F2.cjs +1274 -0
  22. package/dist/chunk-3AO425MZ.cjs +886 -0
  23. package/dist/chunk-3FOKASKO.cjs +348 -0
  24. package/dist/chunk-3HYYMEXI.cjs +56578 -0
  25. package/dist/chunk-3NFFOWGG.js +4287 -0
  26. package/dist/chunk-3WZEJHUQ.cjs +116 -0
  27. package/dist/chunk-4C57PR42.js +468 -0
  28. package/dist/chunk-4N4SXXWF.js +769 -0
  29. package/dist/chunk-4PDEPEQW.cjs +41 -0
  30. package/dist/chunk-4R6SBXDB.js +45 -0
  31. package/dist/chunk-4V2E7U7Q.cjs +2015 -0
  32. package/dist/chunk-5FSKKMR7.cjs +2092 -0
  33. package/dist/chunk-5GLCTO44.js +161 -0
  34. package/dist/chunk-5JEU52DW.js +382 -0
  35. package/dist/chunk-5S7RKFGR.cjs +446 -0
  36. package/dist/chunk-5WUNN6ZN.cjs +428 -0
  37. package/dist/chunk-62FBK3B7.js +70 -0
  38. package/dist/chunk-6CTRH7HT.cjs +1985 -0
  39. package/dist/chunk-6DPSFNJB.cjs +847 -0
  40. package/dist/chunk-6EX3I5P4.cjs +130 -0
  41. package/dist/chunk-73FELZVJ.cjs +611 -0
  42. package/dist/chunk-7CUEMLDZ.cjs +6445 -0
  43. package/dist/chunk-7HIASF7S.cjs +814 -0
  44. package/dist/chunk-A6KINLZJ.js +236 -0
  45. package/dist/chunk-AIA52I7T.cjs +543 -0
  46. package/dist/chunk-ANXZFVY2.js +113 -0
  47. package/dist/chunk-AYBXB26F.js +2176 -0
  48. package/dist/chunk-B4TFTDG4.js +449 -0
  49. package/dist/chunk-BE4UJCQT.js +623 -0
  50. package/dist/chunk-BRQJKJGT.cjs +20 -0
  51. package/dist/chunk-C2A5DUMF.cjs +689 -0
  52. package/dist/chunk-C37BHB7N.cjs +636 -0
  53. package/dist/chunk-CBJY23VL.js +126 -0
  54. package/dist/chunk-CIWWXYHZ.cjs +50 -0
  55. package/dist/chunk-CXFDRBQU.cjs +672 -0
  56. package/dist/chunk-D54CNIAJ.cjs +413 -0
  57. package/dist/chunk-DAJXW4KX.js +725 -0
  58. package/dist/chunk-DTGBOSEM.cjs +319 -0
  59. package/dist/chunk-E7JP3BS3.cjs +61 -0
  60. package/dist/chunk-EKBKLK7P.js +1169 -0
  61. package/dist/chunk-EKYL4PE3.cjs +404 -0
  62. package/dist/chunk-EUDQTK7N.cjs +4310 -0
  63. package/dist/chunk-EXKSFGSX.cjs +274 -0
  64. package/dist/chunk-EXUP2BUM.cjs +1173 -0
  65. package/dist/chunk-F43YAA34.js +623 -0
  66. package/dist/chunk-FDSGHPAK.js +130 -0
  67. package/dist/chunk-FEWUHQNM.cjs +144 -0
  68. package/dist/chunk-FGGJQRLZ.js +270 -0
  69. package/dist/chunk-FHP6LXJS.js +415 -0
  70. package/dist/chunk-FJPADH77.cjs +666 -0
  71. package/dist/chunk-FYSPZT4V.cjs +169 -0
  72. package/dist/chunk-GIOYPNTH.js +5575 -0
  73. package/dist/chunk-GJNCFRJU.cjs +125 -0
  74. package/dist/chunk-GMP623FG.cjs +1508 -0
  75. package/dist/chunk-GQHQOPXZ.cjs +5580 -0
  76. package/dist/chunk-GQT4TYKY.cjs +4381 -0
  77. package/dist/chunk-GTU2Z2WW.cjs +262 -0
  78. package/dist/chunk-GYZE55MO.js +2007 -0
  79. package/dist/chunk-GZG4KA4E.js +529 -0
  80. package/dist/chunk-H652NHX5.js +600 -0
  81. package/dist/chunk-HCCQLAA4.cjs +74 -0
  82. package/dist/chunk-HINXWAOD.cjs +1049 -0
  83. package/dist/chunk-HYNTS5CP.js +422 -0
  84. package/dist/chunk-HZSPDCXV.cjs +457 -0
  85. package/dist/chunk-HZTDET3N.js +1399 -0
  86. package/dist/chunk-I6XZ5DZF.cjs +488 -0
  87. package/dist/chunk-ILRBGFVD.cjs +72 -0
  88. package/dist/chunk-IPWSXCCN.js +1183 -0
  89. package/dist/chunk-IUTY5WQ2.cjs +424 -0
  90. package/dist/chunk-IVSZDECV.js +882 -0
  91. package/dist/chunk-IVY74O6C.js +247 -0
  92. package/dist/chunk-IZM5VQZD.js +714 -0
  93. package/dist/chunk-J32ZJZJH.js +554 -0
  94. package/dist/chunk-J6M4FPK5.js +421 -0
  95. package/dist/chunk-JC5YBPSF.cjs +984 -0
  96. package/dist/chunk-JCLBKPMX.js +3813 -0
  97. package/dist/chunk-JD7CIZ33.js +1949 -0
  98. package/dist/chunk-JIYN45TV.cjs +2525 -0
  99. package/dist/chunk-JJBE3TIH.cjs +1189 -0
  100. package/dist/chunk-JX7YL6ZE.js +2252 -0
  101. package/dist/chunk-K4VVR7CN.cjs +2433 -0
  102. package/dist/chunk-KEFNV2WM.cjs +2257 -0
  103. package/dist/chunk-KH4CNH66.cjs +424 -0
  104. package/dist/chunk-KJLB4OPV.js +5731 -0
  105. package/dist/chunk-KKFZ3B6J.cjs +557 -0
  106. package/dist/chunk-KKP7JKN4.cjs +6002 -0
  107. package/dist/chunk-KPJL34Y7.cjs +186 -0
  108. package/dist/chunk-KQCN6AKJ.cjs +3042 -0
  109. package/dist/chunk-KVRSTFNH.cjs +72 -0
  110. package/dist/chunk-LICPB5HZ.cjs +1409 -0
  111. package/dist/chunk-LM2VU56C.cjs +37 -0
  112. package/dist/chunk-M56JSP4A.js +400 -0
  113. package/dist/chunk-MBOOR7X4.js +18 -0
  114. package/dist/chunk-MGE5Z4GS.js +608 -0
  115. package/dist/chunk-MXFUTKCO.js +56 -0
  116. package/dist/chunk-MYY4PMWX.cjs +264 -0
  117. package/dist/chunk-N75IH2HY.js +258 -0
  118. package/dist/chunk-NBMHU6SW.js +669 -0
  119. package/dist/chunk-NG77ATEW.cjs +778 -0
  120. package/dist/chunk-NGKREZ36.js +6384 -0
  121. package/dist/chunk-NHWSN2SD.cjs +718 -0
  122. package/dist/chunk-NV4VMVXU.js +421 -0
  123. package/dist/chunk-NW5G5FBQ.js +215 -0
  124. package/dist/chunk-NXZFOPVD.cjs +5737 -0
  125. package/dist/chunk-OBIYPYYS.cjs +1993 -0
  126. package/dist/chunk-OIQYIIO3.cjs +473 -0
  127. package/dist/chunk-OL46QLBJ.js +61 -0
  128. package/dist/chunk-OMXII44L.js +5386 -0
  129. package/dist/chunk-OR4Q2BGL.cjs +759 -0
  130. package/dist/chunk-OSYNRVOV.cjs +243 -0
  131. package/dist/chunk-PGANYCAG.cjs +220 -0
  132. package/dist/chunk-PHENW4MQ.js +65 -0
  133. package/dist/chunk-PHVRG4I2.js +844 -0
  134. package/dist/chunk-Q56TT7IL.js +483 -0
  135. package/dist/chunk-QPOQ7VPI.js +1491 -0
  136. package/dist/chunk-QPSKHBJP.js +5963 -0
  137. package/dist/chunk-QXH7QDSZ.js +1989 -0
  138. package/dist/chunk-R75BSDH7.cjs +50 -0
  139. package/dist/chunk-RARB3MBR.js +207 -0
  140. package/dist/chunk-RVBHAXFG.js +56160 -0
  141. package/dist/chunk-S3MDHNKB.cjs +490 -0
  142. package/dist/chunk-S4W6Z2MN.js +2426 -0
  143. package/dist/chunk-S6YWHCKV.cjs +410 -0
  144. package/dist/chunk-SIEXCILW.js +229 -0
  145. package/dist/chunk-SJBGLS25.cjs +2196 -0
  146. package/dist/chunk-SLU6UPJI.cjs +410 -0
  147. package/dist/chunk-SMIWS6DE.cjs +212 -0
  148. package/dist/chunk-T2QCTZMO.js +811 -0
  149. package/dist/chunk-T5J7ZKP3.cjs +4885 -0
  150. package/dist/chunk-TDCNJHWO.js +341 -0
  151. package/dist/chunk-TG7O4WBC.js +406 -0
  152. package/dist/chunk-THCK6ECW.js +2085 -0
  153. package/dist/chunk-TJHVSBP2.js +439 -0
  154. package/dist/chunk-TVHSPJ4N.cjs +606 -0
  155. package/dist/chunk-U44IKGG7.cjs +5390 -0
  156. package/dist/chunk-UJXISJBN.js +487 -0
  157. package/dist/chunk-UM6C3CGK.js +4375 -0
  158. package/dist/chunk-UMABK6SI.js +686 -0
  159. package/dist/chunk-UOIGFQXC.cjs +9750 -0
  160. package/dist/chunk-URG2SJLK.js +2521 -0
  161. package/dist/chunk-V6MKC2FZ.js +979 -0
  162. package/dist/chunk-VECQYRXL.js +474 -0
  163. package/dist/chunk-VJ3L7CHT.cjs +169 -0
  164. package/dist/chunk-VMLKSV26.js +1216 -0
  165. package/dist/chunk-VVKVQZI6.js +55 -0
  166. package/dist/chunk-W6RW64BB.cjs +1219 -0
  167. package/dist/chunk-W7VDOASB.cjs +639 -0
  168. package/dist/chunk-WDT3JTGM.cjs +483 -0
  169. package/dist/chunk-WJIHFLMJ.js +404 -0
  170. package/dist/chunk-WKX5AMOY.js +309 -0
  171. package/dist/chunk-WNNE3PO3.js +34 -0
  172. package/dist/chunk-WRKUDAZJ.js +3038 -0
  173. package/dist/chunk-WRLUBRKS.cjs +1943 -0
  174. package/dist/chunk-WRNEH5MO.js +3169 -0
  175. package/dist/chunk-WRWEX5ZF.js +658 -0
  176. package/dist/chunk-X3GJPRVK.cjs +3246 -0
  177. package/dist/chunk-XHIV6326.cjs +793 -0
  178. package/dist/chunk-XIVIE43A.cjs +729 -0
  179. package/dist/chunk-XJAN7CZG.cjs +432 -0
  180. package/dist/chunk-XKTPFXGA.js +164 -0
  181. package/dist/chunk-XL6INWKT.js +121 -0
  182. package/dist/chunk-XSFNHP2E.js +632 -0
  183. package/dist/chunk-XT6JY5W5.js +9684 -0
  184. package/dist/chunk-XUILI4KB.cjs +430 -0
  185. package/dist/chunk-XUUVDHIF.cjs +3962 -0
  186. package/dist/chunk-YF2I3MV3.js +46 -0
  187. package/dist/chunk-YIMN575O.js +4847 -0
  188. package/dist/chunk-YIVFJNYV.js +176 -0
  189. package/dist/chunk-YKGPCZEE.cjs +237 -0
  190. package/dist/chunk-YN6V7R3L.cjs +327 -0
  191. package/dist/chunk-YQELFNJV.js +39 -0
  192. package/dist/chunk-YYXH45E2.js +426 -0
  193. package/dist/chunk-ZBQXLH2L.js +756 -0
  194. package/dist/chunk-ZDSYWBIE.cjs +69 -0
  195. package/dist/chunk-ZU7NIRT6.js +325 -0
  196. package/dist/chunk-ZZ7RO2UQ.js +1243 -0
  197. package/dist/chunk-ZZEI7MV4.js +778 -0
  198. package/dist/cli/holoscript-runner.cjs +2255 -0
  199. package/dist/cli/holoscript-runner.js +2230 -0
  200. package/dist/codebase/index.cjs +336 -0
  201. package/dist/codebase/index.js +331 -0
  202. package/dist/compiler/agent-inference.cjs +31 -0
  203. package/dist/compiler/agent-inference.js +8 -0
  204. package/dist/compiler/android-xr.cjs +24 -0
  205. package/dist/compiler/android-xr.js +14 -0
  206. package/dist/compiler/android.cjs +24 -0
  207. package/dist/compiler/android.js +14 -0
  208. package/dist/compiler/ar.cjs +23 -0
  209. package/dist/compiler/ar.js +11 -0
  210. package/dist/compiler/babylon.cjs +21 -0
  211. package/dist/compiler/babylon.js +15 -0
  212. package/dist/compiler/business-quest.cjs +43 -0
  213. package/dist/compiler/business-quest.js +4 -0
  214. package/dist/compiler/coco.cjs +27 -0
  215. package/dist/compiler/coco.js +4 -0
  216. package/dist/compiler/context.cjs +25 -0
  217. package/dist/compiler/context.d.ts +28 -0
  218. package/dist/compiler/context.js +8 -0
  219. package/dist/compiler/domain-block-utils.cjs +605 -0
  220. package/dist/compiler/domain-block-utils.js +11 -0
  221. package/dist/compiler/dtdl.cjs +27 -0
  222. package/dist/compiler/dtdl.js +11 -0
  223. package/dist/compiler/gltf-pipeline.cjs +39 -0
  224. package/dist/compiler/gltf-pipeline.js +4 -0
  225. package/dist/compiler/godot.cjs +18 -0
  226. package/dist/compiler/godot.js +12 -0
  227. package/dist/compiler/incremental.cjs +34 -0
  228. package/dist/compiler/incremental.js +9 -0
  229. package/dist/compiler/index.cjs +5860 -0
  230. package/dist/compiler/index.d.ts +322 -21
  231. package/dist/compiler/index.js +5525 -0
  232. package/dist/compiler/ios.cjs +23 -0
  233. package/dist/compiler/ios.js +13 -0
  234. package/dist/compiler/llm-provider-capabilities.cjs +25 -0
  235. package/dist/compiler/llm-provider-capabilities.d.ts +43 -0
  236. package/dist/compiler/llm-provider-capabilities.js +8 -0
  237. package/dist/compiler/multi-layer.cjs +24 -0
  238. package/dist/compiler/multi-layer.js +15 -0
  239. package/dist/compiler/nodetoy.cjs +23 -0
  240. package/dist/compiler/nodetoy.js +4 -0
  241. package/dist/compiler/openxr.cjs +19 -0
  242. package/dist/compiler/openxr.js +13 -0
  243. package/dist/compiler/playcanvas.cjs +19 -0
  244. package/dist/compiler/playcanvas.js +13 -0
  245. package/dist/compiler/r3f.cjs +38 -0
  246. package/dist/compiler/r3f.d.ts +22 -0
  247. package/dist/compiler/r3f.js +16 -0
  248. package/dist/compiler/remotion.cjs +23 -0
  249. package/dist/compiler/remotion.js +4 -0
  250. package/dist/compiler/reproducibility.cjs +39 -0
  251. package/dist/compiler/reproducibility.js +4 -0
  252. package/dist/compiler/sdf.cjs +24 -0
  253. package/dist/compiler/sdf.js +12 -0
  254. package/dist/compiler/semantic-scene.cjs +31 -0
  255. package/dist/compiler/semantic-scene.js +4 -0
  256. package/dist/compiler/state.cjs +21 -0
  257. package/dist/compiler/state.js +11 -0
  258. package/dist/compiler/trait-composition.cjs +30 -0
  259. package/dist/compiler/trait-composition.js +9 -0
  260. package/dist/compiler/unity.cjs +19 -0
  261. package/dist/compiler/unity.js +13 -0
  262. package/dist/compiler/unreal.cjs +23 -0
  263. package/dist/compiler/unreal.js +13 -0
  264. package/dist/compiler/urdf.cjs +52 -0
  265. package/dist/compiler/urdf.js +12 -0
  266. package/dist/compiler/usd-physics.cjs +26 -0
  267. package/dist/compiler/usd-physics.js +9 -0
  268. package/dist/compiler/visionos.cjs +19 -0
  269. package/dist/compiler/visionos.js +13 -0
  270. package/dist/compiler/vrchat.cjs +22 -0
  271. package/dist/compiler/vrchat.js +12 -0
  272. package/dist/compiler/vrr.cjs +24 -0
  273. package/dist/compiler/vrr.js +12 -0
  274. package/dist/compiler/wasm.cjs +36 -0
  275. package/dist/compiler/wasm.js +12 -0
  276. package/dist/compiler/webgpu.cjs +18 -0
  277. package/dist/compiler/webgpu.js +12 -0
  278. package/dist/coordinators/index.cjs +1266 -0
  279. package/dist/coordinators/index.d.ts +72 -1
  280. package/dist/coordinators/index.js +1259 -0
  281. package/dist/debugger.cjs +24 -0
  282. package/dist/debugger.js +11 -0
  283. package/dist/entries/interop.cjs +64 -0
  284. package/dist/entries/interop.js +7 -0
  285. package/dist/entries/scripting.cjs +55 -0
  286. package/dist/entries/scripting.js +10 -0
  287. package/dist/hololand/index.cjs +146 -0
  288. package/dist/hololand/index.d.ts +70 -0
  289. package/dist/hololand/index.js +5 -0
  290. package/dist/index.cjs +43233 -0
  291. package/dist/index.d.ts +976 -21
  292. package/dist/index.js +39995 -0
  293. package/dist/math/tropical-spmv.cjs +45 -0
  294. package/dist/math/tropical-spmv.js +4 -0
  295. package/dist/math/vec3.cjs +57 -0
  296. package/dist/math/vec3.js +4 -0
  297. package/dist/ml-dsa-FSKBTE3W.cjs +1265 -0
  298. package/dist/ml-dsa-Z7JDKW4L.js +1265 -0
  299. package/dist/paper-0c-spike/index.cjs +150 -0
  300. package/dist/paper-0c-spike/index.js +141 -0
  301. package/dist/parser.cjs +61 -0
  302. package/dist/parser.d.ts +11 -0
  303. package/dist/parser.js +12 -0
  304. package/dist/playwright-3AT3AKTV.cjs +98673 -0
  305. package/dist/playwright-VZPDVUEQ.js +98660 -0
  306. package/dist/reconstruction/index.cjs +153 -0
  307. package/dist/reconstruction/index.d.ts +29 -2
  308. package/dist/reconstruction/index.js +8 -0
  309. package/dist/runtime.cjs +316 -0
  310. package/dist/runtime.d.ts +61 -0
  311. package/dist/runtime.js +31 -0
  312. package/dist/self-improvement/index.cjs +563 -0
  313. package/dist/self-improvement/index.js +545 -0
  314. package/dist/storage/index.cjs +38 -0
  315. package/dist/storage/index.js +5 -0
  316. package/dist/testing.cjs +25 -0
  317. package/dist/testing.d.ts +70 -0
  318. package/dist/testing.js +4 -0
  319. package/dist/traitDocs/traitDocs.cjs +33 -0
  320. package/dist/traitDocs/traitDocs.js +7 -0
  321. package/dist/traits/botanical-lotus.cjs +41 -0
  322. package/dist/traits/botanical-lotus.d.ts +172 -0
  323. package/dist/traits/botanical-lotus.js +4 -0
  324. package/dist/traits/engines/index.cjs +520 -0
  325. package/dist/traits/engines/index.js +380 -0
  326. package/dist/traits/index.cjs +24409 -0
  327. package/dist/traits/index.d.ts +171 -35
  328. package/dist/traits/index.js +21634 -0
  329. package/dist/traits/simulation-solver-factory.cjs +13 -0
  330. package/dist/traits/simulation-solver-factory.d.ts +23 -0
  331. package/dist/traits/simulation-solver-factory.js +4 -0
  332. package/dist/traits/webcam-gaze.cjs +35 -0
  333. package/dist/traits/webcam-gaze.d.ts +17 -0
  334. package/dist/traits/webcam-gaze.js +4 -0
  335. package/dist/type-checker.cjs +19 -0
  336. package/dist/type-checker.js +6 -0
  337. package/dist/world/index.cjs +947 -0
  338. package/dist/world/index.d.ts +147 -0
  339. package/dist/world/index.js +939 -0
  340. package/dist/world-model/index.cjs +1446 -0
  341. package/dist/world-model/index.d.ts +119 -0
  342. package/dist/world-model/index.js +1414 -0
  343. package/dist/wot/index.cjs +29 -0
  344. package/dist/wot/index.js +4 -0
  345. package/package.json +93 -49
@@ -0,0 +1,781 @@
1
+ 'use strict';
2
+
3
+ var chunkAIA52I7T_cjs = require('./chunk-AIA52I7T.cjs');
4
+ var chunkXUUVDHIF_cjs = require('./chunk-XUUVDHIF.cjs');
5
+ var chunkKKP7JKN4_cjs = require('./chunk-KKP7JKN4.cjs');
6
+ var chunkHCCQLAA4_cjs = require('./chunk-HCCQLAA4.cjs');
7
+ var ans = require('@holoscript/core-types/ans');
8
+
9
+ // src/compiler/UnityCompiler.ts
10
+ var UnityCompiler_exports = {};
11
+ chunkHCCQLAA4_cjs.__export(UnityCompiler_exports, {
12
+ UnityCompiler: () => exports.UnityCompiler
13
+ });
14
+ exports.UnityCompiler = void 0;
15
+ var init_UnityCompiler = chunkHCCQLAA4_cjs.__esm({
16
+ "src/compiler/UnityCompiler.ts"() {
17
+ chunkKKP7JKN4_cjs.init_CompilerBase();
18
+ chunkXUUVDHIF_cjs.init_DomainBlockCompilerMixin();
19
+ chunkAIA52I7T_cjs.init_PlatformConditionalCompilerMixin();
20
+ exports.UnityCompiler = class extends chunkKKP7JKN4_cjs.CompilerBase {
21
+ constructor(options = {}) {
22
+ super();
23
+ this.compilerName = "UnityCompiler";
24
+ this.lines = [];
25
+ this.indentLevel = 0;
26
+ this.options = {
27
+ namespace: options.namespace || "HoloScene",
28
+ className: options.className || "GeneratedScene",
29
+ useURP: options.useURP ?? true,
30
+ indent: options.indent || " ",
31
+ provenanceHash: options.provenanceHash ?? "",
32
+ holomapPointCloud: options.holomapPointCloud
33
+ };
34
+ if (options.platformTarget) {
35
+ this._platformTarget = typeof options.platformTarget === "string" ? chunkAIA52I7T_cjs.createPlatformTarget(options.platformTarget) : options.platformTarget;
36
+ }
37
+ }
38
+ getRequiredCapability() {
39
+ return ans.ANSCapabilityPath.UNITY;
40
+ }
41
+ compile(composition, agentToken, outputPath) {
42
+ this.validateCompilerAccess(agentToken, outputPath);
43
+ if (this._platformTarget) {
44
+ const platformMixin = new chunkAIA52I7T_cjs.PlatformConditionalCompilerMixin();
45
+ composition = platformMixin.filterForPlatform(composition, this._platformTarget);
46
+ }
47
+ this.lines = [];
48
+ this.indentLevel = 0;
49
+ this.emit("// Auto-generated by HoloScript UnityCompiler");
50
+ this.emit(
51
+ `// Source: composition "${this.escapeStringValue(composition.name, "CSharp")}"`
52
+ );
53
+ this.emit("// Do not edit manually \u2014 regenerate from .holo source");
54
+ if (this.options.provenanceHash) {
55
+ this.emit(`// Provenance Hash: ${this.options.provenanceHash}`);
56
+ }
57
+ this.emit("");
58
+ this.emit("using UnityEngine;");
59
+ this.emit("using UnityEngine.UI;");
60
+ if (composition.timelines?.length) this.emit("using System.Collections;");
61
+ this.emit("");
62
+ this.emit(`namespace ${this.options.namespace}`);
63
+ this.emit("{");
64
+ this.indentLevel++;
65
+ this.emit(`public class ${this.options.className} : MonoBehaviour`);
66
+ this.emit("{");
67
+ this.indentLevel++;
68
+ if (composition.state) {
69
+ this.emit("// === State ===");
70
+ for (const prop of composition.state.properties) {
71
+ const csType = this.toCSharpType(prop.value);
72
+ const csVal = this.toCSharpValue(prop.value);
73
+ this.emit(
74
+ `private ${csType} ${this.escapeStringValue(prop.key, "CSharp")} = ${csVal};`
75
+ );
76
+ }
77
+ this.emit("");
78
+ }
79
+ this.emit("private void Awake()");
80
+ this.emit("{");
81
+ this.indentLevel++;
82
+ if (composition.environment) {
83
+ this.compileEnvironment(composition.environment);
84
+ }
85
+ if (composition.lights) {
86
+ for (const light of composition.lights) {
87
+ this.compileLight(light);
88
+ }
89
+ }
90
+ if (composition.camera) {
91
+ this.compileCamera(composition.camera);
92
+ }
93
+ if (composition.objects) {
94
+ for (const obj of composition.objects) {
95
+ this.compileObject(obj, "transform");
96
+ }
97
+ }
98
+ if (composition.spatialGroups) {
99
+ for (const group of composition.spatialGroups) {
100
+ this.compileSpatialGroup(group, "transform");
101
+ }
102
+ }
103
+ if (composition.audio) {
104
+ for (const audio of composition.audio) {
105
+ this.compileAudio(audio);
106
+ }
107
+ }
108
+ if (composition.zones) {
109
+ for (const zone of composition.zones) {
110
+ this.compileZone(zone);
111
+ }
112
+ }
113
+ if (composition.timelines) {
114
+ for (const tl of composition.timelines) {
115
+ if (tl.autoplay) {
116
+ this.emit(`StartCoroutine(${this.sanitizeName(tl.name)}Routine());`);
117
+ }
118
+ }
119
+ }
120
+ this.emitHolomapPointCloudLoader();
121
+ this.indentLevel--;
122
+ this.emit("}");
123
+ this.emit("");
124
+ if (composition.timelines) {
125
+ for (const tl of composition.timelines) {
126
+ this.compileTimeline(tl);
127
+ }
128
+ }
129
+ if (composition.effects) {
130
+ this.compileEffects(composition.effects);
131
+ }
132
+ if (composition.transitions) {
133
+ for (const tr of composition.transitions) {
134
+ this.compileTransition(tr);
135
+ }
136
+ }
137
+ if (composition.ui) {
138
+ this.compileUI(composition.ui);
139
+ }
140
+ this.compileDomainBlocks(composition);
141
+ this.indentLevel--;
142
+ this.emit("}");
143
+ this.indentLevel--;
144
+ this.emit("}");
145
+ return this.lines.join("\n");
146
+ }
147
+ emitHolomapPointCloudLoader() {
148
+ const h = this.options.holomapPointCloud;
149
+ if (!h || h.pointCount < 1) return;
150
+ this.emit(" // --- HoloMap point cloud (base64 \u2192 Mesh topology Points) ---");
151
+ this.emit(" {");
152
+ const posLit = this.chunkBase64CSharpLiteral(h.positionsB64);
153
+ const colLit = this.chunkBase64CSharpLiteral(h.colorsB64);
154
+ this.emit(` string holomapPosB64 = ${posLit};`);
155
+ this.emit(` string holomapColB64 = ${colLit};`);
156
+ this.emit(` int holomapN = ${h.pointCount};`);
157
+ this.emit(
158
+ " byte[] holomapPos = System.Convert.FromBase64String(holomapPosB64);"
159
+ );
160
+ this.emit(
161
+ " byte[] holomapCol = System.Convert.FromBase64String(holomapColB64);"
162
+ );
163
+ this.emit(" if (holomapPos.Length >= holomapN * 12 && holomapCol.Length >= holomapN * 3)");
164
+ this.emit(" {");
165
+ this.emit(
166
+ ' var holomapGo = new GameObject("HoloMapReconstructionPoints");'
167
+ );
168
+ this.emit(" holomapGo.transform.SetParent(transform, false);");
169
+ this.emit(" var mesh = new Mesh();");
170
+ this.emit(
171
+ " mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;"
172
+ );
173
+ this.emit(" var verts = new Vector3[holomapN];");
174
+ this.emit(" var cols = new Color32[holomapN];");
175
+ this.emit(" var idx = new int[holomapN];");
176
+ this.emit(" for (int i = 0; i < holomapN; i++)");
177
+ this.emit(" {");
178
+ this.emit(
179
+ " int p = i * 12; int c = i * 3;"
180
+ );
181
+ this.emit(
182
+ " verts[i] = new Vector3(System.BitConverter.ToSingle(holomapPos, p), System.BitConverter.ToSingle(holomapPos, p + 4), System.BitConverter.ToSingle(holomapPos, p + 8));"
183
+ );
184
+ this.emit(
185
+ " cols[i] = new Color32(holomapCol[c], holomapCol[c + 1], holomapCol[c + 2], 255);"
186
+ );
187
+ this.emit(" idx[i] = i;");
188
+ this.emit(" }");
189
+ this.emit(" mesh.vertices = verts;");
190
+ this.emit(" mesh.colors32 = cols;");
191
+ this.emit(" mesh.SetIndices(idx, MeshTopology.Points, 0, true);");
192
+ this.emit(" mesh.RecalculateBounds();");
193
+ this.emit(" var mf = holomapGo.AddComponent<MeshFilter>();");
194
+ this.emit(" mf.sharedMesh = mesh;");
195
+ this.emit(" var mr = holomapGo.AddComponent<MeshRenderer>();");
196
+ this.emit(
197
+ ' var sh = Shader.Find("Universal Render Pipeline/Unlit");'
198
+ );
199
+ this.emit(
200
+ ' if (sh == null) sh = Shader.Find("Unlit/Color");'
201
+ );
202
+ this.emit(' mr.sharedMaterial = sh != null ? new Material(sh) : new Material(Shader.Find("Hidden/InternalErrorShader"));');
203
+ this.emit(" }");
204
+ this.emit(" }");
205
+ }
206
+ /** Concatenated string literals so very large MCP payloads stay valid C#. */
207
+ chunkBase64CSharpLiteral(b64) {
208
+ const chunk = 4096;
209
+ if (b64.length <= chunk) return `"${b64}"`;
210
+ const parts = [];
211
+ for (let i = 0; i < b64.length; i += chunk) {
212
+ parts.push(`"${b64.slice(i, i + chunk)}"`);
213
+ }
214
+ return parts.join(" + ");
215
+ }
216
+ compileDomainBlocks(composition) {
217
+ const domainBlocks = composition.domainBlocks ?? [];
218
+ if (domainBlocks.length === 0) return;
219
+ this.emit("");
220
+ this.emit("// === v4.2 Domain Blocks ===");
221
+ let blockIdx = 0;
222
+ const compiled = chunkXUUVDHIF_cjs.compileDomainBlocks(
223
+ domainBlocks,
224
+ {
225
+ material: (block) => {
226
+ const mat = chunkXUUVDHIF_cjs.compileMaterialBlock(block);
227
+ const prefix = `db${blockIdx++}`;
228
+ return chunkXUUVDHIF_cjs.materialToUnity(mat, prefix);
229
+ },
230
+ physics: (block) => {
231
+ const phys = chunkXUUVDHIF_cjs.compilePhysicsBlock(block);
232
+ const prefix = `db${blockIdx++}`;
233
+ return chunkXUUVDHIF_cjs.physicsToUnity(phys, prefix);
234
+ },
235
+ vfx: (block) => {
236
+ const ps = chunkXUUVDHIF_cjs.compileParticleBlock(block);
237
+ const prefix = `db${blockIdx++}`;
238
+ return chunkXUUVDHIF_cjs.particlesToUnity(ps, prefix);
239
+ },
240
+ postfx: (block) => {
241
+ const pp = chunkXUUVDHIF_cjs.compilePostProcessingBlock(block);
242
+ return chunkXUUVDHIF_cjs.postProcessingToUnity(pp);
243
+ },
244
+ audio: (block) => {
245
+ const audio = chunkXUUVDHIF_cjs.compileAudioSourceBlock(block);
246
+ const prefix = `db${blockIdx++}`;
247
+ return chunkXUUVDHIF_cjs.audioSourceToUnity(audio, prefix);
248
+ },
249
+ weather: (block) => {
250
+ const weather = chunkXUUVDHIF_cjs.compileWeatherBlock(block);
251
+ return chunkXUUVDHIF_cjs.weatherToUnity(weather);
252
+ },
253
+ narrative: (block) => {
254
+ const narr = chunkXUUVDHIF_cjs.compileNarrativeBlock(block);
255
+ return chunkXUUVDHIF_cjs.narrativeToUnity(narr);
256
+ },
257
+ payment: (block) => {
258
+ const pay = chunkXUUVDHIF_cjs.compilePaymentBlock(block);
259
+ return chunkXUUVDHIF_cjs.paymentToUnity(pay);
260
+ },
261
+ healthcare: (block) => {
262
+ const h = chunkXUUVDHIF_cjs.compileHealthcareBlock(block);
263
+ return chunkXUUVDHIF_cjs.healthcareToUnity(h);
264
+ },
265
+ robotics: (block) => {
266
+ const r = chunkXUUVDHIF_cjs.compileRoboticsBlock(block);
267
+ return chunkXUUVDHIF_cjs.roboticsToUnity(r);
268
+ },
269
+ iot: (block) => chunkXUUVDHIF_cjs.iotToUnity(chunkXUUVDHIF_cjs.compileIoTBlock(block)),
270
+ dataviz: (block) => chunkXUUVDHIF_cjs.datavizToUnity(chunkXUUVDHIF_cjs.compileDataVizBlock(block)),
271
+ education: (block) => chunkXUUVDHIF_cjs.educationToUnity(chunkXUUVDHIF_cjs.compileEducationBlock(block)),
272
+ music: (block) => chunkXUUVDHIF_cjs.musicToUnity(chunkXUUVDHIF_cjs.compileMusicBlock(block)),
273
+ architecture: (block) => chunkXUUVDHIF_cjs.architectureToUnity(chunkXUUVDHIF_cjs.compileArchitectureBlock(block)),
274
+ web3: (block) => chunkXUUVDHIF_cjs.web3ToUnity(chunkXUUVDHIF_cjs.compileWeb3Block(block)),
275
+ procedural: (block) => chunkXUUVDHIF_cjs.proceduralToUnity(chunkXUUVDHIF_cjs.compileProceduralBlock(block)),
276
+ rendering: (block) => chunkXUUVDHIF_cjs.renderingToUnity(chunkXUUVDHIF_cjs.compileRenderingBlock(block)),
277
+ navigation: (block) => chunkXUUVDHIF_cjs.navigationToUnity(chunkXUUVDHIF_cjs.compileNavigationBlock(block)),
278
+ input: (block) => chunkXUUVDHIF_cjs.inputToUnity(chunkXUUVDHIF_cjs.compileInputBlock(block))
279
+ },
280
+ (block) => `// Domain block: ${block.domain}/${block.keyword} "${this.escapeStringValue(block.name, "CSharp")}"`
281
+ );
282
+ for (const line of compiled) {
283
+ for (const l of line.split("\n")) {
284
+ this.emit(l);
285
+ }
286
+ }
287
+ }
288
+ compileEnvironment(env) {
289
+ this.emit("// === Environment ===");
290
+ for (const prop of env.properties) {
291
+ if (prop.key === "preset" || prop.key === "skybox") {
292
+ this.emit(`RenderSettings.skybox = Resources.Load<Material>("Skybox/${prop.value}");`);
293
+ } else if (prop.key === "fog" && typeof prop.value === "object") {
294
+ const fog = prop.value;
295
+ this.emit("RenderSettings.fog = true;");
296
+ if (fog.color) this.emit(`RenderSettings.fogColor = ${this.toColor(fog.color)};`);
297
+ if (fog.near !== void 0) this.emit(`RenderSettings.fogStartDistance = ${fog.near}f;`);
298
+ if (fog.far !== void 0) this.emit(`RenderSettings.fogEndDistance = ${fog.far}f;`);
299
+ } else if (prop.key === "ambient_light") {
300
+ this.emit(`RenderSettings.ambientIntensity = ${prop.value}f;`);
301
+ }
302
+ }
303
+ this.emit("");
304
+ }
305
+ compileLight(light) {
306
+ const varName = this.sanitizeName(light.name);
307
+ this.emit(`// Light: ${this.escapeStringValue(light.name, "CSharp")}`);
308
+ this.emit(
309
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(light.name, "CSharp")}");`
310
+ );
311
+ this.emit(`${varName}GO.transform.SetParent(transform);`);
312
+ this.emit(`var ${varName} = ${varName}GO.AddComponent<Light>();`);
313
+ const typeMap = {
314
+ directional: "LightType.Directional",
315
+ point: "LightType.Point",
316
+ spot: "LightType.Spot",
317
+ area: "LightType.Area"
318
+ };
319
+ this.emit(`${varName}.type = ${typeMap[light.lightType] || "LightType.Directional"};`);
320
+ for (const prop of light.properties) {
321
+ if (prop.key === "color") {
322
+ this.emit(`${varName}.color = ${this.toColor(prop.value)};`);
323
+ } else if (prop.key === "intensity") {
324
+ this.emit(`${varName}.intensity = ${prop.value}f;`);
325
+ } else if (prop.key === "position" && Array.isArray(prop.value)) {
326
+ this.emit(`${varName}GO.transform.position = ${this.toVector3(prop.value)};`);
327
+ } else if (prop.key === "cast_shadow" || prop.key === "castShadow") {
328
+ this.emit(
329
+ `${varName}.shadows = ${prop.value ? "LightShadows.Soft" : "LightShadows.None"};`
330
+ );
331
+ } else if (prop.key === "angle") {
332
+ this.emit(`${varName}.spotAngle = ${prop.value * (180 / Math.PI)}f;`);
333
+ } else if (prop.key === "distance") {
334
+ this.emit(`${varName}.range = ${prop.value}f;`);
335
+ }
336
+ }
337
+ this.emit("");
338
+ }
339
+ compileCamera(camera) {
340
+ this.emit("// === Camera ===");
341
+ this.emit("var cam = Camera.main;");
342
+ this.emit(`cam.fieldOfView = ${this.findProp(camera.properties, "fov") || 60}f;`);
343
+ const pos = this.findProp(camera.properties, "position");
344
+ if (pos) this.emit(`cam.transform.position = ${this.toVector3(pos)};`);
345
+ const lookAt = this.findProp(camera.properties, "look_at") || this.findProp(camera.properties, "lookAt");
346
+ if (lookAt) this.emit(`cam.transform.LookAt(${this.toVector3(lookAt)});`);
347
+ const near = this.findProp(camera.properties, "near");
348
+ if (near) this.emit(`cam.nearClipPlane = ${near}f;`);
349
+ const far = this.findProp(camera.properties, "far");
350
+ if (far) this.emit(`cam.farClipPlane = ${far}f;`);
351
+ this.emit("");
352
+ }
353
+ compileObject(obj, parentVar) {
354
+ const varName = this.sanitizeName(obj.name);
355
+ const meshType = this.findObjProp(obj, "geometry") || this.findObjProp(obj, "mesh") || this.findObjProp(obj, "type") || "cube";
356
+ const isText = meshType === "text";
357
+ const isSparkles = meshType === "sparkles";
358
+ const isModel = meshType === "model" || !!this.findObjProp(obj, "model") || !!this.findObjProp(obj, "src") || !!this.findObjProp(obj, "source");
359
+ this.emit(`// Object: ${this.escapeStringValue(obj.name, "CSharp")}`);
360
+ if (isText) {
361
+ this.emit(
362
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(obj.name, "CSharp")}");`
363
+ );
364
+ this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
365
+ this.emit(`var ${varName}TM = ${varName}GO.AddComponent<TextMesh>();`);
366
+ const text = this.findObjProp(obj, "text");
367
+ if (text) this.emit(`${varName}TM.text = "${text}";`);
368
+ const fontSize = this.findObjProp(obj, "font_size");
369
+ if (fontSize) this.emit(`${varName}TM.fontSize = ${Math.round(fontSize * 100)};`);
370
+ const color = this.findObjProp(obj, "color");
371
+ if (color) this.emit(`${varName}TM.color = ${this.toColor(color)};`);
372
+ } else if (isModel) {
373
+ const src = this.findObjProp(obj, "model") || this.findObjProp(obj, "src") || this.findObjProp(obj, "source");
374
+ if (src) {
375
+ this.emit(`var ${varName}GO = Instantiate(Resources.Load<GameObject>("Models/${src}"));`);
376
+ } else {
377
+ this.emit(`// WARNING: geometry "model" without source \u2014 placeholder cube`);
378
+ this.emit(`var ${varName}GO = GameObject.CreatePrimitive(PrimitiveType.Cube);`);
379
+ }
380
+ this.emit(`${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`);
381
+ this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
382
+ } else if (isSparkles) {
383
+ this.emit(
384
+ `// Sparkles: use ParticleSystem for "${this.escapeStringValue(obj.name, "CSharp")}"`
385
+ );
386
+ this.emit(
387
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(obj.name, "CSharp")}");`
388
+ );
389
+ this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
390
+ this.emit(`${varName}GO.AddComponent<ParticleSystem>();`);
391
+ } else {
392
+ const primitiveMap = {
393
+ cube: "PrimitiveType.Cube",
394
+ box: "PrimitiveType.Cube",
395
+ sphere: "PrimitiveType.Sphere",
396
+ cylinder: "PrimitiveType.Cylinder",
397
+ plane: "PrimitiveType.Plane",
398
+ capsule: "PrimitiveType.Capsule"
399
+ };
400
+ const primitive = primitiveMap[meshType] || "PrimitiveType.Cube";
401
+ this.emit(`var ${varName}GO = GameObject.CreatePrimitive(${primitive});`);
402
+ this.emit(`${varName}GO.name = "${this.escapeStringValue(obj.name, "CSharp")}";`);
403
+ this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
404
+ }
405
+ const pos = this.findObjProp(obj, "position");
406
+ if (pos) this.emit(`${varName}GO.transform.localPosition = ${this.toVector3(pos)};`);
407
+ const rot = this.findObjProp(obj, "rotation");
408
+ if (rot) this.emit(`${varName}GO.transform.localEulerAngles = ${this.toVector3(rot)};`);
409
+ const scale = this.findObjProp(obj, "scale");
410
+ if (scale) this.emit(`${varName}GO.transform.localScale = ${this.toVector3(scale)};`);
411
+ const size = this.findObjProp(obj, "size");
412
+ if (size && !isText) {
413
+ if (Array.isArray(size)) {
414
+ this.emit(`${varName}GO.transform.localScale = ${this.toVector3(size)};`);
415
+ } else {
416
+ this.emit(`${varName}GO.transform.localScale = Vector3.one * ${size}f;`);
417
+ }
418
+ }
419
+ const material = this.findObjProp(obj, "material");
420
+ if (material && typeof material === "object" && !isText && !isModel) {
421
+ this.emit(`var ${varName}Mat = ${varName}GO.GetComponent<Renderer>().material;`);
422
+ const mat = material;
423
+ if (mat.color) this.emit(`${varName}Mat.color = ${this.toColor(mat.color)};`);
424
+ if (mat.roughness !== void 0)
425
+ this.emit(`${varName}Mat.SetFloat("_Smoothness", ${1 - mat.roughness}f);`);
426
+ if (mat.metalness !== void 0)
427
+ this.emit(`${varName}Mat.SetFloat("_Metallic", ${mat.metalness}f);`);
428
+ if (mat.emissive) {
429
+ this.emit(`${varName}Mat.EnableKeyword("_EMISSION");`);
430
+ this.emit(`${varName}Mat.SetColor("_EmissionColor", ${this.toColor(mat.emissive)});`);
431
+ }
432
+ }
433
+ if (obj.traits) {
434
+ for (const trait of obj.traits) {
435
+ if (trait.name === "collidable") {
436
+ this.emit(`// Collider already present from primitive`);
437
+ } else if (trait.name === "physics" || trait.name === "grabbable") {
438
+ this.emit(`var ${varName}RB = ${varName}GO.AddComponent<Rigidbody>();`);
439
+ if (trait.config?.mass) this.emit(`${varName}RB.mass = ${trait.config.mass}f;`);
440
+ } else if (trait.name === "portal") {
441
+ this.emit(
442
+ `// Portal: "${trait.config?.destination}" \u2014 implement via SceneManager.LoadScene()`
443
+ );
444
+ } else if (trait.name === "plane_detection") {
445
+ this.emit(`// @plane_detection \u2014 AR Foundation: ARPlaneManager`);
446
+ this.emit(`// ${varName}GO.AddComponent<UnityEngine.XR.ARFoundation.ARPlaneManager>();`);
447
+ } else if (trait.name === "mesh_detection") {
448
+ this.emit(`// @mesh_detection \u2014 AR Foundation: ARMeshManager`);
449
+ } else if (trait.name === "anchor") {
450
+ this.emit(`// @anchor \u2014 AR Foundation: ARAnchorManager`);
451
+ } else if (trait.name === "persistent_anchor" || trait.name === "shared_anchor") {
452
+ this.emit(
453
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 Azure Spatial Anchors or AR Foundation`
454
+ );
455
+ } else if (trait.name === "occlusion") {
456
+ this.emit(`// @occlusion \u2014 AR Foundation: AROcclusionManager`);
457
+ } else if (trait.name === "light_estimation") {
458
+ this.emit(
459
+ `// @light_estimation \u2014 AR Foundation: ARCameraManager.requestedLightEstimation`
460
+ );
461
+ } else if (trait.name === "geospatial" || trait.name === "geospatial_anchor" || trait.name === "terrain_anchor" || trait.name === "rooftop_anchor") {
462
+ this.emit(
463
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 ARCore Geospatial API`
464
+ );
465
+ } else if (trait.name === "cloth") {
466
+ this.emit(`var ${varName}Cloth = ${varName}GO.AddComponent<Cloth>();`);
467
+ if (trait.config?.stiffness)
468
+ this.emit(`${varName}Cloth.stretchingStiffness = ${trait.config.stiffness}f;`);
469
+ if (trait.config?.damping)
470
+ this.emit(`${varName}Cloth.damping = ${trait.config.damping}f;`);
471
+ } else if (trait.name === "wind") {
472
+ this.emit(`var ${varName}Wind = ${varName}GO.AddComponent<WindZone>();`);
473
+ if (trait.config?.strength)
474
+ this.emit(`${varName}Wind.windMain = ${trait.config.strength}f;`);
475
+ if (trait.config?.turbulence)
476
+ this.emit(`${varName}Wind.windTurbulence = ${trait.config.turbulence}f;`);
477
+ } else if (trait.name === "fluid" || trait.name === "soft_body" || trait.name === "rope" || trait.name === "chain" || trait.name === "buoyancy" || trait.name === "destruction") {
478
+ this.emit(
479
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 custom physics: ${JSON.stringify(trait.config || {})}`
480
+ );
481
+ } else if (trait.name === "reverb_zone") {
482
+ this.emit(`var ${varName}Reverb = ${varName}GO.AddComponent<AudioReverbZone>();`);
483
+ if (trait.config?.decay_time)
484
+ this.emit(`${varName}Reverb.decayTime = ${trait.config.decay_time}f;`);
485
+ } else if (trait.name === "audio_occlusion") {
486
+ this.emit(`${varName}GO.AddComponent<AudioLowPassFilter>();`);
487
+ this.emit(`// @audio_occlusion \u2014 raycast-based low-pass filter`);
488
+ } else if (trait.name === "ambisonics" || trait.name === "hrtf" || trait.name === "audio_portal" || trait.name === "audio_material" || trait.name === "head_tracked_audio") {
489
+ this.emit(
490
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 spatial audio: ${JSON.stringify(trait.config || {})}`
491
+ );
492
+ } else if (trait.name === "gaussian_splat" || trait.name === "nerf" || trait.name === "volumetric_video" || trait.name === "point_cloud" || trait.name === "photogrammetry") {
493
+ this.emit(
494
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 volumetric renderer: ${JSON.stringify(trait.config || {})}`
495
+ );
496
+ } else if (trait.name === "eye_tracking") {
497
+ this.emit(`// @eye_tracking \u2014 XR Interaction Toolkit: XREyeInteractor`);
498
+ } else if (trait.name === "hand_tracking") {
499
+ this.emit(`// @hand_tracking \u2014 XR Hands: XRHandTrackingSubsystem`);
500
+ } else if (trait.name === "body_tracking") {
501
+ this.emit(`// @body_tracking \u2014 XR Body Tracking subsystem`);
502
+ } else if (trait.name === "face_tracking") {
503
+ this.emit(`// @face_tracking \u2014 AR Foundation: ARFaceManager`);
504
+ } else if (trait.name === "accessible") {
505
+ this.emit(
506
+ `// @accessible(role: "${trait.config?.role || "generic"}") \u2014 Unity Accessibility`
507
+ );
508
+ } else if (trait.name === "spatial_persona" || trait.name === "shareplay") {
509
+ this.emit(
510
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 visionOS-specific; use Mirror/Photon for Unity multiplayer`
511
+ );
512
+ } else if (trait.name === "object_tracking") {
513
+ this.emit(`// @object_tracking \u2014 AR Foundation: ARTrackedObjectManager`);
514
+ } else if (trait.name === "scene_reconstruction") {
515
+ this.emit(`// @scene_reconstruction \u2014 AR Foundation: ARMeshManager`);
516
+ } else if (trait.name === "eye_tracked") {
517
+ this.emit(`// @eye_tracked \u2014 XR Interaction Toolkit: XREyeInteractor`);
518
+ } else if (trait.name === "eye_hand_fusion") {
519
+ this.emit(`// @eye_hand_fusion \u2014 combine XREyeInteractor + XRHandInteractorController`);
520
+ } else if (trait.name === "controlnet") {
521
+ const model = trait.config?.model || "canny";
522
+ this.emit(`// @controlnet(model: "${model}") \u2014 route to inference API or Unity Sentis`);
523
+ } else if (trait.name === "ai_texture_gen") {
524
+ const style = trait.config?.style || "photorealistic";
525
+ this.emit(`// @ai_texture_gen(style: "${style}") \u2014 Unity Sentis or external API`);
526
+ } else if (trait.name === "diffusion_realtime") {
527
+ this.emit(`// @diffusion_realtime \u2014 Unity Sentis real-time diffusion pipeline`);
528
+ } else if (trait.name === "ai_upscaling") {
529
+ const factor = trait.config?.factor || 2;
530
+ this.emit(`// @ai_upscaling(${factor}x) \u2014 Unity Sentis super-resolution model`);
531
+ } else if (trait.name === "ai_inpainting") {
532
+ this.emit(`// @ai_inpainting \u2014 Unity Sentis or API-based inpainting`);
533
+ } else if (trait.name === "neural_link" || trait.name === "neural_forge") {
534
+ this.emit(
535
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 ${JSON.stringify(trait.config || {})}`
536
+ );
537
+ } else if (trait.name === "embedding_search" || trait.name === "ai_npc_brain" || trait.name === "vector_db") {
538
+ this.emit(
539
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 AI knowledge: use external service or on-device model`
540
+ );
541
+ } else if (trait.name === "vision" || trait.name === "ai_vision") {
542
+ this.emit(
543
+ `// @${this.escapeStringValue(trait.name, "CSharp")} \u2014 Unity Barracuda / Sentis vision model`
544
+ );
545
+ } else if (trait.name === "spatial_awareness") {
546
+ this.emit(`// @spatial_awareness \u2014 AR Foundation scene understanding`);
547
+ } else if (trait.name === "neural_animation") {
548
+ this.emit(`// @neural_animation \u2014 Motion Matching (com.unity.animation.rigging)`);
549
+ } else {
550
+ this.emit(
551
+ `// @${this.escapeStringValue(trait.name, "CSharp")}: ${JSON.stringify(trait.config || {})}`
552
+ );
553
+ }
554
+ }
555
+ }
556
+ if (obj.children) {
557
+ for (const child of obj.children) {
558
+ this.compileObject(child, `${varName}GO.transform`);
559
+ }
560
+ }
561
+ this.emit("");
562
+ }
563
+ compileSpatialGroup(group, parentVar) {
564
+ const varName = this.sanitizeName(group.name);
565
+ this.emit(`// Spatial Group: ${this.escapeStringValue(group.name, "CSharp")}`);
566
+ this.emit(
567
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(group.name, "CSharp")}");`
568
+ );
569
+ this.emit(`${varName}GO.transform.SetParent(${parentVar});`);
570
+ for (const prop of group.properties) {
571
+ if (prop.key === "position" && Array.isArray(prop.value)) {
572
+ this.emit(`${varName}GO.transform.localPosition = ${this.toVector3(prop.value)};`);
573
+ }
574
+ }
575
+ for (const obj of group.objects) {
576
+ this.compileObject(obj, `${varName}GO.transform`);
577
+ }
578
+ if (group.groups) {
579
+ for (const sub of group.groups) {
580
+ this.compileSpatialGroup(sub, `${varName}GO.transform`);
581
+ }
582
+ }
583
+ this.emit("");
584
+ }
585
+ compileAudio(audio) {
586
+ const varName = this.sanitizeName(audio.name);
587
+ this.emit(`// Audio: ${this.escapeStringValue(audio.name, "CSharp")}`);
588
+ this.emit(
589
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(audio.name, "CSharp")}");`
590
+ );
591
+ this.emit(`${varName}GO.transform.SetParent(transform);`);
592
+ this.emit(`var ${varName}AS = ${varName}GO.AddComponent<AudioSource>();`);
593
+ for (const prop of audio.properties) {
594
+ if (prop.key === "src" || prop.key === "source") {
595
+ this.emit(`${varName}AS.clip = Resources.Load<AudioClip>("Audio/${prop.value}");`);
596
+ } else if (prop.key === "volume") {
597
+ this.emit(`${varName}AS.volume = ${prop.value}f;`);
598
+ } else if (prop.key === "loop") {
599
+ this.emit(`${varName}AS.loop = ${prop.value};`);
600
+ } else if (prop.key === "spatial") {
601
+ this.emit(`${varName}AS.spatialBlend = ${prop.value ? "1.0f" : "0.0f"};`);
602
+ } else if (prop.key === "position" && Array.isArray(prop.value)) {
603
+ this.emit(`${varName}GO.transform.position = ${this.toVector3(prop.value)};`);
604
+ } else if (prop.key === "distance") {
605
+ this.emit(`${varName}AS.maxDistance = ${prop.value}f;`);
606
+ }
607
+ }
608
+ this.emit(`${varName}AS.Play();`);
609
+ this.emit("");
610
+ }
611
+ compileZone(zone) {
612
+ const varName = this.sanitizeName(zone.name);
613
+ this.emit(`// Zone: ${this.escapeStringValue(zone.name, "CSharp")}`);
614
+ this.emit(
615
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(zone.name, "CSharp")}");`
616
+ );
617
+ this.emit(`${varName}GO.transform.SetParent(transform);`);
618
+ for (const prop of zone.properties) {
619
+ if (prop.key === "position" && Array.isArray(prop.value)) {
620
+ this.emit(`${varName}GO.transform.position = ${this.toVector3(prop.value)};`);
621
+ } else if (prop.key === "shape" && prop.value === "box") {
622
+ this.emit(`var ${varName}Col = ${varName}GO.AddComponent<BoxCollider>();`);
623
+ this.emit(`${varName}Col.isTrigger = true;`);
624
+ } else if (prop.key === "shape" && prop.value === "sphere") {
625
+ this.emit(`var ${varName}Col = ${varName}GO.AddComponent<SphereCollider>();`);
626
+ this.emit(`${varName}Col.isTrigger = true;`);
627
+ } else if (prop.key === "size" && Array.isArray(prop.value)) {
628
+ this.emit(
629
+ `${varName}GO.GetComponent<Collider>().bounds.size == ${this.toVector3(prop.value)}; // Set via scale`
630
+ );
631
+ } else if (prop.key === "radius") {
632
+ this.emit(`${varName}GO.GetComponent<SphereCollider>().radius = ${prop.value}f;`);
633
+ }
634
+ }
635
+ if (zone.handlers?.length) {
636
+ this.emit(
637
+ `// Zone handlers: ${zone.handlers.map((h) => h.event).join(", ")} \u2014 implement via OnTriggerEnter/Exit`
638
+ );
639
+ }
640
+ this.emit("");
641
+ }
642
+ compileTimeline(timeline) {
643
+ const varName = this.sanitizeName(timeline.name);
644
+ this.emit(`private IEnumerator ${varName}Routine()`);
645
+ this.emit("{");
646
+ this.indentLevel++;
647
+ let lastTime = 0;
648
+ for (const entry of timeline.entries) {
649
+ const delay = entry.time - lastTime;
650
+ if (delay > 0) {
651
+ this.emit(`yield return new WaitForSeconds(${delay}f);`);
652
+ }
653
+ if (entry.action.kind === "animate") {
654
+ this.emit(`// Animate "${entry.action.target}" \u2014 use DOTween or AnimationCurve`);
655
+ const props = entry.action.properties;
656
+ for (const [key, value] of Object.entries(props)) {
657
+ this.emit(`// ${key}: ${JSON.stringify(value)}`);
658
+ }
659
+ } else if (entry.action.kind === "emit") {
660
+ this.emit(`// Emit event: "${entry.action.event}"`);
661
+ } else if (entry.action.kind === "call") {
662
+ this.emit(`// Call: ${entry.action.method}(${entry.action.args?.join(", ") || ""})`);
663
+ }
664
+ lastTime = entry.time;
665
+ }
666
+ if (timeline.loop) {
667
+ this.emit(`StartCoroutine(${varName}Routine()); // loop`);
668
+ }
669
+ this.indentLevel--;
670
+ this.emit("}");
671
+ this.emit("");
672
+ }
673
+ compileEffects(effects) {
674
+ this.emit("// === Post-Processing (configure via URP Volume) ===");
675
+ for (const effect of effects.effects) {
676
+ this.emit(`// Effect: ${effect.effectType} \u2014 ${JSON.stringify(effect.properties)}`);
677
+ }
678
+ this.emit("");
679
+ }
680
+ compileTransition(tr) {
681
+ const varName = this.sanitizeName(tr.name);
682
+ this.emit(`public void ${varName}()`);
683
+ this.emit("{");
684
+ this.indentLevel++;
685
+ for (const prop of tr.properties) {
686
+ if (prop.key === "target") {
687
+ this.emit(`// Load scene: "${prop.value}"`);
688
+ this.emit(`UnityEngine.SceneManagement.SceneManager.LoadScene("${prop.value}");`);
689
+ } else if (prop.key === "effect") {
690
+ this.emit(`// Transition effect: ${prop.value}`);
691
+ } else if (prop.key === "duration") {
692
+ this.emit(`// Duration: ${prop.value}s`);
693
+ }
694
+ }
695
+ this.indentLevel--;
696
+ this.emit("}");
697
+ this.emit("");
698
+ }
699
+ compileUI(ui) {
700
+ this.emit("// === UI Setup ===");
701
+ this.emit("// Create Canvas for HUD overlay");
702
+ this.emit('var canvasGO = new GameObject("HoloUI");');
703
+ this.emit("canvasGO.transform.SetParent(transform);");
704
+ this.emit("var canvas = canvasGO.AddComponent<Canvas>();");
705
+ this.emit("canvas.renderMode = RenderMode.ScreenSpaceOverlay;");
706
+ this.emit("canvasGO.AddComponent<CanvasScaler>();");
707
+ this.emit("");
708
+ for (const el of ui.elements) {
709
+ const varName = this.sanitizeName(el.name);
710
+ const elType = el.properties.find((p) => p.key === "type")?.value;
711
+ this.emit(
712
+ `// UI Element: ${this.escapeStringValue(el.name, "CSharp")} (${elType})`
713
+ );
714
+ this.emit(
715
+ `var ${varName}GO = new GameObject("${this.escapeStringValue(el.name, "CSharp")}");`
716
+ );
717
+ this.emit(`${varName}GO.transform.SetParent(canvasGO.transform);`);
718
+ if (elType === "text") {
719
+ this.emit(`var ${varName}Text = ${varName}GO.AddComponent<Text>();`);
720
+ const text = el.properties.find((p) => p.key === "text")?.value;
721
+ if (text) this.emit(`${varName}Text.text = "${text}";`);
722
+ } else if (elType === "progress") {
723
+ this.emit(`var ${varName}Slider = ${varName}GO.AddComponent<Slider>();`);
724
+ }
725
+ this.emit("");
726
+ }
727
+ }
728
+ // ─── Helpers ───────────────────────────────────────────────────────────
729
+ emit(line) {
730
+ this.lines.push(this.options.indent.repeat(this.indentLevel) + line);
731
+ }
732
+ sanitizeName(name) {
733
+ return name.replace(/[^a-zA-Z0-9_]/g, "_");
734
+ }
735
+ toVector3(arr) {
736
+ if (Array.isArray(arr) && arr.length >= 3) {
737
+ return `new Vector3(${arr[0]}f, ${arr[1]}f, ${arr[2]}f)`;
738
+ }
739
+ if (Array.isArray(arr) && arr.length === 2) {
740
+ return `new Vector2(${arr[0]}f, ${arr[1]}f)`;
741
+ }
742
+ return `new Vector3(${arr}f, ${arr}f, ${arr}f)`;
743
+ }
744
+ toColor(value) {
745
+ if (typeof value === "string" && value.startsWith("#")) {
746
+ const hex = value.slice(1);
747
+ const r = parseInt(hex.substring(0, 2), 16) / 255;
748
+ const g = parseInt(hex.substring(2, 4), 16) / 255;
749
+ const b = parseInt(hex.substring(4, 6), 16) / 255;
750
+ return `new Color(${r.toFixed(3)}f, ${g.toFixed(3)}f, ${b.toFixed(3)}f)`;
751
+ }
752
+ return `Color.white`;
753
+ }
754
+ toCSharpType(value) {
755
+ if (typeof value === "number") return Number.isInteger(value) ? "int" : "float";
756
+ if (typeof value === "boolean") return "bool";
757
+ if (typeof value === "string") return "string";
758
+ if (Array.isArray(value)) return "object[]";
759
+ return "object";
760
+ }
761
+ toCSharpValue(value) {
762
+ if (typeof value === "number") return Number.isInteger(value) ? `${value}` : `${value}f`;
763
+ if (typeof value === "boolean") return value ? "true" : "false";
764
+ if (typeof value === "string") return `"${this.escapeStringValue(value, "CSharp")}"`;
765
+ if (value === null) return "null";
766
+ return "null";
767
+ }
768
+ findProp(props, key) {
769
+ return props?.find((p) => p.key === key)?.value;
770
+ }
771
+ findObjProp(obj, key) {
772
+ return obj.properties?.find((p) => p.key === key)?.value;
773
+ }
774
+ };
775
+ }
776
+ });
777
+
778
+ exports.UnityCompiler_exports = UnityCompiler_exports;
779
+ exports.init_UnityCompiler = init_UnityCompiler;
780
+ //# sourceMappingURL=chunk-25IQCHTO.cjs.map
781
+ //# sourceMappingURL=chunk-25IQCHTO.cjs.map