nucleation 0.10.22 → 0.10.24

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 (303) hide show
  1. package/README.md +12 -0
  2. package/Schematic.d.mts +23 -0
  3. package/Schematic.d.ts +23 -0
  4. package/Schematic.mjs +70 -0
  5. package/nucleation.wasm +0 -0
  6. package/package.json +7 -2
  7. package/renderer/AnimationEffect.d.mts +44 -0
  8. package/renderer/AnimationEffect.d.ts +44 -0
  9. package/renderer/AnimationEffect.mjs +204 -0
  10. package/renderer/Autostack.d.mts +43 -0
  11. package/renderer/Autostack.d.ts +43 -0
  12. package/renderer/Autostack.mjs +134 -0
  13. package/renderer/BlockPos.d.mts +28 -0
  14. package/renderer/BlockPos.d.ts +28 -0
  15. package/renderer/BlockPos.mjs +130 -0
  16. package/renderer/BlockState.d.mts +39 -0
  17. package/renderer/BlockState.d.ts +39 -0
  18. package/renderer/BlockState.mjs +134 -0
  19. package/renderer/Blocks.d.mts +91 -0
  20. package/renderer/Blocks.d.ts +91 -0
  21. package/renderer/Blocks.mjs +308 -0
  22. package/renderer/Brush.d.mts +99 -0
  23. package/renderer/Brush.d.ts +99 -0
  24. package/renderer/Brush.mjs +335 -0
  25. package/renderer/BuildAnimation.d.mts +179 -0
  26. package/renderer/BuildAnimation.d.ts +179 -0
  27. package/renderer/BuildAnimation.mjs +1148 -0
  28. package/renderer/BuildingTool.d.mts +46 -0
  29. package/renderer/BuildingTool.d.ts +46 -0
  30. package/renderer/BuildingTool.mjs +121 -0
  31. package/renderer/CellExecutor.d.mts +51 -0
  32. package/renderer/CellExecutor.d.ts +51 -0
  33. package/renderer/CellExecutor.mjs +171 -0
  34. package/renderer/CellularSdfConfig.d.mts +22 -0
  35. package/renderer/CellularSdfConfig.d.ts +22 -0
  36. package/renderer/CellularSdfConfig.mjs +69 -0
  37. package/renderer/ChunkMeshResult.d.mts +75 -0
  38. package/renderer/ChunkMeshResult.d.ts +75 -0
  39. package/renderer/ChunkMeshResult.mjs +253 -0
  40. package/renderer/CircuitBuilder.d.mts +118 -0
  41. package/renderer/CircuitBuilder.d.ts +118 -0
  42. package/renderer/CircuitBuilder.mjs +516 -0
  43. package/renderer/Curve3D.d.mts +27 -0
  44. package/renderer/Curve3D.d.ts +27 -0
  45. package/renderer/Curve3D.mjs +101 -0
  46. package/renderer/DefinitionRegion.d.mts +274 -0
  47. package/renderer/DefinitionRegion.d.ts +274 -0
  48. package/renderer/DefinitionRegion.mjs +973 -0
  49. package/renderer/Design.d.mts +348 -0
  50. package/renderer/Design.d.ts +348 -0
  51. package/renderer/Design.mjs +1334 -0
  52. package/renderer/Diff.d.mts +88 -0
  53. package/renderer/Diff.d.ts +88 -0
  54. package/renderer/Diff.mjs +316 -0
  55. package/renderer/Dimensions.d.mts +28 -0
  56. package/renderer/Dimensions.d.ts +28 -0
  57. package/renderer/Dimensions.mjs +130 -0
  58. package/renderer/DistanceField.d.mts +39 -0
  59. package/renderer/DistanceField.d.ts +39 -0
  60. package/renderer/DistanceField.mjs +114 -0
  61. package/renderer/ExecutionMode.d.mts +42 -0
  62. package/renderer/ExecutionMode.d.ts +42 -0
  63. package/renderer/ExecutionMode.mjs +127 -0
  64. package/renderer/Field3.d.mts +40 -0
  65. package/renderer/Field3.d.ts +40 -0
  66. package/renderer/Field3.mjs +160 -0
  67. package/renderer/FieldProgram.d.mts +40 -0
  68. package/renderer/FieldProgram.d.ts +40 -0
  69. package/renderer/FieldProgram.mjs +167 -0
  70. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  71. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  72. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  73. package/renderer/FieldProgramBuilder.d.mts +104 -0
  74. package/renderer/FieldProgramBuilder.d.ts +104 -0
  75. package/renderer/FieldProgramBuilder.mjs +486 -0
  76. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  77. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  78. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  79. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  80. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  81. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  82. package/renderer/FieldProgramValueType.d.mts +25 -0
  83. package/renderer/FieldProgramValueType.d.ts +25 -0
  84. package/renderer/FieldProgramValueType.mjs +75 -0
  85. package/renderer/FieldRange.d.mts +15 -0
  86. package/renderer/FieldRange.d.ts +15 -0
  87. package/renderer/FieldRange.mjs +109 -0
  88. package/renderer/Fingerprint.d.mts +44 -0
  89. package/renderer/Fingerprint.d.ts +44 -0
  90. package/renderer/Fingerprint.mjs +197 -0
  91. package/renderer/GeneratedChunk.d.mts +35 -0
  92. package/renderer/GeneratedChunk.d.ts +35 -0
  93. package/renderer/GeneratedChunk.mjs +178 -0
  94. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  95. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  96. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  97. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  98. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  99. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  100. package/renderer/GeneratedWorldStream.d.mts +28 -0
  101. package/renderer/GeneratedWorldStream.d.ts +28 -0
  102. package/renderer/GeneratedWorldStream.mjs +86 -0
  103. package/renderer/Geo.d.mts +41 -0
  104. package/renderer/Geo.d.ts +41 -0
  105. package/renderer/Geo.mjs +121 -0
  106. package/renderer/Hdl.d.mts +56 -0
  107. package/renderer/Hdl.d.ts +56 -0
  108. package/renderer/Hdl.mjs +163 -0
  109. package/renderer/InterpolationSpace.d.mts +25 -0
  110. package/renderer/InterpolationSpace.d.ts +25 -0
  111. package/renderer/InterpolationSpace.mjs +73 -0
  112. package/renderer/IoLayout.d.mts +26 -0
  113. package/renderer/IoLayout.d.ts +26 -0
  114. package/renderer/IoLayout.mjs +81 -0
  115. package/renderer/IoLayoutBuilder.d.mts +73 -0
  116. package/renderer/IoLayoutBuilder.d.ts +73 -0
  117. package/renderer/IoLayoutBuilder.mjs +315 -0
  118. package/renderer/IoType.d.mts +41 -0
  119. package/renderer/IoType.d.ts +41 -0
  120. package/renderer/IoType.mjs +125 -0
  121. package/renderer/ItemModelConfig.d.mts +65 -0
  122. package/renderer/ItemModelConfig.d.ts +65 -0
  123. package/renderer/ItemModelConfig.mjs +223 -0
  124. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  125. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  126. package/renderer/ItemModelPackBuilder.mjs +104 -0
  127. package/renderer/ItemModelResult.d.mts +72 -0
  128. package/renderer/ItemModelResult.d.ts +72 -0
  129. package/renderer/ItemModelResult.mjs +268 -0
  130. package/renderer/ItemScale.d.mts +31 -0
  131. package/renderer/ItemScale.d.ts +31 -0
  132. package/renderer/ItemScale.mjs +133 -0
  133. package/renderer/LayoutFunction.d.mts +52 -0
  134. package/renderer/LayoutFunction.d.ts +52 -0
  135. package/renderer/LayoutFunction.mjs +159 -0
  136. package/renderer/MchprsWorld.d.mts +131 -0
  137. package/renderer/MchprsWorld.d.ts +131 -0
  138. package/renderer/MchprsWorld.mjs +423 -0
  139. package/renderer/MeshBounds.d.mts +40 -0
  140. package/renderer/MeshBounds.d.ts +40 -0
  141. package/renderer/MeshBounds.mjs +181 -0
  142. package/renderer/MeshConfig.d.mts +101 -0
  143. package/renderer/MeshConfig.d.ts +101 -0
  144. package/renderer/MeshConfig.mjs +306 -0
  145. package/renderer/MeshJob.d.mts +44 -0
  146. package/renderer/MeshJob.d.ts +44 -0
  147. package/renderer/MeshJob.mjs +116 -0
  148. package/renderer/MeshPhase.d.mts +38 -0
  149. package/renderer/MeshPhase.d.ts +38 -0
  150. package/renderer/MeshPhase.mjs +90 -0
  151. package/renderer/MeshProgress.d.mts +32 -0
  152. package/renderer/MeshProgress.d.ts +32 -0
  153. package/renderer/MeshProgress.mjs +134 -0
  154. package/renderer/MeshResult.d.mts +76 -0
  155. package/renderer/MeshResult.d.ts +76 -0
  156. package/renderer/MeshResult.mjs +269 -0
  157. package/renderer/MultiMeshResult.d.mts +50 -0
  158. package/renderer/MultiMeshResult.d.ts +50 -0
  159. package/renderer/MultiMeshResult.mjs +166 -0
  160. package/renderer/Nbt.d.mts +50 -0
  161. package/renderer/Nbt.d.ts +50 -0
  162. package/renderer/Nbt.mjs +161 -0
  163. package/renderer/NucleationError.d.mts +53 -0
  164. package/renderer/NucleationError.d.ts +53 -0
  165. package/renderer/NucleationError.mjs +136 -0
  166. package/renderer/OutputCondition.d.mts +45 -0
  167. package/renderer/OutputCondition.d.ts +45 -0
  168. package/renderer/OutputCondition.mjs +129 -0
  169. package/renderer/Palette.d.mts +157 -0
  170. package/renderer/Palette.d.ts +157 -0
  171. package/renderer/Palette.mjs +487 -0
  172. package/renderer/PaletteBuilder.d.mts +119 -0
  173. package/renderer/PaletteBuilder.d.ts +119 -0
  174. package/renderer/PaletteBuilder.mjs +457 -0
  175. package/renderer/README.md +67 -0
  176. package/renderer/RawMeshExport.d.mts +74 -0
  177. package/renderer/RawMeshExport.d.ts +74 -0
  178. package/renderer/RawMeshExport.mjs +243 -0
  179. package/renderer/RedstoneGraph.d.mts +58 -0
  180. package/renderer/RedstoneGraph.d.ts +58 -0
  181. package/renderer/RedstoneGraph.mjs +242 -0
  182. package/renderer/RegionBounds.d.mts +41 -0
  183. package/renderer/RegionBounds.d.ts +41 -0
  184. package/renderer/RegionBounds.mjs +182 -0
  185. package/renderer/RenderConfig.d.mts +101 -0
  186. package/renderer/RenderConfig.d.ts +101 -0
  187. package/renderer/RenderConfig.mjs +271 -0
  188. package/renderer/Renderer.d.mts +51 -0
  189. package/renderer/Renderer.d.ts +51 -0
  190. package/renderer/Renderer.mjs +219 -0
  191. package/renderer/ResourcePack.d.mts +105 -0
  192. package/renderer/ResourcePack.d.ts +105 -0
  193. package/renderer/ResourcePack.mjs +447 -0
  194. package/renderer/ResourcePackList.d.mts +32 -0
  195. package/renderer/ResourcePackList.d.ts +32 -0
  196. package/renderer/ResourcePackList.mjs +96 -0
  197. package/renderer/Routing.d.mts +66 -0
  198. package/renderer/Routing.d.ts +66 -0
  199. package/renderer/Routing.mjs +220 -0
  200. package/renderer/Schematic.d.mts +977 -0
  201. package/renderer/Schematic.d.ts +977 -0
  202. package/renderer/Schematic.mjs +3820 -0
  203. package/renderer/SchematicBuilder.d.mts +103 -0
  204. package/renderer/SchematicBuilder.d.ts +103 -0
  205. package/renderer/SchematicBuilder.mjs +401 -0
  206. package/renderer/SchematicRegions.d.mts +93 -0
  207. package/renderer/SchematicRegions.d.ts +93 -0
  208. package/renderer/SchematicRegions.mjs +411 -0
  209. package/renderer/SchematicSplitResult.d.mts +26 -0
  210. package/renderer/SchematicSplitResult.d.ts +26 -0
  211. package/renderer/SchematicSplitResult.mjs +84 -0
  212. package/renderer/Scripting.d.mts +40 -0
  213. package/renderer/Scripting.d.ts +40 -0
  214. package/renderer/Scripting.mjs +138 -0
  215. package/renderer/Sdf.d.mts +234 -0
  216. package/renderer/Sdf.d.ts +234 -0
  217. package/renderer/Sdf.mjs +1234 -0
  218. package/renderer/SdfAxis.d.mts +25 -0
  219. package/renderer/SdfAxis.d.ts +25 -0
  220. package/renderer/SdfAxis.mjs +75 -0
  221. package/renderer/SdfBounds.d.mts +19 -0
  222. package/renderer/SdfBounds.d.ts +19 -0
  223. package/renderer/SdfBounds.mjs +161 -0
  224. package/renderer/SdfCellMode.d.mts +26 -0
  225. package/renderer/SdfCellMode.d.ts +26 -0
  226. package/renderer/SdfCellMode.mjs +78 -0
  227. package/renderer/SdfNormal.d.mts +16 -0
  228. package/renderer/SdfNormal.d.ts +16 -0
  229. package/renderer/SdfNormal.mjs +122 -0
  230. package/renderer/Shape.d.mts +143 -0
  231. package/renderer/Shape.d.ts +143 -0
  232. package/renderer/Shape.mjs +458 -0
  233. package/renderer/SortStrategy.d.mts +86 -0
  234. package/renderer/SortStrategy.d.ts +86 -0
  235. package/renderer/SortStrategy.mjs +272 -0
  236. package/renderer/Store.d.mts +83 -0
  237. package/renderer/Store.d.ts +83 -0
  238. package/renderer/Store.mjs +369 -0
  239. package/renderer/StoreIo.d.mts +71 -0
  240. package/renderer/StoreIo.d.ts +71 -0
  241. package/renderer/StoreIo.mjs +292 -0
  242. package/renderer/TextureAtlas.d.mts +40 -0
  243. package/renderer/TextureAtlas.d.ts +40 -0
  244. package/renderer/TextureAtlas.mjs +122 -0
  245. package/renderer/TextureInfo.d.mts +34 -0
  246. package/renderer/TextureInfo.d.ts +34 -0
  247. package/renderer/TextureInfo.mjs +149 -0
  248. package/renderer/TickSettleMode.d.mts +34 -0
  249. package/renderer/TickSettleMode.d.ts +34 -0
  250. package/renderer/TickSettleMode.mjs +84 -0
  251. package/renderer/TickSimulation.d.mts +572 -0
  252. package/renderer/TickSimulation.d.ts +572 -0
  253. package/renderer/TickSimulation.mjs +1299 -0
  254. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  255. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  256. package/renderer/TypedCircuitExecutor.mjs +378 -0
  257. package/renderer/Value.d.mts +73 -0
  258. package/renderer/Value.d.ts +73 -0
  259. package/renderer/Value.mjs +275 -0
  260. package/renderer/VideoConfig.d.mts +15 -0
  261. package/renderer/VideoConfig.d.ts +15 -0
  262. package/renderer/VideoConfig.mjs +44 -0
  263. package/renderer/VoxelModel.d.mts +34 -0
  264. package/renderer/VoxelModel.d.ts +34 -0
  265. package/renderer/VoxelModel.mjs +113 -0
  266. package/renderer/Voxelizer.d.mts +80 -0
  267. package/renderer/Voxelizer.d.ts +80 -0
  268. package/renderer/Voxelizer.mjs +261 -0
  269. package/renderer/WorldChunkView.d.mts +75 -0
  270. package/renderer/WorldChunkView.d.ts +75 -0
  271. package/renderer/WorldChunkView.mjs +224 -0
  272. package/renderer/WorldGenerator.d.mts +75 -0
  273. package/renderer/WorldGenerator.d.ts +75 -0
  274. package/renderer/WorldGenerator.mjs +255 -0
  275. package/renderer/WorldSink.d.mts +50 -0
  276. package/renderer/WorldSink.d.ts +50 -0
  277. package/renderer/WorldSink.mjs +177 -0
  278. package/renderer/WorldStream.d.mts +45 -0
  279. package/renderer/WorldStream.d.ts +45 -0
  280. package/renderer/WorldStream.mjs +184 -0
  281. package/renderer/WsPartitionHints.d.mts +29 -0
  282. package/renderer/WsPartitionHints.d.ts +29 -0
  283. package/renderer/WsPartitionHints.mjs +102 -0
  284. package/renderer/WsProfile.d.mts +46 -0
  285. package/renderer/WsProfile.d.ts +46 -0
  286. package/renderer/WsProfile.mjs +152 -0
  287. package/renderer/WsRunResult.d.mts +83 -0
  288. package/renderer/WsRunResult.d.ts +83 -0
  289. package/renderer/WsRunResult.mjs +326 -0
  290. package/renderer/WsSegmentJob.d.mts +28 -0
  291. package/renderer/WsSegmentJob.d.ts +28 -0
  292. package/renderer/WsSegmentJob.mjs +81 -0
  293. package/renderer/diplomat-runtime.d.mts +15 -0
  294. package/renderer/diplomat-runtime.d.ts +15 -0
  295. package/renderer/diplomat-runtime.mjs +779 -0
  296. package/renderer/diplomat-wasm.mjs +52 -0
  297. package/renderer/diplomat.config.mjs +5 -0
  298. package/renderer/index.d.mts +193 -0
  299. package/renderer/index.d.ts +193 -0
  300. package/renderer/index.mjs +196 -0
  301. package/renderer/nucleation.wasm +0 -0
  302. package/renderer/veneer/design.d.ts +167 -0
  303. package/renderer/veneer/design.mjs +480 -0
