@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
56 lines (51 loc) • 1.77 kB
text/typescript
/**
* Transform input CAD geometries or objects.
*
*
*
*/
import {CADSopNode} from './_BaseCAD';
import {CoreGroup} from '../../../core/geometry/Group';
import {NodeParamsConfig, ParamConfig} from '../utils/params/ParamsConfig';
import {SopType} from '../../poly/registers/nodes/types/Sop';
import {InputCloneMode} from '../../poly/InputCloneMode';
import {CadObject} from '../../../core/geometry/modules/cad/CadObject';
import {CadGeometryType} from '../../../core/geometry/modules/cad/CadCommon';
import {cadTransform} from '../../../core/geometry/modules/cad/operations/CadTransform';
class CADTransformSopParamConfig extends NodeParamsConfig {
/** @param translate */
t = ParamConfig.VECTOR3([0, 0, 0]);
/** @param rotation */
r = ParamConfig.VECTOR3([0, 0, 0]);
/** @param scale (as a float) */
s = ParamConfig.FLOAT(1, {
range: [0, 2],
step: 0.01,
});
/** @param pivot */
pivot = ParamConfig.VECTOR3([0, 0, 0]);
}
const ParamsConfig = new CADTransformSopParamConfig();
export class CADTransformSopNode extends CADSopNode<CADTransformSopParamConfig> {
override paramsConfig = ParamsConfig;
static override type() {
return SopType.CAD_TRANSFORM;
}
override initializeNode() {
this.io.inputs.setCount(1);
this.io.inputs.initInputsClonedState(InputCloneMode.FROM_NODE);
}
override cook(inputCoreGroups: CoreGroup[]) {
const coreGroup0 = inputCoreGroups[0];
const newObjects: CadObject<CadGeometryType>[] = [];
const cadObjects = coreGroup0.cadObjects();
if (cadObjects) {
for (const cadObject of cadObjects) {
// object.transform(this.pv.t, this.pv.r, tmpS);
cadTransform(cadObject, this.pv.t, this.pv.r, this.pv.s, this.pv.pivot);
newObjects.push(cadObject);
}
}
this.setCADObjects(newObjects);
}
}