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,423 @@
1
+ // generated by diplomat-tool
2
+ import { NucleationError } from "./NucleationError.mjs"
3
+ import { RedstoneGraph } from "./RedstoneGraph.mjs"
4
+ import { Schematic } from "./Schematic.mjs"
5
+ import wasm from "./diplomat-wasm.mjs";
6
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
7
+
8
+ const MchprsWorld_box_destroy_registry = new FinalizationRegistry((ptr) => {
9
+ wasm.MchprsWorld_destroy(ptr);
10
+ });
11
+
12
+ /**
13
+ * A running MCHPRS redstone simulation. Wraps {@link crate::simulation::MchprsWorld}.
14
+ */
15
+ export class MchprsWorld {
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("MchprsWorld 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
+ MchprsWorld_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
+ * Create a simulation world from a schematic with default options.
46
+ */
47
+ static create(schematic) {
48
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
49
+
50
+
51
+ const result = wasm.MchprsWorld_create(diplomatReceive.buffer, schematic.ffiValue);
52
+
53
+ try {
54
+ if (!diplomatReceive.resultFlag) {
55
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
56
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
57
+ }
58
+ return new MchprsWorld(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
59
+ }
60
+
61
+ finally {
62
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
63
+ diplomatReceive.free();
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Create a simulation world with explicit options.
69
+ */
70
+ static createWithOptions(schematic, optimize, ioOnly) {
71
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
72
+
73
+
74
+ const result = wasm.MchprsWorld_create_with_options(diplomatReceive.buffer, schematic.ffiValue, optimize, ioOnly);
75
+
76
+ try {
77
+ if (!diplomatReceive.resultFlag) {
78
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
79
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
80
+ }
81
+ return new MchprsWorld(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
82
+ }
83
+
84
+ finally {
85
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
86
+ diplomatReceive.free();
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Create a simulation world with custom IO positions
92
+ * (`custom_io_positions` is flat `[x,y,z, x,y,z, ...]`).
93
+ */
94
+ static createWithCustomIo(schematic, optimize, ioOnly, customIoPositions) {
95
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
96
+
97
+ const customIoPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, customIoPositions, "i32")));
98
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
99
+
100
+
101
+ const result = wasm.MchprsWorld_create_with_custom_io(diplomatReceive.buffer, schematic.ffiValue, optimize, ioOnly, customIoPositionsSlice.ptr);
102
+
103
+ try {
104
+ if (!diplomatReceive.resultFlag) {
105
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
106
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
107
+ }
108
+ return new MchprsWorld(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
109
+ }
110
+
111
+ finally {
112
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
113
+ functionCleanupArena.free();
114
+
115
+ diplomatReceive.free();
116
+ }
117
+ }
118
+
119
+ /**
120
+ * One-shot convenience (old ABI: `schematic_simulate_use_block`):
121
+ * build a world from `schematic`, fire an `on_use_block` event per
122
+ * triple in `events_xyz`, run `ticks` ticks, and return the simulated
123
+ * schematic. Unlike the old ABI (which mutated in place), this returns
124
+ * a new `Schematic`.
125
+ */
126
+ static simulateUseBlock(schematic, ticks, eventsXyz) {
127
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
128
+
129
+ const eventsXyzSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, eventsXyz, "i32")));
130
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
131
+
132
+
133
+ const result = wasm.MchprsWorld_simulate_use_block(diplomatReceive.buffer, schematic.ffiValue, ticks, eventsXyzSlice.ptr);
134
+
135
+ try {
136
+ if (!diplomatReceive.resultFlag) {
137
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
138
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
139
+ }
140
+ return new Schematic(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
141
+ }
142
+
143
+ finally {
144
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
145
+ functionCleanupArena.free();
146
+
147
+ diplomatReceive.free();
148
+ }
149
+ }
150
+
151
+ /**
152
+ * Advance the simulation by `ticks` ticks.
153
+ */
154
+ tick(ticks) {
155
+ wasm.MchprsWorld_tick(this.ffiValue, ticks);
156
+
157
+ try {}
158
+
159
+ finally {
160
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
161
+ }
162
+ }
163
+
164
+ /**
165
+ * Flush pending changes from the compiler to the world.
166
+ */
167
+ flush() {
168
+ wasm.MchprsWorld_flush(this.ffiValue);
169
+
170
+ try {}
171
+
172
+ finally {
173
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Set the power state of a lever.
179
+ */
180
+ setLeverPower(x, y, z, powered) {
181
+ wasm.MchprsWorld_set_lever_power(this.ffiValue, x, y, z, powered);
182
+
183
+ try {}
184
+
185
+ finally {
186
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Get the power state of a lever.
192
+ */
193
+ getLeverPower(x, y, z) {
194
+
195
+ const result = wasm.MchprsWorld_get_lever_power(this.ffiValue, x, y, z);
196
+
197
+ try {
198
+ return result === 1;
199
+ }
200
+
201
+ finally {
202
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Whether a redstone lamp is lit at the given position.
208
+ */
209
+ isLit(x, y, z) {
210
+
211
+ const result = wasm.MchprsWorld_is_lit(this.ffiValue, x, y, z);
212
+
213
+ try {
214
+ return result === 1;
215
+ }
216
+
217
+ finally {
218
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Set the signal strength (0-15) at a custom IO position.
224
+ */
225
+ setSignalStrength(x, y, z, strength) {
226
+ wasm.MchprsWorld_set_signal_strength(this.ffiValue, x, y, z, strength);
227
+
228
+ try {}
229
+
230
+ finally {
231
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
232
+ }
233
+ }
234
+
235
+ /**
236
+ * Get the signal strength (0-15) at a position.
237
+ */
238
+ getSignalStrength(x, y, z) {
239
+
240
+ const result = wasm.MchprsWorld_get_signal_strength(this.ffiValue, x, y, z);
241
+
242
+ try {
243
+ return result;
244
+ }
245
+
246
+ finally {
247
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
248
+ }
249
+ }
250
+
251
+ /**
252
+ * Simulate a right-click on a block (typically a lever).
253
+ */
254
+ onUseBlock(x, y, z) {
255
+ wasm.MchprsWorld_on_use_block(this.ffiValue, x, y, z);
256
+
257
+ try {}
258
+
259
+ finally {
260
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
261
+ }
262
+ }
263
+
264
+ /**
265
+ * Sync the simulation state back to the internal schematic.
266
+ */
267
+ syncToSchematic() {
268
+ wasm.MchprsWorld_sync_to_schematic(this.ffiValue);
269
+
270
+ try {}
271
+
272
+ finally {
273
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
274
+ }
275
+ }
276
+
277
+ /**
278
+ * A clone of the world's schematic.
279
+ */
280
+ getSchematic() {
281
+
282
+ const result = wasm.MchprsWorld_get_schematic(this.ffiValue);
283
+
284
+ try {
285
+ return new Schematic(diplomatRuntime.internalConstructor, result, []);
286
+ }
287
+
288
+ finally {
289
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
290
+ }
291
+ }
292
+
293
+ /**
294
+ * The redstone power level (0-15) at a position.
295
+ */
296
+ getRedstonePower(x, y, z) {
297
+
298
+ const result = wasm.MchprsWorld_get_redstone_power(this.ffiValue, x, y, z);
299
+
300
+ try {
301
+ return result;
302
+ }
303
+
304
+ finally {
305
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
306
+ }
307
+ }
308
+
309
+ /**
310
+ * Check for custom IO changes since the last check. Call before
311
+ * `poll_custom_io_changes_json`.
312
+ */
313
+ checkCustomIoChanges() {
314
+ wasm.MchprsWorld_check_custom_io_changes(this.ffiValue);
315
+
316
+ try {}
317
+
318
+ finally {
319
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
320
+ }
321
+ }
322
+
323
+ /**
324
+ * Queued custom IO changes as a JSON array
325
+ * (`[{"x":..,"y":..,"z":..,"old_power":..,"new_power":..}, ...]`),
326
+ * clearing the queue.
327
+ */
328
+ pollCustomIoChangesJson() {
329
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
330
+
331
+ wasm.MchprsWorld_poll_custom_io_changes_json(this.ffiValue, write.buffer);
332
+
333
+ try {
334
+ return write.readString8();
335
+ }
336
+
337
+ finally {
338
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
339
+ write.free();
340
+ }
341
+ }
342
+
343
+ /**
344
+ * Queued custom IO changes as JSON without clearing the queue.
345
+ */
346
+ peekCustomIoChangesJson() {
347
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
348
+
349
+ wasm.MchprsWorld_peek_custom_io_changes_json(this.ffiValue, write.buffer);
350
+
351
+ try {
352
+ return write.readString8();
353
+ }
354
+
355
+ finally {
356
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
357
+ write.free();
358
+ }
359
+ }
360
+
361
+ /**
362
+ * Clear all queued custom IO changes.
363
+ */
364
+ clearCustomIoChanges() {
365
+ wasm.MchprsWorld_clear_custom_io_changes(this.ffiValue);
366
+
367
+ try {}
368
+
369
+ finally {
370
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
371
+ }
372
+ }
373
+
374
+ /**
375
+ * Extract the compiled (post-optimization) redstone logic graph.
376
+ */
377
+ exportGraph() {
378
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
379
+
380
+
381
+ const result = wasm.MchprsWorld_export_graph(diplomatReceive.buffer, this.ffiValue);
382
+
383
+ try {
384
+ if (!diplomatReceive.resultFlag) {
385
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
386
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
387
+ }
388
+ return new RedstoneGraph(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
389
+ }
390
+
391
+ finally {
392
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
393
+ diplomatReceive.free();
394
+ }
395
+ }
396
+
397
+ /**
398
+ * Extract the structural (pre-fold, as-built) redstone logic graph.
399
+ */
400
+ exportGraphStructural() {
401
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
402
+
403
+
404
+ const result = wasm.MchprsWorld_export_graph_structural(diplomatReceive.buffer, this.ffiValue);
405
+
406
+ try {
407
+ if (!diplomatReceive.resultFlag) {
408
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
409
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
410
+ }
411
+ return new RedstoneGraph(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
412
+ }
413
+
414
+ finally {
415
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
416
+ diplomatReceive.free();
417
+ }
418
+ }
419
+
420
+ constructor(symbol, ptr, selfEdge) {
421
+ return this.#internalConstructor(...arguments)
422
+ }
423
+ }
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
3
+
4
+ export type MeshBounds_obj = {
5
+ minX: number;
6
+ minY: number;
7
+ minZ: number;
8
+ maxX: number;
9
+ maxY: number;
10
+ maxZ: number;
11
+ };
12
+
13
+
14
+
15
+ /**
16
+ * Axis-aligned bounding box of a mesh result.
17
+ */
18
+ export class MeshBounds {
19
+ get minX(): number;
20
+ set minX(value: number);
21
+ get minY(): number;
22
+ set minY(value: number);
23
+ get minZ(): number;
24
+ set minZ(value: number);
25
+ get maxX(): number;
26
+ set maxX(value: number);
27
+ get maxY(): number;
28
+ set maxY(value: number);
29
+ get maxZ(): number;
30
+ set maxZ(value: number);
31
+ /** @internal */
32
+ static fromFields(structObj : MeshBounds_obj) : MeshBounds;
33
+
34
+ /**
35
+ * Create `MeshBounds` from an object that contains all of `MeshBounds`s fields.
36
+ * Optional fields do not need to be included in the provided object.
37
+ */
38
+ constructor(structObj: MeshBounds_obj);
39
+
40
+ }
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
3
+
4
+ export type MeshBounds_obj = {
5
+ minX: number;
6
+ minY: number;
7
+ minZ: number;
8
+ maxX: number;
9
+ maxY: number;
10
+ maxZ: number;
11
+ };
12
+
13
+
14
+
15
+ /**
16
+ * Axis-aligned bounding box of a mesh result.
17
+ */
18
+ export class MeshBounds {
19
+ get minX(): number;
20
+ set minX(value: number);
21
+ get minY(): number;
22
+ set minY(value: number);
23
+ get minZ(): number;
24
+ set minZ(value: number);
25
+ get maxX(): number;
26
+ set maxX(value: number);
27
+ get maxY(): number;
28
+ set maxY(value: number);
29
+ get maxZ(): number;
30
+ set maxZ(value: number);
31
+ /** @internal */
32
+ static fromFields(structObj : MeshBounds_obj) : MeshBounds;
33
+
34
+ /**
35
+ * Create `MeshBounds` from an object that contains all of `MeshBounds`s fields.
36
+ * Optional fields do not need to be included in the provided object.
37
+ */
38
+ constructor(structObj: MeshBounds_obj);
39
+
40
+ }
@@ -0,0 +1,181 @@
1
+ // generated by diplomat-tool
2
+ import wasm from "./diplomat-wasm.mjs";
3
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
4
+
5
+
6
+
7
+ /**
8
+ * Axis-aligned bounding box of a mesh result.
9
+ */
10
+ export class MeshBounds {
11
+ #minX;
12
+ get minX() {
13
+ return this.#minX;
14
+ }
15
+ set minX(value){
16
+ this.#minX = value;
17
+ }
18
+ #minY;
19
+ get minY() {
20
+ return this.#minY;
21
+ }
22
+ set minY(value){
23
+ this.#minY = value;
24
+ }
25
+ #minZ;
26
+ get minZ() {
27
+ return this.#minZ;
28
+ }
29
+ set minZ(value){
30
+ this.#minZ = value;
31
+ }
32
+ #maxX;
33
+ get maxX() {
34
+ return this.#maxX;
35
+ }
36
+ set maxX(value){
37
+ this.#maxX = value;
38
+ }
39
+ #maxY;
40
+ get maxY() {
41
+ return this.#maxY;
42
+ }
43
+ set maxY(value){
44
+ this.#maxY = value;
45
+ }
46
+ #maxZ;
47
+ get maxZ() {
48
+ return this.#maxZ;
49
+ }
50
+ set maxZ(value){
51
+ this.#maxZ = value;
52
+ }
53
+ /** @internal */
54
+ static fromFields(structObj) {
55
+ return new MeshBounds(structObj);
56
+ }
57
+
58
+ #internalConstructor(structObj) {
59
+ if (typeof structObj !== "object") {
60
+ throw new Error("MeshBounds's constructor takes an object of MeshBounds's fields.");
61
+ }
62
+
63
+ if ("minX" in structObj) {
64
+ this.#minX = structObj.minX;
65
+ } else {
66
+ throw new Error("Missing required field minX.");
67
+ }
68
+
69
+ if ("minY" in structObj) {
70
+ this.#minY = structObj.minY;
71
+ } else {
72
+ throw new Error("Missing required field minY.");
73
+ }
74
+
75
+ if ("minZ" in structObj) {
76
+ this.#minZ = structObj.minZ;
77
+ } else {
78
+ throw new Error("Missing required field minZ.");
79
+ }
80
+
81
+ if ("maxX" in structObj) {
82
+ this.#maxX = structObj.maxX;
83
+ } else {
84
+ throw new Error("Missing required field maxX.");
85
+ }
86
+
87
+ if ("maxY" in structObj) {
88
+ this.#maxY = structObj.maxY;
89
+ } else {
90
+ throw new Error("Missing required field maxY.");
91
+ }
92
+
93
+ if ("maxZ" in structObj) {
94
+ this.#maxZ = structObj.maxZ;
95
+ } else {
96
+ throw new Error("Missing required field maxZ.");
97
+ }
98
+
99
+ return this;
100
+ }
101
+
102
+ // Return this struct in FFI function friendly format.
103
+ // Returns an array that can be expanded with spread syntax (...)
104
+ _intoFFI(
105
+ dst,
106
+ functionCleanupArena,
107
+ appendArrayMap
108
+ ) {
109
+
110
+ this._writeToArrayBuffer(wasm.memory.buffer, dst, functionCleanupArena, appendArrayMap);
111
+
112
+ return dst;
113
+ }
114
+
115
+ static get _sizeBytes() {
116
+ return 24;
117
+ }
118
+
119
+ /// Currently unused, we may want to use later on though:
120
+ static get _sizeAlign() {
121
+ return 4;
122
+ }
123
+
124
+ static _fromSuppliedValue(internalConstructor, obj) {
125
+ if (internalConstructor !== diplomatRuntime.internalConstructor) {
126
+ throw new Error("_fromSuppliedValue cannot be called externally.");
127
+ }
128
+
129
+ if (obj instanceof MeshBounds) {
130
+ return obj;
131
+ }
132
+
133
+ return MeshBounds.fromFields(obj);
134
+ }
135
+
136
+ _writeToArrayBuffer(
137
+ arrayBuffer,
138
+ offset,
139
+ functionCleanupArena,
140
+ appendArrayMap
141
+ ) {
142
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 0, this.#minX, Float32Array);
143
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 4, this.#minY, Float32Array);
144
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 8, this.#minZ, Float32Array);
145
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 12, this.#maxX, Float32Array);
146
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 16, this.#maxY, Float32Array);
147
+ diplomatRuntime.writeToArrayBuffer(arrayBuffer, offset + 20, this.#maxZ, Float32Array);
148
+ }
149
+
150
+ // This struct contains borrowed fields, so this takes in a list of
151
+ // "edges" corresponding to where each lifetime's data may have been borrowed from
152
+ // and passes it down to individual fields containing the borrow.
153
+ // This method does not attempt to handle any dependencies between lifetimes, the caller
154
+ // should handle this when constructing edge arrays.
155
+ static _fromFFI(internalConstructor, ptr) {
156
+ ptr >>>= 0; // unsigned wasm32 address; field values retain their signedness.
157
+ if (internalConstructor !== diplomatRuntime.internalConstructor) {
158
+ throw new Error("MeshBounds._fromFFI is not meant to be called externally. Please use the default constructor.");
159
+ }
160
+ let structObj = {};
161
+ const minXDeref = (new Float32Array(wasm.memory.buffer, ptr, 1))[0];
162
+ structObj.minX = minXDeref;
163
+ const minYDeref = (new Float32Array(wasm.memory.buffer, ptr + 4, 1))[0];
164
+ structObj.minY = minYDeref;
165
+ const minZDeref = (new Float32Array(wasm.memory.buffer, ptr + 8, 1))[0];
166
+ structObj.minZ = minZDeref;
167
+ const maxXDeref = (new Float32Array(wasm.memory.buffer, ptr + 12, 1))[0];
168
+ structObj.maxX = maxXDeref;
169
+ const maxYDeref = (new Float32Array(wasm.memory.buffer, ptr + 16, 1))[0];
170
+ structObj.maxY = maxYDeref;
171
+ const maxZDeref = (new Float32Array(wasm.memory.buffer, ptr + 20, 1))[0];
172
+ structObj.maxZ = maxZDeref;
173
+
174
+ return new MeshBounds(structObj);
175
+ }
176
+
177
+
178
+ constructor(structObj) {
179
+ return this.#internalConstructor(...arguments)
180
+ }
181
+ }