@@ -0,0 +1,458 @@
1
+ // generated by diplomat-tool
2
+ import { Curve3D } from "./Curve3D.mjs"
3
+ import { NucleationError } from "./NucleationError.mjs"
4
+ import wasm from "./diplomat-wasm.mjs";
5
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
6
+
7
+ const Shape_box_destroy_registry = new FinalizationRegistry((ptr) => {
8
+ wasm.Shape_destroy(ptr);
9
+ });
10
+
11
+ /**
12
+ * A solid region of blocks: primitives (sphere, cuboid, …) and boolean
13
+ * combinations thereof. Wraps `ShapeEnum`.
14
+ */
15
+ export class Shape {
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("Shape 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
+ Shape_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
+ * Thicken a sampled 3D curve into a parametric tube with the given radius.
46
+ * Inputs outside voxel-coordinate or bounded-work limits are rejected.
47
+ */
48
+ static tubeAlong(curve, radius) {
49
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
50
+
51
+
52
+ const result = wasm.Shape_tube_along(diplomatReceive.buffer, curve.ffiValue, radius);
53
+
54
+ try {
55
+ if (!diplomatReceive.resultFlag) {
56
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
57
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
58
+ }
59
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
60
+ }
61
+
62
+ finally {
63
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
64
+ diplomatReceive.free();
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Sphere centered at (`cx`, `cy`, `cz`) (truncated to block coordinates,
70
+ * matching the old `shape_sphere`).
71
+ */
72
+ static sphere(cx, cy, cz, radius) {
73
+
74
+ const result = wasm.Shape_sphere(cx, cy, cz, radius);
75
+
76
+ try {
77
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
78
+ }
79
+
80
+ finally {
81
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Axis-aligned box spanning the two corners (inclusive).
87
+ */
88
+ static cuboid(minX, minY, minZ, maxX, maxY, maxZ) {
89
+
90
+ const result = wasm.Shape_cuboid(minX, minY, minZ, maxX, maxY, maxZ);
91
+
92
+ try {
93
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
94
+ }
95
+
96
+ finally {
97
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
98
+ }
99
+ }
100
+
101
+ /**
102
+ * A closed 2D polygon extruded between two Y levels (inclusive). The
103
+ * footprint is `polygon_json`, a JSON array of `[x, z]` world-coordinate
104
+ * pairs in order (winding does not matter; the ring closes implicitly);
105
+ * any simple polygon works, concave ones included. This is the shape
106
+ * behind extruded building footprints, lake outlines, and plot fills.
107
+ * Errors with `Parse` on invalid JSON and `InvalidArgument` on non-UTF-8
108
+ * or fewer than three vertices.
109
+ */
110
+ static polygonPrism(polygonJson, yMin, yMax) {
111
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
112
+
113
+ const polygonJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, polygonJson)));
114
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
115
+
116
+
117
+ const result = wasm.Shape_polygon_prism(diplomatReceive.buffer, polygonJsonSlice.ptr, yMin, yMax);
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 Shape(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
+ /**
136
+ * Ellipsoid centered at (`cx`, `cy`, `cz`) with per-axis radii.
137
+ */
138
+ static ellipsoid(cx, cy, cz, rx, ry, rz) {
139
+
140
+ const result = wasm.Shape_ellipsoid(cx, cy, cz, rx, ry, rz);
141
+
142
+ try {
143
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
144
+ }
145
+
146
+ finally {
147
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Cylinder from base point along an axis vector.
153
+ */
154
+ static cylinder(bx, by, bz, ax, ay, az, radius, height) {
155
+
156
+ const result = wasm.Shape_cylinder(bx, by, bz, ax, ay, az, radius, height);
157
+
158
+ try {
159
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
160
+ }
161
+
162
+ finally {
163
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Cylinder spanning the segment between two points.
169
+ */
170
+ static cylinderBetween(x1, y1, z1, x2, y2, z2, radius) {
171
+
172
+ const result = wasm.Shape_cylinder_between(x1, y1, z1, x2, y2, z2, radius);
173
+
174
+ try {
175
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
176
+ }
177
+
178
+ finally {
179
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Cone with apex at (`ax`, `ay`, `az`) opening along direction (`dx`, `dy`, `dz`).
185
+ */
186
+ static cone(ax, ay, az, dx, dy, dz, radius, height) {
187
+
188
+ const result = wasm.Shape_cone(ax, ay, az, dx, dy, dz, radius, height);
189
+
190
+ try {
191
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
192
+ }
193
+
194
+ finally {
195
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
196
+ }
197
+ }
198
+
199
+ /**
200
+ * Torus centered at (`cx`, `cy`, `cz`) with the given major/minor radii and
201
+ * axis (`ax`, `ay`, `az`).
202
+ */
203
+ static torus(cx, cy, cz, majorR, minorR, ax, ay, az) {
204
+
205
+ const result = wasm.Shape_torus(cx, cy, cz, majorR, minorR, ax, ay, az);
206
+
207
+ try {
208
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
209
+ }
210
+
211
+ finally {
212
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
213
+ }
214
+ }
215
+
216
+ /**
217
+ * Rectangular pyramid: base center, half-extents, height, up-axis.
218
+ */
219
+ static pyramid(bx, by, bz, halfW, halfD, height, ax, ay, az) {
220
+
221
+ const result = wasm.Shape_pyramid(bx, by, bz, halfW, halfD, height, ax, ay, az);
222
+
223
+ try {
224
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
225
+ }
226
+
227
+ finally {
228
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
229
+ }
230
+ }
231
+
232
+ /**
233
+ * Flat disk: center, radius, plane normal, thickness.
234
+ */
235
+ static disk(cx, cy, cz, radius, nx, ny, nz, thickness) {
236
+
237
+ const result = wasm.Shape_disk(cx, cy, cz, radius, nx, ny, nz, thickness);
238
+
239
+ try {
240
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
241
+ }
242
+
243
+ finally {
244
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Finite plane patch: origin, two spanning vectors `u`/`v`, extents along
250
+ * each, thickness.
251
+ */
252
+ static plane(ox, oy, oz, ux, uy, uz, vx, vy, vz, uExt, vExt, thickness) {
253
+
254
+ const result = wasm.Shape_plane(ox, oy, oz, ux, uy, uz, vx, vy, vz, uExt, vExt, thickness);
255
+
256
+ try {
257
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
258
+ }
259
+
260
+ finally {
261
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
262
+ }
263
+ }
264
+
265
+ /**
266
+ * Filled triangle between three vertices, thickened by `thickness`.
267
+ */
268
+ static triangle(ax, ay, az, bx, by, bz, cx, cy, cz, thickness) {
269
+
270
+ const result = wasm.Shape_triangle(ax, ay, az, bx, by, bz, cx, cy, cz, thickness);
271
+
272
+ try {
273
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
274
+ }
275
+
276
+ finally {
277
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
278
+ }
279
+ }
280
+
281
+ /**
282
+ * Line segment between two points, thickened by `thickness`.
283
+ */
284
+ static line(x1, y1, z1, x2, y2, z2, thickness) {
285
+
286
+ const result = wasm.Shape_line(x1, y1, z1, x2, y2, z2, thickness);
287
+
288
+ try {
289
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
290
+ }
291
+
292
+ finally {
293
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Bézier curve through `control_points` (flat `[x0, y0, z0, x1, y1, z1, …]`,
299
+ * so the length must be a non-zero multiple of 3), thickened by `thickness`
300
+ * and sampled at `resolution` steps.
301
+ */
302
+ static bezier(controlPoints, thickness, resolution) {
303
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
304
+
305
+ const controlPointsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, controlPoints, "f32")));
306
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
307
+
308
+
309
+ const result = wasm.Shape_bezier(diplomatReceive.buffer, controlPointsSlice.ptr, thickness, resolution);
310
+
311
+ try {
312
+ if (!diplomatReceive.resultFlag) {
313
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
314
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
315
+ }
316
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
317
+ }
318
+
319
+ finally {
320
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
321
+ functionCleanupArena.free();
322
+
323
+ diplomatReceive.free();
324
+ }
325
+ }
326
+
327
+ /**
328
+ * Any SDF tree as a Shape: the same JSON the terrain sampler takes
329
+ * (primitives, smooth booleans, noise — see the SDF guide) becomes
330
+ * fillable with every brush, combinable with other shapes, and
331
+ * usable in masked fills. Normals come from the field gradient, so
332
+ * the shaded brush shades smooth blends smoothly. Errors with
333
+ * `Parse` on invalid JSON and `InvalidArgument` for unbounded trees
334
+ * (use `sdf_bounded`).
335
+ */
336
+ static sdf(sdfJson) {
337
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
338
+
339
+ const sdfJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, sdfJson)));
340
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
341
+
342
+
343
+ const result = wasm.Shape_sdf(diplomatReceive.buffer, sdfJsonSlice.ptr);
344
+
345
+ try {
346
+ if (!diplomatReceive.resultFlag) {
347
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
348
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
349
+ }
350
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
351
+ }
352
+
353
+ finally {
354
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
355
+ functionCleanupArena.free();
356
+
357
+ diplomatReceive.free();
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Like `sdf`, with explicit sampling bounds (inclusive block
363
+ * coordinates) for unbounded trees such as planes.
364
+ */
365
+ static sdfBounded(sdfJson, minX, minY, minZ, maxX, maxY, maxZ) {
366
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
367
+
368
+ const sdfJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, sdfJson)));
369
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
370
+
371
+
372
+ const result = wasm.Shape_sdf_bounded(diplomatReceive.buffer, sdfJsonSlice.ptr, minX, minY, minZ, maxX, maxY, maxZ);
373
+
374
+ try {
375
+ if (!diplomatReceive.resultFlag) {
376
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
377
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
378
+ }
379
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
380
+ }
381
+
382
+ finally {
383
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
384
+ functionCleanupArena.free();
385
+
386
+ diplomatReceive.free();
387
+ }
388
+ }
389
+
390
+ /**
391
+ * Hollowed-out copy of this shape with the given wall thickness (clones the
392
+ * input, like the old `shape_hollow`).
393
+ */
394
+ hollow(thickness) {
395
+
396
+ const result = wasm.Shape_hollow(this.ffiValue, thickness);
397
+
398
+ try {
399
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
400
+ }
401
+
402
+ finally {
403
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
404
+ }
405
+ }
406
+
407
+ /**
408
+ * Boolean union of this shape and `other` (clones both inputs).
409
+ */
410
+ unionWith(other) {
411
+
412
+ const result = wasm.Shape_union_with(this.ffiValue, other.ffiValue);
413
+
414
+ try {
415
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
416
+ }
417
+
418
+ finally {
419
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Boolean intersection of this shape and `other` (clones both inputs).
425
+ */
426
+ intersectionWith(other) {
427
+
428
+ const result = wasm.Shape_intersection_with(this.ffiValue, other.ffiValue);
429
+
430
+ try {
431
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
432
+ }
433
+
434
+ finally {
435
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
436
+ }
437
+ }
438
+
439
+ /**
440
+ * Boolean difference: this shape minus `other` (clones both inputs).
441
+ */
442
+ differenceWith(other) {
443
+
444
+ const result = wasm.Shape_difference_with(this.ffiValue, other.ffiValue);
445
+
446
+ try {
447
+ return new Shape(diplomatRuntime.internalConstructor, result, []);
448
+ }
449
+
450
+ finally {
451
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
452
+ }
453
+ }
454
+
455
+ constructor(symbol, ptr, selfEdge) {
456
+ return this.#internalConstructor(...arguments)
457
+ }
458
+ }
@@ -0,0 +1,86 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
4
+
5
+
6
+
7
+ /**
8
+ * Ordering applied to region positions before bit assignment
9
+ * (PORTING rule 10).
10
+ */
11
+ export class SortStrategy {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Sort by Y ascending, then X, then Z (default Minecraft layer
20
+ * order). The first position after sorting is bit 0 (LSB).
21
+ */
22
+ static yxz(): SortStrategy;
23
+
24
+ /**
25
+ * Sort by X ascending, then Y, then Z.
26
+ */
27
+ static xyz(): SortStrategy;
28
+
29
+ /**
30
+ * Sort by Z ascending, then Y, then X.
31
+ */
32
+ static zyx(): SortStrategy;
33
+
34
+ /**
35
+ * Sort by Y descending, then X ascending, then Z ascending.
36
+ */
37
+ static yDescXz(): SortStrategy;
38
+
39
+ /**
40
+ * Sort by X descending, then Y ascending, then Z ascending.
41
+ */
42
+ static xDescYz(): SortStrategy;
43
+
44
+ /**
45
+ * Sort by Z descending, then Y ascending, then X ascending.
46
+ */
47
+ static zDescYx(): SortStrategy;
48
+
49
+ /**
50
+ * Old ABI name: `sort_strategy_descending`.
51
+ */
52
+ static descending(): SortStrategy;
53
+
54
+ /**
55
+ * Sort by Euclidean distance from the reference point, closest
56
+ * first (ties broken by Y, X, Z ascending).
57
+ */
58
+ static distanceFrom(x: number, y: number, z: number): SortStrategy;
59
+
60
+ /**
61
+ * Sort by Euclidean distance from the reference point, farthest
62
+ * first (ties broken by Y, X, Z descending).
63
+ */
64
+ static distanceFromDesc(x: number, y: number, z: number): SortStrategy;
65
+
66
+ /**
67
+ * Keep positions in the order they were added (no sorting). Useful
68
+ * when positions were ordered manually or box order matters.
69
+ */
70
+ static preserve(): SortStrategy;
71
+
72
+ /**
73
+ * Reverse of the order positions were added.
74
+ */
75
+ static reverse(): SortStrategy;
76
+
77
+ /**
78
+ * Parse from a name (e.g. "yxz", "descending", "preserve").
79
+ */
80
+ static fromString(s: string): SortStrategy;
81
+
82
+ /**
83
+ * The strategy name.
84
+ */
85
+ name(): string;
86
+ }
@@ -0,0 +1,86 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
4
+
5
+
6
+
7
+ /**
8
+ * Ordering applied to region positions before bit assignment
9
+ * (PORTING rule 10).
10
+ */
11
+ export class SortStrategy {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Sort by Y ascending, then X, then Z (default Minecraft layer
20
+ * order). The first position after sorting is bit 0 (LSB).
21
+ */
22
+ static yxz(): SortStrategy;
23
+
24
+ /**
25
+ * Sort by X ascending, then Y, then Z.
26
+ */
27
+ static xyz(): SortStrategy;
28
+
29
+ /**
30
+ * Sort by Z ascending, then Y, then X.
31
+ */
32
+ static zyx(): SortStrategy;
33
+
34
+ /**
35
+ * Sort by Y descending, then X ascending, then Z ascending.
36
+ */
37
+ static yDescXz(): SortStrategy;
38
+
39
+ /**
40
+ * Sort by X descending, then Y ascending, then Z ascending.
41
+ */
42
+ static xDescYz(): SortStrategy;
43
+
44
+ /**
45
+ * Sort by Z descending, then Y ascending, then X ascending.
46
+ */
47
+ static zDescYx(): SortStrategy;
48
+
49
+ /**
50
+ * Old ABI name: `sort_strategy_descending`.
51
+ */
52
+ static descending(): SortStrategy;
53
+
54
+ /**
55
+ * Sort by Euclidean distance from the reference point, closest
56
+ * first (ties broken by Y, X, Z ascending).
57
+ */
58
+ static distanceFrom(x: number, y: number, z: number): SortStrategy;
59
+
60
+ /**
61
+ * Sort by Euclidean distance from the reference point, farthest
62
+ * first (ties broken by Y, X, Z descending).
63
+ */
64
+ static distanceFromDesc(x: number, y: number, z: number): SortStrategy;
65
+
66
+ /**
67
+ * Keep positions in the order they were added (no sorting). Useful
68
+ * when positions were ordered manually or box order matters.
69
+ */
70
+ static preserve(): SortStrategy;
71
+
72
+ /**
73
+ * Reverse of the order positions were added.
74
+ */
75
+ static reverse(): SortStrategy;
76
+
77
+ /**
78
+ * Parse from a name (e.g. "yxz", "descending", "preserve").
79
+ */
80
+ static fromString(s: string): SortStrategy;
81
+
82
+ /**
83
+ * The strategy name.
84
+ */
85
+ name(): string;
86
+ }