@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
64 lines (59 loc) • 2.78 kB
text/typescript
import {Attribute} from '../../../src/core/geometry/Attribute';
import {InstanceAttrib} from '../../../src/core/geometry/Instancer';
import {AttribLookup} from '../../../src/core/geometry/operation/TextureFromAttribute';
import {GeometryAttributeCopNode} from '../../../src/engine/nodes/cop/GeometryAttribute';
import {GlobalsTextureHandler} from '../../../src/engine/nodes/gl/code/globals/Texture';
import {BasePreset, NodePresetsCollection, PresetRegister, PresetsCollectionFactory} from '../BasePreset';
const GeometryAttributeCopNodePresetsCollectionFactory: PresetsCollectionFactory<GeometryAttributeCopNode> = (
node: GeometryAttributeCopNode
) => {
const collection = new NodePresetsCollection();
const color = new BasePreset().addEntry(node.p.attribute, Attribute.COLOR);
const instanceColor = new BasePreset().addEntry(node.p.attribute, InstanceAttrib.COLOR);
const instanceQuaternion = new BasePreset().addEntry(node.p.attribute, InstanceAttrib.QUATERNION);
const instancePosition = new BasePreset().addEntry(node.p.attribute, InstanceAttrib.POSITION);
const instanceScale = new BasePreset().addEntry(node.p.attribute, InstanceAttrib.SCALE);
const instanceUv = new BasePreset().addEntry(node.p.attribute, InstanceAttrib.UV);
const position = new BasePreset().addEntry(node.p.attribute, Attribute.POSITION);
const normal = new BasePreset().addEntry(node.p.attribute, Attribute.NORMAL);
const uv = new BasePreset().addEntry(node.p.attribute, Attribute.UV);
const id = new BasePreset().addEntry(node.p.attribute, `id`);
const idn = new BasePreset().addEntry(node.p.attribute, `idn`);
const pti = new BasePreset().addEntry(node.p.attribute, `pti`);
// const randomId = new BasePreset().addEntry(node.p.name, `randomId`);
const restP = new BasePreset().addEntry(node.p.attribute, `restP`);
const restN = new BasePreset().addEntry(node.p.attribute, `restN`);
const velocity = new BasePreset().addEntry(node.p.attribute, `velocity`);
const attribLookupId = new BasePreset().addEntry(node.p.attribute, AttribLookup.ID);
const attribLookupUv = new BasePreset().addEntry(node.p.attribute, AttribLookup.UV);
const particlesSimUv = new BasePreset().addEntry(node.p.attribute, GlobalsTextureHandler.PARTICLES_SIM_UV_ATTRIB);
collection.setPresets({
color,
instanceColor,
instanceQuaternion,
instancePosition,
instanceScale,
instanceUv,
position,
normal,
uv,
id,
idn,
pti,
restP,
restN,
// randomId,
velocity,
attribLookupId,
attribLookupUv,
particlesSimUv,
});
return collection;
};
export const geometryAttributeCopPresetRegister: PresetRegister<
typeof GeometryAttributeCopNode,
GeometryAttributeCopNode
> = {
nodeClass: GeometryAttributeCopNode,
setupFunc: GeometryAttributeCopNodePresetsCollectionFactory,
};