polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
367 lines (361 loc) • 18.7 kB
text/typescript
// for dynamic imports, use
// https://wanago.io/2018/08/20/webpack-4-course-part-eight-dynamic-imports-with-prefetch-and-preload/
// with webpackExclude to not bundle files like _Base.ts or what is under utils/
// with webpackChunkName and [request] to ensure meaningful name
// more on https://webpack.js.org/api/module-methods/
import {CATEGORY_SOP} from './Category';
import {AddSopNode} from '../../../nodes/sop/Add';
import {AnimationCopySopNode} from '../../../nodes/sop/AnimationCopy';
import {AnimationMixerSopNode} from '../../../nodes/sop/AnimationMixer';
import {AnimationsSopNode} from '../../../nodes/sop/Animations';
import {AttribAddMultSopNode} from '../../../nodes/sop/AttribAddMult';
import {AttribCopySopNode} from '../../../nodes/sop/AttribCopy';
import {AttribCreateSopNode} from '../../../nodes/sop/AttribCreate';
import {AttribDeleteSopNode} from '../../../nodes/sop/AttribDelete';
import {AttribFromTextureSopNode} from '../../../nodes/sop/AttribFromTexture';
import {AttribNormalizeSopNode} from '../../../nodes/sop/AttribNormalize';
import {AttribPromoteSopNode} from '../../../nodes/sop/AttribPromote';
import {AttribRemapSopNode} from '../../../nodes/sop/AttribRemap';
import {AttribRenameSopNode} from '../../../nodes/sop/AttribRename';
import {AttribTransferSopNode} from '../../../nodes/sop/AttribTransfer';
import {BboxScatterSopNode} from '../../../nodes/sop/BboxScatter';
import {BlendSopNode} from '../../../nodes/sop/Blend';
import {BoxSopNode} from '../../../nodes/sop/Box';
import {CacheSopNode} from '../../../nodes/sop/Cache';
import {CenterSopNode} from '../../../nodes/sop/Center';
import {CircleSopNode} from '../../../nodes/sop/Circle';
import {Circle3PointsSopNode} from '../../../nodes/sop/Circle3Points';
// import {CodeSopNode} from '../../../nodes/sop/Code';
import {ColorSopNode} from '../../../nodes/sop/Color';
import {ConeSopNode} from '../../../nodes/sop/Cone';
import {CopSopNode} from '../../../nodes/sop/Cop';
import {CopySopNode} from '../../../nodes/sop/Copy';
import {Css2DObjectSopNode} from '../../../nodes/sop/Css2DObject';
import {Css3DObjectSopNode} from '../../../nodes/sop/Css3DObject';
import {DataSopNode} from '../../../nodes/sop/Data';
import {DataUrlSopNode} from '../../../nodes/sop/DataUrl';
import {DelaySopNode} from '../../../nodes/sop/Delay';
import {DeleteSopNode} from '../../../nodes/sop/Delete';
import {DrawRangeSopNode} from '../../../nodes/sop/DrawRange';
import {EventsSopNode} from '../../../nodes/sop/Events';
import {FaceSopNode} from '../../../nodes/sop/Face';
import {FileSopNode} from '../../../nodes/sop/File';
import {FuseSopNode} from '../../../nodes/sop/Fuse';
import {HexagonsSopNode} from '../../../nodes/sop/Hexagons';
import {HierarchySopNode} from '../../../nodes/sop/Hierarchy';
import {HeightMapSopNode} from '../../../nodes/sop/HeightMap';
import {IcosahedronSopNode} from '../../../nodes/sop/Icosahedron';
import {InstanceSopNode} from '../../../nodes/sop/Instance';
import {InstancesCountSopNode} from '../../../nodes/sop/InstancesCount';
import {JitterSopNode} from '../../../nodes/sop/Jitter';
import {JsPointSopNode} from '../../../nodes/sop/JsPoint';
import {LayerSopNode} from '../../../nodes/sop/Layer';
import {LineSopNode} from '../../../nodes/sop/Line';
import {LodSopNode} from '../../../nodes/sop/Lod';
import {MaterialSopNode} from '../../../nodes/sop/Material';
import {MaterialsSopNode} from '../../../nodes/sop/Materials';
import {MergeSopNode} from '../../../nodes/sop/Merge';
import {NoiseSopNode} from '../../../nodes/sop/Noise';
import {NormalsSopNode} from '../../../nodes/sop/Normals';
import {NullSopNode} from '../../../nodes/sop/Null';
import {ObjectMergeSopNode} from '../../../nodes/sop/ObjectMerge';
import {ObjectPropertiesSopNode} from '../../../nodes/sop/ObjectProperties';
import {OperationsComposerSopNode} from '../../../nodes/sop/OperationsComposer';
import {ParticlesSystemGpuSopNode} from '../../../nodes/sop/ParticlesSystemGpu';
import {PeakSopNode} from '../../../nodes/sop/Peak';
import {PlaneSopNode} from '../../../nodes/sop/Plane';
import {PointSopNode} from '../../../nodes/sop/Point';
import {PolySopNode} from '../../../nodes/sop/Poly';
import {PolywireSopNode} from '../../../nodes/sop/Polywire';
import {PostProcessSopNode} from '../../../nodes/sop/PostProcess';
import {RaySopNode} from '../../../nodes/sop/Ray';
import {RenderersSopNode} from '../../../nodes/sop/Renderers';
import {ResampleSopNode} from '../../../nodes/sop/Resample';
import {RestAttributesSopNode} from '../../../nodes/sop/RestAttributes';
import {RoundedBoxSopNode} from '../../../nodes/sop/RoundedBox';
import {ScatterSopNode} from '../../../nodes/sop/Scatter';
import {SkinSopNode} from '../../../nodes/sop/Skin';
import {SphereSopNode} from '../../../nodes/sop/Sphere';
import {SplitSopNode} from '../../../nodes/sop/Split';
import {SubdivideSopNode} from '../../../nodes/sop/Subdivide';
import {SubnetSopNode} from '../../../nodes/sop/Subnet';
import {SubnetInputSopNode} from '../../../nodes/sop/SubnetInput';
import {SubnetOutputSopNode} from '../../../nodes/sop/SubnetOutput';
import {SvgSopNode} from '../../../nodes/sop/Svg';
import {SwitchSopNode} from '../../../nodes/sop/Switch';
import {TetrahedronSopNode} from '../../../nodes/sop/Tetrahedron';
import {TextSopNode} from '../../../nodes/sop/Text';
import {TexturePropertiesSopNode} from '../../../nodes/sop/TextureProperties';
import {TorusSopNode} from '../../../nodes/sop/Torus';
import {TorusKnotSopNode} from '../../../nodes/sop/TorusKnot';
import {TransformSopNode} from '../../../nodes/sop/Transform';
import {TransformCopySopNode} from '../../../nodes/sop/TransformCopy';
import {TransformMultiSopNode} from '../../../nodes/sop/TransformMulti';
import {TransformResetSopNode} from '../../../nodes/sop/TransformReset';
import {TubeSopNode} from '../../../nodes/sop/Tube';
import {UvProjectSopNode} from '../../../nodes/sop/UvProject';
export interface GeoNodeChildrenMap {
add: AddSopNode;
animationCopy: AnimationCopySopNode;
animationMixer: AnimationMixerSopNode;
animations: AnimationsSopNode;
attribAddMult: AttribAddMultSopNode;
attribCopy: AttribCopySopNode;
attribCreate: AttribCreateSopNode;
attribDelete: AttribDeleteSopNode;
attribFromTexture: AttribFromTextureSopNode;
attribNormalize: AttribNormalizeSopNode;
attribPromote: AttribPromoteSopNode;
attribRemap: AttribRemapSopNode;
attribRename: AttribRenameSopNode;
attribTransfer: AttribTransferSopNode;
bboxScatter: BboxScatterSopNode;
blend: BlendSopNode;
box: BoxSopNode;
cache: CacheSopNode;
center: CenterSopNode;
circle: CircleSopNode;
circle3Points: Circle3PointsSopNode;
// code: CodeSopNode;
color: ColorSopNode;
cone: ConeSopNode;
cop: CopSopNode;
copy: CopySopNode;
css2DObject: Css2DObjectSopNode;
css3DObject: Css3DObjectSopNode;
data: DataSopNode;
dataUrl: DataUrlSopNode;
delay: DelaySopNode;
delete: DeleteSopNode;
drawRange: DrawRangeSopNode;
events: EventsSopNode;
face: FaceSopNode;
file: FileSopNode;
fuse: FuseSopNode;
heightMap: HeightMapSopNode;
hexagons: HexagonsSopNode;
hierarchy: HierarchySopNode;
icosahedron: IcosahedronSopNode;
instance: InstanceSopNode;
instancesCount: InstancesCountSopNode;
jitter: JitterSopNode;
jsPoint: JsPointSopNode;
layer: LayerSopNode;
line: LineSopNode;
lod: LodSopNode;
material: MaterialSopNode;
materials: MaterialsSopNode;
merge: MergeSopNode;
postProcess: PostProcessSopNode;
noise: NoiseSopNode;
normals: NormalsSopNode;
null: NullSopNode;
objectMerge: ObjectMergeSopNode;
objectProperties: ObjectPropertiesSopNode;
operationsComposer: OperationsComposerSopNode;
particlesSystemGpu: ParticlesSystemGpuSopNode;
peak: PeakSopNode;
plane: PlaneSopNode;
point: PointSopNode;
poly: PolySopNode;
polywire: PolywireSopNode;
ray: RaySopNode;
renderers: RenderersSopNode;
resample: ResampleSopNode;
restAttributes: RestAttributesSopNode;
roundedBox: RoundedBoxSopNode;
scatter: ScatterSopNode;
skin: SkinSopNode;
sphere: SphereSopNode;
split: SplitSopNode;
subdivide: SubdivideSopNode;
subnet: SubnetSopNode;
subnetInput: SubnetInputSopNode;
subnetOutput: SubnetOutputSopNode;
svg: SvgSopNode;
switch: SwitchSopNode;
tetrahedron: TetrahedronSopNode;
text: TextSopNode;
textureProperties: TexturePropertiesSopNode;
torus: TorusSopNode;
torusKnot: TorusKnotSopNode;
transform: TransformSopNode;
transformCopy: TransformCopySopNode;
transformMulti: TransformMultiSopNode;
transformReset: TransformResetSopNode;
tube: TubeSopNode;
uvProject: UvProjectSopNode;
}
import {AddSopOperation} from '../../../../core/operations/sop/Add';
import {AttribAddMultSopOperation} from '../../../../core/operations/sop/AttribAddMult';
import {AttribCopySopOperation} from '../../../../core/operations/sop/AttribCopy';
import {AttribCreateSopOperation} from '../../../../core/operations/sop/AttribCreate';
import {AttribNormalizeSopOperation} from '../../../../core/operations/sop/AttribNormalize';
import {AttribFromTextureSopOperation} from '../../../../core/operations/sop/AttribFromTexture';
import {AttribPromoteSopOperation} from '../../../../core/operations/sop/AttribPromote';
import {BoxSopOperation} from '../../../../core/operations/sop/Box';
import {CenterSopOperation} from '../../../../core/operations/sop/Center';
import {CircleSopOperation} from '../../../../core/operations/sop/Circle';
import {Css2DObjectSopOperation} from '../../../../core/operations/sop/Css2DObject';
import {FileSopOperation} from '../../../../core/operations/sop/File';
import {HierarchySopOperation} from '../../../../core/operations/sop/Hierarchy';
import {IcosahedronSopOperation} from '../../../../core/operations/sop/Icosahedron';
import {InstanceSopOperation} from '../../../../core/operations/sop/Instance';
import {JitterSopOperation} from '../../../../core/operations/sop/Jitter';
import {MergeSopOperation} from '../../../../core/operations/sop/Merge';
import {MaterialSopOperation} from '../../../../core/operations/sop/Material';
import {NullSopOperation} from '../../../../core/operations/sop/Null';
import {ObjectPropertiesSopOperation} from '../../../../core/operations/sop/ObjectProperties';
import {PeakSopOperation} from '../../../../core/operations/sop/Peak';
import {PlaneSopOperation} from '../../../../core/operations/sop/Plane';
import {RestAttributesSopOperation} from '../../../../core/operations/sop/RestAttributes';
import {RoundedBoxSopOperation} from '../../../../core/operations/sop/RoundedBox';
import {ScatterSopOperation} from '../../../../core/operations/sop/Scatter';
import {SphereSopOperation} from '../../../../core/operations/sop/Sphere';
import {SubdivideSopOperation} from '../../../../core/operations/sop/Subdivide';
import {SvgSopOperation} from '../../../../core/operations/sop/Svg';
import {TexturePropertiesSopOperation} from '../../../../core/operations/sop/TextureProperties';
import {TorusSopOperation} from '../../../../core/operations/sop/Torus';
import {TorusKnotSopOperation} from '../../../../core/operations/sop/TorusKnot';
import {TransformSopOperation} from '../../../../core/operations/sop/Transform';
import {PolyEngine} from '../../../Poly';
export class SopRegister {
static run(poly: PolyEngine) {
poly.registerOperation(AddSopOperation);
poly.registerOperation(AttribAddMultSopOperation);
poly.registerOperation(AttribCopySopOperation);
poly.registerOperation(AttribCreateSopOperation);
poly.registerOperation(AttribNormalizeSopOperation);
poly.registerOperation(AttribFromTextureSopOperation);
poly.registerOperation(AttribPromoteSopOperation);
poly.registerOperation(BoxSopOperation);
poly.registerOperation(CenterSopOperation);
poly.registerOperation(CircleSopOperation);
poly.registerOperation(Css2DObjectSopOperation);
poly.registerOperation(FileSopOperation);
poly.registerOperation(HierarchySopOperation);
poly.registerOperation(IcosahedronSopOperation);
poly.registerOperation(InstanceSopOperation);
poly.registerOperation(JitterSopOperation);
poly.registerOperation(MergeSopOperation);
poly.registerOperation(MaterialSopOperation);
poly.registerOperation(NullSopOperation);
poly.registerOperation(ObjectPropertiesSopOperation);
poly.registerOperation(PeakSopOperation);
poly.registerOperation(PlaneSopOperation);
poly.registerOperation(RestAttributesSopOperation);
poly.registerOperation(RoundedBoxSopOperation);
poly.registerOperation(ScatterSopOperation);
poly.registerOperation(SphereSopOperation);
poly.registerOperation(SubdivideSopOperation);
poly.registerOperation(SvgSopOperation);
poly.registerOperation(TexturePropertiesSopOperation);
poly.registerOperation(TorusSopOperation);
poly.registerOperation(TorusKnotSopOperation);
poly.registerOperation(TransformSopOperation);
poly.registerNode(AddSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(AnimationCopySopNode, CATEGORY_SOP.ANIMATION);
poly.registerNode(AnimationMixerSopNode, CATEGORY_SOP.ANIMATION);
poly.registerNode(AttribAddMultSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribCopySopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribCreateSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribDeleteSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribFromTextureSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribNormalizeSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribPromoteSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribRemapSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribRenameSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(AttribTransferSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(BboxScatterSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(BlendSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(BoxSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(CacheSopNode, CATEGORY_SOP.MISC);
poly.registerNode(CenterSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(CircleSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(Circle3PointsSopNode, CATEGORY_SOP.PRIMITIVES);
// poly.registerNode(CodeSopNode, CATEGORY_SOP.ADVANCED);
poly.registerNode(ColorSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(ConeSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(CopySopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(Css2DObjectSopNode, CATEGORY_SOP.PRIMITIVES);
// poly.registerNode(Css3DObjectSopNode, CATEGORY_SOP.PRIMITIVES); // not working yet
poly.registerNode(DataSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(DataUrlSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(DelaySopNode, CATEGORY_SOP.MISC);
poly.registerNode(DeleteSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(DrawRangeSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(FaceSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(FileSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(FuseSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(HexagonsSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(HeightMapSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(HierarchySopNode, CATEGORY_SOP.MISC);
poly.registerNode(IcosahedronSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(InstanceSopNode, CATEGORY_SOP.RENDER);
poly.registerNode(InstancesCountSopNode, CATEGORY_SOP.RENDER);
poly.registerNode(JitterSopNode, CATEGORY_SOP.MODIFIER);
if (process.env.NODE_ENV == 'development') {
poly.registerNode(JsPointSopNode, CATEGORY_SOP.ADVANCED);
}
poly.registerNode(LayerSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(LineSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(LodSopNode, CATEGORY_SOP.ADVANCED);
poly.registerNode(MaterialSopNode, CATEGORY_SOP.RENDER);
poly.registerNode(MergeSopNode, CATEGORY_SOP.MISC);
poly.registerNode(NoiseSopNode, CATEGORY_SOP.MISC);
poly.registerNode(NormalsSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(NullSopNode, CATEGORY_SOP.MISC);
poly.registerNode(ObjectMergeSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(ObjectPropertiesSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(OperationsComposerSopNode, CATEGORY_SOP.ADVANCED, {user_allowed: false});
poly.registerNode(ParticlesSystemGpuSopNode, CATEGORY_SOP.DYNAMICS);
poly.registerNode(PeakSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(PlaneSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(PointSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(PolySopNode, CATEGORY_SOP.ADVANCED);
poly.registerNode(PolywireSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(RaySopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(ResampleSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(RestAttributesSopNode, CATEGORY_SOP.ATTRIBUTE);
poly.registerNode(RoundedBoxSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(ScatterSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(SkinSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(SphereSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(SplitSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(SubdivideSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(SubnetSopNode, CATEGORY_SOP.MISC);
poly.registerNode(
SubnetInputSopNode,
CATEGORY_SOP.MISC /*{
// TODO: use "except" so that it works inside PolyNodes
// only: [`${NodeContext.SOP}/${SubnetSopNode.type()}`, `${NodeContext.SOP}/poly`],
}*/
);
poly.registerNode(
SubnetOutputSopNode,
CATEGORY_SOP.MISC /*{
// only: [`${NodeContext.SOP}/${SubnetSopNode.type()}`, `${NodeContext.SOP}/poly`],
}*/
);
poly.registerNode(SvgSopNode, CATEGORY_SOP.INPUT);
poly.registerNode(SwitchSopNode, CATEGORY_SOP.MISC);
poly.registerNode(TetrahedronSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(TextSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(TexturePropertiesSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(TorusSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(TorusKnotSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(TransformSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(TransformCopySopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(TransformMultiSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(TransformResetSopNode, CATEGORY_SOP.MODIFIER);
poly.registerNode(TubeSopNode, CATEGORY_SOP.PRIMITIVES);
poly.registerNode(UvProjectSopNode, CATEGORY_SOP.MODIFIER);
// networks
poly.registerNode(AnimationsSopNode, CATEGORY_SOP.NETWORK);
poly.registerNode(CopSopNode, CATEGORY_SOP.NETWORK);
poly.registerNode(EventsSopNode, CATEGORY_SOP.NETWORK);
poly.registerNode(MaterialsSopNode, CATEGORY_SOP.NETWORK);
poly.registerNode(PostProcessSopNode, CATEGORY_SOP.NETWORK);
poly.registerNode(RenderersSopNode, CATEGORY_SOP.NETWORK);
}
}