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,80 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { Palette } from "./Palette.mjs"
4
+ import type { Schematic } from "./Schematic.mjs"
5
+ import type { Shape } from "./Shape.mjs"
6
+ import type { VoxelModel } from "./VoxelModel.mjs"
7
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
8
+
9
+
10
+
11
+ /**
12
+ * Namespace for the mesh-voxelization entry points (GLB/OBJ → shapes
13
+ * and textured schematics).
14
+ */
15
+ export class Voxelizer {
16
+ /** @internal */
17
+ get ffiValue(): pointer;
18
+ /** @internal */
19
+ constructor();
20
+
21
+
22
+ /**
23
+ * Reason the last configured model import failed; cleared on success.
24
+ */
25
+ static lastErrorDetail(): string;
26
+
27
+ /**
28
+ * PHP-friendly GLB input: avoids expanding every byte into a boxed
29
+ * integer array before copying it over FFI.
30
+ */
31
+ static loadGlbBase64(data: string): VoxelModel;
32
+
33
+ /**
34
+ * Parse a GLB once for axis-based size estimates and lit voxelization.
35
+ */
36
+ static loadGlb(data: Array<number>): VoxelModel;
37
+
38
+ /**
39
+ * Parse an OBJ once for axis-based size estimates and lit voxelization.
40
+ */
41
+ static loadObj(text: string): VoxelModel;
42
+
43
+ /**
44
+ * Load a binary glTF (`.glb`, embedded buffers/images) and voxelize
45
+ * it into a fillable Shape: the model is uniformly scaled so its
46
+ * largest dimension equals `target_size` voxels, centered on x/z
47
+ * with its base resting at y = 0. Solidity is a parity test at each
48
+ * voxel center (robust on closed meshes), plus — when `shell` > 0 —
49
+ * every voxel whose center is within `shell` blocks of the surface,
50
+ * which rescues thin walls and hollow vessels (0.7–1.0 closes
51
+ * single-voxel shells; 0 = pure parity; a *negative* `shell` is
52
+ * surface-only — a skin |shell| blocks thick with no interior fill,
53
+ * for open sheets/ribbons that dip or self-overlap). Errors with `Parse` on
54
+ * malformed/triangle-less GLB and `InvalidArgument` on a
55
+ * non-positive `target_size`.
56
+ */
57
+ static shapeFromGlb(data: Array<number>, targetSize: number, shell: number): Shape;
58
+
59
+ /**
60
+ * Load a Wavefront OBJ (`v`/`vt`/`f` lines; polygon faces are
61
+ * fan-triangulated, negative indices supported, materials ignored)
62
+ * and voxelize it into a fillable Shape, fitted and shelled exactly
63
+ * like `shape_from_glb`. Errors with `Parse` on malformed/triangle-less
64
+ * OBJ and `InvalidArgument` on invalid UTF-8 or a non-positive
65
+ * `target_size`.
66
+ */
67
+ static shapeFromObj(text: string, targetSize: number, shell: number): Shape;
68
+
69
+ /**
70
+ * Load a binary glTF and voxelize it directly into a textured
71
+ * schematic named `name`: every solid voxel becomes the `palette`
72
+ * block closest to its nearest-surface texture color (interior
73
+ * voxels inherit the nearest surface color; voxels without texture
74
+ * info snap to mid-gray). `shell` behaves as in `shape_from_glb` —
75
+ * use ~0.7 for thin-walled models. Errors with `Parse` on malformed GLB and
76
+ * `InvalidArgument` on invalid UTF-8 or a non-positive
77
+ * `target_size`.
78
+ */
79
+ static schematicFromGlbTextured(data: Array<number>, targetSize: number, shell: number, palette: Palette, name: string): Schematic;
80
+ }
@@ -0,0 +1,261 @@
1
+ // generated by diplomat-tool
2
+ import { NucleationError } from "./NucleationError.mjs"
3
+ import { Palette } from "./Palette.mjs"
4
+ import { Schematic } from "./Schematic.mjs"
5
+ import { Shape } from "./Shape.mjs"
6
+ import { VoxelModel } from "./VoxelModel.mjs"
7
+ import wasm from "./diplomat-wasm.mjs";
8
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
9
+
10
+ const Voxelizer_box_destroy_registry = new FinalizationRegistry((ptr) => {
11
+ wasm.Voxelizer_destroy(ptr);
12
+ });
13
+
14
+ /**
15
+ * Namespace for the mesh-voxelization entry points (GLB/OBJ → shapes
16
+ * and textured schematics).
17
+ */
18
+ export class Voxelizer {
19
+ // Internal ptr reference:
20
+ #ptr = null;
21
+
22
+ // Lifetimes are only to keep dependencies alive.
23
+ // Since JS won't garbage collect until there are no incoming edges.
24
+ #selfEdge = [];
25
+
26
+ #internalConstructor(symbol, ptr, selfEdge) {
27
+ if (symbol !== diplomatRuntime.internalConstructor) {
28
+ console.error("Voxelizer is an Opaque type. You cannot call its constructor.");
29
+ return;
30
+ }
31
+ this.#ptr = ptr;
32
+ this.#selfEdge = selfEdge;
33
+
34
+ // Are we being borrowed? If not, we can register.
35
+ if (this.#selfEdge.length === 0) {
36
+ Voxelizer_box_destroy_registry.register(this, this.#ptr);
37
+ }
38
+
39
+ return this;
40
+ }
41
+ /** @internal */
42
+ get ffiValue() {
43
+ return this.#ptr;
44
+ }
45
+
46
+
47
+ /**
48
+ * Reason the last configured model import failed; cleared on success.
49
+ */
50
+ static lastErrorDetail() {
51
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
52
+
53
+ wasm.Voxelizer_last_error_detail(write.buffer);
54
+
55
+ try {
56
+ return write.readString8();
57
+ }
58
+
59
+ finally {
60
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
61
+ write.free();
62
+ }
63
+ }
64
+
65
+ /**
66
+ * PHP-friendly GLB input: avoids expanding every byte into a boxed
67
+ * integer array before copying it over FFI.
68
+ */
69
+ static loadGlbBase64(data) {
70
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
71
+
72
+ const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, data)));
73
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
74
+
75
+
76
+ const result = wasm.Voxelizer_load_glb_base64(diplomatReceive.buffer, dataSlice.ptr);
77
+
78
+ try {
79
+ if (!diplomatReceive.resultFlag) {
80
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
81
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
82
+ }
83
+ return new VoxelModel(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
84
+ }
85
+
86
+ finally {
87
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
88
+ functionCleanupArena.free();
89
+
90
+ diplomatReceive.free();
91
+ }
92
+ }
93
+
94
+ /**
95
+ * Parse a GLB once for axis-based size estimates and lit voxelization.
96
+ */
97
+ static loadGlb(data) {
98
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
99
+
100
+ const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, data, "u8")));
101
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
102
+
103
+
104
+ const result = wasm.Voxelizer_load_glb(diplomatReceive.buffer, dataSlice.ptr);
105
+
106
+ try {
107
+ if (!diplomatReceive.resultFlag) {
108
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
109
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
110
+ }
111
+ return new VoxelModel(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
112
+ }
113
+
114
+ finally {
115
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
116
+ functionCleanupArena.free();
117
+
118
+ diplomatReceive.free();
119
+ }
120
+ }
121
+
122
+ /**
123
+ * Parse an OBJ once for axis-based size estimates and lit voxelization.
124
+ */
125
+ static loadObj(text) {
126
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
127
+
128
+ const textSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, text)));
129
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
130
+
131
+
132
+ const result = wasm.Voxelizer_load_obj(diplomatReceive.buffer, textSlice.ptr);
133
+
134
+ try {
135
+ if (!diplomatReceive.resultFlag) {
136
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
137
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
138
+ }
139
+ return new VoxelModel(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
140
+ }
141
+
142
+ finally {
143
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
144
+ functionCleanupArena.free();
145
+
146
+ diplomatReceive.free();
147
+ }
148
+ }
149
+
150
+ /**
151
+ * Load a binary glTF (`.glb`, embedded buffers/images) and voxelize
152
+ * it into a fillable Shape: the model is uniformly scaled so its
153
+ * largest dimension equals `target_size` voxels, centered on x/z
154
+ * with its base resting at y = 0. Solidity is a parity test at each
155
+ * voxel center (robust on closed meshes), plus — when `shell` > 0 —
156
+ * every voxel whose center is within `shell` blocks of the surface,
157
+ * which rescues thin walls and hollow vessels (0.7–1.0 closes
158
+ * single-voxel shells; 0 = pure parity; a *negative* `shell` is
159
+ * surface-only — a skin |shell| blocks thick with no interior fill,
160
+ * for open sheets/ribbons that dip or self-overlap). Errors with `Parse` on
161
+ * malformed/triangle-less GLB and `InvalidArgument` on a
162
+ * non-positive `target_size`.
163
+ */
164
+ static shapeFromGlb(data, targetSize, shell) {
165
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
166
+
167
+ const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, data, "u8")));
168
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
169
+
170
+
171
+ const result = wasm.Voxelizer_shape_from_glb(diplomatReceive.buffer, dataSlice.ptr, targetSize, shell);
172
+
173
+ try {
174
+ if (!diplomatReceive.resultFlag) {
175
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
176
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
177
+ }
178
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
179
+ }
180
+
181
+ finally {
182
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
183
+ functionCleanupArena.free();
184
+
185
+ diplomatReceive.free();
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Load a Wavefront OBJ (`v`/`vt`/`f` lines; polygon faces are
191
+ * fan-triangulated, negative indices supported, materials ignored)
192
+ * and voxelize it into a fillable Shape, fitted and shelled exactly
193
+ * like `shape_from_glb`. Errors with `Parse` on malformed/triangle-less
194
+ * OBJ and `InvalidArgument` on invalid UTF-8 or a non-positive
195
+ * `target_size`.
196
+ */
197
+ static shapeFromObj(text, targetSize, shell) {
198
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
199
+
200
+ const textSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, text)));
201
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
202
+
203
+
204
+ const result = wasm.Voxelizer_shape_from_obj(diplomatReceive.buffer, textSlice.ptr, targetSize, shell);
205
+
206
+ try {
207
+ if (!diplomatReceive.resultFlag) {
208
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
209
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
210
+ }
211
+ return new Shape(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
212
+ }
213
+
214
+ finally {
215
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
216
+ functionCleanupArena.free();
217
+
218
+ diplomatReceive.free();
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Load a binary glTF and voxelize it directly into a textured
224
+ * schematic named `name`: every solid voxel becomes the `palette`
225
+ * block closest to its nearest-surface texture color (interior
226
+ * voxels inherit the nearest surface color; voxels without texture
227
+ * info snap to mid-gray). `shell` behaves as in `shape_from_glb` —
228
+ * use ~0.7 for thin-walled models. Errors with `Parse` on malformed GLB and
229
+ * `InvalidArgument` on invalid UTF-8 or a non-positive
230
+ * `target_size`.
231
+ */
232
+ static schematicFromGlbTextured(data, targetSize, shell, palette, name) {
233
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
234
+
235
+ const dataSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, data, "u8")));
236
+ const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
237
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
238
+
239
+
240
+ const result = wasm.Voxelizer_schematic_from_glb_textured(diplomatReceive.buffer, dataSlice.ptr, targetSize, shell, palette.ffiValue, nameSlice.ptr);
241
+
242
+ try {
243
+ if (!diplomatReceive.resultFlag) {
244
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
245
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
246
+ }
247
+ return new Schematic(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
248
+ }
249
+
250
+ finally {
251
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
252
+ functionCleanupArena.free();
253
+
254
+ diplomatReceive.free();
255
+ }
256
+ }
257
+
258
+ constructor(symbol, ptr, selfEdge) {
259
+ return this.#internalConstructor(...arguments)
260
+ }
261
+ }
@@ -0,0 +1,75 @@
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
+ * A single decoded chunk (or a from-scratch chunk under construction).
10
+ */
11
+ export class WorldChunkView {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Create an empty chunk view at the given chunk coordinates — the
20
+ * starting point for generating worlds from scratch. Sections are
21
+ * created on demand by `set_block`. Serialized with
22
+ * `status = "minecraft:full"` (Minecraft will not regenerate over it)
23
+ * and the default data version.
24
+ */
25
+ static create(cx: number, cz: number): WorldChunkView;
26
+
27
+ /**
28
+ * The chunk X coordinate (in chunk units).
29
+ */
30
+ cx(): number;
31
+
32
+ /**
33
+ * The chunk Z coordinate (in chunk units).
34
+ */
35
+ cz(): number;
36
+
37
+ /**
38
+ * Convert the chunk view to a standalone schematic.
39
+ */
40
+ toSchematic(): Schematic;
41
+
42
+ /**
43
+ * Build a chunk view at (`cx`, `cz`) from a schematic — every non-air
44
+ * block whose world (x, z) falls in this chunk is copied in, the rest
45
+ * ignored. The write-side twin of `to_schematic`: this is how the
46
+ * schematic building tools become a *world generator*. Fill a schematic
47
+ * with any shape, SDF, brush, or footprint (intersect it with the
48
+ * chunk's cuboid to keep memory flat), then hand it here per chunk and
49
+ * `WorldSink.write_chunk` it. Also the transform step of a world filter:
50
+ * `to_schematic` a streamed chunk, edit it, rebuild with this.
51
+ */
52
+ static fromSchematic(schematic: Schematic, cx: number, cz: number): WorldChunkView;
53
+
54
+ /**
55
+ * Set a block at absolute world coordinates inside this chunk view.
56
+ * `block_name` must be a valid Minecraft block identifier (e.g.
57
+ * `minecraft:stone`). Errors with `InvalidArgument` if (x, z) is outside
58
+ * this chunk's column.
59
+ */
60
+ setBlock(x: number, y: number, z: number, blockName: string): void;
61
+
62
+ /**
63
+ * Overwrite the biome of every currently-present section of the chunk
64
+ * view with `biome_name` (e.g. `minecraft:desert`). Sections are created
65
+ * lazily by `set_block`, so call this AFTER placing blocks.
66
+ */
67
+ setBiome(biomeName: string): void;
68
+
69
+ /**
70
+ * Deduped union of all sections' biome palette entries, in order of
71
+ * first appearance, written as a JSON array string (`[]` if no section
72
+ * carries biome data).
73
+ */
74
+ biomePaletteJson(): string;
75
+ }
@@ -0,0 +1,75 @@
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
+ * A single decoded chunk (or a from-scratch chunk under construction).
10
+ */
11
+ export class WorldChunkView {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Create an empty chunk view at the given chunk coordinates — the
20
+ * starting point for generating worlds from scratch. Sections are
21
+ * created on demand by `set_block`. Serialized with
22
+ * `status = "minecraft:full"` (Minecraft will not regenerate over it)
23
+ * and the default data version.
24
+ */
25
+ static create(cx: number, cz: number): WorldChunkView;
26
+
27
+ /**
28
+ * The chunk X coordinate (in chunk units).
29
+ */
30
+ cx(): number;
31
+
32
+ /**
33
+ * The chunk Z coordinate (in chunk units).
34
+ */
35
+ cz(): number;
36
+
37
+ /**
38
+ * Convert the chunk view to a standalone schematic.
39
+ */
40
+ toSchematic(): Schematic;
41
+
42
+ /**
43
+ * Build a chunk view at (`cx`, `cz`) from a schematic — every non-air
44
+ * block whose world (x, z) falls in this chunk is copied in, the rest
45
+ * ignored. The write-side twin of `to_schematic`: this is how the
46
+ * schematic building tools become a *world generator*. Fill a schematic
47
+ * with any shape, SDF, brush, or footprint (intersect it with the
48
+ * chunk's cuboid to keep memory flat), then hand it here per chunk and
49
+ * `WorldSink.write_chunk` it. Also the transform step of a world filter:
50
+ * `to_schematic` a streamed chunk, edit it, rebuild with this.
51
+ */
52
+ static fromSchematic(schematic: Schematic, cx: number, cz: number): WorldChunkView;
53
+
54
+ /**
55
+ * Set a block at absolute world coordinates inside this chunk view.
56
+ * `block_name` must be a valid Minecraft block identifier (e.g.
57
+ * `minecraft:stone`). Errors with `InvalidArgument` if (x, z) is outside
58
+ * this chunk's column.
59
+ */
60
+ setBlock(x: number, y: number, z: number, blockName: string): void;
61
+
62
+ /**
63
+ * Overwrite the biome of every currently-present section of the chunk
64
+ * view with `biome_name` (e.g. `minecraft:desert`). Sections are created
65
+ * lazily by `set_block`, so call this AFTER placing blocks.
66
+ */
67
+ setBiome(biomeName: string): void;
68
+
69
+ /**
70
+ * Deduped union of all sections' biome palette entries, in order of
71
+ * first appearance, written as a JSON array string (`[]` if no section
72
+ * carries biome data).
73
+ */
74
+ biomePaletteJson(): string;
75
+ }