nucleation 0.10.22 → 0.10.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/README.md +12 -0
  2. package/Schematic.d.mts +23 -0
  3. package/Schematic.d.ts +23 -0
  4. package/Schematic.mjs +70 -0
  5. package/nucleation.wasm +0 -0
  6. package/package.json +7 -2
  7. package/renderer/AnimationEffect.d.mts +44 -0
  8. package/renderer/AnimationEffect.d.ts +44 -0
  9. package/renderer/AnimationEffect.mjs +204 -0
  10. package/renderer/Autostack.d.mts +43 -0
  11. package/renderer/Autostack.d.ts +43 -0
  12. package/renderer/Autostack.mjs +134 -0
  13. package/renderer/BlockPos.d.mts +28 -0
  14. package/renderer/BlockPos.d.ts +28 -0
  15. package/renderer/BlockPos.mjs +130 -0
  16. package/renderer/BlockState.d.mts +39 -0
  17. package/renderer/BlockState.d.ts +39 -0
  18. package/renderer/BlockState.mjs +134 -0
  19. package/renderer/Blocks.d.mts +91 -0
  20. package/renderer/Blocks.d.ts +91 -0
  21. package/renderer/Blocks.mjs +308 -0
  22. package/renderer/Brush.d.mts +99 -0
  23. package/renderer/Brush.d.ts +99 -0
  24. package/renderer/Brush.mjs +335 -0
  25. package/renderer/BuildAnimation.d.mts +179 -0
  26. package/renderer/BuildAnimation.d.ts +179 -0
  27. package/renderer/BuildAnimation.mjs +1148 -0
  28. package/renderer/BuildingTool.d.mts +46 -0
  29. package/renderer/BuildingTool.d.ts +46 -0
  30. package/renderer/BuildingTool.mjs +121 -0
  31. package/renderer/CellExecutor.d.mts +51 -0
  32. package/renderer/CellExecutor.d.ts +51 -0
  33. package/renderer/CellExecutor.mjs +171 -0
  34. package/renderer/CellularSdfConfig.d.mts +22 -0
  35. package/renderer/CellularSdfConfig.d.ts +22 -0
  36. package/renderer/CellularSdfConfig.mjs +69 -0
  37. package/renderer/ChunkMeshResult.d.mts +75 -0
  38. package/renderer/ChunkMeshResult.d.ts +75 -0
  39. package/renderer/ChunkMeshResult.mjs +253 -0
  40. package/renderer/CircuitBuilder.d.mts +118 -0
  41. package/renderer/CircuitBuilder.d.ts +118 -0
  42. package/renderer/CircuitBuilder.mjs +516 -0
  43. package/renderer/Curve3D.d.mts +27 -0
  44. package/renderer/Curve3D.d.ts +27 -0
  45. package/renderer/Curve3D.mjs +101 -0
  46. package/renderer/DefinitionRegion.d.mts +274 -0
  47. package/renderer/DefinitionRegion.d.ts +274 -0
  48. package/renderer/DefinitionRegion.mjs +973 -0
  49. package/renderer/Design.d.mts +348 -0
  50. package/renderer/Design.d.ts +348 -0
  51. package/renderer/Design.mjs +1334 -0
  52. package/renderer/Diff.d.mts +88 -0
  53. package/renderer/Diff.d.ts +88 -0
  54. package/renderer/Diff.mjs +316 -0
  55. package/renderer/Dimensions.d.mts +28 -0
  56. package/renderer/Dimensions.d.ts +28 -0
  57. package/renderer/Dimensions.mjs +130 -0
  58. package/renderer/DistanceField.d.mts +39 -0
  59. package/renderer/DistanceField.d.ts +39 -0
  60. package/renderer/DistanceField.mjs +114 -0
  61. package/renderer/ExecutionMode.d.mts +42 -0
  62. package/renderer/ExecutionMode.d.ts +42 -0
  63. package/renderer/ExecutionMode.mjs +127 -0
  64. package/renderer/Field3.d.mts +40 -0
  65. package/renderer/Field3.d.ts +40 -0
  66. package/renderer/Field3.mjs +160 -0
  67. package/renderer/FieldProgram.d.mts +40 -0
  68. package/renderer/FieldProgram.d.ts +40 -0
  69. package/renderer/FieldProgram.mjs +167 -0
  70. package/renderer/FieldProgramBinaryOp.d.mts +42 -0
  71. package/renderer/FieldProgramBinaryOp.d.ts +42 -0
  72. package/renderer/FieldProgramBinaryOp.mjs +118 -0
  73. package/renderer/FieldProgramBuilder.d.mts +104 -0
  74. package/renderer/FieldProgramBuilder.d.ts +104 -0
  75. package/renderer/FieldProgramBuilder.mjs +486 -0
  76. package/renderer/FieldProgramDistanceKind.d.mts +26 -0
  77. package/renderer/FieldProgramDistanceKind.d.ts +26 -0
  78. package/renderer/FieldProgramDistanceKind.mjs +78 -0
  79. package/renderer/FieldProgramUnaryOp.d.mts +34 -0
  80. package/renderer/FieldProgramUnaryOp.d.ts +34 -0
  81. package/renderer/FieldProgramUnaryOp.mjs +102 -0
  82. package/renderer/FieldProgramValueType.d.mts +25 -0
  83. package/renderer/FieldProgramValueType.d.ts +25 -0
  84. package/renderer/FieldProgramValueType.mjs +75 -0
  85. package/renderer/FieldRange.d.mts +15 -0
  86. package/renderer/FieldRange.d.ts +15 -0
  87. package/renderer/FieldRange.mjs +109 -0
  88. package/renderer/Fingerprint.d.mts +44 -0
  89. package/renderer/Fingerprint.d.ts +44 -0
  90. package/renderer/Fingerprint.mjs +197 -0
  91. package/renderer/GeneratedChunk.d.mts +35 -0
  92. package/renderer/GeneratedChunk.d.ts +35 -0
  93. package/renderer/GeneratedChunk.mjs +178 -0
  94. package/renderer/GeneratedChunkCoverage.d.mts +25 -0
  95. package/renderer/GeneratedChunkCoverage.d.ts +25 -0
  96. package/renderer/GeneratedChunkCoverage.mjs +75 -0
  97. package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
  98. package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
  99. package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
  100. package/renderer/GeneratedWorldStream.d.mts +28 -0
  101. package/renderer/GeneratedWorldStream.d.ts +28 -0
  102. package/renderer/GeneratedWorldStream.mjs +86 -0
  103. package/renderer/Geo.d.mts +41 -0
  104. package/renderer/Geo.d.ts +41 -0
  105. package/renderer/Geo.mjs +121 -0
  106. package/renderer/Hdl.d.mts +56 -0
  107. package/renderer/Hdl.d.ts +56 -0
  108. package/renderer/Hdl.mjs +163 -0
  109. package/renderer/InterpolationSpace.d.mts +25 -0
  110. package/renderer/InterpolationSpace.d.ts +25 -0
  111. package/renderer/InterpolationSpace.mjs +73 -0
  112. package/renderer/IoLayout.d.mts +26 -0
  113. package/renderer/IoLayout.d.ts +26 -0
  114. package/renderer/IoLayout.mjs +81 -0
  115. package/renderer/IoLayoutBuilder.d.mts +73 -0
  116. package/renderer/IoLayoutBuilder.d.ts +73 -0
  117. package/renderer/IoLayoutBuilder.mjs +315 -0
  118. package/renderer/IoType.d.mts +41 -0
  119. package/renderer/IoType.d.ts +41 -0
  120. package/renderer/IoType.mjs +125 -0
  121. package/renderer/ItemModelConfig.d.mts +65 -0
  122. package/renderer/ItemModelConfig.d.ts +65 -0
  123. package/renderer/ItemModelConfig.mjs +223 -0
  124. package/renderer/ItemModelPackBuilder.d.mts +32 -0
  125. package/renderer/ItemModelPackBuilder.d.ts +32 -0
  126. package/renderer/ItemModelPackBuilder.mjs +104 -0
  127. package/renderer/ItemModelResult.d.mts +72 -0
  128. package/renderer/ItemModelResult.d.ts +72 -0
  129. package/renderer/ItemModelResult.mjs +268 -0
  130. package/renderer/ItemScale.d.mts +31 -0
  131. package/renderer/ItemScale.d.ts +31 -0
  132. package/renderer/ItemScale.mjs +133 -0
  133. package/renderer/LayoutFunction.d.mts +52 -0
  134. package/renderer/LayoutFunction.d.ts +52 -0
  135. package/renderer/LayoutFunction.mjs +159 -0
  136. package/renderer/MchprsWorld.d.mts +131 -0
  137. package/renderer/MchprsWorld.d.ts +131 -0
  138. package/renderer/MchprsWorld.mjs +423 -0
  139. package/renderer/MeshBounds.d.mts +40 -0
  140. package/renderer/MeshBounds.d.ts +40 -0
  141. package/renderer/MeshBounds.mjs +181 -0
  142. package/renderer/MeshConfig.d.mts +101 -0
  143. package/renderer/MeshConfig.d.ts +101 -0
  144. package/renderer/MeshConfig.mjs +306 -0
  145. package/renderer/MeshJob.d.mts +44 -0
  146. package/renderer/MeshJob.d.ts +44 -0
  147. package/renderer/MeshJob.mjs +116 -0
  148. package/renderer/MeshPhase.d.mts +38 -0
  149. package/renderer/MeshPhase.d.ts +38 -0
  150. package/renderer/MeshPhase.mjs +90 -0
  151. package/renderer/MeshProgress.d.mts +32 -0
  152. package/renderer/MeshProgress.d.ts +32 -0
  153. package/renderer/MeshProgress.mjs +134 -0
  154. package/renderer/MeshResult.d.mts +76 -0
  155. package/renderer/MeshResult.d.ts +76 -0
  156. package/renderer/MeshResult.mjs +269 -0
  157. package/renderer/MultiMeshResult.d.mts +50 -0
  158. package/renderer/MultiMeshResult.d.ts +50 -0
  159. package/renderer/MultiMeshResult.mjs +166 -0
  160. package/renderer/Nbt.d.mts +50 -0
  161. package/renderer/Nbt.d.ts +50 -0
  162. package/renderer/Nbt.mjs +161 -0
  163. package/renderer/NucleationError.d.mts +53 -0
  164. package/renderer/NucleationError.d.ts +53 -0
  165. package/renderer/NucleationError.mjs +136 -0
  166. package/renderer/OutputCondition.d.mts +45 -0
  167. package/renderer/OutputCondition.d.ts +45 -0
  168. package/renderer/OutputCondition.mjs +129 -0
  169. package/renderer/Palette.d.mts +157 -0
  170. package/renderer/Palette.d.ts +157 -0
  171. package/renderer/Palette.mjs +487 -0
  172. package/renderer/PaletteBuilder.d.mts +119 -0
  173. package/renderer/PaletteBuilder.d.ts +119 -0
  174. package/renderer/PaletteBuilder.mjs +457 -0
  175. package/renderer/README.md +67 -0
  176. package/renderer/RawMeshExport.d.mts +74 -0
  177. package/renderer/RawMeshExport.d.ts +74 -0
  178. package/renderer/RawMeshExport.mjs +243 -0
  179. package/renderer/RedstoneGraph.d.mts +58 -0
  180. package/renderer/RedstoneGraph.d.ts +58 -0
  181. package/renderer/RedstoneGraph.mjs +242 -0
  182. package/renderer/RegionBounds.d.mts +41 -0
  183. package/renderer/RegionBounds.d.ts +41 -0
  184. package/renderer/RegionBounds.mjs +182 -0
  185. package/renderer/RenderConfig.d.mts +101 -0
  186. package/renderer/RenderConfig.d.ts +101 -0
  187. package/renderer/RenderConfig.mjs +271 -0
  188. package/renderer/Renderer.d.mts +51 -0
  189. package/renderer/Renderer.d.ts +51 -0
  190. package/renderer/Renderer.mjs +219 -0
  191. package/renderer/ResourcePack.d.mts +105 -0
  192. package/renderer/ResourcePack.d.ts +105 -0
  193. package/renderer/ResourcePack.mjs +447 -0
  194. package/renderer/ResourcePackList.d.mts +32 -0
  195. package/renderer/ResourcePackList.d.ts +32 -0
  196. package/renderer/ResourcePackList.mjs +96 -0
  197. package/renderer/Routing.d.mts +66 -0
  198. package/renderer/Routing.d.ts +66 -0
  199. package/renderer/Routing.mjs +220 -0
  200. package/renderer/Schematic.d.mts +977 -0
  201. package/renderer/Schematic.d.ts +977 -0
  202. package/renderer/Schematic.mjs +3820 -0
  203. package/renderer/SchematicBuilder.d.mts +103 -0
  204. package/renderer/SchematicBuilder.d.ts +103 -0
  205. package/renderer/SchematicBuilder.mjs +401 -0
  206. package/renderer/SchematicRegions.d.mts +93 -0
  207. package/renderer/SchematicRegions.d.ts +93 -0
  208. package/renderer/SchematicRegions.mjs +411 -0
  209. package/renderer/SchematicSplitResult.d.mts +26 -0
  210. package/renderer/SchematicSplitResult.d.ts +26 -0
  211. package/renderer/SchematicSplitResult.mjs +84 -0
  212. package/renderer/Scripting.d.mts +40 -0
  213. package/renderer/Scripting.d.ts +40 -0
  214. package/renderer/Scripting.mjs +138 -0
  215. package/renderer/Sdf.d.mts +234 -0
  216. package/renderer/Sdf.d.ts +234 -0
  217. package/renderer/Sdf.mjs +1234 -0
  218. package/renderer/SdfAxis.d.mts +25 -0
  219. package/renderer/SdfAxis.d.ts +25 -0
  220. package/renderer/SdfAxis.mjs +75 -0
  221. package/renderer/SdfBounds.d.mts +19 -0
  222. package/renderer/SdfBounds.d.ts +19 -0
  223. package/renderer/SdfBounds.mjs +161 -0
  224. package/renderer/SdfCellMode.d.mts +26 -0
  225. package/renderer/SdfCellMode.d.ts +26 -0
  226. package/renderer/SdfCellMode.mjs +78 -0
  227. package/renderer/SdfNormal.d.mts +16 -0
  228. package/renderer/SdfNormal.d.ts +16 -0
  229. package/renderer/SdfNormal.mjs +122 -0
  230. package/renderer/Shape.d.mts +143 -0
  231. package/renderer/Shape.d.ts +143 -0
  232. package/renderer/Shape.mjs +458 -0
  233. package/renderer/SortStrategy.d.mts +86 -0
  234. package/renderer/SortStrategy.d.ts +86 -0
  235. package/renderer/SortStrategy.mjs +272 -0
  236. package/renderer/Store.d.mts +83 -0
  237. package/renderer/Store.d.ts +83 -0
  238. package/renderer/Store.mjs +369 -0
  239. package/renderer/StoreIo.d.mts +71 -0
  240. package/renderer/StoreIo.d.ts +71 -0
  241. package/renderer/StoreIo.mjs +292 -0
  242. package/renderer/TextureAtlas.d.mts +40 -0
  243. package/renderer/TextureAtlas.d.ts +40 -0
  244. package/renderer/TextureAtlas.mjs +122 -0
  245. package/renderer/TextureInfo.d.mts +34 -0
  246. package/renderer/TextureInfo.d.ts +34 -0
  247. package/renderer/TextureInfo.mjs +149 -0
  248. package/renderer/TickSettleMode.d.mts +34 -0
  249. package/renderer/TickSettleMode.d.ts +34 -0
  250. package/renderer/TickSettleMode.mjs +84 -0
  251. package/renderer/TickSimulation.d.mts +572 -0
  252. package/renderer/TickSimulation.d.ts +572 -0
  253. package/renderer/TickSimulation.mjs +1299 -0
  254. package/renderer/TypedCircuitExecutor.d.mts +101 -0
  255. package/renderer/TypedCircuitExecutor.d.ts +101 -0
  256. package/renderer/TypedCircuitExecutor.mjs +378 -0
  257. package/renderer/Value.d.mts +73 -0
  258. package/renderer/Value.d.ts +73 -0
  259. package/renderer/Value.mjs +275 -0
  260. package/renderer/VideoConfig.d.mts +15 -0
  261. package/renderer/VideoConfig.d.ts +15 -0
  262. package/renderer/VideoConfig.mjs +44 -0
  263. package/renderer/VoxelModel.d.mts +34 -0
  264. package/renderer/VoxelModel.d.ts +34 -0
  265. package/renderer/VoxelModel.mjs +113 -0
  266. package/renderer/Voxelizer.d.mts +80 -0
  267. package/renderer/Voxelizer.d.ts +80 -0
  268. package/renderer/Voxelizer.mjs +261 -0
  269. package/renderer/WorldChunkView.d.mts +75 -0
  270. package/renderer/WorldChunkView.d.ts +75 -0
  271. package/renderer/WorldChunkView.mjs +224 -0
  272. package/renderer/WorldGenerator.d.mts +75 -0
  273. package/renderer/WorldGenerator.d.ts +75 -0
  274. package/renderer/WorldGenerator.mjs +255 -0
  275. package/renderer/WorldSink.d.mts +50 -0
  276. package/renderer/WorldSink.d.ts +50 -0
  277. package/renderer/WorldSink.mjs +177 -0
  278. package/renderer/WorldStream.d.mts +45 -0
  279. package/renderer/WorldStream.d.ts +45 -0
  280. package/renderer/WorldStream.mjs +184 -0
  281. package/renderer/WsPartitionHints.d.mts +29 -0
  282. package/renderer/WsPartitionHints.d.ts +29 -0
  283. package/renderer/WsPartitionHints.mjs +102 -0
  284. package/renderer/WsProfile.d.mts +46 -0
  285. package/renderer/WsProfile.d.ts +46 -0
  286. package/renderer/WsProfile.mjs +152 -0
  287. package/renderer/WsRunResult.d.mts +83 -0
  288. package/renderer/WsRunResult.d.ts +83 -0
  289. package/renderer/WsRunResult.mjs +326 -0
  290. package/renderer/WsSegmentJob.d.mts +28 -0
  291. package/renderer/WsSegmentJob.d.ts +28 -0
  292. package/renderer/WsSegmentJob.mjs +81 -0
  293. package/renderer/diplomat-runtime.d.mts +15 -0
  294. package/renderer/diplomat-runtime.d.ts +15 -0
  295. package/renderer/diplomat-runtime.mjs +779 -0
  296. package/renderer/diplomat-wasm.mjs +52 -0
  297. package/renderer/diplomat.config.mjs +5 -0
  298. package/renderer/index.d.mts +193 -0
  299. package/renderer/index.d.ts +193 -0
  300. package/renderer/index.mjs +196 -0
  301. package/renderer/nucleation.wasm +0 -0
  302. package/renderer/veneer/design.d.ts +167 -0
  303. package/renderer/veneer/design.mjs +480 -0
