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.
- package/BlockPos.mjs +1 -0
- package/Dimensions.mjs +1 -0
- package/FieldRange.mjs +1 -0
- package/ItemScale.mjs +1 -0
- package/MeshBounds.mjs +1 -0
- package/MeshProgress.mjs +1 -0
- package/README.md +12 -0
- package/RegionBounds.mjs +1 -0
- package/Schematic.d.mts +32 -0
- package/Schematic.d.ts +32 -0
- package/Schematic.mjs +100 -0
- package/SdfBounds.mjs +1 -0
- package/SdfNormal.mjs +1 -0
- package/TextureInfo.mjs +1 -0
- package/diplomat-runtime.mjs +19 -14
- package/nucleation.wasm +0 -0
- package/package.json +7 -2
- package/renderer/AnimationEffect.d.mts +44 -0
- package/renderer/AnimationEffect.d.ts +44 -0
- package/renderer/AnimationEffect.mjs +204 -0
- package/renderer/Autostack.d.mts +43 -0
- package/renderer/Autostack.d.ts +43 -0
- package/renderer/Autostack.mjs +134 -0
- package/renderer/BlockPos.d.mts +28 -0
- package/renderer/BlockPos.d.ts +28 -0
- package/renderer/BlockPos.mjs +130 -0
- package/renderer/BlockState.d.mts +39 -0
- package/renderer/BlockState.d.ts +39 -0
- package/renderer/BlockState.mjs +134 -0
- package/renderer/Blocks.d.mts +91 -0
- package/renderer/Blocks.d.ts +91 -0
- package/renderer/Blocks.mjs +308 -0
- package/renderer/Brush.d.mts +99 -0
- package/renderer/Brush.d.ts +99 -0
- package/renderer/Brush.mjs +335 -0
- package/renderer/BuildAnimation.d.mts +179 -0
- package/renderer/BuildAnimation.d.ts +179 -0
- package/renderer/BuildAnimation.mjs +1148 -0
- package/renderer/BuildingTool.d.mts +46 -0
- package/renderer/BuildingTool.d.ts +46 -0
- package/renderer/BuildingTool.mjs +121 -0
- package/renderer/CellExecutor.d.mts +51 -0
- package/renderer/CellExecutor.d.ts +51 -0
- package/renderer/CellExecutor.mjs +171 -0
- package/renderer/CellularSdfConfig.d.mts +22 -0
- package/renderer/CellularSdfConfig.d.ts +22 -0
- package/renderer/CellularSdfConfig.mjs +69 -0
- package/renderer/ChunkMeshResult.d.mts +75 -0
- package/renderer/ChunkMeshResult.d.ts +75 -0
- package/renderer/ChunkMeshResult.mjs +253 -0
- package/renderer/CircuitBuilder.d.mts +118 -0
- package/renderer/CircuitBuilder.d.ts +118 -0
- package/renderer/CircuitBuilder.mjs +516 -0
- package/renderer/Curve3D.d.mts +27 -0
- package/renderer/Curve3D.d.ts +27 -0
- package/renderer/Curve3D.mjs +101 -0
- package/renderer/DefinitionRegion.d.mts +274 -0
- package/renderer/DefinitionRegion.d.ts +274 -0
- package/renderer/DefinitionRegion.mjs +973 -0
- package/renderer/Design.d.mts +348 -0
- package/renderer/Design.d.ts +348 -0
- package/renderer/Design.mjs +1334 -0
- package/renderer/Diff.d.mts +88 -0
- package/renderer/Diff.d.ts +88 -0
- package/renderer/Diff.mjs +316 -0
- package/renderer/Dimensions.d.mts +28 -0
- package/renderer/Dimensions.d.ts +28 -0
- package/renderer/Dimensions.mjs +130 -0
- package/renderer/DistanceField.d.mts +39 -0
- package/renderer/DistanceField.d.ts +39 -0
- package/renderer/DistanceField.mjs +114 -0
- package/renderer/ExecutionMode.d.mts +42 -0
- package/renderer/ExecutionMode.d.ts +42 -0
- package/renderer/ExecutionMode.mjs +127 -0
- package/renderer/Field3.d.mts +40 -0
- package/renderer/Field3.d.ts +40 -0
- package/renderer/Field3.mjs +160 -0
- package/renderer/FieldProgram.d.mts +40 -0
- package/renderer/FieldProgram.d.ts +40 -0
- package/renderer/FieldProgram.mjs +167 -0
- package/renderer/FieldProgramBinaryOp.d.mts +42 -0
- package/renderer/FieldProgramBinaryOp.d.ts +42 -0
- package/renderer/FieldProgramBinaryOp.mjs +118 -0
- package/renderer/FieldProgramBuilder.d.mts +104 -0
- package/renderer/FieldProgramBuilder.d.ts +104 -0
- package/renderer/FieldProgramBuilder.mjs +486 -0
- package/renderer/FieldProgramDistanceKind.d.mts +26 -0
- package/renderer/FieldProgramDistanceKind.d.ts +26 -0
- package/renderer/FieldProgramDistanceKind.mjs +78 -0
- package/renderer/FieldProgramUnaryOp.d.mts +34 -0
- package/renderer/FieldProgramUnaryOp.d.ts +34 -0
- package/renderer/FieldProgramUnaryOp.mjs +102 -0
- package/renderer/FieldProgramValueType.d.mts +25 -0
- package/renderer/FieldProgramValueType.d.ts +25 -0
- package/renderer/FieldProgramValueType.mjs +75 -0
- package/renderer/FieldRange.d.mts +15 -0
- package/renderer/FieldRange.d.ts +15 -0
- package/renderer/FieldRange.mjs +109 -0
- package/renderer/Fingerprint.d.mts +44 -0
- package/renderer/Fingerprint.d.ts +44 -0
- package/renderer/Fingerprint.mjs +197 -0
- package/renderer/GeneratedChunk.d.mts +35 -0
- package/renderer/GeneratedChunk.d.ts +35 -0
- package/renderer/GeneratedChunk.mjs +178 -0
- package/renderer/GeneratedChunkCoverage.d.mts +25 -0
- package/renderer/GeneratedChunkCoverage.d.ts +25 -0
- package/renderer/GeneratedChunkCoverage.mjs +75 -0
- package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
- package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
- package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
- package/renderer/GeneratedWorldStream.d.mts +28 -0
- package/renderer/GeneratedWorldStream.d.ts +28 -0
- package/renderer/GeneratedWorldStream.mjs +86 -0
- package/renderer/Geo.d.mts +41 -0
- package/renderer/Geo.d.ts +41 -0
- package/renderer/Geo.mjs +121 -0
- package/renderer/Hdl.d.mts +56 -0
- package/renderer/Hdl.d.ts +56 -0
- package/renderer/Hdl.mjs +163 -0
- package/renderer/InterpolationSpace.d.mts +25 -0
- package/renderer/InterpolationSpace.d.ts +25 -0
- package/renderer/InterpolationSpace.mjs +73 -0
- package/renderer/IoLayout.d.mts +26 -0
- package/renderer/IoLayout.d.ts +26 -0
- package/renderer/IoLayout.mjs +81 -0
- package/renderer/IoLayoutBuilder.d.mts +73 -0
- package/renderer/IoLayoutBuilder.d.ts +73 -0
- package/renderer/IoLayoutBuilder.mjs +315 -0
- package/renderer/IoType.d.mts +41 -0
- package/renderer/IoType.d.ts +41 -0
- package/renderer/IoType.mjs +125 -0
- package/renderer/ItemModelConfig.d.mts +65 -0
- package/renderer/ItemModelConfig.d.ts +65 -0
- package/renderer/ItemModelConfig.mjs +223 -0
- package/renderer/ItemModelPackBuilder.d.mts +32 -0
- package/renderer/ItemModelPackBuilder.d.ts +32 -0
- package/renderer/ItemModelPackBuilder.mjs +104 -0
- package/renderer/ItemModelResult.d.mts +72 -0
- package/renderer/ItemModelResult.d.ts +72 -0
- package/renderer/ItemModelResult.mjs +268 -0
- package/renderer/ItemScale.d.mts +31 -0
- package/renderer/ItemScale.d.ts +31 -0
- package/renderer/ItemScale.mjs +133 -0
- package/renderer/LayoutFunction.d.mts +52 -0
- package/renderer/LayoutFunction.d.ts +52 -0
- package/renderer/LayoutFunction.mjs +159 -0
- package/renderer/MchprsWorld.d.mts +131 -0
- package/renderer/MchprsWorld.d.ts +131 -0
- package/renderer/MchprsWorld.mjs +423 -0
- package/renderer/MeshBounds.d.mts +40 -0
- package/renderer/MeshBounds.d.ts +40 -0
- package/renderer/MeshBounds.mjs +181 -0
- package/renderer/MeshConfig.d.mts +101 -0
- package/renderer/MeshConfig.d.ts +101 -0
- package/renderer/MeshConfig.mjs +306 -0
- package/renderer/MeshJob.d.mts +44 -0
- package/renderer/MeshJob.d.ts +44 -0
- package/renderer/MeshJob.mjs +116 -0
- package/renderer/MeshPhase.d.mts +38 -0
- package/renderer/MeshPhase.d.ts +38 -0
- package/renderer/MeshPhase.mjs +90 -0
- package/renderer/MeshProgress.d.mts +32 -0
- package/renderer/MeshProgress.d.ts +32 -0
- package/renderer/MeshProgress.mjs +134 -0
- package/renderer/MeshResult.d.mts +76 -0
- package/renderer/MeshResult.d.ts +76 -0
- package/renderer/MeshResult.mjs +269 -0
- package/renderer/MultiMeshResult.d.mts +50 -0
- package/renderer/MultiMeshResult.d.ts +50 -0
- package/renderer/MultiMeshResult.mjs +166 -0
- package/renderer/Nbt.d.mts +50 -0
- package/renderer/Nbt.d.ts +50 -0
- package/renderer/Nbt.mjs +161 -0
- package/renderer/NucleationError.d.mts +53 -0
- package/renderer/NucleationError.d.ts +53 -0
- package/renderer/NucleationError.mjs +136 -0
- package/renderer/OutputCondition.d.mts +45 -0
- package/renderer/OutputCondition.d.ts +45 -0
- package/renderer/OutputCondition.mjs +129 -0
- package/renderer/Palette.d.mts +157 -0
- package/renderer/Palette.d.ts +157 -0
- package/renderer/Palette.mjs +487 -0
- package/renderer/PaletteBuilder.d.mts +119 -0
- package/renderer/PaletteBuilder.d.ts +119 -0
- package/renderer/PaletteBuilder.mjs +457 -0
- package/renderer/README.md +67 -0
- package/renderer/RawMeshExport.d.mts +74 -0
- package/renderer/RawMeshExport.d.ts +74 -0
- package/renderer/RawMeshExport.mjs +243 -0
- package/renderer/RedstoneGraph.d.mts +58 -0
- package/renderer/RedstoneGraph.d.ts +58 -0
- package/renderer/RedstoneGraph.mjs +242 -0
- package/renderer/RegionBounds.d.mts +41 -0
- package/renderer/RegionBounds.d.ts +41 -0
- package/renderer/RegionBounds.mjs +182 -0
- package/renderer/RenderConfig.d.mts +101 -0
- package/renderer/RenderConfig.d.ts +101 -0
- package/renderer/RenderConfig.mjs +271 -0
- package/renderer/Renderer.d.mts +51 -0
- package/renderer/Renderer.d.ts +51 -0
- package/renderer/Renderer.mjs +219 -0
- package/renderer/ResourcePack.d.mts +105 -0
- package/renderer/ResourcePack.d.ts +105 -0
- package/renderer/ResourcePack.mjs +447 -0
- package/renderer/ResourcePackList.d.mts +32 -0
- package/renderer/ResourcePackList.d.ts +32 -0
- package/renderer/ResourcePackList.mjs +96 -0
- package/renderer/Routing.d.mts +66 -0
- package/renderer/Routing.d.ts +66 -0
- package/renderer/Routing.mjs +220 -0
- package/renderer/Schematic.d.mts +977 -0
- package/renderer/Schematic.d.ts +977 -0
- package/renderer/Schematic.mjs +3820 -0
- package/renderer/SchematicBuilder.d.mts +103 -0
- package/renderer/SchematicBuilder.d.ts +103 -0
- package/renderer/SchematicBuilder.mjs +401 -0
- package/renderer/SchematicRegions.d.mts +93 -0
- package/renderer/SchematicRegions.d.ts +93 -0
- package/renderer/SchematicRegions.mjs +411 -0
- package/renderer/SchematicSplitResult.d.mts +26 -0
- package/renderer/SchematicSplitResult.d.ts +26 -0
- package/renderer/SchematicSplitResult.mjs +84 -0
- package/renderer/Scripting.d.mts +40 -0
- package/renderer/Scripting.d.ts +40 -0
- package/renderer/Scripting.mjs +138 -0
- package/renderer/Sdf.d.mts +234 -0
- package/renderer/Sdf.d.ts +234 -0
- package/renderer/Sdf.mjs +1234 -0
- package/renderer/SdfAxis.d.mts +25 -0
- package/renderer/SdfAxis.d.ts +25 -0
- package/renderer/SdfAxis.mjs +75 -0
- package/renderer/SdfBounds.d.mts +19 -0
- package/renderer/SdfBounds.d.ts +19 -0
- package/renderer/SdfBounds.mjs +161 -0
- package/renderer/SdfCellMode.d.mts +26 -0
- package/renderer/SdfCellMode.d.ts +26 -0
- package/renderer/SdfCellMode.mjs +78 -0
- package/renderer/SdfNormal.d.mts +16 -0
- package/renderer/SdfNormal.d.ts +16 -0
- package/renderer/SdfNormal.mjs +122 -0
- package/renderer/Shape.d.mts +143 -0
- package/renderer/Shape.d.ts +143 -0
- package/renderer/Shape.mjs +458 -0
- package/renderer/SortStrategy.d.mts +86 -0
- package/renderer/SortStrategy.d.ts +86 -0
- package/renderer/SortStrategy.mjs +272 -0
- package/renderer/Store.d.mts +83 -0
- package/renderer/Store.d.ts +83 -0
- package/renderer/Store.mjs +369 -0
- package/renderer/StoreIo.d.mts +71 -0
- package/renderer/StoreIo.d.ts +71 -0
- package/renderer/StoreIo.mjs +292 -0
- package/renderer/TextureAtlas.d.mts +40 -0
- package/renderer/TextureAtlas.d.ts +40 -0
- package/renderer/TextureAtlas.mjs +122 -0
- package/renderer/TextureInfo.d.mts +34 -0
- package/renderer/TextureInfo.d.ts +34 -0
- package/renderer/TextureInfo.mjs +149 -0
- package/renderer/TickSettleMode.d.mts +34 -0
- package/renderer/TickSettleMode.d.ts +34 -0
- package/renderer/TickSettleMode.mjs +84 -0
- package/renderer/TickSimulation.d.mts +572 -0
- package/renderer/TickSimulation.d.ts +572 -0
- package/renderer/TickSimulation.mjs +1299 -0
- package/renderer/TypedCircuitExecutor.d.mts +101 -0
- package/renderer/TypedCircuitExecutor.d.ts +101 -0
- package/renderer/TypedCircuitExecutor.mjs +378 -0
- package/renderer/Value.d.mts +73 -0
- package/renderer/Value.d.ts +73 -0
- package/renderer/Value.mjs +275 -0
- package/renderer/VideoConfig.d.mts +15 -0
- package/renderer/VideoConfig.d.ts +15 -0
- package/renderer/VideoConfig.mjs +44 -0
- package/renderer/VoxelModel.d.mts +34 -0
- package/renderer/VoxelModel.d.ts +34 -0
- package/renderer/VoxelModel.mjs +113 -0
- package/renderer/Voxelizer.d.mts +80 -0
- package/renderer/Voxelizer.d.ts +80 -0
- package/renderer/Voxelizer.mjs +261 -0
- package/renderer/WorldChunkView.d.mts +75 -0
- package/renderer/WorldChunkView.d.ts +75 -0
- package/renderer/WorldChunkView.mjs +224 -0
- package/renderer/WorldGenerator.d.mts +75 -0
- package/renderer/WorldGenerator.d.ts +75 -0
- package/renderer/WorldGenerator.mjs +255 -0
- package/renderer/WorldSink.d.mts +50 -0
- package/renderer/WorldSink.d.ts +50 -0
- package/renderer/WorldSink.mjs +177 -0
- package/renderer/WorldStream.d.mts +45 -0
- package/renderer/WorldStream.d.ts +45 -0
- package/renderer/WorldStream.mjs +184 -0
- package/renderer/WsPartitionHints.d.mts +29 -0
- package/renderer/WsPartitionHints.d.ts +29 -0
- package/renderer/WsPartitionHints.mjs +102 -0
- package/renderer/WsProfile.d.mts +46 -0
- package/renderer/WsProfile.d.ts +46 -0
- package/renderer/WsProfile.mjs +152 -0
- package/renderer/WsRunResult.d.mts +83 -0
- package/renderer/WsRunResult.d.ts +83 -0
- package/renderer/WsRunResult.mjs +326 -0
- package/renderer/WsSegmentJob.d.mts +28 -0
- package/renderer/WsSegmentJob.d.ts +28 -0
- package/renderer/WsSegmentJob.mjs +81 -0
- package/renderer/diplomat-runtime.d.mts +15 -0
- package/renderer/diplomat-runtime.d.ts +15 -0
- package/renderer/diplomat-runtime.mjs +779 -0
- package/renderer/diplomat-wasm.mjs +52 -0
- package/renderer/diplomat.config.mjs +5 -0
- package/renderer/index.d.mts +193 -0
- package/renderer/index.d.ts +193 -0
- package/renderer/index.mjs +196 -0
- package/renderer/nucleation.wasm +0 -0
- package/renderer/veneer/design.d.ts +167 -0
- package/renderer/veneer/design.mjs +480 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Mesh generation configuration. Wraps {@link crate::meshing::MeshConfig}.
|
|
9
|
+
*/
|
|
10
|
+
export class MeshConfig {
|
|
11
|
+
/** @internal */
|
|
12
|
+
get ffiValue(): pointer;
|
|
13
|
+
/** @internal */
|
|
14
|
+
constructor();
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Create a config with default settings: hidden-face culling on,
|
|
19
|
+
* ambient occlusion on (intensity 0.4), no biome, atlas max size 4096,
|
|
20
|
+
* occluded-block culling on, greedy meshing off.
|
|
21
|
+
*/
|
|
22
|
+
static create(): MeshConfig;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Enable face culling between adjacent solid blocks (default: true).
|
|
26
|
+
*/
|
|
27
|
+
setCullHiddenFaces(val: boolean): void;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Whether hidden-face culling is enabled.
|
|
31
|
+
*/
|
|
32
|
+
cullHiddenFaces(): boolean;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Enable ambient occlusion (default: true).
|
|
36
|
+
*/
|
|
37
|
+
setAmbientOcclusion(val: boolean): void;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Whether ambient occlusion is enabled.
|
|
41
|
+
*/
|
|
42
|
+
ambientOcclusion(): boolean;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Set ambient-occlusion intensity, 0.0 (no darkening) to 1.0 (full
|
|
46
|
+
* darkening). Default: 0.4.
|
|
47
|
+
*/
|
|
48
|
+
setAoIntensity(val: number): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The ambient-occlusion intensity (0.0–1.0).
|
|
52
|
+
*/
|
|
53
|
+
aoIntensity(): number;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Set the biome used for tinting (e.g. "plains", "swamp").
|
|
57
|
+
*/
|
|
58
|
+
setBiome(biome: string): void;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Clear the biome (old ABI: `meshconfig_set_biome(NULL)`).
|
|
62
|
+
*/
|
|
63
|
+
clearBiome(): void;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The configured biome; `NotFound` if none is set.
|
|
67
|
+
*/
|
|
68
|
+
biome(): string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Set the maximum texture-atlas dimension in pixels (default: 4096).
|
|
72
|
+
*/
|
|
73
|
+
setAtlasMaxSize(size: number): void;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The maximum texture-atlas dimension in pixels.
|
|
77
|
+
*/
|
|
78
|
+
atlasMaxSize(): number;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Skip blocks fully hidden by opaque neighbors on all 6 sides
|
|
82
|
+
* (default: true).
|
|
83
|
+
*/
|
|
84
|
+
setCullOccludedBlocks(val: boolean): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Whether occluded-block culling is enabled.
|
|
88
|
+
*/
|
|
89
|
+
cullOccludedBlocks(): boolean;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Merge adjacent coplanar faces into larger quads to reduce triangle
|
|
93
|
+
* count (default: false).
|
|
94
|
+
*/
|
|
95
|
+
setGreedyMeshing(val: boolean): void;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Whether greedy meshing is enabled.
|
|
99
|
+
*/
|
|
100
|
+
greedyMeshing(): boolean;
|
|
101
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Mesh generation configuration. Wraps {@link crate::meshing::MeshConfig}.
|
|
9
|
+
*/
|
|
10
|
+
export class MeshConfig {
|
|
11
|
+
/** @internal */
|
|
12
|
+
get ffiValue(): pointer;
|
|
13
|
+
/** @internal */
|
|
14
|
+
constructor();
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Create a config with default settings: hidden-face culling on,
|
|
19
|
+
* ambient occlusion on (intensity 0.4), no biome, atlas max size 4096,
|
|
20
|
+
* occluded-block culling on, greedy meshing off.
|
|
21
|
+
*/
|
|
22
|
+
static create(): MeshConfig;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Enable face culling between adjacent solid blocks (default: true).
|
|
26
|
+
*/
|
|
27
|
+
setCullHiddenFaces(val: boolean): void;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Whether hidden-face culling is enabled.
|
|
31
|
+
*/
|
|
32
|
+
cullHiddenFaces(): boolean;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Enable ambient occlusion (default: true).
|
|
36
|
+
*/
|
|
37
|
+
setAmbientOcclusion(val: boolean): void;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Whether ambient occlusion is enabled.
|
|
41
|
+
*/
|
|
42
|
+
ambientOcclusion(): boolean;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Set ambient-occlusion intensity, 0.0 (no darkening) to 1.0 (full
|
|
46
|
+
* darkening). Default: 0.4.
|
|
47
|
+
*/
|
|
48
|
+
setAoIntensity(val: number): void;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The ambient-occlusion intensity (0.0–1.0).
|
|
52
|
+
*/
|
|
53
|
+
aoIntensity(): number;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Set the biome used for tinting (e.g. "plains", "swamp").
|
|
57
|
+
*/
|
|
58
|
+
setBiome(biome: string): void;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Clear the biome (old ABI: `meshconfig_set_biome(NULL)`).
|
|
62
|
+
*/
|
|
63
|
+
clearBiome(): void;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The configured biome; `NotFound` if none is set.
|
|
67
|
+
*/
|
|
68
|
+
biome(): string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Set the maximum texture-atlas dimension in pixels (default: 4096).
|
|
72
|
+
*/
|
|
73
|
+
setAtlasMaxSize(size: number): void;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The maximum texture-atlas dimension in pixels.
|
|
77
|
+
*/
|
|
78
|
+
atlasMaxSize(): number;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Skip blocks fully hidden by opaque neighbors on all 6 sides
|
|
82
|
+
* (default: true).
|
|
83
|
+
*/
|
|
84
|
+
setCullOccludedBlocks(val: boolean): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Whether occluded-block culling is enabled.
|
|
88
|
+
*/
|
|
89
|
+
cullOccludedBlocks(): boolean;
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Merge adjacent coplanar faces into larger quads to reduce triangle
|
|
93
|
+
* count (default: false).
|
|
94
|
+
*/
|
|
95
|
+
setGreedyMeshing(val: boolean): void;
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Whether greedy meshing is enabled.
|
|
99
|
+
*/
|
|
100
|
+
greedyMeshing(): boolean;
|
|
101
|
+
}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
4
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
5
|
+
|
|
6
|
+
const MeshConfig_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
7
|
+
wasm.MeshConfig_destroy(ptr);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Mesh generation configuration. Wraps {@link crate::meshing::MeshConfig}.
|
|
12
|
+
*/
|
|
13
|
+
export class MeshConfig {
|
|
14
|
+
// Internal ptr reference:
|
|
15
|
+
#ptr = null;
|
|
16
|
+
|
|
17
|
+
// Lifetimes are only to keep dependencies alive.
|
|
18
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
19
|
+
#selfEdge = [];
|
|
20
|
+
|
|
21
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
22
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
23
|
+
console.error("MeshConfig is an Opaque type. You cannot call its constructor.");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.#ptr = ptr;
|
|
27
|
+
this.#selfEdge = selfEdge;
|
|
28
|
+
|
|
29
|
+
// Are we being borrowed? If not, we can register.
|
|
30
|
+
if (this.#selfEdge.length === 0) {
|
|
31
|
+
MeshConfig_box_destroy_registry.register(this, this.#ptr);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return this;
|
|
35
|
+
}
|
|
36
|
+
/** @internal */
|
|
37
|
+
get ffiValue() {
|
|
38
|
+
return this.#ptr;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Create a config with default settings: hidden-face culling on,
|
|
44
|
+
* ambient occlusion on (intensity 0.4), no biome, atlas max size 4096,
|
|
45
|
+
* occluded-block culling on, greedy meshing off.
|
|
46
|
+
*/
|
|
47
|
+
static create() {
|
|
48
|
+
|
|
49
|
+
const result = wasm.MeshConfig_create();
|
|
50
|
+
|
|
51
|
+
try {
|
|
52
|
+
return new MeshConfig(diplomatRuntime.internalConstructor, result, []);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
finally {
|
|
56
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Enable face culling between adjacent solid blocks (default: true).
|
|
62
|
+
*/
|
|
63
|
+
setCullHiddenFaces(val) {
|
|
64
|
+
wasm.MeshConfig_set_cull_hidden_faces(this.ffiValue, val);
|
|
65
|
+
|
|
66
|
+
try {}
|
|
67
|
+
|
|
68
|
+
finally {
|
|
69
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Whether hidden-face culling is enabled.
|
|
75
|
+
*/
|
|
76
|
+
cullHiddenFaces() {
|
|
77
|
+
|
|
78
|
+
const result = wasm.MeshConfig_cull_hidden_faces(this.ffiValue);
|
|
79
|
+
|
|
80
|
+
try {
|
|
81
|
+
return result === 1;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
finally {
|
|
85
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Enable ambient occlusion (default: true).
|
|
91
|
+
*/
|
|
92
|
+
setAmbientOcclusion(val) {
|
|
93
|
+
wasm.MeshConfig_set_ambient_occlusion(this.ffiValue, val);
|
|
94
|
+
|
|
95
|
+
try {}
|
|
96
|
+
|
|
97
|
+
finally {
|
|
98
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Whether ambient occlusion is enabled.
|
|
104
|
+
*/
|
|
105
|
+
ambientOcclusion() {
|
|
106
|
+
|
|
107
|
+
const result = wasm.MeshConfig_ambient_occlusion(this.ffiValue);
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
return result === 1;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
finally {
|
|
114
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Set ambient-occlusion intensity, 0.0 (no darkening) to 1.0 (full
|
|
120
|
+
* darkening). Default: 0.4.
|
|
121
|
+
*/
|
|
122
|
+
setAoIntensity(val) {
|
|
123
|
+
wasm.MeshConfig_set_ao_intensity(this.ffiValue, val);
|
|
124
|
+
|
|
125
|
+
try {}
|
|
126
|
+
|
|
127
|
+
finally {
|
|
128
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* The ambient-occlusion intensity (0.0–1.0).
|
|
134
|
+
*/
|
|
135
|
+
aoIntensity() {
|
|
136
|
+
|
|
137
|
+
const result = wasm.MeshConfig_ao_intensity(this.ffiValue);
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
finally {
|
|
144
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Set the biome used for tinting (e.g. "plains", "swamp").
|
|
150
|
+
*/
|
|
151
|
+
setBiome(biome) {
|
|
152
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
153
|
+
|
|
154
|
+
const biomeSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, biome)));
|
|
155
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
const result = wasm.MeshConfig_set_biome(diplomatReceive.buffer, this.ffiValue, biomeSlice.ptr);
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
if (!diplomatReceive.resultFlag) {
|
|
162
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
163
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
finally {
|
|
168
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
169
|
+
functionCleanupArena.free();
|
|
170
|
+
|
|
171
|
+
diplomatReceive.free();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Clear the biome (old ABI: `meshconfig_set_biome(NULL)`).
|
|
177
|
+
*/
|
|
178
|
+
clearBiome() {
|
|
179
|
+
wasm.MeshConfig_clear_biome(this.ffiValue);
|
|
180
|
+
|
|
181
|
+
try {}
|
|
182
|
+
|
|
183
|
+
finally {
|
|
184
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* The configured biome; `NotFound` if none is set.
|
|
190
|
+
*/
|
|
191
|
+
biome() {
|
|
192
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
193
|
+
|
|
194
|
+
const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
const result = wasm.MeshConfig_biome(diplomatReceive.buffer, this.ffiValue, write.buffer);
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
if (!diplomatReceive.resultFlag) {
|
|
201
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
202
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
203
|
+
}
|
|
204
|
+
return write.readString8();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
finally {
|
|
208
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
209
|
+
diplomatReceive.free();
|
|
210
|
+
write.free();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Set the maximum texture-atlas dimension in pixels (default: 4096).
|
|
216
|
+
*/
|
|
217
|
+
setAtlasMaxSize(size) {
|
|
218
|
+
wasm.MeshConfig_set_atlas_max_size(this.ffiValue, size);
|
|
219
|
+
|
|
220
|
+
try {}
|
|
221
|
+
|
|
222
|
+
finally {
|
|
223
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* The maximum texture-atlas dimension in pixels.
|
|
229
|
+
*/
|
|
230
|
+
atlasMaxSize() {
|
|
231
|
+
|
|
232
|
+
const result = wasm.MeshConfig_atlas_max_size(this.ffiValue);
|
|
233
|
+
|
|
234
|
+
try {
|
|
235
|
+
return result;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
finally {
|
|
239
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Skip blocks fully hidden by opaque neighbors on all 6 sides
|
|
245
|
+
* (default: true).
|
|
246
|
+
*/
|
|
247
|
+
setCullOccludedBlocks(val) {
|
|
248
|
+
wasm.MeshConfig_set_cull_occluded_blocks(this.ffiValue, val);
|
|
249
|
+
|
|
250
|
+
try {}
|
|
251
|
+
|
|
252
|
+
finally {
|
|
253
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Whether occluded-block culling is enabled.
|
|
259
|
+
*/
|
|
260
|
+
cullOccludedBlocks() {
|
|
261
|
+
|
|
262
|
+
const result = wasm.MeshConfig_cull_occluded_blocks(this.ffiValue);
|
|
263
|
+
|
|
264
|
+
try {
|
|
265
|
+
return result === 1;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
finally {
|
|
269
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Merge adjacent coplanar faces into larger quads to reduce triangle
|
|
275
|
+
* count (default: false).
|
|
276
|
+
*/
|
|
277
|
+
setGreedyMeshing(val) {
|
|
278
|
+
wasm.MeshConfig_set_greedy_meshing(this.ffiValue, val);
|
|
279
|
+
|
|
280
|
+
try {}
|
|
281
|
+
|
|
282
|
+
finally {
|
|
283
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Whether greedy meshing is enabled.
|
|
289
|
+
*/
|
|
290
|
+
greedyMeshing() {
|
|
291
|
+
|
|
292
|
+
const result = wasm.MeshConfig_greedy_meshing(this.ffiValue);
|
|
293
|
+
|
|
294
|
+
try {
|
|
295
|
+
return result === 1;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
finally {
|
|
299
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
constructor(symbol, ptr, selfEdge) {
|
|
304
|
+
return this.#internalConstructor(...arguments)
|
|
305
|
+
}
|
|
306
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { ChunkMeshResult } from "./ChunkMeshResult.mjs"
|
|
3
|
+
import type { MeshConfig } from "./MeshConfig.mjs"
|
|
4
|
+
import type { MeshProgress } from "./MeshProgress.mjs"
|
|
5
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
6
|
+
import type { ResourcePack } from "./ResourcePack.mjs"
|
|
7
|
+
import type { Schematic } from "./Schematic.mjs"
|
|
8
|
+
import type { TextureAtlas } from "./TextureAtlas.mjs"
|
|
9
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A chunk-meshing job running on a background thread. Replaces the old
|
|
15
|
+
* `schematic_mesh_chunks_with_atlas_progress` C callback: poll it from a
|
|
16
|
+
* timer loop with {@link MeshJob::poll_progress}, then call
|
|
17
|
+
* {@link MeshJob::take_result} once (it blocks until the job finishes and
|
|
18
|
+
* consumes the job — a second call returns `AlreadyConsumed`).
|
|
19
|
+
*/
|
|
20
|
+
export class MeshJob {
|
|
21
|
+
/** @internal */
|
|
22
|
+
get ffiValue(): pointer;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor();
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Kick off chunk meshing with a shared atlas on a background thread
|
|
29
|
+
* and return immediately. Takes the same parameters as
|
|
30
|
+
* {@link ChunkMeshResult::create_with_atlas}.
|
|
31
|
+
*/
|
|
32
|
+
static start(schematic: Schematic, pack: ResourcePack, config: MeshConfig, chunkSize: number, atlas: TextureAtlas): MeshJob;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Cheap, non-blocking progress snapshot. Call from a timer/poll loop.
|
|
36
|
+
*/
|
|
37
|
+
pollProgress(): MeshProgress;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Block until the job finishes (if it hasn't already) and return the
|
|
41
|
+
* result. Consumes the job: a second call returns `AlreadyConsumed`.
|
|
42
|
+
*/
|
|
43
|
+
takeResult(): ChunkMeshResult;
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { ChunkMeshResult } from "./ChunkMeshResult.mjs"
|
|
3
|
+
import type { MeshConfig } from "./MeshConfig.mjs"
|
|
4
|
+
import type { MeshProgress } from "./MeshProgress.mjs"
|
|
5
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
6
|
+
import type { ResourcePack } from "./ResourcePack.mjs"
|
|
7
|
+
import type { Schematic } from "./Schematic.mjs"
|
|
8
|
+
import type { TextureAtlas } from "./TextureAtlas.mjs"
|
|
9
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A chunk-meshing job running on a background thread. Replaces the old
|
|
15
|
+
* `schematic_mesh_chunks_with_atlas_progress` C callback: poll it from a
|
|
16
|
+
* timer loop with {@link MeshJob::poll_progress}, then call
|
|
17
|
+
* {@link MeshJob::take_result} once (it blocks until the job finishes and
|
|
18
|
+
* consumes the job — a second call returns `AlreadyConsumed`).
|
|
19
|
+
*/
|
|
20
|
+
export class MeshJob {
|
|
21
|
+
/** @internal */
|
|
22
|
+
get ffiValue(): pointer;
|
|
23
|
+
/** @internal */
|
|
24
|
+
constructor();
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Kick off chunk meshing with a shared atlas on a background thread
|
|
29
|
+
* and return immediately. Takes the same parameters as
|
|
30
|
+
* {@link ChunkMeshResult::create_with_atlas}.
|
|
31
|
+
*/
|
|
32
|
+
static start(schematic: Schematic, pack: ResourcePack, config: MeshConfig, chunkSize: number, atlas: TextureAtlas): MeshJob;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Cheap, non-blocking progress snapshot. Call from a timer/poll loop.
|
|
36
|
+
*/
|
|
37
|
+
pollProgress(): MeshProgress;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Block until the job finishes (if it hasn't already) and return the
|
|
41
|
+
* result. Consumes the job: a second call returns `AlreadyConsumed`.
|
|
42
|
+
*/
|
|
43
|
+
takeResult(): ChunkMeshResult;
|
|
44
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { ChunkMeshResult } from "./ChunkMeshResult.mjs"
|
|
3
|
+
import { MeshConfig } from "./MeshConfig.mjs"
|
|
4
|
+
import { MeshProgress } from "./MeshProgress.mjs"
|
|
5
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
6
|
+
import { ResourcePack } from "./ResourcePack.mjs"
|
|
7
|
+
import { Schematic } from "./Schematic.mjs"
|
|
8
|
+
import { TextureAtlas } from "./TextureAtlas.mjs"
|
|
9
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
10
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
11
|
+
|
|
12
|
+
const MeshJob_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
13
|
+
wasm.MeshJob_destroy(ptr);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A chunk-meshing job running on a background thread. Replaces the old
|
|
18
|
+
* `schematic_mesh_chunks_with_atlas_progress` C callback: poll it from a
|
|
19
|
+
* timer loop with {@link MeshJob::poll_progress}, then call
|
|
20
|
+
* {@link MeshJob::take_result} once (it blocks until the job finishes and
|
|
21
|
+
* consumes the job — a second call returns `AlreadyConsumed`).
|
|
22
|
+
*/
|
|
23
|
+
export class MeshJob {
|
|
24
|
+
// Internal ptr reference:
|
|
25
|
+
#ptr = null;
|
|
26
|
+
|
|
27
|
+
// Lifetimes are only to keep dependencies alive.
|
|
28
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
29
|
+
#selfEdge = [];
|
|
30
|
+
|
|
31
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
32
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
33
|
+
console.error("MeshJob is an Opaque type. You cannot call its constructor.");
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.#ptr = ptr;
|
|
37
|
+
this.#selfEdge = selfEdge;
|
|
38
|
+
|
|
39
|
+
// Are we being borrowed? If not, we can register.
|
|
40
|
+
if (this.#selfEdge.length === 0) {
|
|
41
|
+
MeshJob_box_destroy_registry.register(this, this.#ptr);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return this;
|
|
45
|
+
}
|
|
46
|
+
/** @internal */
|
|
47
|
+
get ffiValue() {
|
|
48
|
+
return this.#ptr;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Kick off chunk meshing with a shared atlas on a background thread
|
|
54
|
+
* and return immediately. Takes the same parameters as
|
|
55
|
+
* {@link ChunkMeshResult::create_with_atlas}.
|
|
56
|
+
*/
|
|
57
|
+
static start(schematic, pack, config, chunkSize, atlas) {
|
|
58
|
+
|
|
59
|
+
const result = wasm.MeshJob_start(schematic.ffiValue, pack.ffiValue, config.ffiValue, chunkSize, atlas.ffiValue);
|
|
60
|
+
|
|
61
|
+
try {
|
|
62
|
+
return new MeshJob(diplomatRuntime.internalConstructor, result, []);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
finally {
|
|
66
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Cheap, non-blocking progress snapshot. Call from a timer/poll loop.
|
|
72
|
+
*/
|
|
73
|
+
pollProgress() {
|
|
74
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 12, 4, false);
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
const result = wasm.MeshJob_poll_progress(diplomatReceive.buffer, this.ffiValue);
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
return MeshProgress._fromFFI(diplomatRuntime.internalConstructor, diplomatReceive.buffer);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
finally {
|
|
84
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
85
|
+
diplomatReceive.free();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Block until the job finishes (if it hasn't already) and return the
|
|
91
|
+
* result. Consumes the job: a second call returns `AlreadyConsumed`.
|
|
92
|
+
*/
|
|
93
|
+
takeResult() {
|
|
94
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
const result = wasm.MeshJob_take_result(diplomatReceive.buffer, this.ffiValue);
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
if (!diplomatReceive.resultFlag) {
|
|
101
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
102
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
103
|
+
}
|
|
104
|
+
return new ChunkMeshResult(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
finally {
|
|
108
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
109
|
+
diplomatReceive.free();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
constructor(symbol, ptr, selfEdge) {
|
|
114
|
+
return this.#internalConstructor(...arguments)
|
|
115
|
+
}
|
|
116
|
+
}
|