UNPKG

@polygonjs/polygonjs

Version:

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

67 lines (66 loc) 2.61 kB
import { TileConfig } from './WFCTileConfig'; import { Object3D } from 'three'; import { QuadNode } from '../geometry/modules/quad/graph/QuadNode'; import { NeighbourIndex } from '../geometry/modules/quad/graph/QuadGraphCommon'; import { QuadObject } from '../geometry/modules/quad/QuadObject'; import { CoreObjectType, ObjectContent } from '../geometry/ObjectContent'; interface WFCSolverOptions { tileAndRuleObjects: Object3D[]; quadObject: QuadObject; maxResolvedQuadsCount: number; } interface WFCSolverProcessOptions { stepsCount: number; quadSeed: number; configSeed: number; } interface WFCSolverUpdateOptions extends WFCSolverProcessOptions { object: ObjectContent<CoreObjectType>; floorId: number; quadId: number; tileId: string; rotation: NeighbourIndex; } export declare class WFCSolver { private _resolvedQuadsCount; private _maxResolvedQuadsCount; private _stepsCount; private _tilesCollection; private _quadPositionArrays; private _lowestEntropy; private _quadNodeByEntropy; private _floorGraphs; private _quadIndicesByFloorIndex; private _floorGraphIndexByQuadNode; private _samplingWithWeightRequired; private _solvedTileConfigs; private _allTileConfigs; constructor(options: WFCSolverOptions); private _setSolvedTileConfigs; private _setupQuadNode; private _resetQuadNode; private _initQuadNodeEntropyCache; process(options: WFCSolverProcessOptions, comparableQuadNodes?: Set<QuadNode>): void; private step; addSoftContraint(options: WFCSolverUpdateOptions): void; private _solveReachMaxCount; private _selectConfig; protected _commitConfigsAttributes(): void; private _placeErrorTileObject; private _approveConfigForQuad; private _commitConfigsAttributeToQuadPrimitive; private _commitConfigAttributeToQuadPrimitive; private _updateNeighboursEntropy; private _resetAndUpdateNeighboursEntropy; private _updateQuadEntropy; private _reduceEntropyWithCache; private _setQuadNodeEntropyCache; private _resetQuadNodeEntropyIfNotReset; private _reduceEntropy; private _checkConfigAgainstNeighbours; protected _isConfigAllowedWithNeighbour(quadNode: QuadNode, tileConfig: TileConfig, neighbourIndex: NeighbourIndex, comparableQuadNodes?: Set<QuadNode>): boolean; protected _isConfigAllowedWithVerticalNeighbour(quadNode: QuadNode, tileConfig: TileConfig, floorOffset: 1 | -1, comparableQuadNodes?: Set<QuadNode>): boolean; private _quadNodeWithLowestEntropy; private _floorGraph; } export {};