@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
34 lines (28 loc) • 1.08 kB
text/typescript
import {BaseSopOperation} from './_Base';
import {CoreGroup} from '../../../core/geometry/Group';
import {DefaultOperationParams} from '../../../core/operations/_Base';
import {populateAdjacency3, POPULATE_ADJACENCY_DEFAULT} from '../../../core/geometry/operation/Adjacency';
import {SopType} from '../../poly/registers/nodes/types/Sop';
import {filterThreejsObjects} from '../../../core/geometry/Mask';
interface AdjacencySopParams extends DefaultOperationParams {
group: string;
adjacencyCountName: string;
adjacencyBaseName: string;
}
export class AdjacencySopOperation extends BaseSopOperation {
static override readonly DEFAULT_PARAMS: AdjacencySopParams = {
group: '',
...POPULATE_ADJACENCY_DEFAULT,
};
static override type(): Readonly<SopType.ADJACENCY> {
return SopType.ADJACENCY;
}
override cook(inputCoreGroups: CoreGroup[], params: AdjacencySopParams) {
const coreGroup = inputCoreGroups[0];
const objects = filterThreejsObjects(coreGroup, params);
for (let object of objects) {
populateAdjacency3(object, params);
}
return coreGroup;
}
}