UNPKG

polygonjs-engine

Version:

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

367 lines (361 loc) 18.7 kB
// 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); } }