nucleation 0.10.21 → 0.10.23

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 (314) hide show
  1. package/BlockPos.mjs +1 -0
  2. package/Dimensions.mjs +1 -0
  3. package/FieldRange.mjs +1 -0
  4. package/ItemScale.mjs +1 -0
  5. package/MeshBounds.mjs +1 -0
  6. package/MeshProgress.mjs +1 -0
  7. package/README.md +12 -0
  8. package/RegionBounds.mjs +1 -0
  9. package/Schematic.d.mts +32 -0
  10. package/Schematic.d.ts +32 -0
  11. package/Schematic.mjs +100 -0
  12. package/SdfBounds.mjs +1 -0
  13. package/SdfNormal.mjs +1 -0
  14. package/TextureInfo.mjs +1 -0
  15. package/diplomat-runtime.mjs +19 -14
  16. package/nucleation.wasm +0 -0
  17. package/package.json +7 -2
  18. package/renderer/AnimationEffect.d.mts +44 -0
  19. package/renderer/AnimationEffect.d.ts +44 -0
  20. package/renderer/AnimationEffect.mjs +204 -0
  21. package/renderer/Autostack.d.mts +43 -0
  22. package/renderer/Autostack.d.ts +43 -0
  23. package/renderer/Autostack.mjs +134 -0
  24. package/renderer/BlockPos.d.mts +28 -0
  25. package/renderer/BlockPos.d.ts +28 -0
  26. package/renderer/BlockPos.mjs +130 -0
  27. package/renderer/BlockState.d.mts +39 -0
  28. package/renderer/BlockState.d.ts +39 -0
  29. package/renderer/BlockState.mjs +134 -0
  30. package/renderer/Blocks.d.mts +91 -0
  31. package/renderer/Blocks.d.ts +91 -0
  32. package/renderer/Blocks.mjs +308 -0
  33. package/renderer/Brush.d.mts +99 -0
  34. package/renderer/Brush.d.ts +99 -0
  35. package/renderer/Brush.mjs +335 -0
  36. package/renderer/BuildAnimation.d.mts +179 -0
  37. package/renderer/BuildAnimation.d.ts +179 -0
  38. package/renderer/BuildAnimation.mjs +1148 -0
  39. package/renderer/BuildingTool.d.mts +46 -0
  40. package/renderer/BuildingTool.d.ts +46 -0
  41. package/renderer/BuildingTool.mjs +121 -0
  42. package/renderer/CellExecutor.d.mts +51 -0
  43. package/renderer/CellExecutor.d.ts +51 -0
  44. package/renderer/CellExecutor.mjs +171 -0
  45. package/renderer/CellularSdfConfig.d.mts +22 -0
  46. package/renderer/CellularSdfConfig.d.ts +22 -0
  47. package/renderer/CellularSdfConfig.mjs +69 -0
  48. package/renderer/ChunkMeshResult.d.mts +75 -0
  49. package/renderer/ChunkMeshResult.d.ts +75 -0
  50. package/renderer/ChunkMeshResult.mjs +253 -0
  51. package/renderer/CircuitBuilder.d.mts +118 -0
  52. package/renderer/CircuitBuilder.d.ts +118 -0
  53. package/renderer/CircuitBuilder.mjs +516 -0
  54. package/renderer/Curve3D.d.mts +27 -0
  55. package/renderer/Curve3D.d.ts +27 -0
  56. package/renderer/Curve3D.mjs +101 -0
  57. package/renderer/DefinitionRegion.d.mts +274 -0
  58. package/renderer/DefinitionRegion.d.ts +274 -0
  59. package/renderer/DefinitionRegion.mjs +973 -0
  60. package/renderer/Design.d.mts +348 -0
  61. package/renderer/Design.d.ts +348 -0
  62. package/renderer/Design.mjs +1334 -0
  63. package/renderer/Diff.d.mts +88 -0
  64. package/renderer/Diff.d.ts +88 -0
  65. package/renderer/Diff.mjs +316 -0
  66. package/renderer/Dimensions.d.mts +28 -0
  67. package/renderer/Dimensions.d.ts +28 -0
  68. package/renderer/Dimensions.mjs +130 -0
  69. package/renderer/DistanceField.d.mts +39 -0
  70. package/renderer/DistanceField.d.ts +39 -0
  71. package/renderer/DistanceField.mjs +114 -0
  72. package/renderer/ExecutionMode.d.mts +42 -0
  73. package/renderer/ExecutionMode.d.ts +42 -0
  74. package/renderer/ExecutionMode.mjs +127 -0
  75. package/renderer/Field3.d.mts +40 -0
  76. package/renderer/Field3.d.ts +40 -0
  77. package/renderer/Field3.mjs +160 -0
  78. package/renderer/FieldProgram.d.mts +40 -0
  79. package/renderer/FieldProgram.d.ts +40 -0
  80. package/renderer/FieldProgram.mjs +167 -0
  81. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  82. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  83. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  84. package/renderer/FieldProgramBuilder.d.mts +104 -0
  85. package/renderer/FieldProgramBuilder.d.ts +104 -0
  86. package/renderer/FieldProgramBuilder.mjs +486 -0
  87. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  88. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  89. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  90. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  91. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  92. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  93. package/renderer/FieldProgramValueType.d.mts +25 -0
  94. package/renderer/FieldProgramValueType.d.ts +25 -0
  95. package/renderer/FieldProgramValueType.mjs +75 -0
  96. package/renderer/FieldRange.d.mts +15 -0
  97. package/renderer/FieldRange.d.ts +15 -0
  98. package/renderer/FieldRange.mjs +109 -0
  99. package/renderer/Fingerprint.d.mts +44 -0
  100. package/renderer/Fingerprint.d.ts +44 -0
  101. package/renderer/Fingerprint.mjs +197 -0
  102. package/renderer/GeneratedChunk.d.mts +35 -0
  103. package/renderer/GeneratedChunk.d.ts +35 -0
  104. package/renderer/GeneratedChunk.mjs +178 -0
  105. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  106. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  107. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  108. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  109. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  110. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  111. package/renderer/GeneratedWorldStream.d.mts +28 -0
  112. package/renderer/GeneratedWorldStream.d.ts +28 -0
  113. package/renderer/GeneratedWorldStream.mjs +86 -0
  114. package/renderer/Geo.d.mts +41 -0
  115. package/renderer/Geo.d.ts +41 -0
  116. package/renderer/Geo.mjs +121 -0
  117. package/renderer/Hdl.d.mts +56 -0
  118. package/renderer/Hdl.d.ts +56 -0
  119. package/renderer/Hdl.mjs +163 -0
  120. package/renderer/InterpolationSpace.d.mts +25 -0
  121. package/renderer/InterpolationSpace.d.ts +25 -0
  122. package/renderer/InterpolationSpace.mjs +73 -0
  123. package/renderer/IoLayout.d.mts +26 -0
  124. package/renderer/IoLayout.d.ts +26 -0
  125. package/renderer/IoLayout.mjs +81 -0
  126. package/renderer/IoLayoutBuilder.d.mts +73 -0
  127. package/renderer/IoLayoutBuilder.d.ts +73 -0
  128. package/renderer/IoLayoutBuilder.mjs +315 -0
  129. package/renderer/IoType.d.mts +41 -0
  130. package/renderer/IoType.d.ts +41 -0
  131. package/renderer/IoType.mjs +125 -0
  132. package/renderer/ItemModelConfig.d.mts +65 -0
  133. package/renderer/ItemModelConfig.d.ts +65 -0
  134. package/renderer/ItemModelConfig.mjs +223 -0
  135. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  136. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  137. package/renderer/ItemModelPackBuilder.mjs +104 -0
  138. package/renderer/ItemModelResult.d.mts +72 -0
  139. package/renderer/ItemModelResult.d.ts +72 -0
  140. package/renderer/ItemModelResult.mjs +268 -0
  141. package/renderer/ItemScale.d.mts +31 -0
  142. package/renderer/ItemScale.d.ts +31 -0
  143. package/renderer/ItemScale.mjs +133 -0
  144. package/renderer/LayoutFunction.d.mts +52 -0
  145. package/renderer/LayoutFunction.d.ts +52 -0
  146. package/renderer/LayoutFunction.mjs +159 -0
  147. package/renderer/MchprsWorld.d.mts +131 -0
  148. package/renderer/MchprsWorld.d.ts +131 -0
  149. package/renderer/MchprsWorld.mjs +423 -0
  150. package/renderer/MeshBounds.d.mts +40 -0
  151. package/renderer/MeshBounds.d.ts +40 -0
  152. package/renderer/MeshBounds.mjs +181 -0
  153. package/renderer/MeshConfig.d.mts +101 -0
  154. package/renderer/MeshConfig.d.ts +101 -0
  155. package/renderer/MeshConfig.mjs +306 -0
  156. package/renderer/MeshJob.d.mts +44 -0
  157. package/renderer/MeshJob.d.ts +44 -0
  158. package/renderer/MeshJob.mjs +116 -0
  159. package/renderer/MeshPhase.d.mts +38 -0
  160. package/renderer/MeshPhase.d.ts +38 -0
  161. package/renderer/MeshPhase.mjs +90 -0
  162. package/renderer/MeshProgress.d.mts +32 -0
  163. package/renderer/MeshProgress.d.ts +32 -0
  164. package/renderer/MeshProgress.mjs +134 -0
  165. package/renderer/MeshResult.d.mts +76 -0
  166. package/renderer/MeshResult.d.ts +76 -0
  167. package/renderer/MeshResult.mjs +269 -0
  168. package/renderer/MultiMeshResult.d.mts +50 -0
  169. package/renderer/MultiMeshResult.d.ts +50 -0
  170. package/renderer/MultiMeshResult.mjs +166 -0
  171. package/renderer/Nbt.d.mts +50 -0
  172. package/renderer/Nbt.d.ts +50 -0
  173. package/renderer/Nbt.mjs +161 -0
  174. package/renderer/NucleationError.d.mts +53 -0
  175. package/renderer/NucleationError.d.ts +53 -0
  176. package/renderer/NucleationError.mjs +136 -0
  177. package/renderer/OutputCondition.d.mts +45 -0
  178. package/renderer/OutputCondition.d.ts +45 -0
  179. package/renderer/OutputCondition.mjs +129 -0
  180. package/renderer/Palette.d.mts +157 -0
  181. package/renderer/Palette.d.ts +157 -0
  182. package/renderer/Palette.mjs +487 -0
  183. package/renderer/PaletteBuilder.d.mts +119 -0
  184. package/renderer/PaletteBuilder.d.ts +119 -0
  185. package/renderer/PaletteBuilder.mjs +457 -0
  186. package/renderer/README.md +67 -0
  187. package/renderer/RawMeshExport.d.mts +74 -0
  188. package/renderer/RawMeshExport.d.ts +74 -0
  189. package/renderer/RawMeshExport.mjs +243 -0
  190. package/renderer/RedstoneGraph.d.mts +58 -0
  191. package/renderer/RedstoneGraph.d.ts +58 -0
  192. package/renderer/RedstoneGraph.mjs +242 -0
  193. package/renderer/RegionBounds.d.mts +41 -0
  194. package/renderer/RegionBounds.d.ts +41 -0
  195. package/renderer/RegionBounds.mjs +182 -0
  196. package/renderer/RenderConfig.d.mts +101 -0
  197. package/renderer/RenderConfig.d.ts +101 -0
  198. package/renderer/RenderConfig.mjs +271 -0
  199. package/renderer/Renderer.d.mts +51 -0
  200. package/renderer/Renderer.d.ts +51 -0
  201. package/renderer/Renderer.mjs +219 -0
  202. package/renderer/ResourcePack.d.mts +105 -0
  203. package/renderer/ResourcePack.d.ts +105 -0
  204. package/renderer/ResourcePack.mjs +447 -0
  205. package/renderer/ResourcePackList.d.mts +32 -0
  206. package/renderer/ResourcePackList.d.ts +32 -0
  207. package/renderer/ResourcePackList.mjs +96 -0
  208. package/renderer/Routing.d.mts +66 -0
  209. package/renderer/Routing.d.ts +66 -0
  210. package/renderer/Routing.mjs +220 -0
  211. package/renderer/Schematic.d.mts +977 -0
  212. package/renderer/Schematic.d.ts +977 -0
  213. package/renderer/Schematic.mjs +3820 -0
  214. package/renderer/SchematicBuilder.d.mts +103 -0
  215. package/renderer/SchematicBuilder.d.ts +103 -0
  216. package/renderer/SchematicBuilder.mjs +401 -0
  217. package/renderer/SchematicRegions.d.mts +93 -0
  218. package/renderer/SchematicRegions.d.ts +93 -0
  219. package/renderer/SchematicRegions.mjs +411 -0
  220. package/renderer/SchematicSplitResult.d.mts +26 -0
  221. package/renderer/SchematicSplitResult.d.ts +26 -0
  222. package/renderer/SchematicSplitResult.mjs +84 -0
  223. package/renderer/Scripting.d.mts +40 -0
  224. package/renderer/Scripting.d.ts +40 -0
  225. package/renderer/Scripting.mjs +138 -0
  226. package/renderer/Sdf.d.mts +234 -0
  227. package/renderer/Sdf.d.ts +234 -0
  228. package/renderer/Sdf.mjs +1234 -0
  229. package/renderer/SdfAxis.d.mts +25 -0
  230. package/renderer/SdfAxis.d.ts +25 -0
  231. package/renderer/SdfAxis.mjs +75 -0
  232. package/renderer/SdfBounds.d.mts +19 -0
  233. package/renderer/SdfBounds.d.ts +19 -0
  234. package/renderer/SdfBounds.mjs +161 -0
  235. package/renderer/SdfCellMode.d.mts +26 -0
  236. package/renderer/SdfCellMode.d.ts +26 -0
  237. package/renderer/SdfCellMode.mjs +78 -0
  238. package/renderer/SdfNormal.d.mts +16 -0
  239. package/renderer/SdfNormal.d.ts +16 -0
  240. package/renderer/SdfNormal.mjs +122 -0
  241. package/renderer/Shape.d.mts +143 -0
  242. package/renderer/Shape.d.ts +143 -0
  243. package/renderer/Shape.mjs +458 -0
  244. package/renderer/SortStrategy.d.mts +86 -0
  245. package/renderer/SortStrategy.d.ts +86 -0
  246. package/renderer/SortStrategy.mjs +272 -0
  247. package/renderer/Store.d.mts +83 -0
  248. package/renderer/Store.d.ts +83 -0
  249. package/renderer/Store.mjs +369 -0
  250. package/renderer/StoreIo.d.mts +71 -0
  251. package/renderer/StoreIo.d.ts +71 -0
  252. package/renderer/StoreIo.mjs +292 -0
  253. package/renderer/TextureAtlas.d.mts +40 -0
  254. package/renderer/TextureAtlas.d.ts +40 -0
  255. package/renderer/TextureAtlas.mjs +122 -0
  256. package/renderer/TextureInfo.d.mts +34 -0
  257. package/renderer/TextureInfo.d.ts +34 -0
  258. package/renderer/TextureInfo.mjs +149 -0
  259. package/renderer/TickSettleMode.d.mts +34 -0
  260. package/renderer/TickSettleMode.d.ts +34 -0
  261. package/renderer/TickSettleMode.mjs +84 -0
  262. package/renderer/TickSimulation.d.mts +572 -0
  263. package/renderer/TickSimulation.d.ts +572 -0
  264. package/renderer/TickSimulation.mjs +1299 -0
  265. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  266. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  267. package/renderer/TypedCircuitExecutor.mjs +378 -0
  268. package/renderer/Value.d.mts +73 -0
  269. package/renderer/Value.d.ts +73 -0
  270. package/renderer/Value.mjs +275 -0
  271. package/renderer/VideoConfig.d.mts +15 -0
  272. package/renderer/VideoConfig.d.ts +15 -0
  273. package/renderer/VideoConfig.mjs +44 -0
  274. package/renderer/VoxelModel.d.mts +34 -0
  275. package/renderer/VoxelModel.d.ts +34 -0
  276. package/renderer/VoxelModel.mjs +113 -0
  277. package/renderer/Voxelizer.d.mts +80 -0
  278. package/renderer/Voxelizer.d.ts +80 -0
  279. package/renderer/Voxelizer.mjs +261 -0
  280. package/renderer/WorldChunkView.d.mts +75 -0
  281. package/renderer/WorldChunkView.d.ts +75 -0
  282. package/renderer/WorldChunkView.mjs +224 -0
  283. package/renderer/WorldGenerator.d.mts +75 -0
  284. package/renderer/WorldGenerator.d.ts +75 -0
  285. package/renderer/WorldGenerator.mjs +255 -0
  286. package/renderer/WorldSink.d.mts +50 -0
  287. package/renderer/WorldSink.d.ts +50 -0
  288. package/renderer/WorldSink.mjs +177 -0
  289. package/renderer/WorldStream.d.mts +45 -0
  290. package/renderer/WorldStream.d.ts +45 -0
  291. package/renderer/WorldStream.mjs +184 -0
  292. package/renderer/WsPartitionHints.d.mts +29 -0
  293. package/renderer/WsPartitionHints.d.ts +29 -0
  294. package/renderer/WsPartitionHints.mjs +102 -0
  295. package/renderer/WsProfile.d.mts +46 -0
  296. package/renderer/WsProfile.d.ts +46 -0
  297. package/renderer/WsProfile.mjs +152 -0
  298. package/renderer/WsRunResult.d.mts +83 -0
  299. package/renderer/WsRunResult.d.ts +83 -0
  300. package/renderer/WsRunResult.mjs +326 -0
  301. package/renderer/WsSegmentJob.d.mts +28 -0
  302. package/renderer/WsSegmentJob.d.ts +28 -0
  303. package/renderer/WsSegmentJob.mjs +81 -0
  304. package/renderer/diplomat-runtime.d.mts +15 -0
  305. package/renderer/diplomat-runtime.d.ts +15 -0
  306. package/renderer/diplomat-runtime.mjs +779 -0
  307. package/renderer/diplomat-wasm.mjs +52 -0
  308. package/renderer/diplomat.config.mjs +5 -0
  309. package/renderer/index.d.mts +193 -0
  310. package/renderer/index.d.ts +193 -0
  311. package/renderer/index.mjs +196 -0
  312. package/renderer/nucleation.wasm +0 -0
  313. package/renderer/veneer/design.d.ts +167 -0
  314. package/renderer/veneer/design.mjs +480 -0
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { Schematic } from "./Schematic.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Namespace for the script-runner free functions of the old ABI
10
+ * (`run_lua_script`, `run_js_script`, `run_script`).
11
+ */
12
+ export class Scripting {
13
+ /** @internal */
14
+ get ffiValue(): pointer;
15
+ /** @internal */
16
+ constructor();
17
+
18
+
19
+ /**
20
+ * Run a Lua script file. Returns the schematic the script assigns to
21
+ * `result`; `NotFound` if it produced none, `Parse` if it failed, and
22
+ * `InvalidArgument` when built without the `scripting-lua` feature.
23
+ */
24
+ static runLuaScript(path: string): Schematic;
25
+
26
+ /**
27
+ * Run a JS script file. Returns the schematic the script assigns to
28
+ * `result`; `NotFound` if it produced none, `Parse` if it failed, and
29
+ * `InvalidArgument` when built without the `scripting-js` feature.
30
+ */
31
+ static runJsScript(path: string): Schematic;
32
+
33
+ /**
34
+ * Run a script file, auto-detecting the engine by extension (`.lua` or
35
+ * `.js`). Returns the schematic the script assigns to `result`; `NotFound`
36
+ * if it produced none, `Parse` if it failed (including unsupported
37
+ * extensions).
38
+ */
39
+ static runScript(path: string): Schematic;
40
+ }
@@ -0,0 +1,138 @@
1
+ // generated by diplomat-tool
2
+ import { NucleationError } from "./NucleationError.mjs"
3
+ import { Schematic } from "./Schematic.mjs"
4
+ import wasm from "./diplomat-wasm.mjs";
5
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
6
+
7
+ const Scripting_box_destroy_registry = new FinalizationRegistry((ptr) => {
8
+ wasm.Scripting_destroy(ptr);
9
+ });
10
+
11
+ /**
12
+ * Namespace for the script-runner free functions of the old ABI
13
+ * (`run_lua_script`, `run_js_script`, `run_script`).
14
+ */
15
+ export class Scripting {
16
+ // Internal ptr reference:
17
+ #ptr = null;
18
+
19
+ // Lifetimes are only to keep dependencies alive.
20
+ // Since JS won't garbage collect until there are no incoming edges.
21
+ #selfEdge = [];
22
+
23
+ #internalConstructor(symbol, ptr, selfEdge) {
24
+ if (symbol !== diplomatRuntime.internalConstructor) {
25
+ console.error("Scripting is an Opaque type. You cannot call its constructor.");
26
+ return;
27
+ }
28
+ this.#ptr = ptr;
29
+ this.#selfEdge = selfEdge;
30
+
31
+ // Are we being borrowed? If not, we can register.
32
+ if (this.#selfEdge.length === 0) {
33
+ Scripting_box_destroy_registry.register(this, this.#ptr);
34
+ }
35
+
36
+ return this;
37
+ }
38
+ /** @internal */
39
+ get ffiValue() {
40
+ return this.#ptr;
41
+ }
42
+
43
+
44
+ /**
45
+ * Run a Lua script file. Returns the schematic the script assigns to
46
+ * `result`; `NotFound` if it produced none, `Parse` if it failed, and
47
+ * `InvalidArgument` when built without the `scripting-lua` feature.
48
+ */
49
+ static runLuaScript(path) {
50
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
51
+
52
+ const pathSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, path)));
53
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
54
+
55
+
56
+ const result = wasm.Scripting_run_lua_script(diplomatReceive.buffer, pathSlice.ptr);
57
+
58
+ try {
59
+ if (!diplomatReceive.resultFlag) {
60
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
61
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
62
+ }
63
+ return new Schematic(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
64
+ }
65
+
66
+ finally {
67
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
68
+ functionCleanupArena.free();
69
+
70
+ diplomatReceive.free();
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Run a JS script file. Returns the schematic the script assigns to
76
+ * `result`; `NotFound` if it produced none, `Parse` if it failed, and
77
+ * `InvalidArgument` when built without the `scripting-js` feature.
78
+ */
79
+ static runJsScript(path) {
80
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
81
+
82
+ const pathSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, path)));
83
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
84
+
85
+
86
+ const result = wasm.Scripting_run_js_script(diplomatReceive.buffer, pathSlice.ptr);
87
+
88
+ try {
89
+ if (!diplomatReceive.resultFlag) {
90
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
91
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
92
+ }
93
+ return new Schematic(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
94
+ }
95
+
96
+ finally {
97
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
98
+ functionCleanupArena.free();
99
+
100
+ diplomatReceive.free();
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Run a script file, auto-detecting the engine by extension (`.lua` or
106
+ * `.js`). Returns the schematic the script assigns to `result`; `NotFound`
107
+ * if it produced none, `Parse` if it failed (including unsupported
108
+ * extensions).
109
+ */
110
+ static runScript(path) {
111
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
112
+
113
+ const pathSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, path)));
114
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
115
+
116
+
117
+ const result = wasm.Scripting_run_script(diplomatReceive.buffer, pathSlice.ptr);
118
+
119
+ try {
120
+ if (!diplomatReceive.resultFlag) {
121
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
122
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
123
+ }
124
+ return new Schematic(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
125
+ }
126
+
127
+ finally {
128
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
129
+ functionCleanupArena.free();
130
+
131
+ diplomatReceive.free();
132
+ }
133
+ }
134
+
135
+ constructor(symbol, ptr, selfEdge) {
136
+ return this.#internalConstructor(...arguments)
137
+ }
138
+ }
@@ -0,0 +1,234 @@
1
+ // generated by diplomat-tool
2
+ import type { Field3 } from "./Field3.mjs"
3
+ import type { FieldProgram } from "./FieldProgram.mjs"
4
+ import type { NucleationError } from "./NucleationError.mjs"
5
+ import type { Schematic } from "./Schematic.mjs"
6
+ import type { SdfAxis } from "./SdfAxis.mjs"
7
+ import type { SdfBounds } from "./SdfBounds.mjs"
8
+ import type { SdfCellMode } from "./SdfCellMode.mjs"
9
+ import type { SdfNormal } from "./SdfNormal.mjs"
10
+ import type { Shape } from "./Shape.mjs"
11
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
12
+
13
+
14
+
15
+ /**
16
+ * An immutable, composable signed-distance-field expression graph.
17
+ *
18
+ * Primitive constructors and every combinator return a new graph, so values
19
+ * can be shared safely between Flow nodes and across Kotlin/Java, JavaScript,
20
+ * and Python bindings. JSON is retained only for explicit import/export and
21
+ * the legacy sampling helpers.
22
+ */
23
+ export class Sdf {
24
+ /** @internal */
25
+ get ffiValue(): pointer;
26
+ /** @internal */
27
+ constructor();
28
+
29
+
30
+ static sphere(radius: number): Sdf;
31
+
32
+ /**
33
+ * Axis-aligned rounded box, centered at the origin.
34
+ */
35
+ static boxShape(halfX: number, halfY: number, halfZ: number, rounding: number): Sdf;
36
+
37
+ static ellipsoid(radiusX: number, radiusY: number, radiusZ: number): Sdf;
38
+
39
+ static torus(majorRadius: number, minorRadius: number): Sdf;
40
+
41
+ /**
42
+ * Torus ring cut down to an arc. `cap_angle_degrees` is the half-aperture
43
+ * in `(0, 180]`, measured from +X and mirrored across X; `180` is a full
44
+ * torus.
45
+ */
46
+ static cappedTorus(majorRadius: number, minorRadius: number, capAngleDegrees: number): Sdf;
47
+
48
+ /**
49
+ * Chain-link shape: a torus stretched along Z by `half_length` and
50
+ * capped by two half-tori. `half_length: 0` is a plain torus.
51
+ */
52
+ static link(majorRadius: number, minorRadius: number, halfLength: number): Sdf;
53
+
54
+ static capsule(ax: number, ay: number, az: number, bx: number, by: number, bz: number, radius: number): Sdf;
55
+
56
+ /**
57
+ * Convex hull of two spheres: a capsule with a linear taper between
58
+ * `r1` (at `a`) and `r2` (at `b`) instead of one constant radius.
59
+ */
60
+ static roundCone(ax: number, ay: number, az: number, bx: number, by: number, bz: number, r1: number, r2: number): Sdf;
61
+
62
+ /**
63
+ * Sphere of `radius` intersected with an infinite cone of
64
+ * half-aperture `angle_degrees` (in `(0, 180)`) from the +Y axis,
65
+ * apex at the origin.
66
+ */
67
+ static solidAngle(radius: number, angleDegrees: number): Sdf;
68
+
69
+ /**
70
+ * Sphere cut by the plane `y = height`, keeping the cap above it
71
+ * (a dome). `height` must be strictly between `-radius` and
72
+ * `radius`.
73
+ */
74
+ static cutSphere(radius: number, height: number): Sdf;
75
+
76
+ /**
77
+ * Open (hollow) shell of `cut_sphere`'s dome: just the spherical
78
+ * cap surface, offset by `thickness`, with no flat floor.
79
+ */
80
+ static cutHollowSphere(radius: number, height: number, thickness: number): Sdf;
81
+
82
+ static cappedCylinder(radius: number, halfHeight: number): Sdf;
83
+
84
+ /**
85
+ * Exact Y-axis cylinder with infinite extent. Sampling requires explicit bounds.
86
+ */
87
+ static infiniteCylinder(radius: number): Sdf;
88
+
89
+ static cappedCone(halfHeight: number, bottomRadius: number, topRadius: number): Sdf;
90
+
91
+ static plane(normalX: number, normalY: number, normalZ: number, offset: number): Sdf;
92
+
93
+ static octahedron(size: number): Sdf;
94
+
95
+ static hexPrism(radius: number, halfHeight: number): Sdf;
96
+
97
+ static superPrism(halfX: number, halfY: number, halfZ: number, exponent: number): Sdf;
98
+
99
+ /**
100
+ * Hollow wireframe box: only the 12 edge beams are solid.
101
+ */
102
+ static boxFrame(halfX: number, halfY: number, halfZ: number, thickness: number): Sdf;
103
+
104
+ /**
105
+ * Exact but unbounded Y-axis infinite cone: apex at the origin,
106
+ * single nappe opening along +Y, half-aperture `angle_degrees`
107
+ * strictly in `(0, 90)`.
108
+ */
109
+ static infiniteCone(angleDegrees: number): Sdf;
110
+
111
+ /**
112
+ * Square-base pyramid, vertically centered: base (half-extent
113
+ * `half_base`) at `y = -height/2`, apex at `y = height/2`. `height`
114
+ * must be at least the smallest positive normal `f32`.
115
+ */
116
+ static squarePyramid(halfBase: number, height: number): Sdf;
117
+
118
+ static cells(frequency: number, seed: number, jitter: number, mode: SdfCellMode, threshold: number): Sdf;
119
+
120
+ unionWith(other: Sdf): Sdf;
121
+
122
+ intersectionWith(other: Sdf): Sdf;
123
+
124
+ subtract(other: Sdf): Sdf;
125
+
126
+ smoothUnion(other: Sdf, radius: number): Sdf;
127
+
128
+ smoothSubtract(other: Sdf, radius: number): Sdf;
129
+
130
+ smoothIntersection(other: Sdf, radius: number): Sdf;
131
+
132
+ rounded(radius: number): Sdf;
133
+
134
+ shell(thickness: number): Sdf;
135
+
136
+ /**
137
+ * Symmetric difference (XOR): solid where exactly one of `self`/
138
+ * `other` is solid.
139
+ */
140
+ xorWith(other: Sdf): Sdf;
141
+
142
+ /**
143
+ * Stretches this graph with IQ's origin-centered `opElongate` fold.
144
+ * Exactness requires a suitable origin-centered, reflection-symmetric
145
+ * child; off-center/asymmetric children are mirrored and produce only
146
+ * an estimate. Half-lengths must be finite and non-negative, with at
147
+ * least one strictly positive.
148
+ */
149
+ elongate(halfX: number, halfY: number, halfZ: number): Sdf;
150
+
151
+ translate(x: number, y: number, z: number): Sdf;
152
+
153
+ rotate(xDegrees: number, yDegrees: number, zDegrees: number): Sdf;
154
+
155
+ scale(factor: number): Sdf;
156
+
157
+ mirror(axis: SdfAxis): Sdf;
158
+
159
+ /**
160
+ * Twists this graph about the Y axis by `amount` radians per unit
161
+ * Y (IQ's `opTwist`). *Distorted*: not guaranteed exact even when
162
+ * `self` is.
163
+ */
164
+ twist(amount: number): Sdf;
165
+
166
+ /**
167
+ * Cheaply bends this graph by `amount` radians per unit X (IQ's
168
+ * `opCheapBend`). *Distorted*: not guaranteed exact even when
169
+ * `self` is.
170
+ */
171
+ bend(amount: number): Sdf;
172
+
173
+ repeatInfinite(spacingX: number, spacingY: number, spacingZ: number): Sdf;
174
+
175
+ repeatCounted(spacingX: number, spacingY: number, spacingZ: number, countX: number, countY: number, countZ: number): Sdf;
176
+
177
+ /**
178
+ * Finite rigid instances of this graph at arbitrary XYZ offsets.
179
+ * `offsets` is flat `[x0, y0, z0, x1, y1, z1, ...]` and may contain
180
+ * at most 4096 points.
181
+ */
182
+ repeatPoints(offsets: Array<number>): Sdf;
183
+
184
+ displace(amplitude: number, frequency: number, seed: number, octaves: number): Sdf;
185
+
186
+ /**
187
+ * Offset this surface by a reusable scalar field. The resulting zero
188
+ * set is generally an approximate field, not an exact distance field.
189
+ */
190
+ offsetByField(field: Field3, amplitude: number): Sdf;
191
+
192
+ warp(amplitude: number, frequency: number, seed: number): Sdf;
193
+
194
+ evalAt(x: number, y: number, z: number): number;
195
+
196
+ normal(x: number, y: number, z: number, epsilon: number): SdfNormal;
197
+
198
+ /**
199
+ * Conservative finite bounds, or `NotFound` for an unbounded graph
200
+ * (a bare `plane` or `infinite_cylinder` has no finite extent).
201
+ */
202
+ bounds(): SdfBounds;
203
+
204
+ toShape(): Shape;
205
+
206
+ toShapeBounded(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Shape;
207
+
208
+ static fromJsonString(json: string): Sdf;
209
+
210
+ toJson(): string;
211
+
212
+ /**
213
+ * Wrap a validated {@link FieldProgram} as an `Sdf` graph (cloning it,
214
+ * with its own explicit bounds and distance-kind metadata), so it
215
+ * composes with every other combinator.
216
+ */
217
+ static fromProgram(program: FieldProgram): Sdf;
218
+
219
+ /**
220
+ * Legacy JSON-first terrain helper. Prefer typed constructors and
221
+ * `to_shape()` with `BuildingTool.fill()` for new code.
222
+ */
223
+ static schematicFromSdfAuto(sdfJson: string, rulesJson: string): Schematic;
224
+
225
+ /**
226
+ * Legacy JSON-first terrain helper with optional explicit bounds.
227
+ */
228
+ static schematicFromSdf(sdfJson: string, rulesJson: string, hasBounds: boolean, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Schematic;
229
+
230
+ /**
231
+ * Legacy JSON-first evaluator. Prefer `Sdf.from_json_string(...).eval_at(...)`.
232
+ */
233
+ static eval(sdfJson: string, x: number, y: number, z: number): number;
234
+ }
@@ -0,0 +1,234 @@
1
+ // generated by diplomat-tool
2
+ import type { Field3 } from "./Field3.mjs"
3
+ import type { FieldProgram } from "./FieldProgram.mjs"
4
+ import type { NucleationError } from "./NucleationError.mjs"
5
+ import type { Schematic } from "./Schematic.mjs"
6
+ import type { SdfAxis } from "./SdfAxis.mjs"
7
+ import type { SdfBounds } from "./SdfBounds.mjs"
8
+ import type { SdfCellMode } from "./SdfCellMode.mjs"
9
+ import type { SdfNormal } from "./SdfNormal.mjs"
10
+ import type { Shape } from "./Shape.mjs"
11
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
12
+
13
+
14
+
15
+ /**
16
+ * An immutable, composable signed-distance-field expression graph.
17
+ *
18
+ * Primitive constructors and every combinator return a new graph, so values
19
+ * can be shared safely between Flow nodes and across Kotlin/Java, JavaScript,
20
+ * and Python bindings. JSON is retained only for explicit import/export and
21
+ * the legacy sampling helpers.
22
+ */
23
+ export class Sdf {
24
+ /** @internal */
25
+ get ffiValue(): pointer;
26
+ /** @internal */
27
+ constructor();
28
+
29
+
30
+ static sphere(radius: number): Sdf;
31
+
32
+ /**
33
+ * Axis-aligned rounded box, centered at the origin.
34
+ */
35
+ static boxShape(halfX: number, halfY: number, halfZ: number, rounding: number): Sdf;
36
+
37
+ static ellipsoid(radiusX: number, radiusY: number, radiusZ: number): Sdf;
38
+
39
+ static torus(majorRadius: number, minorRadius: number): Sdf;
40
+
41
+ /**
42
+ * Torus ring cut down to an arc. `cap_angle_degrees` is the half-aperture
43
+ * in `(0, 180]`, measured from +X and mirrored across X; `180` is a full
44
+ * torus.
45
+ */
46
+ static cappedTorus(majorRadius: number, minorRadius: number, capAngleDegrees: number): Sdf;
47
+
48
+ /**
49
+ * Chain-link shape: a torus stretched along Z by `half_length` and
50
+ * capped by two half-tori. `half_length: 0` is a plain torus.
51
+ */
52
+ static link(majorRadius: number, minorRadius: number, halfLength: number): Sdf;
53
+
54
+ static capsule(ax: number, ay: number, az: number, bx: number, by: number, bz: number, radius: number): Sdf;
55
+
56
+ /**
57
+ * Convex hull of two spheres: a capsule with a linear taper between
58
+ * `r1` (at `a`) and `r2` (at `b`) instead of one constant radius.
59
+ */
60
+ static roundCone(ax: number, ay: number, az: number, bx: number, by: number, bz: number, r1: number, r2: number): Sdf;
61
+
62
+ /**
63
+ * Sphere of `radius` intersected with an infinite cone of
64
+ * half-aperture `angle_degrees` (in `(0, 180)`) from the +Y axis,
65
+ * apex at the origin.
66
+ */
67
+ static solidAngle(radius: number, angleDegrees: number): Sdf;
68
+
69
+ /**
70
+ * Sphere cut by the plane `y = height`, keeping the cap above it
71
+ * (a dome). `height` must be strictly between `-radius` and
72
+ * `radius`.
73
+ */
74
+ static cutSphere(radius: number, height: number): Sdf;
75
+
76
+ /**
77
+ * Open (hollow) shell of `cut_sphere`'s dome: just the spherical
78
+ * cap surface, offset by `thickness`, with no flat floor.
79
+ */
80
+ static cutHollowSphere(radius: number, height: number, thickness: number): Sdf;
81
+
82
+ static cappedCylinder(radius: number, halfHeight: number): Sdf;
83
+
84
+ /**
85
+ * Exact Y-axis cylinder with infinite extent. Sampling requires explicit bounds.
86
+ */
87
+ static infiniteCylinder(radius: number): Sdf;
88
+
89
+ static cappedCone(halfHeight: number, bottomRadius: number, topRadius: number): Sdf;
90
+
91
+ static plane(normalX: number, normalY: number, normalZ: number, offset: number): Sdf;
92
+
93
+ static octahedron(size: number): Sdf;
94
+
95
+ static hexPrism(radius: number, halfHeight: number): Sdf;
96
+
97
+ static superPrism(halfX: number, halfY: number, halfZ: number, exponent: number): Sdf;
98
+
99
+ /**
100
+ * Hollow wireframe box: only the 12 edge beams are solid.
101
+ */
102
+ static boxFrame(halfX: number, halfY: number, halfZ: number, thickness: number): Sdf;
103
+
104
+ /**
105
+ * Exact but unbounded Y-axis infinite cone: apex at the origin,
106
+ * single nappe opening along +Y, half-aperture `angle_degrees`
107
+ * strictly in `(0, 90)`.
108
+ */
109
+ static infiniteCone(angleDegrees: number): Sdf;
110
+
111
+ /**
112
+ * Square-base pyramid, vertically centered: base (half-extent
113
+ * `half_base`) at `y = -height/2`, apex at `y = height/2`. `height`
114
+ * must be at least the smallest positive normal `f32`.
115
+ */
116
+ static squarePyramid(halfBase: number, height: number): Sdf;
117
+
118
+ static cells(frequency: number, seed: number, jitter: number, mode: SdfCellMode, threshold: number): Sdf;
119
+
120
+ unionWith(other: Sdf): Sdf;
121
+
122
+ intersectionWith(other: Sdf): Sdf;
123
+
124
+ subtract(other: Sdf): Sdf;
125
+
126
+ smoothUnion(other: Sdf, radius: number): Sdf;
127
+
128
+ smoothSubtract(other: Sdf, radius: number): Sdf;
129
+
130
+ smoothIntersection(other: Sdf, radius: number): Sdf;
131
+
132
+ rounded(radius: number): Sdf;
133
+
134
+ shell(thickness: number): Sdf;
135
+
136
+ /**
137
+ * Symmetric difference (XOR): solid where exactly one of `self`/
138
+ * `other` is solid.
139
+ */
140
+ xorWith(other: Sdf): Sdf;
141
+
142
+ /**
143
+ * Stretches this graph with IQ's origin-centered `opElongate` fold.
144
+ * Exactness requires a suitable origin-centered, reflection-symmetric
145
+ * child; off-center/asymmetric children are mirrored and produce only
146
+ * an estimate. Half-lengths must be finite and non-negative, with at
147
+ * least one strictly positive.
148
+ */
149
+ elongate(halfX: number, halfY: number, halfZ: number): Sdf;
150
+
151
+ translate(x: number, y: number, z: number): Sdf;
152
+
153
+ rotate(xDegrees: number, yDegrees: number, zDegrees: number): Sdf;
154
+
155
+ scale(factor: number): Sdf;
156
+
157
+ mirror(axis: SdfAxis): Sdf;
158
+
159
+ /**
160
+ * Twists this graph about the Y axis by `amount` radians per unit
161
+ * Y (IQ's `opTwist`). *Distorted*: not guaranteed exact even when
162
+ * `self` is.
163
+ */
164
+ twist(amount: number): Sdf;
165
+
166
+ /**
167
+ * Cheaply bends this graph by `amount` radians per unit X (IQ's
168
+ * `opCheapBend`). *Distorted*: not guaranteed exact even when
169
+ * `self` is.
170
+ */
171
+ bend(amount: number): Sdf;
172
+
173
+ repeatInfinite(spacingX: number, spacingY: number, spacingZ: number): Sdf;
174
+
175
+ repeatCounted(spacingX: number, spacingY: number, spacingZ: number, countX: number, countY: number, countZ: number): Sdf;
176
+
177
+ /**
178
+ * Finite rigid instances of this graph at arbitrary XYZ offsets.
179
+ * `offsets` is flat `[x0, y0, z0, x1, y1, z1, ...]` and may contain
180
+ * at most 4096 points.
181
+ */
182
+ repeatPoints(offsets: Array<number>): Sdf;
183
+
184
+ displace(amplitude: number, frequency: number, seed: number, octaves: number): Sdf;
185
+
186
+ /**
187
+ * Offset this surface by a reusable scalar field. The resulting zero
188
+ * set is generally an approximate field, not an exact distance field.
189
+ */
190
+ offsetByField(field: Field3, amplitude: number): Sdf;
191
+
192
+ warp(amplitude: number, frequency: number, seed: number): Sdf;
193
+
194
+ evalAt(x: number, y: number, z: number): number;
195
+
196
+ normal(x: number, y: number, z: number, epsilon: number): SdfNormal;
197
+
198
+ /**
199
+ * Conservative finite bounds, or `NotFound` for an unbounded graph
200
+ * (a bare `plane` or `infinite_cylinder` has no finite extent).
201
+ */
202
+ bounds(): SdfBounds;
203
+
204
+ toShape(): Shape;
205
+
206
+ toShapeBounded(minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Shape;
207
+
208
+ static fromJsonString(json: string): Sdf;
209
+
210
+ toJson(): string;
211
+
212
+ /**
213
+ * Wrap a validated {@link FieldProgram} as an `Sdf` graph (cloning it,
214
+ * with its own explicit bounds and distance-kind metadata), so it
215
+ * composes with every other combinator.
216
+ */
217
+ static fromProgram(program: FieldProgram): Sdf;
218
+
219
+ /**
220
+ * Legacy JSON-first terrain helper. Prefer typed constructors and
221
+ * `to_shape()` with `BuildingTool.fill()` for new code.
222
+ */
223
+ static schematicFromSdfAuto(sdfJson: string, rulesJson: string): Schematic;
224
+
225
+ /**
226
+ * Legacy JSON-first terrain helper with optional explicit bounds.
227
+ */
228
+ static schematicFromSdf(sdfJson: string, rulesJson: string, hasBounds: boolean, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number): Schematic;
229
+
230
+ /**
231
+ * Legacy JSON-first evaluator. Prefer `Sdf.from_json_string(...).eval_at(...)`.
232
+ */
233
+ static eval(sdfJson: string, x: number, y: number, z: number): number;
234
+ }