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,269 @@
1
+ // generated by diplomat-tool
2
+ import { MeshBounds } from "./MeshBounds.mjs"
3
+ import { MeshConfig } from "./MeshConfig.mjs"
4
+ import { NucleationError } from "./NucleationError.mjs"
5
+ import { ResourcePack } from "./ResourcePack.mjs"
6
+ import { Schematic } from "./Schematic.mjs"
7
+ import wasm from "./diplomat-wasm.mjs";
8
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
9
+
10
+ const MeshResult_box_destroy_registry = new FinalizationRegistry((ptr) => {
11
+ wasm.MeshResult_destroy(ptr);
12
+ });
13
+
14
+ /**
15
+ * A single mesh output. Wraps {@link crate::meshing::MeshResult}.
16
+ */
17
+ export class MeshResult {
18
+ // Internal ptr reference:
19
+ #ptr = null;
20
+
21
+ // Lifetimes are only to keep dependencies alive.
22
+ // Since JS won't garbage collect until there are no incoming edges.
23
+ #selfEdge = [];
24
+
25
+ #internalConstructor(symbol, ptr, selfEdge) {
26
+ if (symbol !== diplomatRuntime.internalConstructor) {
27
+ console.error("MeshResult is an Opaque type. You cannot call its constructor.");
28
+ return;
29
+ }
30
+ this.#ptr = ptr;
31
+ this.#selfEdge = selfEdge;
32
+
33
+ // Are we being borrowed? If not, we can register.
34
+ if (this.#selfEdge.length === 0) {
35
+ MeshResult_box_destroy_registry.register(this, this.#ptr);
36
+ }
37
+
38
+ return this;
39
+ }
40
+ /** @internal */
41
+ get ffiValue() {
42
+ return this.#ptr;
43
+ }
44
+
45
+
46
+ /**
47
+ * Mesh an entire schematic in one pass (old ABI: `schematic_to_mesh`).
48
+ */
49
+ static create(schematic, pack, config) {
50
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
51
+
52
+
53
+ const result = wasm.MeshResult_create(diplomatReceive.buffer, schematic.ffiValue, pack.ffiValue, config.ffiValue);
54
+
55
+ try {
56
+ if (!diplomatReceive.resultFlag) {
57
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
58
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
59
+ }
60
+ return new MeshResult(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
61
+ }
62
+
63
+ finally {
64
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
65
+ diplomatReceive.free();
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Mesh a schematic with USDZ-compatible output (old ABI: `schematic_to_usdz`).
71
+ */
72
+ static createUsdz(schematic, pack, config) {
73
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
74
+
75
+
76
+ const result = wasm.MeshResult_create_usdz(diplomatReceive.buffer, schematic.ffiValue, pack.ffiValue, config.ffiValue);
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 MeshResult(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
84
+ }
85
+
86
+ finally {
87
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
88
+ diplomatReceive.free();
89
+ }
90
+ }
91
+
92
+ /**
93
+ * A schematic plus a run timeline, as an animated GLB, base64-encoded.
94
+ *
95
+ * `timeline_json` is what `TickSimulation::animation_timeline_json`
96
+ * produces, and `schematic` the scene it starts from
97
+ * (`selection_schematic_b64`). Static rather than a method on a mesh
98
+ * because the animation is built from the schematic and the timeline
99
+ * together — there is no intermediate `MeshResult` to hang it off.
100
+ */
101
+ static animatedGlbB64(schematic, pack, timelineJson) {
102
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
103
+
104
+ const timelineJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, timelineJson)));
105
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
106
+
107
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
108
+
109
+
110
+ const result = wasm.MeshResult_animated_glb_b64(diplomatReceive.buffer, schematic.ffiValue, pack.ffiValue, timelineJsonSlice.ptr, write.buffer);
111
+
112
+ try {
113
+ if (!diplomatReceive.resultFlag) {
114
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
115
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
116
+ }
117
+ return write.readString8();
118
+ }
119
+
120
+ finally {
121
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
122
+ functionCleanupArena.free();
123
+
124
+ diplomatReceive.free();
125
+ write.free();
126
+ }
127
+ }
128
+
129
+ /**
130
+ * The mesh as a binary GLB, base64-encoded.
131
+ */
132
+ glbDataB64() {
133
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
134
+
135
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
136
+
137
+
138
+ const result = wasm.MeshResult_glb_data_b64(diplomatReceive.buffer, this.ffiValue, write.buffer);
139
+
140
+ try {
141
+ if (!diplomatReceive.resultFlag) {
142
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
143
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
144
+ }
145
+ return write.readString8();
146
+ }
147
+
148
+ finally {
149
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
150
+ diplomatReceive.free();
151
+ write.free();
152
+ }
153
+ }
154
+
155
+ /**
156
+ * The mesh as a USDZ archive, base64-encoded.
157
+ */
158
+ usdzDataB64() {
159
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
160
+
161
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
162
+
163
+
164
+ const result = wasm.MeshResult_usdz_data_b64(diplomatReceive.buffer, this.ffiValue, write.buffer);
165
+
166
+ try {
167
+ if (!diplomatReceive.resultFlag) {
168
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
169
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
170
+ }
171
+ return write.readString8();
172
+ }
173
+
174
+ finally {
175
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
176
+ diplomatReceive.free();
177
+ write.free();
178
+ }
179
+ }
180
+
181
+ /**
182
+ * The mesh serialized in the NUCM cache format, base64-encoded.
183
+ */
184
+ nucmDataB64() {
185
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
186
+
187
+ wasm.MeshResult_nucm_data_b64(this.ffiValue, write.buffer);
188
+
189
+ try {
190
+ return write.readString8();
191
+ }
192
+
193
+ finally {
194
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
195
+ write.free();
196
+ }
197
+ }
198
+
199
+ /**
200
+ * Total number of vertices in the mesh.
201
+ */
202
+ vertexCount() {
203
+
204
+ const result = wasm.MeshResult_vertex_count(this.ffiValue);
205
+
206
+ try {
207
+ return result;
208
+ }
209
+
210
+ finally {
211
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
212
+ }
213
+ }
214
+
215
+ /**
216
+ * Total number of triangles in the mesh.
217
+ */
218
+ triangleCount() {
219
+
220
+ const result = wasm.MeshResult_triangle_count(this.ffiValue);
221
+
222
+ try {
223
+ return result;
224
+ }
225
+
226
+ finally {
227
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
228
+ }
229
+ }
230
+
231
+ /**
232
+ * Whether the mesh contains any transparent or translucent geometry.
233
+ */
234
+ hasTransparency() {
235
+
236
+ const result = wasm.MeshResult_has_transparency(this.ffiValue);
237
+
238
+ try {
239
+ return result === 1;
240
+ }
241
+
242
+ finally {
243
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
244
+ }
245
+ }
246
+
247
+ /**
248
+ * Axis-aligned bounding box of the mesh, in world units.
249
+ */
250
+ bounds() {
251
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 24, 4, false);
252
+
253
+
254
+ const result = wasm.MeshResult_bounds(diplomatReceive.buffer, this.ffiValue);
255
+
256
+ try {
257
+ return MeshBounds._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
258
+ }
259
+
260
+ finally {
261
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
262
+ diplomatReceive.free();
263
+ }
264
+ }
265
+
266
+ constructor(symbol, ptr, selfEdge) {
267
+ return this.#internalConstructor(...arguments)
268
+ }
269
+ }
@@ -0,0 +1,50 @@
1
+ // generated by diplomat-tool
2
+ import type { MeshConfig } from "./MeshConfig.mjs"
3
+ import type { MeshResult } from "./MeshResult.mjs"
4
+ import type { NucleationError } from "./NucleationError.mjs"
5
+ import type { ResourcePack } from "./ResourcePack.mjs"
6
+ import type { Schematic } from "./Schematic.mjs"
7
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
8
+
9
+
10
+
11
+ /**
12
+ * Per-region mesh results. Wraps {@link crate::meshing::MultiMeshResult}.
13
+ */
14
+ export class MultiMeshResult {
15
+ /** @internal */
16
+ get ffiValue(): pointer;
17
+ /** @internal */
18
+ constructor();
19
+
20
+
21
+ /**
22
+ * Mesh each region separately (old ABI: `schematic_mesh_by_region`).
23
+ */
24
+ static create(schematic: Schematic, pack: ResourcePack, config: MeshConfig): MultiMeshResult;
25
+
26
+ /**
27
+ * Region names, as a JSON array string.
28
+ */
29
+ regionNamesJson(): string;
30
+
31
+ /**
32
+ * The mesh for one region (cloned).
33
+ */
34
+ getMesh(regionName: string): MeshResult;
35
+
36
+ /**
37
+ * Total vertex count across all region meshes.
38
+ */
39
+ totalVertexCount(): number;
40
+
41
+ /**
42
+ * Total triangle count across all region meshes.
43
+ */
44
+ totalTriangleCount(): number;
45
+
46
+ /**
47
+ * Number of region meshes.
48
+ */
49
+ meshCount(): number;
50
+ }
@@ -0,0 +1,50 @@
1
+ // generated by diplomat-tool
2
+ import type { MeshConfig } from "./MeshConfig.mjs"
3
+ import type { MeshResult } from "./MeshResult.mjs"
4
+ import type { NucleationError } from "./NucleationError.mjs"
5
+ import type { ResourcePack } from "./ResourcePack.mjs"
6
+ import type { Schematic } from "./Schematic.mjs"
7
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
8
+
9
+
10
+
11
+ /**
12
+ * Per-region mesh results. Wraps {@link crate::meshing::MultiMeshResult}.
13
+ */
14
+ export class MultiMeshResult {
15
+ /** @internal */
16
+ get ffiValue(): pointer;
17
+ /** @internal */
18
+ constructor();
19
+
20
+
21
+ /**
22
+ * Mesh each region separately (old ABI: `schematic_mesh_by_region`).
23
+ */
24
+ static create(schematic: Schematic, pack: ResourcePack, config: MeshConfig): MultiMeshResult;
25
+
26
+ /**
27
+ * Region names, as a JSON array string.
28
+ */
29
+ regionNamesJson(): string;
30
+
31
+ /**
32
+ * The mesh for one region (cloned).
33
+ */
34
+ getMesh(regionName: string): MeshResult;
35
+
36
+ /**
37
+ * Total vertex count across all region meshes.
38
+ */
39
+ totalVertexCount(): number;
40
+
41
+ /**
42
+ * Total triangle count across all region meshes.
43
+ */
44
+ totalTriangleCount(): number;
45
+
46
+ /**
47
+ * Number of region meshes.
48
+ */
49
+ meshCount(): number;
50
+ }
@@ -0,0 +1,166 @@
1
+ // generated by diplomat-tool
2
+ import { MeshConfig } from "./MeshConfig.mjs"
3
+ import { MeshResult } from "./MeshResult.mjs"
4
+ import { NucleationError } from "./NucleationError.mjs"
5
+ import { ResourcePack } from "./ResourcePack.mjs"
6
+ import { Schematic } from "./Schematic.mjs"
7
+ import wasm from "./diplomat-wasm.mjs";
8
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
9
+
10
+ const MultiMeshResult_box_destroy_registry = new FinalizationRegistry((ptr) => {
11
+ wasm.MultiMeshResult_destroy(ptr);
12
+ });
13
+
14
+ /**
15
+ * Per-region mesh results. Wraps {@link crate::meshing::MultiMeshResult}.
16
+ */
17
+ export class MultiMeshResult {
18
+ // Internal ptr reference:
19
+ #ptr = null;
20
+
21
+ // Lifetimes are only to keep dependencies alive.
22
+ // Since JS won't garbage collect until there are no incoming edges.
23
+ #selfEdge = [];
24
+
25
+ #internalConstructor(symbol, ptr, selfEdge) {
26
+ if (symbol !== diplomatRuntime.internalConstructor) {
27
+ console.error("MultiMeshResult is an Opaque type. You cannot call its constructor.");
28
+ return;
29
+ }
30
+ this.#ptr = ptr;
31
+ this.#selfEdge = selfEdge;
32
+
33
+ // Are we being borrowed? If not, we can register.
34
+ if (this.#selfEdge.length === 0) {
35
+ MultiMeshResult_box_destroy_registry.register(this, this.#ptr);
36
+ }
37
+
38
+ return this;
39
+ }
40
+ /** @internal */
41
+ get ffiValue() {
42
+ return this.#ptr;
43
+ }
44
+
45
+
46
+ /**
47
+ * Mesh each region separately (old ABI: `schematic_mesh_by_region`).
48
+ */
49
+ static create(schematic, pack, config) {
50
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
51
+
52
+
53
+ const result = wasm.MultiMeshResult_create(diplomatReceive.buffer, schematic.ffiValue, pack.ffiValue, config.ffiValue);
54
+
55
+ try {
56
+ if (!diplomatReceive.resultFlag) {
57
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
58
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
59
+ }
60
+ return new MultiMeshResult(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
61
+ }
62
+
63
+ finally {
64
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
65
+ diplomatReceive.free();
66
+ }
67
+ }
68
+
69
+ /**
70
+ * Region names, as a JSON array string.
71
+ */
72
+ regionNamesJson() {
73
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
74
+
75
+ wasm.MultiMeshResult_region_names_json(this.ffiValue, write.buffer);
76
+
77
+ try {
78
+ return write.readString8();
79
+ }
80
+
81
+ finally {
82
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
83
+ write.free();
84
+ }
85
+ }
86
+
87
+ /**
88
+ * The mesh for one region (cloned).
89
+ */
90
+ getMesh(regionName) {
91
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
92
+
93
+ const regionNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, regionName)));
94
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
95
+
96
+
97
+ const result = wasm.MultiMeshResult_get_mesh(diplomatReceive.buffer, this.ffiValue, regionNameSlice.ptr);
98
+
99
+ try {
100
+ if (!diplomatReceive.resultFlag) {
101
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
102
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
103
+ }
104
+ return new MeshResult(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
105
+ }
106
+
107
+ finally {
108
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
109
+ functionCleanupArena.free();
110
+
111
+ diplomatReceive.free();
112
+ }
113
+ }
114
+
115
+ /**
116
+ * Total vertex count across all region meshes.
117
+ */
118
+ totalVertexCount() {
119
+
120
+ const result = wasm.MultiMeshResult_total_vertex_count(this.ffiValue);
121
+
122
+ try {
123
+ return result;
124
+ }
125
+
126
+ finally {
127
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
128
+ }
129
+ }
130
+
131
+ /**
132
+ * Total triangle count across all region meshes.
133
+ */
134
+ totalTriangleCount() {
135
+
136
+ const result = wasm.MultiMeshResult_total_triangle_count(this.ffiValue);
137
+
138
+ try {
139
+ return result;
140
+ }
141
+
142
+ finally {
143
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
144
+ }
145
+ }
146
+
147
+ /**
148
+ * Number of region meshes.
149
+ */
150
+ meshCount() {
151
+
152
+ const result = wasm.MultiMeshResult_mesh_count(this.ffiValue);
153
+
154
+ try {
155
+ return result;
156
+ }
157
+
158
+ finally {
159
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
160
+ }
161
+ }
162
+
163
+ constructor(symbol, ptr, selfEdge) {
164
+ return this.#internalConstructor(...arguments)
165
+ }
166
+ }
@@ -0,0 +1,50 @@
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
+ * Namespace type for the free-standing NBT builder helpers (the old
9
+ * `nbt_text_build` / `nbt_chest_build` / `nbt_sign_build`), following the
10
+ * static-methods-on-a-dummy-opaque pattern.
11
+ */
12
+ export class Nbt {
13
+ /** @internal */
14
+ get ffiValue(): pointer;
15
+ /** @internal */
16
+ constructor();
17
+
18
+
19
+ /**
20
+ * Build a Minecraft JSON text-component string.
21
+ *
22
+ * `color` may be empty (no color). `bold` and `italic` use `-1` for
23
+ * unset, `0` for false, nonzero for true.
24
+ */
25
+ static textBuild(s: string, color: string, bold: number, italic: number): string;
26
+
27
+ /**
28
+ * Build a chest-NBT SNBT string for use as the `{...}` portion of a block
29
+ * string.
30
+ *
31
+ * `items_json` is a JSON array of `{"id": string, "count"?: int,
32
+ * "slot"?: int}` entries (may be empty or `[]`); a missing/non-positive
33
+ * `count` defaults to 1, a missing/negative `slot` auto-assigns
34
+ * positionally. `name` is an optional plain-text custom name (empty = no
35
+ * `CustomName`); it is wrapped in a JSON text component automatically
36
+ * unless it already starts with `{`.
37
+ */
38
+ static chestBuild(itemsJson: string, name: string): string;
39
+
40
+ /**
41
+ * Build a modern (1.20+) sign-NBT SNBT string.
42
+ *
43
+ * `front_json` and `back_json` are JSON arrays of up to 4 line strings
44
+ * (either may be empty or `[]`). Each line may be a plain string
45
+ * (auto-wrapped via `text_build`) or an already-built JSON component
46
+ * (starts with `{`). `color` is the dye color string (empty defaults to
47
+ * `"black"`).
48
+ */
49
+ static signBuild(frontJson: string, backJson: string, color: string, glowing: boolean, waxed: boolean): string;
50
+ }
@@ -0,0 +1,50 @@
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
+ * Namespace type for the free-standing NBT builder helpers (the old
9
+ * `nbt_text_build` / `nbt_chest_build` / `nbt_sign_build`), following the
10
+ * static-methods-on-a-dummy-opaque pattern.
11
+ */
12
+ export class Nbt {
13
+ /** @internal */
14
+ get ffiValue(): pointer;
15
+ /** @internal */
16
+ constructor();
17
+
18
+
19
+ /**
20
+ * Build a Minecraft JSON text-component string.
21
+ *
22
+ * `color` may be empty (no color). `bold` and `italic` use `-1` for
23
+ * unset, `0` for false, nonzero for true.
24
+ */
25
+ static textBuild(s: string, color: string, bold: number, italic: number): string;
26
+
27
+ /**
28
+ * Build a chest-NBT SNBT string for use as the `{...}` portion of a block
29
+ * string.
30
+ *
31
+ * `items_json` is a JSON array of `{"id": string, "count"?: int,
32
+ * "slot"?: int}` entries (may be empty or `[]`); a missing/non-positive
33
+ * `count` defaults to 1, a missing/negative `slot` auto-assigns
34
+ * positionally. `name` is an optional plain-text custom name (empty = no
35
+ * `CustomName`); it is wrapped in a JSON text component automatically
36
+ * unless it already starts with `{`.
37
+ */
38
+ static chestBuild(itemsJson: string, name: string): string;
39
+
40
+ /**
41
+ * Build a modern (1.20+) sign-NBT SNBT string.
42
+ *
43
+ * `front_json` and `back_json` are JSON arrays of up to 4 line strings
44
+ * (either may be empty or `[]`). Each line may be a plain string
45
+ * (auto-wrapped via `text_build`) or an already-built JSON component
46
+ * (starts with `{`). `color` is the dye color string (empty defaults to
47
+ * `"black"`).
48
+ */
49
+ static signBuild(frontJson: string, backJson: string, color: string, glowing: boolean, waxed: boolean): string;
50
+ }