@@ -0,0 +1,39 @@
1
+ // generated by diplomat-tool
2
+ import type { Schematic } from "./Schematic.mjs"
3
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
4
+
5
+
6
+
7
+ export class DistanceField {
8
+ /** @internal */
9
+ get ffiValue(): pointer;
10
+ /** @internal */
11
+ constructor();
12
+
13
+
14
+ /**
15
+ * Distance transform of a build's occupied voxels: every solid block
16
+ * learns how many blocks it sits below the surface, and the gradient of
17
+ * that depth gives the outward normal. Computed once over the
18
+ * schematic's bounding box.
19
+ */
20
+ static fromSchematic(schematic: Schematic): DistanceField;
21
+
22
+ /**
23
+ * Blocks below the surface at a voxel: 0 for empty/outside, 1 at the
24
+ * surface, increasing inward.
25
+ */
26
+ depth(x: number, y: number, z: number): number;
27
+
28
+ /**
29
+ * The upward component of the outward surface normal: 1 on flat ground,
30
+ * 0 on a vertical face, negative under an overhang. The scalar to key
31
+ * slope-based landscaping on (grass on the flats, stone on the steeps).
32
+ */
33
+ slope(x: number, y: number, z: number): number;
34
+
35
+ /**
36
+ * The full outward surface normal as JSON `[nx, ny, nz]`.
37
+ */
38
+ normalJson(x: number, y: number, z: number): string;
39
+ }
@@ -0,0 +1,39 @@
1
+ // generated by diplomat-tool
2
+ import type { Schematic } from "./Schematic.mjs"
3
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
4
+
5
+
6
+
7
+ export class DistanceField {
8
+ /** @internal */
9
+ get ffiValue(): pointer;
10
+ /** @internal */
11
+ constructor();
12
+
13
+
14
+ /**
15
+ * Distance transform of a build's occupied voxels: every solid block
16
+ * learns how many blocks it sits below the surface, and the gradient of
17
+ * that depth gives the outward normal. Computed once over the
18
+ * schematic's bounding box.
19
+ */
20
+ static fromSchematic(schematic: Schematic): DistanceField;
21
+
22
+ /**
23
+ * Blocks below the surface at a voxel: 0 for empty/outside, 1 at the
24
+ * surface, increasing inward.
25
+ */
26
+ depth(x: number, y: number, z: number): number;
27
+
28
+ /**
29
+ * The upward component of the outward surface normal: 1 on flat ground,
30
+ * 0 on a vertical face, negative under an overhang. The scalar to key
31
+ * slope-based landscaping on (grass on the flats, stone on the steeps).
32
+ */
33
+ slope(x: number, y: number, z: number): number;
34
+
35
+ /**
36
+ * The full outward surface normal as JSON `[nx, ny, nz]`.
37
+ */
38
+ normalJson(x: number, y: number, z: number): string;
39
+ }
@@ -0,0 +1,114 @@
1
+ // generated by diplomat-tool
2
+ import { Schematic } from "./Schematic.mjs"
3
+ import wasm from "./diplomat-wasm.mjs";
4
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
5
+
6
+ const DistanceField_box_destroy_registry = new FinalizationRegistry((ptr) => {
7
+ wasm.DistanceField_destroy(ptr);
8
+ });
9
+
10
+ export class DistanceField {
11
+ // Internal ptr reference:
12
+ #ptr = null;
13
+
14
+ // Lifetimes are only to keep dependencies alive.
15
+ // Since JS won't garbage collect until there are no incoming edges.
16
+ #selfEdge = [];
17
+
18
+ #internalConstructor(symbol, ptr, selfEdge) {
19
+ if (symbol !== diplomatRuntime.internalConstructor) {
20
+ console.error("DistanceField is an Opaque type. You cannot call its constructor.");
21
+ return;
22
+ }
23
+ this.#ptr = ptr;
24
+ this.#selfEdge = selfEdge;
25
+
26
+ // Are we being borrowed? If not, we can register.
27
+ if (this.#selfEdge.length === 0) {
28
+ DistanceField_box_destroy_registry.register(this, this.#ptr);
29
+ }
30
+
31
+ return this;
32
+ }
33
+ /** @internal */
34
+ get ffiValue() {
35
+ return this.#ptr;
36
+ }
37
+
38
+
39
+ /**
40
+ * Distance transform of a build's occupied voxels: every solid block
41
+ * learns how many blocks it sits below the surface, and the gradient of
42
+ * that depth gives the outward normal. Computed once over the
43
+ * schematic's bounding box.
44
+ */
45
+ static fromSchematic(schematic) {
46
+
47
+ const result = wasm.DistanceField_from_schematic(schematic.ffiValue);
48
+
49
+ try {
50
+ return new DistanceField(diplomatRuntime.internalConstructor, result, []);
51
+ }
52
+
53
+ finally {
54
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Blocks below the surface at a voxel: 0 for empty/outside, 1 at the
60
+ * surface, increasing inward.
61
+ */
62
+ depth(x, y, z) {
63
+
64
+ const result = wasm.DistanceField_depth(this.ffiValue, x, y, z);
65
+
66
+ try {
67
+ return result;
68
+ }
69
+
70
+ finally {
71
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
72
+ }
73
+ }
74
+
75
+ /**
76
+ * The upward component of the outward surface normal: 1 on flat ground,
77
+ * 0 on a vertical face, negative under an overhang. The scalar to key
78
+ * slope-based landscaping on (grass on the flats, stone on the steeps).
79
+ */
80
+ slope(x, y, z) {
81
+
82
+ const result = wasm.DistanceField_slope(this.ffiValue, x, y, z);
83
+
84
+ try {
85
+ return result;
86
+ }
87
+
88
+ finally {
89
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
90
+ }
91
+ }
92
+
93
+ /**
94
+ * The full outward surface normal as JSON `[nx, ny, nz]`.
95
+ */
96
+ normalJson(x, y, z) {
97
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
98
+
99
+ wasm.DistanceField_normal_json(this.ffiValue, x, y, z, write.buffer);
100
+
101
+ try {
102
+ return write.readString8();
103
+ }
104
+
105
+ finally {
106
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
107
+ write.free();
108
+ }
109
+ }
110
+
111
+ constructor(symbol, ptr, selfEdge) {
112
+ return this.#internalConstructor(...arguments)
113
+ }
114
+ }
@@ -0,0 +1,42 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { OutputCondition } from "./OutputCondition.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * How long to run the circuit for one `execute` call (PORTING rule 10).
10
+ */
11
+ export class ExecutionMode {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Run for exactly `ticks` ticks.
20
+ */
21
+ static fixedTicks(ticks: number): ExecutionMode;
22
+
23
+ /**
24
+ * Run until the output named `output_name` meets `condition`,
25
+ * checking every `check_interval` ticks, giving up after `max_ticks`
26
+ * ticks (the result's `condition_met` reports which happened).
27
+ */
28
+ static untilCondition(outputName: string, condition: OutputCondition, maxTicks: number, checkInterval: number): ExecutionMode;
29
+
30
+ /**
31
+ * Run until any output changes from its initial reading, checking
32
+ * every `check_interval` ticks, giving up after `max_ticks` ticks.
33
+ */
34
+ static untilChange(maxTicks: number, checkInterval: number): ExecutionMode;
35
+
36
+ /**
37
+ * Run (one tick at a time) until all outputs have been unchanged for
38
+ * `stable_ticks` consecutive ticks, giving up after `max_ticks`
39
+ * ticks (the result's `condition_met` reports stability).
40
+ */
41
+ static untilStable(stableTicks: number, maxTicks: number): ExecutionMode;
42
+ }
@@ -0,0 +1,42 @@
1
+ // generated by diplomat-tool
2
+ import type { NucleationError } from "./NucleationError.mjs"
3
+ import type { OutputCondition } from "./OutputCondition.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * How long to run the circuit for one `execute` call (PORTING rule 10).
10
+ */
11
+ export class ExecutionMode {
12
+ /** @internal */
13
+ get ffiValue(): pointer;
14
+ /** @internal */
15
+ constructor();
16
+
17
+
18
+ /**
19
+ * Run for exactly `ticks` ticks.
20
+ */
21
+ static fixedTicks(ticks: number): ExecutionMode;
22
+
23
+ /**
24
+ * Run until the output named `output_name` meets `condition`,
25
+ * checking every `check_interval` ticks, giving up after `max_ticks`
26
+ * ticks (the result's `condition_met` reports which happened).
27
+ */
28
+ static untilCondition(outputName: string, condition: OutputCondition, maxTicks: number, checkInterval: number): ExecutionMode;
29
+
30
+ /**
31
+ * Run until any output changes from its initial reading, checking
32
+ * every `check_interval` ticks, giving up after `max_ticks` ticks.
33
+ */
34
+ static untilChange(maxTicks: number, checkInterval: number): ExecutionMode;
35
+
36
+ /**
37
+ * Run (one tick at a time) until all outputs have been unchanged for
38
+ * `stable_ticks` consecutive ticks, giving up after `max_ticks`
39
+ * ticks (the result's `condition_met` reports stability).
40
+ */
41
+ static untilStable(stableTicks: number, maxTicks: number): ExecutionMode;
42
+ }
@@ -0,0 +1,127 @@
1
+ // generated by diplomat-tool
2
+ import { NucleationError } from "./NucleationError.mjs"
3
+ import { OutputCondition } from "./OutputCondition.mjs"
4
+ import wasm from "./diplomat-wasm.mjs";
5
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
6
+
7
+ const ExecutionMode_box_destroy_registry = new FinalizationRegistry((ptr) => {
8
+ wasm.ExecutionMode_destroy(ptr);
9
+ });
10
+
11
+ /**
12
+ * How long to run the circuit for one `execute` call (PORTING rule 10).
13
+ */
14
+ export class ExecutionMode {
15
+ // Internal ptr reference:
16
+ #ptr = null;
17
+
18
+ // Lifetimes are only to keep dependencies alive.
19
+ // Since JS won't garbage collect until there are no incoming edges.
20
+ #selfEdge = [];
21
+
22
+ #internalConstructor(symbol, ptr, selfEdge) {
23
+ if (symbol !== diplomatRuntime.internalConstructor) {
24
+ console.error("ExecutionMode is an Opaque type. You cannot call its constructor.");
25
+ return;
26
+ }
27
+ this.#ptr = ptr;
28
+ this.#selfEdge = selfEdge;
29
+
30
+ // Are we being borrowed? If not, we can register.
31
+ if (this.#selfEdge.length === 0) {
32
+ ExecutionMode_box_destroy_registry.register(this, this.#ptr);
33
+ }
34
+
35
+ return this;
36
+ }
37
+ /** @internal */
38
+ get ffiValue() {
39
+ return this.#ptr;
40
+ }
41
+
42
+
43
+ /**
44
+ * Run for exactly `ticks` ticks.
45
+ */
46
+ static fixedTicks(ticks) {
47
+
48
+ const result = wasm.ExecutionMode_fixed_ticks(ticks);
49
+
50
+ try {
51
+ return new ExecutionMode(diplomatRuntime.internalConstructor, result, []);
52
+ }
53
+
54
+ finally {
55
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Run until the output named `output_name` meets `condition`,
61
+ * checking every `check_interval` ticks, giving up after `max_ticks`
62
+ * ticks (the result's `condition_met` reports which happened).
63
+ */
64
+ static untilCondition(outputName, condition, maxTicks, checkInterval) {
65
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
66
+
67
+ const outputNameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, outputName)));
68
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
69
+
70
+
71
+ const result = wasm.ExecutionMode_until_condition(diplomatReceive.buffer, outputNameSlice.ptr, condition.ffiValue, maxTicks, checkInterval);
72
+
73
+ try {
74
+ if (!diplomatReceive.resultFlag) {
75
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
76
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
77
+ }
78
+ return new ExecutionMode(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
79
+ }
80
+
81
+ finally {
82
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
83
+ functionCleanupArena.free();
84
+
85
+ diplomatReceive.free();
86
+ }
87
+ }
88
+
89
+ /**
90
+ * Run until any output changes from its initial reading, checking
91
+ * every `check_interval` ticks, giving up after `max_ticks` ticks.
92
+ */
93
+ static untilChange(maxTicks, checkInterval) {
94
+
95
+ const result = wasm.ExecutionMode_until_change(maxTicks, checkInterval);
96
+
97
+ try {
98
+ return new ExecutionMode(diplomatRuntime.internalConstructor, result, []);
99
+ }
100
+
101
+ finally {
102
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Run (one tick at a time) until all outputs have been unchanged for
108
+ * `stable_ticks` consecutive ticks, giving up after `max_ticks`
109
+ * ticks (the result's `condition_met` reports stability).
110
+ */
111
+ static untilStable(stableTicks, maxTicks) {
112
+
113
+ const result = wasm.ExecutionMode_until_stable(stableTicks, maxTicks);
114
+
115
+ try {
116
+ return new ExecutionMode(diplomatRuntime.internalConstructor, result, []);
117
+ }
118
+
119
+ finally {
120
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
121
+ }
122
+ }
123
+
124
+ constructor(symbol, ptr, selfEdge) {
125
+ return this.#internalConstructor(...arguments)
126
+ }
127
+ }
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldRange } from "./FieldRange.mjs"
3
+ import type { NucleationError } from "./NucleationError.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Immutable scalar field evaluated over world-space `(x, y, z)`.
10
+ *
11
+ * A `Field3` has scalar semantics only. It may be shared by geometry and
12
+ * material consumers without being reinterpreted as a signed-distance field.
13
+ */
14
+ export class Field3 {
15
+ /** @internal */
16
+ get ffiValue(): pointer;
17
+ /** @internal */
18
+ constructor();
19
+
20
+
21
+ /**
22
+ * Deterministic value-noise FBM normalized to `[-1, 1]`.
23
+ */
24
+ static valueNoiseFbm(frequency: number, seed: number, octaves: number): Field3;
25
+
26
+ evalAt(x: number, y: number, z: number): number;
27
+
28
+ /**
29
+ * The field's analytically proven output range.
30
+ *
31
+ * Returns `NotFound` when no range can be proven — callers mapping a
32
+ * field onto a gradient must handle that rather than silently
33
+ * propagating a sentinel into their `lo`/`hi` bounds.
34
+ */
35
+ outputRange(): FieldRange;
36
+
37
+ static fromJsonString(json: string): Field3;
38
+
39
+ toJson(): string;
40
+ }
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldRange } from "./FieldRange.mjs"
3
+ import type { NucleationError } from "./NucleationError.mjs"
4
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
5
+
6
+
7
+
8
+ /**
9
+ * Immutable scalar field evaluated over world-space `(x, y, z)`.
10
+ *
11
+ * A `Field3` has scalar semantics only. It may be shared by geometry and
12
+ * material consumers without being reinterpreted as a signed-distance field.
13
+ */
14
+ export class Field3 {
15
+ /** @internal */
16
+ get ffiValue(): pointer;
17
+ /** @internal */
18
+ constructor();
19
+
20
+
21
+ /**
22
+ * Deterministic value-noise FBM normalized to `[-1, 1]`.
23
+ */
24
+ static valueNoiseFbm(frequency: number, seed: number, octaves: number): Field3;
25
+
26
+ evalAt(x: number, y: number, z: number): number;
27
+
28
+ /**
29
+ * The field's analytically proven output range.
30
+ *
31
+ * Returns `NotFound` when no range can be proven — callers mapping a
32
+ * field onto a gradient must handle that rather than silently
33
+ * propagating a sentinel into their `lo`/`hi` bounds.
34
+ */
35
+ outputRange(): FieldRange;
36
+
37
+ static fromJsonString(json: string): Field3;
38
+
39
+ toJson(): string;
40
+ }
@@ -0,0 +1,160 @@
1
+ // generated by diplomat-tool
2
+ import { FieldRange } from "./FieldRange.mjs"
3
+ import { NucleationError } from "./NucleationError.mjs"
4
+ import wasm from "./diplomat-wasm.mjs";
5
+ import * as diplomatRuntime from "./diplomat-runtime.mjs";
6
+
7
+ const Field3_box_destroy_registry = new FinalizationRegistry((ptr) => {
8
+ wasm.Field3_destroy(ptr);
9
+ });
10
+
11
+ /**
12
+ * Immutable scalar field evaluated over world-space `(x, y, z)`.
13
+ *
14
+ * A `Field3` has scalar semantics only. It may be shared by geometry and
15
+ * material consumers without being reinterpreted as a signed-distance field.
16
+ */
17
+ export class Field3 {
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("Field3 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
+ Field3_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
+ * Deterministic value-noise FBM normalized to `[-1, 1]`.
48
+ */
49
+ static valueNoiseFbm(frequency, seed, octaves) {
50
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
51
+
52
+
53
+ const result = wasm.Field3_value_noise_fbm(diplomatReceive.buffer, frequency, seed, octaves);
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 Field3(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
61
+ }
62
+
63
+ finally {
64
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
65
+ diplomatReceive.free();
66
+ }
67
+ }
68
+
69
+ evalAt(x, y, z) {
70
+
71
+ const result = wasm.Field3_eval_at(this.ffiValue, x, y, z);
72
+
73
+ try {
74
+ return result;
75
+ }
76
+
77
+ finally {
78
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
79
+ }
80
+ }
81
+
82
+ /**
83
+ * The field's analytically proven output range.
84
+ *
85
+ * Returns `NotFound` when no range can be proven — callers mapping a
86
+ * field onto a gradient must handle that rather than silently
87
+ * propagating a sentinel into their `lo`/`hi` bounds.
88
+ */
89
+ outputRange() {
90
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 9, 4, true);
91
+
92
+
93
+ const result = wasm.Field3_output_range(diplomatReceive.buffer, this.ffiValue);
94
+
95
+ try {
96
+ if (!diplomatReceive.resultFlag) {
97
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
98
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
99
+ }
100
+ return FieldRange._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
101
+ }
102
+
103
+ finally {
104
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
105
+ diplomatReceive.free();
106
+ }
107
+ }
108
+
109
+ static fromJsonString(json) {
110
+ let functionCleanupArena = new diplomatRuntime.CleanupArena();
111
+
112
+ const jsonSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, json)));
113
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
114
+
115
+
116
+ const result = wasm.Field3_from_json_string(diplomatReceive.buffer, jsonSlice.ptr);
117
+
118
+ try {
119
+ if (!diplomatReceive.resultFlag) {
120
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
121
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
122
+ }
123
+ return new Field3(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
124
+ }
125
+
126
+ finally {
127
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
128
+ functionCleanupArena.free();
129
+
130
+ diplomatReceive.free();
131
+ }
132
+ }
133
+
134
+ toJson() {
135
+ const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
136
+
137
+ const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
138
+
139
+
140
+ const result = wasm.Field3_to_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
141
+
142
+ try {
143
+ if (!diplomatReceive.resultFlag) {
144
+ const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
145
+ throw new globalThis.Error('NucleationError.' + cause.value, { cause });
146
+ }
147
+ return write.readString8();
148
+ }
149
+
150
+ finally {
151
+ diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
152
+ diplomatReceive.free();
153
+ write.free();
154
+ }
155
+ }
156
+
157
+ constructor(symbol, ptr, selfEdge) {
158
+ return this.#internalConstructor(...arguments)
159
+ }
160
+ }
@@ -0,0 +1,40 @@
1
+ // generated by diplomat-tool
2
+ import type { FieldProgramDistanceKind } from "./FieldProgramDistanceKind.mjs"
3
+ import type { NucleationError } from "./NucleationError.mjs"
4
+ import type { SdfBounds } from "./SdfBounds.mjs"
5
+ import type { SdfNormal } from "./SdfNormal.mjs"
6
+ import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
7
+
8
+
9
+
10
+ /**
11
+ * A validated, sandboxed custom SDF field program: deterministic typed
12
+ * bytecode over scalar/vec3/bool values with bounded loops, carrying
13
+ * its own explicit finite bounds and distance-kind metadata. Build one
14
+ * with {@link FieldProgramBuilder} or import it from JSON.
15
+ */
16
+ export class FieldProgram {
17
+ /** @internal */
18
+ get ffiValue(): pointer;
19
+ /** @internal */
20
+ constructor();
21
+
22
+
23
+ static fromJsonString(json: string): FieldProgram;
24
+
25
+ toJson(): string;
26
+
27
+ evalAt(x: number, y: number, z: number): number;
28
+
29
+ /**
30
+ * Unit-length gradient of the scalar output at `(x, y, z)`: the
31
+ * program's own forward-mode analytic gradient where it's
32
+ * differentiable there, falling back to a numerical estimate
33
+ * (central differences via `epsilon`) otherwise.
34
+ */
35
+ gradient(x: number, y: number, z: number, epsilon: number): SdfNormal;
36
+
37
+ bounds(): SdfBounds;
38
+
39
+ distanceKind(): FieldProgramDistanceKind;
40
+ }