UNPKG

@polygonjs/polygonjs

Version:

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

45 lines (41 loc) 1.73 kB
import {CoreObjectType, ObjectContent, isObject3D} from '../geometry/ObjectContent'; import {QuadObject} from '../geometry/modules/quad/QuadObject'; import {QuadPrimitive} from '../geometry/modules/quad/QuadPrimitive'; import {CoreWFCTileAttribute, CoreWFCRuleAttribute, WFCQuadAttribute} from './WFCAttributes'; export function filterTileObjects(objects: ObjectContent<CoreObjectType>[]) { return objects.filter((object) => CoreWFCTileAttribute.getIsTile(object)).filter(isObject3D); } export function filterRuleObjects(objects: ObjectContent<CoreObjectType>[]) { return objects.filter((object) => CoreWFCRuleAttribute.getIsConnection(object)); } export function isQuadNodeSolveAllowed(quadObject: QuadObject, index: number): boolean { const hasSolveAllowedAttribute = QuadPrimitive.hasAttribute(quadObject, WFCQuadAttribute.SOLVE_ALLOWED); if (!hasSolveAllowedAttribute) { // if the solveAllowed attribute is not found, // the quadNode is considered solveAllowed==true return true; } const solveAllowed: boolean | undefined = QuadPrimitive.attribValue( quadObject, index, WFCQuadAttribute.SOLVE_ALLOWED ) as boolean | undefined; if (solveAllowed == null) { return true; } return solveAllowed; } export function quadPrimitiveFloorIndex(quadObject: QuadObject, index: number): number { const floorIndex = QuadPrimitive.attribValue(quadObject, index, WFCQuadAttribute.FLOOR_INDEX) as number | undefined; if (floorIndex == null) { return 0; } return floorIndex; } export function quadId(quadObject: QuadObject, index: number): number { const quadId = QuadPrimitive.attribValue(quadObject, index, WFCQuadAttribute.QUAD_ID) as number | undefined; if (quadId == null) { return -1; } return quadId; }