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,973 @@
1
+ // generated by diplomat-tool
2
+ import { BlockPos } from "./BlockPos.mjs"
3
+ import { Dimensions } from "./Dimensions.mjs"
4
+ import { NucleationError } from "./NucleationError.mjs"
5
+ import { RegionBounds } from "./RegionBounds.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 DefinitionRegion_box_destroy_registry = new FinalizationRegistry((ptr) => {
11
+ wasm.DefinitionRegion_destroy(ptr);
12
+ });
13
+
14
+ /**
15
+ * A named sub-volume of a schematic: a union of boxes plus a metadata map.
16
+ */
17
+ export class DefinitionRegion {
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("DefinitionRegion 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
+ DefinitionRegion_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
+ * Create a new empty region (no boxes, no metadata).
48
+ */
49
+ static create() {
50
+
51
+ const result = wasm.DefinitionRegion_create();
52
+
53
+ try {
54
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
55
+ }
56
+
57
+ finally {
58
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
59
+ }
60
+ }
61
+
62
+ /**
63
+ * A region consisting of a single inclusive box. Min/max are swapped
64
+ * per axis if given out of order.
65
+ */
66
+ static fromBounds(minX, minY, minZ, maxX, maxY, maxZ) {
67
+
68
+ const result = wasm.DefinitionRegion_from_bounds(minX, minY, minZ, maxX, maxY, maxZ);
69
+
70
+ try {
71
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
72
+ }
73
+
74
+ finally {
75
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Build a region from single-block positions crossing as flat `[i32]`
81
+ * chunked in threes (PORTING rule 7). Errors with `InvalidArgument` if
82
+ * the length is not a multiple of 3.
83
+ */
84
+ static fromPositions(positions) {
85
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
86
+
87
+ const positionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, positions, "i32")));
88
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
89
+
90
+
91
+ const result = wasm.DefinitionRegion_from_positions(diplomatReceive.buffer, positionsSlice.ptr);
92
+
93
+ try {
94
+ if (!diplomatReceive.resultFlag) {
95
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
96
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
97
+ }
98
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
99
+ }
100
+
101
+ finally {
102
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
103
+ functionCleanupArena.free();
104
+
105
+ diplomatReceive.free();
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Build a region from bounding boxes crossing as flat `[i32]` chunked in
111
+ * sixes (`min_x, min_y, min_z, max_x, max_y, max_z` per box). Errors
112
+ * with `InvalidArgument` if the length is not a multiple of 6.
113
+ */
114
+ static fromBoundingBoxes(boxes) {
115
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
116
+
117
+ const boxesSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, boxes, "i32")));
118
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
119
+
120
+
121
+ const result = wasm.DefinitionRegion_from_bounding_boxes(diplomatReceive.buffer, boxesSlice.ptr);
122
+
123
+ try {
124
+ if (!diplomatReceive.resultFlag) {
125
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
126
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
127
+ }
128
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
129
+ }
130
+
131
+ finally {
132
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
133
+ functionCleanupArena.free();
134
+
135
+ diplomatReceive.free();
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Add an inclusive box to the region. Min/max are swapped per axis if
141
+ * given out of order.
142
+ */
143
+ addBounds(minX, minY, minZ, maxX, maxY, maxZ) {
144
+ wasm.DefinitionRegion_add_bounds(this.ffiValue, minX, minY, minZ, maxX, maxY, maxZ);
145
+
146
+ try {}
147
+
148
+ finally {
149
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
150
+ }
151
+ }
152
+
153
+ /**
154
+ * Add a single block position (a 1x1x1 box) to the region.
155
+ */
156
+ addPoint(x, y, z) {
157
+ wasm.DefinitionRegion_add_point(this.ffiValue, x, y, z);
158
+
159
+ try {}
160
+
161
+ finally {
162
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
163
+ }
164
+ }
165
+
166
+ /**
167
+ * Set a metadata entry (insert or overwrite the key).
168
+ */
169
+ setMetadata(key, value) {
170
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
171
+
172
+ const keySlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, key)));
173
+ const valueSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, value)));
174
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
175
+
176
+
177
+ const result = wasm.DefinitionRegion_set_metadata(diplomatReceive.buffer, this.ffiValue, keySlice.ptr, valueSlice.ptr);
178
+
179
+ try {
180
+ if (!diplomatReceive.resultFlag) {
181
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
182
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
183
+ }
184
+ }
185
+
186
+ finally {
187
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
188
+ functionCleanupArena.free();
189
+
190
+ diplomatReceive.free();
191
+ }
192
+ }
193
+
194
+ /**
195
+ * Errors with `NotFound` when the key is absent.
196
+ */
197
+ getMetadata(key) {
198
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
199
+
200
+ const keySlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, key)));
201
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
202
+
203
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
204
+
205
+
206
+ const result = wasm.DefinitionRegion_get_metadata(diplomatReceive.buffer, this.ffiValue, keySlice.ptr, write.buffer);
207
+
208
+ try {
209
+ if (!diplomatReceive.resultFlag) {
210
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
211
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
212
+ }
213
+ return write.readString8();
214
+ }
215
+
216
+ finally {
217
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
218
+ functionCleanupArena.free();
219
+
220
+ diplomatReceive.free();
221
+ write.free();
222
+ }
223
+ }
224
+
225
+ /**
226
+ * The full metadata map, written as a JSON object string (the old ABI
227
+ * returned an array of `"key=value"` strings).
228
+ */
229
+ allMetadataJson() {
230
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
231
+
232
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
233
+
234
+
235
+ const result = wasm.DefinitionRegion_all_metadata_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
236
+
237
+ try {
238
+ if (!diplomatReceive.resultFlag) {
239
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
240
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
241
+ }
242
+ return write.readString8();
243
+ }
244
+
245
+ finally {
246
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
247
+ diplomatReceive.free();
248
+ write.free();
249
+ }
250
+ }
251
+
252
+ /**
253
+ * The metadata keys, written as a JSON array string.
254
+ */
255
+ metadataKeysJson() {
256
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
257
+
258
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
259
+
260
+
261
+ const result = wasm.DefinitionRegion_metadata_keys_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
262
+
263
+ try {
264
+ if (!diplomatReceive.resultFlag) {
265
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
266
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
267
+ }
268
+ return write.readString8();
269
+ }
270
+
271
+ finally {
272
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
273
+ diplomatReceive.free();
274
+ write.free();
275
+ }
276
+ }
277
+
278
+ /**
279
+ * Store a filter expression in the region's metadata under the `filter`
280
+ * key.
281
+ */
282
+ addFilter(filter) {
283
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
284
+
285
+ const filterSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, filter)));
286
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
287
+
288
+
289
+ const result = wasm.DefinitionRegion_add_filter(diplomatReceive.buffer, this.ffiValue, filterSlice.ptr);
290
+
291
+ try {
292
+ if (!diplomatReceive.resultFlag) {
293
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
294
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
295
+ }
296
+ }
297
+
298
+ finally {
299
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
300
+ functionCleanupArena.free();
301
+
302
+ diplomatReceive.free();
303
+ }
304
+ }
305
+
306
+ /**
307
+ * `true` if the region contains no boxes.
308
+ */
309
+ isEmpty() {
310
+
311
+ const result = wasm.DefinitionRegion_is_empty(this.ffiValue);
312
+
313
+ try {
314
+ return result === 1;
315
+ }
316
+
317
+ finally {
318
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
319
+ }
320
+ }
321
+
322
+ /**
323
+ * The total volume in blocks, summed box by box: positions covered by
324
+ * several overlapping boxes are counted once per box.
325
+ */
326
+ volume() {
327
+
328
+ const result = wasm.DefinitionRegion_volume(this.ffiValue);
329
+
330
+ try {
331
+ return result;
332
+ }
333
+
334
+ finally {
335
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
336
+ }
337
+ }
338
+
339
+ /**
340
+ * Whether the position lies inside any of the region's boxes.
341
+ */
342
+ contains(x, y, z) {
343
+
344
+ const result = wasm.DefinitionRegion_contains(this.ffiValue, x, y, z);
345
+
346
+ try {
347
+ return result === 1;
348
+ }
349
+
350
+ finally {
351
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
352
+ }
353
+ }
354
+
355
+ /**
356
+ * Translate every box by (`dx`, `dy`, `dz`) in place.
357
+ */
358
+ shift(dx, dy, dz) {
359
+ wasm.DefinitionRegion_shift(this.ffiValue, dx, dy, dz);
360
+
361
+ try {}
362
+
363
+ finally {
364
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
365
+ }
366
+ }
367
+
368
+ /**
369
+ * Grow every box in place by (`x`, `y`, `z`) outward on both sides of
370
+ * each axis. Negative values contract; boxes that shrink away are
371
+ * removed.
372
+ */
373
+ expand(x, y, z) {
374
+ wasm.DefinitionRegion_expand(this.ffiValue, x, y, z);
375
+
376
+ try {}
377
+
378
+ finally {
379
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
380
+ }
381
+ }
382
+
383
+ /**
384
+ * Shrink every box in place by `amount` on all sides (the inverse of
385
+ * a uniform `expand`); boxes that shrink away are removed.
386
+ */
387
+ contract(amount) {
388
+ wasm.DefinitionRegion_contract(this.ffiValue, amount);
389
+
390
+ try {}
391
+
392
+ finally {
393
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
394
+ }
395
+ }
396
+
397
+ /**
398
+ * A new region: the intersection of `self` and `other`.
399
+ */
400
+ intersected(other) {
401
+
402
+ const result = wasm.DefinitionRegion_intersected(this.ffiValue, other.ffiValue);
403
+
404
+ try {
405
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
406
+ }
407
+
408
+ finally {
409
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
410
+ }
411
+ }
412
+
413
+ /**
414
+ * A new region: the union of `self` and `other`.
415
+ */
416
+ unionWith(other) {
417
+
418
+ const result = wasm.DefinitionRegion_union_with(this.ffiValue, other.ffiValue);
419
+
420
+ try {
421
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
422
+ }
423
+
424
+ finally {
425
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
426
+ }
427
+ }
428
+
429
+ /**
430
+ * A new region: `self` minus `other`.
431
+ */
432
+ subtracted(other) {
433
+
434
+ const result = wasm.DefinitionRegion_subtracted(this.ffiValue, other.ffiValue);
435
+
436
+ try {
437
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
438
+ }
439
+
440
+ finally {
441
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
442
+ }
443
+ }
444
+
445
+ /**
446
+ * Merge `other`'s boxes and metadata into `self`.
447
+ */
448
+ merge(other) {
449
+ wasm.DefinitionRegion_merge(this.ffiValue, other.ffiValue);
450
+
451
+ try {}
452
+
453
+ finally {
454
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
455
+ }
456
+ }
457
+
458
+ /**
459
+ * Union `other`'s boxes into `self` in place.
460
+ */
461
+ unionInto(other) {
462
+ wasm.DefinitionRegion_union_into(this.ffiValue, other.ffiValue);
463
+
464
+ try {}
465
+
466
+ finally {
467
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
468
+ }
469
+ }
470
+
471
+ /**
472
+ * The overall bounding box. Errors with `NotFound` when the region is
473
+ * empty.
474
+ */
475
+ bounds() {
476
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 25, 4, true);
477
+
478
+
479
+ const result = wasm.DefinitionRegion_bounds(diplomatReceive.buffer, this.ffiValue);
480
+
481
+ try {
482
+ if (!diplomatReceive.resultFlag) {
483
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
484
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
485
+ }
486
+ return RegionBounds._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
487
+ }
488
+
489
+ finally {
490
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
491
+ diplomatReceive.free();
492
+ }
493
+ }
494
+
495
+ /**
496
+ * The (width, height, length) of the overall bounding box; all zeros
497
+ * when the region is empty.
498
+ */
499
+ dimensions() {
500
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 12, 4, false);
501
+
502
+
503
+ const result = wasm.DefinitionRegion_dimensions(diplomatReceive.buffer, this.ffiValue);
504
+
505
+ try {
506
+ return Dimensions._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
507
+ }
508
+
509
+ finally {
510
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
511
+ diplomatReceive.free();
512
+ }
513
+ }
514
+
515
+ /**
516
+ * The center block position. Errors with `NotFound` when the region is
517
+ * empty.
518
+ */
519
+ center() {
520
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 13, 4, true);
521
+
522
+
523
+ const result = wasm.DefinitionRegion_center(diplomatReceive.buffer, this.ffiValue);
524
+
525
+ try {
526
+ if (!diplomatReceive.resultFlag) {
527
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
528
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
529
+ }
530
+ return BlockPos._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
531
+ }
532
+
533
+ finally {
534
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
535
+ diplomatReceive.free();
536
+ }
537
+ }
538
+
539
+ /**
540
+ * The exact (fractional) center, written as a JSON `[x, y, z]` array of
541
+ * floats. Errors with `NotFound` when the region is empty.
542
+ */
543
+ centerF32Json() {
544
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
545
+
546
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
547
+
548
+
549
+ const result = wasm.DefinitionRegion_center_f32_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
550
+
551
+ try {
552
+ if (!diplomatReceive.resultFlag) {
553
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
554
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
555
+ }
556
+ return write.readString8();
557
+ }
558
+
559
+ finally {
560
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
561
+ diplomatReceive.free();
562
+ write.free();
563
+ }
564
+ }
565
+
566
+ /**
567
+ * Every contained position, written as a flat JSON array of ints
568
+ * (`[x0, y0, z0, x1, y1, z1, …]`), deduplicated, in box order.
569
+ */
570
+ positionsJson() {
571
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
572
+
573
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
574
+
575
+
576
+ const result = wasm.DefinitionRegion_positions_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
577
+
578
+ try {
579
+ if (!diplomatReceive.resultFlag) {
580
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
581
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
582
+ }
583
+ return write.readString8();
584
+ }
585
+
586
+ finally {
587
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
588
+ diplomatReceive.free();
589
+ write.free();
590
+ }
591
+ }
592
+
593
+ /**
594
+ * Every contained position in sorted (y, z, x) order, written as a flat
595
+ * JSON array of ints.
596
+ */
597
+ positionsSortedJson() {
598
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
599
+
600
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
601
+
602
+
603
+ const result = wasm.DefinitionRegion_positions_sorted_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
604
+
605
+ try {
606
+ if (!diplomatReceive.resultFlag) {
607
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
608
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
609
+ }
610
+ return write.readString8();
611
+ }
612
+
613
+ finally {
614
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
615
+ diplomatReceive.free();
616
+ write.free();
617
+ }
618
+ }
619
+
620
+ /**
621
+ * The number of boxes making up this region.
622
+ */
623
+ boxCount() {
624
+
625
+ const result = wasm.DefinitionRegion_box_count(this.ffiValue);
626
+
627
+ try {
628
+ return result;
629
+ }
630
+
631
+ finally {
632
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
633
+ }
634
+ }
635
+
636
+ /**
637
+ * The box at `index`. Errors with `NotFound` when out of range.
638
+ */
639
+ getBox(index) {
640
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 25, 4, true);
641
+
642
+
643
+ const result = wasm.DefinitionRegion_get_box(diplomatReceive.buffer, this.ffiValue, index);
644
+
645
+ try {
646
+ if (!diplomatReceive.resultFlag) {
647
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
648
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
649
+ }
650
+ return RegionBounds._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
651
+ }
652
+
653
+ finally {
654
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
655
+ diplomatReceive.free();
656
+ }
657
+ }
658
+
659
+ /**
660
+ * Every box, written as a flat JSON array of ints (six ints per box:
661
+ * `min_x, min_y, min_z, max_x, max_y, max_z`).
662
+ */
663
+ boxesJson() {
664
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
665
+
666
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
667
+
668
+
669
+ const result = wasm.DefinitionRegion_boxes_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
670
+
671
+ try {
672
+ if (!diplomatReceive.resultFlag) {
673
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
674
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
675
+ }
676
+ return write.readString8();
677
+ }
678
+
679
+ finally {
680
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
681
+ diplomatReceive.free();
682
+ write.free();
683
+ }
684
+ }
685
+
686
+ /**
687
+ * Whether all positions form a single face-connected (6-connectivity)
688
+ * component. `true` for empty and single-block regions.
689
+ */
690
+ isContiguous() {
691
+
692
+ const result = wasm.DefinitionRegion_is_contiguous(this.ffiValue);
693
+
694
+ try {
695
+ return result === 1;
696
+ }
697
+
698
+ finally {
699
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
700
+ }
701
+ }
702
+
703
+ /**
704
+ * The number of face-connected (6-connectivity) components; 0 when
705
+ * the region is empty.
706
+ */
707
+ connectedComponents() {
708
+
709
+ const result = wasm.DefinitionRegion_connected_components(this.ffiValue);
710
+
711
+ try {
712
+ return result;
713
+ }
714
+
715
+ finally {
716
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
717
+ }
718
+ }
719
+
720
+ /**
721
+ * Merge overlapping/adjacent boxes into a minimal representation.
722
+ */
723
+ simplify() {
724
+ wasm.DefinitionRegion_simplify(this.ffiValue);
725
+
726
+ try {}
727
+
728
+ finally {
729
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
730
+ }
731
+ }
732
+
733
+ /**
734
+ * A new region containing only the positions where `schematic` has a
735
+ * block named `block_name`.
736
+ */
737
+ filterByBlock(schematic, blockName) {
738
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
739
+
740
+ const blockNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, blockName)));
741
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
742
+
743
+
744
+ const result = wasm.DefinitionRegion_filter_by_block(diplomatReceive.buffer, this.ffiValue, schematic.ffiValue, blockNameSlice.ptr);
745
+
746
+ try {
747
+ if (!diplomatReceive.resultFlag) {
748
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
749
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
750
+ }
751
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
752
+ }
753
+
754
+ finally {
755
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
756
+ functionCleanupArena.free();
757
+
758
+ diplomatReceive.free();
759
+ }
760
+ }
761
+
762
+ /**
763
+ * A new region containing only the positions where the block in
764
+ * `schematic` matches every property in `properties_json` (a JSON
765
+ * object of property name → value strings).
766
+ */
767
+ filterByProperties(schematic, propertiesJson) {
768
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
769
+
770
+ const propertiesJsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, propertiesJson)));
771
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
772
+
773
+
774
+ const result = wasm.DefinitionRegion_filter_by_properties(diplomatReceive.buffer, this.ffiValue, schematic.ffiValue, propertiesJsonSlice.ptr);
775
+
776
+ try {
777
+ if (!diplomatReceive.resultFlag) {
778
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
779
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
780
+ }
781
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
782
+ }
783
+
784
+ finally {
785
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
786
+ functionCleanupArena.free();
787
+
788
+ diplomatReceive.free();
789
+ }
790
+ }
791
+
792
+ /**
793
+ * Remove every position where `schematic` has a block named
794
+ * `block_name` (in place).
795
+ */
796
+ excludeBlock(schematic, blockName) {
797
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
798
+
799
+ const blockNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, blockName)));
800
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
801
+
802
+
803
+ const result = wasm.DefinitionRegion_exclude_block(diplomatReceive.buffer, this.ffiValue, schematic.ffiValue, blockNameSlice.ptr);
804
+
805
+ try {
806
+ if (!diplomatReceive.resultFlag) {
807
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
808
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
809
+ }
810
+ }
811
+
812
+ finally {
813
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
814
+ functionCleanupArena.free();
815
+
816
+ diplomatReceive.free();
817
+ }
818
+ }
819
+
820
+ /**
821
+ * Whether any of the region's boxes intersects the given inclusive
822
+ * box (useful for frustum culling).
823
+ */
824
+ intersectsBounds(minX, minY, minZ, maxX, maxY, maxZ) {
825
+
826
+ const result = wasm.DefinitionRegion_intersects_bounds(this.ffiValue, minX, minY, minZ, maxX, maxY, maxZ);
827
+
828
+ try {
829
+ return result === 1;
830
+ }
831
+
832
+ finally {
833
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
834
+ }
835
+ }
836
+
837
+ /**
838
+ * A new region shifted by (`dx`, `dy`, `dz`).
839
+ */
840
+ shifted(dx, dy, dz) {
841
+
842
+ const result = wasm.DefinitionRegion_shifted(this.ffiValue, dx, dy, dz);
843
+
844
+ try {
845
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
846
+ }
847
+
848
+ finally {
849
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
850
+ }
851
+ }
852
+
853
+ /**
854
+ * A new region expanded by (`x`, `y`, `z`) on each axis.
855
+ */
856
+ expanded(x, y, z) {
857
+
858
+ const result = wasm.DefinitionRegion_expanded(this.ffiValue, x, y, z);
859
+
860
+ try {
861
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
862
+ }
863
+
864
+ finally {
865
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
866
+ }
867
+ }
868
+
869
+ /**
870
+ * A new region contracted by `amount` on every axis.
871
+ */
872
+ contracted(amount) {
873
+
874
+ const result = wasm.DefinitionRegion_contracted(this.ffiValue, amount);
875
+
876
+ try {
877
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
878
+ }
879
+
880
+ finally {
881
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
882
+ }
883
+ }
884
+
885
+ /**
886
+ * A deep copy of this region.
887
+ */
888
+ copy() {
889
+
890
+ const result = wasm.DefinitionRegion_copy(this.ffiValue);
891
+
892
+ try {
893
+ return new DefinitionRegion(diplomatRuntime.internalConstructor, result, []);
894
+ }
895
+
896
+ finally {
897
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
898
+ }
899
+ }
900
+
901
+ /**
902
+ * Store a display color (`0xRRGGBB`) in the region's metadata.
903
+ */
904
+ setColor(color) {
905
+ wasm.DefinitionRegion_set_color(this.ffiValue, color);
906
+
907
+ try {}
908
+
909
+ finally {
910
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
911
+ }
912
+ }
913
+
914
+ /**
915
+ * The blocks of `schematic` inside this region, written as a JSON array
916
+ * of `{"x", "y", "z", "name", "properties"}` objects (the old ABI
917
+ * returned a `CBlockArray`).
918
+ */
919
+ blocksJson(schematic) {
920
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
921
+
922
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
923
+
924
+
925
+ const result = wasm.DefinitionRegion_blocks_json(diplomatReceive.buffer, this.ffiValue, schematic.ffiValue, write.buffer);
926
+
927
+ try {
928
+ if (!diplomatReceive.resultFlag) {
929
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
930
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
931
+ }
932
+ return write.readString8();
933
+ }
934
+
935
+ finally {
936
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
937
+ diplomatReceive.free();
938
+ write.free();
939
+ }
940
+ }
941
+
942
+ /**
943
+ * Write this region into `schematic`'s definition-region map under
944
+ * `name` (insert or overwrite).
945
+ */
946
+ sync(schematic, name) {
947
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
948
+
949
+ const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
950
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
951
+
952
+
953
+ const result = wasm.DefinitionRegion_sync(diplomatReceive.buffer, this.ffiValue, schematic.ffiValue, nameSlice.ptr);
954
+
955
+ try {
956
+ if (!diplomatReceive.resultFlag) {
957
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
958
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
959
+ }
960
+ }
961
+
962
+ finally {
963
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
964
+ functionCleanupArena.free();
965
+
966
+ diplomatReceive.free();
967
+ }
968
+ }
969
+
970
+ constructor(symbol, ptr, selfEdge) {
971
+ return this.#internalConstructor(...arguments)
972
+ }
973
+ }