41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import type { BlockRegistry } from "$/common/everything_registry.ts";
|
|
import type { SpriteRegion } from "$/common/constants.ts";
|
|
import type { OreJson } from "$/common/mod_data.ts";
|
|
|
|
// messages between the main thread and the chunk workers
|
|
|
|
export type ToChunkWorker =
|
|
| {
|
|
type: "init";
|
|
// the blocks registry without its functions, indexed by numeric id
|
|
blocks_registry: BlockRegistry[];
|
|
block_ids: Record<string, number>;
|
|
textures_info: Record<string, SpriteRegion>;
|
|
image: { width: number; height: number };
|
|
// mods' worldgen scripts and ores, so generation matches the server
|
|
worldgen_scripts: { mod: string; url: string }[];
|
|
ores: OreJson[];
|
|
}
|
|
| { type: "generate"; chunk_x: number; chunk_z: number; seed: string }
|
|
| { type: "mesh"; chunk_x: number; chunk_z: number; version: number; padded_chunk: Uint32Array };
|
|
|
|
export type FromChunkWorker =
|
|
| {
|
|
type: "generated";
|
|
chunk_x: number;
|
|
chunk_z: number;
|
|
blocks: Uint32Array;
|
|
// blocks that landed in other chunks (tree leaves), flattened as x, y, z, numeric id
|
|
spills: Int32Array;
|
|
}
|
|
| {
|
|
type: "meshed";
|
|
chunk_x: number;
|
|
chunk_z: number;
|
|
version: number;
|
|
opaque_vertices: Float32Array;
|
|
opaque_count: number;
|
|
transparent_vertices: Float32Array;
|
|
transparent_count: number;
|
|
};
|