UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

29 lines (27 loc) 1.24 kB
import {NeighbourIndex} from '../geometry/modules/quad/graph/QuadGraphCommon'; import {ERROR_TILE_ID, UNRESOLVED_TILE_ID} from './WFCConstant'; export type TileRotation = NeighbourIndex; export interface TileConfig { tileId: string; rotation: TileRotation; } export const UNRESOLVED_TILE_CONFIG: TileConfig = {tileId: UNRESOLVED_TILE_ID, rotation: 0}; export const ERRORED_TILE_CONFIG: TileConfig = {tileId: ERROR_TILE_ID, rotation: 0}; const TILE_CONFIG_ELEMENT_SEPARATOR = ':'; const TILE_CONFIGS_SEPARATOR = ','; export function tileConfigToString(tileConfig: TileConfig): string { return `${tileConfig.tileId}${TILE_CONFIG_ELEMENT_SEPARATOR}${tileConfig.rotation}`; } export function tileConfigsToString(tileConfigs: TileConfig[]): string { return tileConfigs.map(tileConfigToString).join(TILE_CONFIGS_SEPARATOR); } export function stringToTileConfigs(tileConfigsString: string): TileConfig[] { const tileConfigElements = tileConfigsString.split(TILE_CONFIGS_SEPARATOR); return tileConfigElements.map((tileConfigString) => { const tileConfigElements = tileConfigString.split(TILE_CONFIG_ELEMENT_SEPARATOR); return { tileId: tileConfigElements[0], rotation: parseInt(tileConfigElements[1]) as TileRotation, }; }); }