import {CATEGORY_SOP} from './Category';

import {ActorSopNode} from '../../../nodes/sop/Actor';
import {ActorInstanceSopNode} from '../../../nodes/sop/ActorInstance';
import {ActorPointSopNode} from '../../../nodes/sop/ActorPoint';
import {AddSopNode} from '../../../nodes/sop/Add';
import {AdjacencySopNode} from '../../../nodes/sop/Adjacency';
import {AmbientLightSopNode} from '../../../nodes/sop/AmbientLight';
import {AnimationCopySopNode} from '../../../nodes/sop/AnimationCopy';
// import {AnimationMixerSopNode} from '../../../nodes/sop/AnimationMixer';
import {AreaLightSopNode} from '../../../nodes/sop/AreaLight';
import {AttribAddMultSopNode} from '../../../nodes/sop/AttribAddMult';
// import {AttribAudioAnalyserSopNode} from '../../../nodes/sop/AttribAudioAnalyser';
import {AttribCastSopNode} from '../../../nodes/sop/AttribCast';
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 {AttribIdSopNode} from '../../../nodes/sop/AttribId';
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 {AttribSetAtIndexSopNode} from '../../../nodes/sop/AttribSetAtIndex';
import {AttribTransferSopNode} from '../../../nodes/sop/AttribTransfer';
import {AudioNotesSopNode} from '../../../nodes/sop/AudioNotes';
import {AxesHelperSopNode} from '../../../nodes/sop/AxesHelper';
import {BboxScatterSopNode} from '../../../nodes/sop/BboxScatter';
import {BlendSopNode} from '../../../nodes/sop/Blend';
import {BooleanSopNode} from '../../../nodes/sop/Boolean';
import {BoxSopNode} from '../../../nodes/sop/Box';
import {BoxLinesSopNode} from '../../../nodes/sop/BoxLines';
import {BVHSopNode} from '../../../nodes/sop/BVH';
import {BVHVisualizerSopNode} from '../../../nodes/sop/BVHVisualizer';
import {CacheSopNode} from '../../../nodes/sop/Cache';
//
import {CADBooleanSopNode} from '../../../nodes/sop/CADBoolean';
import {CADBoxSopNode} from '../../../nodes/sop/CADBox';
import {CADCircleSopNode} from '../../../nodes/sop/CADCircle';
import {CADCircle2DSopNode} from '../../../nodes/sop/CADCircle2D';
import {CADCircle3PointsSopNode} from '../../../nodes/sop/CADCircle3Points';
import {CADConeSopNode} from '../../../nodes/sop/CADCone';
import {CADConvertDimensionSopNode} from '../../../nodes/sop/CADConvertDimension';
import {CADCurve2DToSurfaceSopNode} from '../../../nodes/sop/CADCurve2DToSurface';
import {CADCurveFromPointsSopNode} from '../../../nodes/sop/CADCurveFromPoints';
import {CADCurveFromPoints2DSopNode} from '../../../nodes/sop/CADCurveFromPoints2D';
import {CADCurveTrimSopNode} from '../../../nodes/sop/CADCurveTrim';
import {CADEllipseSopNode} from '../../../nodes/sop/CADEllipse';
import {CADEllipse2DSopNode} from '../../../nodes/sop/CADEllipse2D';
import {CADExporterSTEPSopNode} from '../../../nodes/sop/CADExporterSTEP';
import {CADExtrudeSopNode} from '../../../nodes/sop/CADExtrude';
import {CADFileSTEPSopNode} from '../../../nodes/sop/CADFileSTEP';
import {CADFilletSopNode} from '../../../nodes/sop/CADFillet';
import {CADGroupSopNode} from '../../../nodes/sop/CADGroup';
import {CADLoftSopNode} from '../../../nodes/sop/CADLoft';
import {CADMirrorSopNode} from '../../../nodes/sop/CADMirror';
import {CADPipeSopNode} from '../../../nodes/sop/CADPipe';
import {CADPointSopNode} from '../../../nodes/sop/CADPoint';
import {CADPoint2DSopNode} from '../../../nodes/sop/CADPoint2D';
import {CADPointsFromCurveSopNode} from '../../../nodes/sop/CADPointsFromCurve';
import {CADRectangleSopNode} from '../../../nodes/sop/CADRectangle';
import {CADRevolutionSopNode} from '../../../nodes/sop/CADRevolution';
import {CADSegmentSopNode} from '../../../nodes/sop/CADSegment';
import {CADSphereSopNode} from '../../../nodes/sop/CADSphere';
import {CADThicknessSopNode} from '../../../nodes/sop/CADThickness';
import {CADTorusSopNode} from '../../../nodes/sop/CADTorus';
import {CADTransformSopNode} from '../../../nodes/sop/CADTransform';
import {CADTransform2DSopNode} from '../../../nodes/sop/CADTransform2D';
import {CADTriangulateSopNode} from '../../../nodes/sop/CADTriangulate';
import {CADTubeSopNode} from '../../../nodes/sop/CADTube';
import {CADUnpackSopNode} from '../../../nodes/sop/CADUnpack';
import {CADWedgeSopNode} from '../../../nodes/sop/CADWedge';
//
import {CameraControlsSopNode} from '../../../nodes/sop/CameraControls';
import {CameraCSSRendererSopNode} from '../../../nodes/sop/CameraCSSRenderer';
import {CameraFPSSopNode} from '../../../nodes/sop/CameraFPS';
import {CameraFrameModeSopNode} from '../../../nodes/sop/CameraFrameMode';
import {CameraPlaneSopNode} from '../../../nodes/sop/CameraPlane';
import {CameraPostProcessSopNode} from '../../../nodes/sop/CameraPostProcess';
import {CameraProjectSopNode} from '../../../nodes/sop/CameraProject';
import {CameraRenderSceneSopNode} from '../../../nodes/sop/CameraRenderScene';
import {CameraRendererSopNode} from '../../../nodes/sop/CameraRenderer';
import {CameraViewerCodeSopNode} from '../../../nodes/sop/CameraViewerCode';
import {CameraViewOffsetSopNode} from '../../../nodes/sop/CameraViewOffset';
import {CameraWebXRARMarkerTrackingSopNode} from '../../../nodes/sop/CameraWebXRARMarkerTracking';
import {CameraWebXRARSopNode} from '../../../nodes/sop/CameraWebXRAR';
import {CameraWebXRVRSopNode} from '../../../nodes/sop/CameraWebXRVR';
import {CapsuleSopNode} from '../../../nodes/sop/Capsule';
import {CenterSopNode} from '../../../nodes/sop/Center';
import {CircleSopNode} from '../../../nodes/sop/Circle';
import {Circle3PointsSopNode} from '../../../nodes/sop/Circle3Points';
import {ClipSopNode} from '../../../nodes/sop/Clip';
import {ClothPrepareSopNode} from '../../../nodes/sop/ClothPrepare';
import {ClothSolverSopNode} from '../../../nodes/sop/ClothSolver';
import {CodeSopNode} from '../../../nodes/sop/Code';
import {ColorSopNode} from '../../../nodes/sop/Color';
import {ConeSopNode} from '../../../nodes/sop/Cone';
import {ContactShadowsSopNode} from '../../../nodes/sop/ContactShadows';
import {ConvexHullSopNode} from '../../../nodes/sop/ConvexHull';
import {CopySopNode} from '../../../nodes/sop/Copy';
import {CurveFromPointsSopNode} from '../../../nodes/sop/CurveFromPoints';
import {CurveGetPointSopNode} from '../../../nodes/sop/CurveGetPoint';
//
import {CSGArcSopNode} from '../../../nodes/sop/CSGArc';
import {CSGBooleanSopNode} from '../../../nodes/sop/CSGBoolean';
import {CSGBoxSopNode} from '../../../nodes/sop/CSGBox';
import {CSGCenterSopNode} from '../../../nodes/sop/CSGCenter';
import {CSGCircleSopNode} from '../../../nodes/sop/CSGCircle';
import {CSGDodecahedronSopNode} from '../../../nodes/sop/CSGDodecahedron';
import {CSGEllipseSopNode} from '../../../nodes/sop/CSGEllipse';
import {CSGEllipsoidSopNode} from '../../../nodes/sop/CSGEllipsoid';
import {CSGExpandSopNode} from '../../../nodes/sop/CSGExpand';
import {CSGExtrudeLinearSopNode} from '../../../nodes/sop/CSGExtrudeLinear';
import {CSGExtrudeRectangularSopNode} from '../../../nodes/sop/CSGExtrudeRectangular';
import {CSGExtrudeRotateSopNode} from '../../../nodes/sop/CSGExtrudeRotate';
import {CSGHullSopNode} from '../../../nodes/sop/CSGHull';
import {CSGLineSopNode} from '../../../nodes/sop/CSGLine';
import {CSGMirrorSopNode} from '../../../nodes/sop/CSGMirror';
import {CSGOffsetSopNode} from '../../../nodes/sop/CSGOffset';
import {CSGPolygonSopNode} from '../../../nodes/sop/CSGPolygon';
import {CSGPolyhedronSopNode} from '../../../nodes/sop/CSGPolyhedron';
import {CSGProjectSopNode} from '../../../nodes/sop/CSGProject';
import {CSGRectangleSopNode} from '../../../nodes/sop/CSGRectangle';
import {CSGTransformResetSopNode} from '../../../nodes/sop/CSGTransformReset';
import {CSGSphereSopNode} from '../../../nodes/sop/CSGSphere';
import {CSGStarSopNode} from '../../../nodes/sop/CSGStar';
import {CSGTorusSopNode} from '../../../nodes/sop/CSGTorus';
import {CSGTransform2DSopNode} from '../../../nodes/sop/CSGTransform2D';
import {CSGTriangulateSopNode} from '../../../nodes/sop/CSGTriangulate';
import {CSGTriangleSopNode} from '../../../nodes/sop/CSGTriangle';
import {CSGTubeSopNode} from '../../../nodes/sop/CSGTube';
import {CSGTubeEllipticSopNode} from '../../../nodes/sop/CSGTubeElliptic';
//
import {CSS2DObjectSopNode} from '../../../nodes/sop/CSS2DObject';
import {CSS3DObjectSopNode} from '../../../nodes/sop/CSS3DObject';
import {CubeCameraSopNode} from '../../../nodes/sop/CubeCamera';
import {DataSopNode} from '../../../nodes/sop/Data';
import {DataUrlSopNode} from '../../../nodes/sop/DataUrl';
import {DecalSopNode} from '../../../nodes/sop/Decal';
import {DecomposeSopNode} from '../../../nodes/sop/Decompose';
import {DelaySopNode} from '../../../nodes/sop/Delay';
import {DeleteSopNode} from '../../../nodes/sop/Delete';
import {DeleteByNameSopNode} from '../../../nodes/sop/DeleteByName';
import {DeleteNonManifoldSopNode} from '../../../nodes/sop/DeleteNonManifold';
import {DirectionalLightSopNode} from '../../../nodes/sop/DirectionalLight';
import {DrawRangeSopNode} from '../../../nodes/sop/DrawRange';
import {EmptyObjectSopNode} from '../../../nodes/sop/EmptyObject';
import {EntityBuilderSopNode} from '../../../nodes/sop/EntityBuilder';
import {ExporterGLTFSopNode} from '../../../nodes/sop/ExporterGLTF';
import {ExporterOBJSopNode} from '../../../nodes/sop/ExporterOBJ';
import {ExporterPLYSopNode} from '../../../nodes/sop/ExporterPLY';
import {ExporterSTLSopNode} from '../../../nodes/sop/ExporterSTL';
import {ExtrudeOpenEdgesSopNode} from '../../../nodes/sop/ExtrudeOpenEdges';
// import {ExporterUSDZSopNode} from '../../../nodes/sop/ExporterUSDZ';
import {FaceSopNode} from '../../../nodes/sop/Face';
import {FacetSopNode} from '../../../nodes/sop/Facet';
// import {FileSopNode} from '../../../nodes/sop/File';
import {File3DSSopNode} from '../../../nodes/sop/File3DS';
import {FileDRCSopNode} from '../../../nodes/sop/FileDRC';
import {FileFBXSopNode} from '../../../nodes/sop/FileFBX';
import {FileGEOJSONSopNode} from '../../../nodes/sop/FileGEOJSON';
import {FileGLTFSopNode} from '../../../nodes/sop/FileGLTF';
import {FileJSONSopNode} from '../../../nodes/sop/FileJSON';
import {FileMPDSopNode} from '../../../nodes/sop/FileMPD';
import {FileMultiGLTFSopNode} from '../../../nodes/sop/FileMultiGLTF';
import {FileMultiOBJSopNode} from '../../../nodes/sop/FileMultiOBJ';
import {FileOBJSopNode} from '../../../nodes/sop/FileOBJ';
import {FilePDBSopNode} from '../../../nodes/sop/FilePDB';
import {FilePLYSopNode} from '../../../nodes/sop/FilePLY';
import {FileSTLSopNode} from '../../../nodes/sop/FileSTL';
import {FileSVGSopNode} from '../../../nodes/sop/FileSVG';
import {FileUSDZSopNode} from '../../../nodes/sop/FileUSDZ';
import {FileVOXSopNode} from '../../../nodes/sop/FileVOX';
import {FuseSopNode} from '../../../nodes/sop/Fuse';
import {GroundProjectedSkyboxSopNode} from '../../../nodes/sop/GroundProjectedSkybox';
import {HexagonsSopNode} from '../../../nodes/sop/Hexagons';
import {HierarchySopNode} from '../../../nodes/sop/Hierarchy';
import {HeightMapSopNode} from '../../../nodes/sop/HeightMap';
import {HemisphereLightSopNode} from '../../../nodes/sop/HemisphereLight';
import {IcosahedronSopNode} from '../../../nodes/sop/Icosahedron';
import {InstanceSopNode} from '../../../nodes/sop/Instance';
import {InstanceBuilderSopNode} from '../../../nodes/sop/InstanceBuilder';
import {InstancedMeshToMeshSopNode} from '../../../nodes/sop/InstancedMeshToMesh';
import {InstanceUpdateSopNode} from '../../../nodes/sop/InstanceUpdate';
import {InstancesCountSopNode} from '../../../nodes/sop/InstancesCount';
import {JitterSopNode} from '../../../nodes/sop/Jitter';
import {LatticeSopNode} from '../../../nodes/sop/Lattice';
import {LayerSopNode} from '../../../nodes/sop/Layer';
import {LightMixerSopNode} from '../../../nodes/sop/LightMixer';
import {LightProbeSopNode} from '../../../nodes/sop/LightProbe';
import {LineSopNode} from '../../../nodes/sop/Line';
import {LodSopNode} from '../../../nodes/sop/Lod';
import {LookAtSopNode} from '../../../nodes/sop/LookAt';
import {ManifoldTestSopNode} from '../../../nodes/sop/ManifoldTest';
import {MapboxCameraSopNode} from '../../../nodes/sop/MapboxCamera';
import {MapboxLayerSopNode} from '../../../nodes/sop/MapboxLayer';
import {MapboxPlaneSopNode} from '../../../nodes/sop/MapboxPlane';
import {MapboxTransformSopNode} from '../../../nodes/sop/MapboxTransform';
import {MaterialSopNode} from '../../../nodes/sop/Material';
import {MaterialPropertiesSopNode} from '../../../nodes/sop/MaterialProperties';
// import {MaterialPropertiesMeshStandardSopNode} from '../../../nodes/sop/MaterialPropertiesMeshStandard';
import {MeasureSopNode} from '../../../nodes/sop/Measure';
import {MergeSopNode} from '../../../nodes/sop/Merge';
import {MetaballSopNode} from '../../../nodes/sop/Metaball';
import {MirrorSopNode} from '../../../nodes/sop/Mirror';
import {NoiseSopNode} from '../../../nodes/sop/Noise';
import {NormalsSopNode} from '../../../nodes/sop/Normals';
import {NormalsHelperSopNode} from '../../../nodes/sop/NormalsHelper';
import {NullSopNode} from '../../../nodes/sop/Null';
import {ObjectBuilderSopNode} from '../../../nodes/sop/ObjectBuilder';
import {ObjectMergeSopNode} from '../../../nodes/sop/ObjectMerge';
import {ObjectPropertiesSopNode} from '../../../nodes/sop/ObjectProperties';
import {ObjectsLayoutSopNode} from '../../../nodes/sop/ObjectsLayout';
import {OceanPlaneSopNode} from '../../../nodes/sop/OceanPlane';
import {OperationsComposerSopNode} from '../../../nodes/sop/OperationsComposer';
import {OrthographicCameraSopNode} from '../../../nodes/sop/OrthographicCamera';
import {PaletteSopNode} from '../../../nodes/sop/Palette';
import {ParticlesSystemGpuSopNode} from '../../../nodes/sop/ParticlesSystemGpu';
import {ParticlesSystemGpuAttributesSopNode} from '../../../nodes/sop/ParticlesSystemGpuAttributes';
import {ParticlesSystemGpuMaterialSopNode} from '../../../nodes/sop/ParticlesSystemGpuMaterial';
import {PeakSopNode} from '../../../nodes/sop/Peak';
import {PerspectiveCameraSopNode} from '../../../nodes/sop/PerspectiveCamera';
import {PhysicsDebugSopNode} from '../../../nodes/sop/PhysicsDebug';
import {PhysicsGroundSopNode} from '../../../nodes/sop/PhysicsGround';
import {PhysicsPlayerSopNode} from '../../../nodes/sop/PhysicsPlayer';
import {PhysicsRBDJointsSopNode} from '../../../nodes/sop/PhysicsRBDJoints';
import {PhysicsRBDAttributesSopNode} from '../../../nodes/sop/PhysicsRBDAttributes';
import {PhysicsWorldSopNode} from '../../../nodes/sop/PhysicsWorld';
import {PlaneSopNode} from '../../../nodes/sop/Plane';
import {PlaneHelperSopNode} from '../../../nodes/sop/PlaneHelper';
import {PointBuilderSopNode} from '../../../nodes/sop/PointBuilder';
import {PointSopNode} from '../../../nodes/sop/Point';
import {PointLightSopNode} from '../../../nodes/sop/PointLight';
import {PolarTransformSopNode} from '../../../nodes/sop/PolarTransform';
import {PolywireSopNode} from '../../../nodes/sop/Polywire';
// QUAD
import {QuadConnectionSopNode} from '../../../nodes/sop/QuadConnection';
import {QuadCornersSopNode} from '../../../nodes/sop/QuadCorners';
import {QuadExtrudeSopNode} from '../../../nodes/sop/QuadExtrude';
import {QuadFuseSopNode} from '../../../nodes/sop/QuadFuse';
import {QuadMirrorSopNode} from '../../../nodes/sop/QuadMirror';
import {QuadPlaneSopNode} from '../../../nodes/sop/QuadPlane';
import {QuadSmoothSopNode} from '../../../nodes/sop/QuadSmooth';
import {QuadTriangulateSopNode} from '../../../nodes/sop/QuadTriangulate';
import {QuadUniqueNeighbourIdSopNode} from '../../../nodes/sop/QuadUniqueNeighbourId';
import {QuadrangulateSopNode} from '../../../nodes/sop/Quadrangulate';
//
import {RaySopNode} from '../../../nodes/sop/Ray';
import {ReflectorSopNode} from '../../../nodes/sop/Reflector';
import {ResampleSopNode} from '../../../nodes/sop/Resample';
import {RestAttributesSopNode} from '../../../nodes/sop/RestAttributes';
import {RingSopNode} from '../../../nodes/sop/Ring';
import {RoundedBoxSopNode} from '../../../nodes/sop/RoundedBox';
import {ScatterSopNode} from '../../../nodes/sop/Scatter';
// SDF
// import {SDFBooleanSopNode} from '../../../nodes/sop/SDFBoolean';
// import {SDFBoxSopNode} from '../../../nodes/sop/SDFBox';
import {SDFBuilderSopNode} from '../../../nodes/sop/SDFBuilder';
// import {SDFExtrudeSopNode} from '../../../nodes/sop/SDFExtrude';
// import {SDFLevelSetSopNode} from '../../../nodes/sop/SDFLevelSet';
// import {SDFRefineSopNode} from '../../../nodes/sop/SDFRefine';
// import {SDFSmoothSopNode} from '../../../nodes/sop/SDFSmooth';
// import {SDFSphereSopNode} from '../../../nodes/sop/SDFSphere';
// import {SDFTriangulateSopNode} from '../../../nodes/sop/SDFTriangulate';
// import {SDFTubeSopNode} from '../../../nodes/sop/SDFTube';
//
import {SetChildrenSopNode} from '../../../nodes/sop/SetChildren';
import {SetGeometrySopNode} from '../../../nodes/sop/SetGeometry';
import {ShearSopNode} from '../../../nodes/sop/Shear';
import {ShortestPathSopNode} from '../../../nodes/sop/ShortestPath';
import {SkeletonHelperSopNode} from '../../../nodes/sop/SkeletonHelper';
import {SkinSopNode} from '../../../nodes/sop/Skin';
import {SortSopNode} from '../../../nodes/sop/Sort';
import {SolverSopNode} from '../../../nodes/sop/Solver';
import {SolverPreviousFrameSopNode} from '../../../nodes/sop/SolverPreviousFrame';
import {SphereSopNode} from '../../../nodes/sop/Sphere';
import {SplitSopNode} from '../../../nodes/sop/Split';
import {SpotLightSopNode} from '../../../nodes/sop/SpotLight';
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 {SwitchSopNode} from '../../../nodes/sop/Switch';
import {TangentSopNode} from '../../../nodes/sop/Tangent';
import {TangentsHelperSopNode} from '../../../nodes/sop/TangentsHelper';
import {TetDeleteSopNode} from '../../../nodes/sop/TetDelete';
import {TetEmbedSopNode} from '../../../nodes/sop/TetEmbed';
import {TetSoftBodySolverSopNode} from '../../../nodes/sop/TetSoftBodySolver';
import {TetTriangulateSopNode} from '../../../nodes/sop/TetTriangulate';
import {TetrahedralizeSopNode} from '../../../nodes/sop/Tetrahedralize';
import {TetrahedronSopNode} from '../../../nodes/sop/Tetrahedron';
import {TextSopNode} from '../../../nodes/sop/Text';
import {TextureCopySopNode} from '../../../nodes/sop/TextureCopy';
import {TexturePropertiesSopNode} from '../../../nodes/sop/TextureProperties';
import {TorusSopNode} from '../../../nodes/sop/Torus';
import {TorusKnotSopNode} from '../../../nodes/sop/TorusKnot';
import {TrackingLandmarksFaceSopNode} from '../../../nodes/sop/TrackingLandmarksFace';
import {TrackingLandmarksFaceAttributesSopNode} from '../../../nodes/sop/TrackingLandmarksFaceAttributes';
import {TrackingLandmarksHandSopNode} from '../../../nodes/sop/TrackingLandmarksHand';
import {TrackingLandmarksHandAttributesSopNode} from '../../../nodes/sop/TrackingLandmarksHandAttributes';
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 {UvLayoutSopNode} from '../../../nodes/sop/UvLayout';
import {UvProjectSopNode} from '../../../nodes/sop/UvProject';
import {UvTransformSopNode} from '../../../nodes/sop/UvTransform';
import {UvUnwrapSopNode} from '../../../nodes/sop/UvUnwrap';
import {WebXRAREstimatedLightSopNode} from '../../../nodes/sop/WebXRAREstimatedLight';
import {WFCBuilderSopNode} from '../../../nodes/sop/WFCBuilder';
import {WFCDebugSopNode} from '../../../nodes/sop/WFCDebug';
import {WFCRuleFromProximitySopNode} from '../../../nodes/sop/WFCRuleFromProximity';
import {WFCRuleConnectionFromSideNameSopNode} from '../../../nodes/sop/WFCRuleConnectionFromSideName';
// import {WFCRuleConnectionToEmptyTileSopNode} from '../../../nodes/sop/WFCRuleConnectionToEmptyTile';
import {WFCRuleConnectionToGridBorderSopNode} from '../../../nodes/sop/WFCRuleConnectionToGridBorder';
import {WFCRuleTileWeightSopNode} from '../../../nodes/sop/WFCRuleTileWeight';
import {WFCSolverSopNode} from '../../../nodes/sop/WFCSolver';
// import {WFCSolverUpdateSopNode} from '../../../nodes/sop/WFCSolverUpdate';
import {WFCTileEmptyObjectSopNode} from '../../../nodes/sop/WFCTileEmptyObject';
import {WFCTileErrorObjectSopNode} from '../../../nodes/sop/WFCTileErrorObject';
import {WFCTilePropertiesSopNode} from '../../../nodes/sop/WFCTileProperties';
import {WFCTileSideNameSopNode} from '../../../nodes/sop/WFCTileSideName';
import {WFCTileTransformSopNode} from '../../../nodes/sop/WFCTileTransform';
import {WFCTileUnresolvedObjectSopNode} from '../../../nodes/sop/WFCTileUnresolvedObject';
// networks
import {ActorsNetworkSopNode} from '../../../nodes/sop/ActorsNetwork';
import {AnimationsNetworkSopNode} from '../../../nodes/sop/AnimationsNetwork';
import {AudioNetworkSopNode} from '../../../nodes/sop/AudioNetwork';
// import {CadNetworkSopNode} from '../../../nodes/sop/CadNetwork';
import {CopNetworkSopNode} from '../../../nodes/sop/CopNetwork';
// import {CsgNetworkSopNode} from '../../../nodes/sop/CsgNetwork';
import {EventsNetworkSopNode} from '../../../nodes/sop/EventsNetwork';
import {MaterialsNetworkSopNode} from '../../../nodes/sop/MaterialsNetwork';
import {PostProcessNetworkSopNode} from '../../../nodes/sop/PostProcessNetwork';
import {RenderersNetworkSopNode} from '../../../nodes/sop/RenderersNetwork';

export interface GeoNodeChildrenMap {
	actor: ActorSopNode;
	actorInstance: ActorInstanceSopNode;
	actorPoint: ActorPointSopNode;
	add: AddSopNode;
	adjacency: AdjacencySopNode;
	ambientLight: AmbientLightSopNode;
	animationCopy: AnimationCopySopNode;
	// animationMixer: AnimationMixerSopNode;
	areaLight: AreaLightSopNode;
	attribAddMult: AttribAddMultSopNode;
	// attribAudioAnalyser: AttribAudioAnalyserSopNode;
	attribCast: AttribCastSopNode;
	attribCopy: AttribCopySopNode;
	attribCreate: AttribCreateSopNode;
	attribDelete: AttribDeleteSopNode;
	attribFromTexture: AttribFromTextureSopNode;
	attribId: AttribIdSopNode;
	attribNormalize: AttribNormalizeSopNode;
	attribPromote: AttribPromoteSopNode;
	attribRemap: AttribRemapSopNode;
	attribRename: AttribRenameSopNode;
	attribSetAtIndex: AttribSetAtIndexSopNode;
	attribTransfer: AttribTransferSopNode;
	audioNotes: AudioNotesSopNode;
	axesHelper: AxesHelperSopNode;
	bboxScatter: BboxScatterSopNode;
	blend: BlendSopNode;
	boolean: BooleanSopNode;
	box: BoxSopNode;
	boxLines: BoxLinesSopNode;
	BVH: BVHSopNode;
	BVHVisualizer: BVHVisualizerSopNode;
	cache: CacheSopNode;
	//
	CADBoolean: CADBooleanSopNode;
	CADBox: CADBoxSopNode;
	CADCircle: CADCircleSopNode;
	CADCircle2D: CADCircle2DSopNode;
	CADCircle3Points: CADCircle3PointsSopNode;
	CADCone: CADConeSopNode;
	CADConvertDimension: CADConvertDimensionSopNode;
	CADCurve2DToSurface: CADCurve2DToSurfaceSopNode;
	CADCurveFromPoints: CADCurveFromPointsSopNode;
	CADCurveFromPoints2D: CADCurveFromPoints2DSopNode;
	CADCurveTrim: CADCurveTrimSopNode;
	CADEllipse: CADEllipseSopNode;
	CADEllipse2D: CADEllipse2DSopNode;
	CADExporterSTEP: CADExporterSTEPSopNode;
	CADExtrude: CADExtrudeSopNode;
	CADFileSTEP: CADFileSTEPSopNode;
	CADFillet: CADFilletSopNode;
	CADGroup: CADGroupSopNode;
	CADLoft: CADLoftSopNode;
	// CADMerge: CADMergeSopNode;
	CADMirror: CADMirrorSopNode;
	CADPipe: CADPipeSopNode;
	CADPoint: CADPointSopNode;
	CADPoint2D: CADPoint2DSopNode;
	CADPointsFromCurve: CADPointsFromCurveSopNode;
	CADRectangle: CADRectangleSopNode;
	CADRevolution: CADRevolutionSopNode;
	CADSegment: CADSegmentSopNode;
	CADSphere: CADSphereSopNode;
	CADThickness: CADThicknessSopNode;
	CADTorus: CADTorusSopNode;
	CADTransform: CADTransformSopNode;
	CADTransform2D: CADTransform2DSopNode;
	CADTriangulate: CADTriangulateSopNode;
	CADTube: CADTubeSopNode;
	CADUnpack: CADUnpackSopNode;
	CADWedge: CADWedgeSopNode;
	//
	cameraControls: CameraControlsSopNode;
	cameraCSSRenderer: CameraCSSRendererSopNode;
	cameraFPS: CameraFPSSopNode;
	cameraFrameMode: CameraFrameModeSopNode;
	cameraPlane: CameraPlaneSopNode;
	cameraPostProcess: CameraPostProcessSopNode;
	cameraProject: CameraProjectSopNode;
	cameraRenderer: CameraRendererSopNode;
	cameraRenderScene: CameraRenderSceneSopNode;
	cameraViewerCode: CameraViewerCodeSopNode;
	cameraViewOffset: CameraViewOffsetSopNode;
	cameraWebXRAR: CameraWebXRARSopNode;
	cameraWebXRARMarkerTracking: CameraWebXRARMarkerTrackingSopNode;
	cameraWebXRVR: CameraWebXRVRSopNode;
	capsule: CapsuleSopNode;
	center: CenterSopNode;
	circle: CircleSopNode;
	circle3Points: Circle3PointsSopNode;
	clip: ClipSopNode;
	clothPrepare: ClothPrepareSopNode;
	clothSolver: ClothSolverSopNode;
	code: CodeSopNode;
	color: ColorSopNode;
	cone: ConeSopNode;
	contactShadows: ContactShadowsSopNode;
	convexHull: ConvexHullSopNode;
	copy: CopySopNode;
	curveFromPoints: CurveFromPointsSopNode;
	curveGetPoint: CurveGetPointSopNode;
	//
	CSGArc: CSGArcSopNode;
	CSGBoolean: CSGBooleanSopNode;
	CSGBox: CSGBoxSopNode;
	CSGCenter: CSGCenterSopNode;
	CSGCircle: CSGCircleSopNode;
	CSGDodecahedron: CSGDodecahedronSopNode;
	CSGEllipse: CSGEllipseSopNode;
	CSGEllipsoid: CSGEllipsoidSopNode;
	CSGExpand: CSGExpandSopNode;
	CSGExtrudeLinear: CSGExtrudeLinearSopNode;
	CSGExtrudeRectangular: CSGExtrudeRectangularSopNode;
	CSGExtrudeRotate: CSGExtrudeRotateSopNode;
	CSGHull: CSGHullSopNode;
	CSGLine: CSGLineSopNode;
	CSGMirror: CSGMirrorSopNode;
	CSGOffset: CSGOffsetSopNode;
	CSGPolygon: CSGPolygonSopNode;
	CSGPolyhedron: CSGPolyhedronSopNode;
	CSGProject: CSGProjectSopNode;
	CSGRectangle: CSGRectangleSopNode;
	CSGTransformReset: CSGTransformResetSopNode;
	CSGSphere: CSGSphereSopNode;
	CSGStar: CSGStarSopNode;
	CSGTorus: CSGTorusSopNode;
	CSGTransform2D: CSGTransform2DSopNode;
	CSGTriangulate: CSGTriangulateSopNode;
	CSGTriangle: CSGTriangleSopNode;
	CSGTube: CSGTubeSopNode;
	CSGTubeElliptic: CSGTubeEllipticSopNode;
	//
	CSS2DObject: CSS2DObjectSopNode;
	CSS3DObject: CSS3DObjectSopNode;
	cubeCamera: CubeCameraSopNode;
	data: DataSopNode;
	dataUrl: DataUrlSopNode;
	decal: DecalSopNode;
	decompose: DecomposeSopNode;
	delay: DelaySopNode;
	delete: DeleteSopNode;
	deleteByName: DeleteByNameSopNode;
	deleteNonManifold: DeleteNonManifoldSopNode;
	directionalLight: DirectionalLightSopNode;
	drawRange: DrawRangeSopNode;
	emptyObject: EmptyObjectSopNode;
	entityBuilder: EntityBuilderSopNode;
	exporterGLTF: ExporterGLTFSopNode;
	exporterOBJ: ExporterOBJSopNode;
	exporterPLY: ExporterPLYSopNode;
	exporterSTL: ExporterSTLSopNode;
	// exporterUSDZ: ExporterUSDZSopNode;
	extrudeOpenEdges: ExtrudeOpenEdgesSopNode;
	face: FaceSopNode;
	facet: FacetSopNode;
	// file: FileSopNode;
	file3DS: File3DSSopNode;
	fileDRC: FileDRCSopNode;
	fileFBX: FileFBXSopNode;
	fileGEOJSON: FileGEOJSONSopNode;
	fileGLTF: FileGLTFSopNode;
	fileJSON: FileJSONSopNode;
	fileMPD: FileMPDSopNode;
	fileMultiGLTF: FileMultiGLTFSopNode;
	fileMultiOBJ: FileMultiOBJSopNode;
	fileOBJ: FileOBJSopNode;
	filePDB: FilePDBSopNode;
	filePLY: FilePLYSopNode;
	fileSTL: FileSTLSopNode;
	fileSVG: FileSVGSopNode;
	fileUSDZ: FileUSDZSopNode;
	fileVOX: FileVOXSopNode;
	fuse: FuseSopNode;
	groundProjectedSkybox: GroundProjectedSkyboxSopNode;
	heightMap: HeightMapSopNode;
	hexagons: HexagonsSopNode;
	hierarchy: HierarchySopNode;
	hemisphereLight: HemisphereLightSopNode;
	icosahedron: IcosahedronSopNode;
	instance: InstanceSopNode;
	instanceBuilder: InstanceBuilderSopNode;
	instancedMeshToMesh: InstancedMeshToMeshSopNode;
	instanceUpdate: InstanceUpdateSopNode;
	instancesCount: InstancesCountSopNode;
	jitter: JitterSopNode;
	// JSSDF: JSSDFSopNode;
	lattice: LatticeSopNode;
	layer: LayerSopNode;
	lightMixer: LightMixerSopNode;
	lightProbe: LightProbeSopNode;
	line: LineSopNode;
	lod: LodSopNode;
	lookAt: LookAtSopNode;
	manifoldTest: ManifoldTestSopNode;
	mapboxCamera: MapboxCameraSopNode;
	mapboxLayer: MapboxLayerSopNode;
	mapboxPlane: MapboxPlaneSopNode;
	mapboxTransform: MapboxTransformSopNode;
	material: MaterialSopNode;
	materialProperties: MaterialPropertiesSopNode;
	// materialPropertiesMeshStandard: MaterialPropertiesMeshStandardSopNode;
	measure: MeasureSopNode;
	merge: MergeSopNode;
	metaball: MetaballSopNode;
	mirror: MirrorSopNode;
	noise: NoiseSopNode;
	normals: NormalsSopNode;
	normalsHelper: NormalsHelperSopNode;
	null: NullSopNode;
	objectBuilder: ObjectBuilderSopNode;
	objectMerge: ObjectMergeSopNode;
	objectProperties: ObjectPropertiesSopNode;
	objectsLayout: ObjectsLayoutSopNode;
	oceanPlane: OceanPlaneSopNode;
	operationsComposer: OperationsComposerSopNode;
	orthographicCamera: OrthographicCameraSopNode;
	palette: PaletteSopNode;
	particlesSystemGpu: ParticlesSystemGpuSopNode;
	particlesSystemGpuAttributes: ParticlesSystemGpuAttributesSopNode;
	particlesSystemGpuMaterial: ParticlesSystemGpuMaterialSopNode;
	peak: PeakSopNode;
	perspectiveCamera: PerspectiveCameraSopNode;
	physicsDebug: PhysicsDebugSopNode;
	physicsGround: PhysicsGroundSopNode;
	physicsPlayer: PhysicsPlayerSopNode;
	physicsRBDJoints: PhysicsRBDJointsSopNode;
	physicsRBDAttributes: PhysicsRBDAttributesSopNode;
	physicsWorld: PhysicsWorldSopNode;
	plane: PlaneSopNode;
	planeHelper: PlaneHelperSopNode;
	point: PointSopNode;
	pointLight: PointLightSopNode;
	polarTransform: PolarTransformSopNode;
	polywire: PolywireSopNode;
	pointBuilder: PointBuilderSopNode;
	// QUAD
	quadConnection: QuadConnectionSopNode;
	quadCorners: QuadCornersSopNode;
	quadExtrude: QuadExtrudeSopNode;
	quadFuse: QuadFuseSopNode;
	quadMirror: QuadMirrorSopNode;
	quadPlane: QuadPlaneSopNode;
	quadSmooth: QuadSmoothSopNode;
	quadTriangulate: QuadTriangulateSopNode;
	quadUniqueNeighbourId: QuadUniqueNeighbourIdSopNode;
	quadrangulate: QuadrangulateSopNode;
	//
	ray: RaySopNode;
	reflector: ReflectorSopNode;
	resample: ResampleSopNode;
	restAttributes: RestAttributesSopNode;
	ring: RingSopNode;
	roundedBox: RoundedBoxSopNode;
	scatter: ScatterSopNode;
	// SDF
	// SDFBoolean: SDFBooleanSopNode;
	// SDFBox: SDFBoxSopNode;
	SDFBuilder: SDFBuilderSopNode;
	// SDFExtrude: SDFExtrudeSopNode;
	// SDFLevelSet: SDFLevelSetSopNode;
	// SDFRefine: SDFRefineSopNode;
	// SDFSmooth: SDFSmoothSopNode;
	// SDFSphere: SDFSphereSopNode;
	// SDFTriangulate: SDFTriangulateSopNode;
	// SDFTube: SDFTubeSopNode;
	//
	setChildren: SetChildrenSopNode;
	setGeometry: SetGeometrySopNode;
	shear: ShearSopNode;
	shortestPath: ShortestPathSopNode;
	skin: SkinSopNode;
	skeletonHelper: SkeletonHelperSopNode;
	solver: SolverSopNode;
	solverPreviousFrame: SolverPreviousFrameSopNode;
	sort: SortSopNode;
	sphere: SphereSopNode;
	split: SplitSopNode;
	spotLight: SpotLightSopNode;
	subdivide: SubdivideSopNode;
	subnet: SubnetSopNode;
	subnetInput: SubnetInputSopNode;
	subnetOutput: SubnetOutputSopNode;
	switch: SwitchSopNode;
	tangent: TangentSopNode;
	tangentsHelper: TangentsHelperSopNode;
	tetDelete: TetDeleteSopNode;
	tetEmbed: TetEmbedSopNode;
	tetSoftBodySolver: TetSoftBodySolverSopNode;
	tetTriangulate: TetTriangulateSopNode;
	tetrahedralize: TetrahedralizeSopNode;
	tetrahedron: TetrahedronSopNode;
	text: TextSopNode;
	textureCopy: TextureCopySopNode;
	textureProperties: TexturePropertiesSopNode;
	torus: TorusSopNode;
	torusKnot: TorusKnotSopNode;
	trackingLandmarksFace: TrackingLandmarksFaceSopNode;
	trackingLandmarksFaceAttributes: TrackingLandmarksFaceAttributesSopNode;
	trackingLandmarksHand: TrackingLandmarksHandSopNode;
	trackingLandmarksHandAttributes: TrackingLandmarksHandAttributesSopNode;
	transform: TransformSopNode;
	transformCopy: TransformCopySopNode;
	transformMulti: TransformMultiSopNode;
	transformReset: TransformResetSopNode;
	tube: TubeSopNode;
	uvLayout: UvProjectSopNode;
	uvProject: UvProjectSopNode;
	uvTransform: UvTransformSopNode;
	uvUnwrap: UvUnwrapSopNode;
	webXRAREstimatedLight: WebXRAREstimatedLightSopNode;
	WFCBuilder: WFCBuilderSopNode;
	WFCDebug: WFCDebugSopNode;
	WFCRuleFromProximity: WFCRuleFromProximitySopNode;
	WFCRuleConnectionFromSideName: WFCRuleConnectionFromSideNameSopNode;
	// WFCRuleConnectionToEmptyTile: WFCRuleConnectionToEmptyTileSopNode;
	WFCRuleConnectionToGridBorder: WFCRuleConnectionToGridBorderSopNode;
	WFCRuleTileWeight: WFCRuleTileWeightSopNode;
	WFCSolver: WFCSolverSopNode;
	// WFCSolverUpdate: WFCSolverUpdateSopNode;
	WFCTileEmptyObject: WFCTileEmptyObjectSopNode;
	WFCTileErrorObject: WFCTileErrorObjectSopNode;
	WFCTileProperties: WFCTilePropertiesSopNode;
	WFCTileSideName: WFCTileSideNameSopNode;
	WFCTileTransform: WFCTileTransformSopNode;
	WFCTileUnresolvedObject: WFCTileUnresolvedObjectSopNode;

	// networks
	actorsNetwork: ActorsNetworkSopNode;
	animationsNetwork: AnimationsNetworkSopNode;
	audioNetwork: AudioNetworkSopNode;
	// cadNetwork: CadNetworkSopNode;
	copNetwork: CopNetworkSopNode;
	// csgNetwork: CsgNetworkSopNode;
	eventsNetwork: EventsNetworkSopNode;
	materialsNetwork: MaterialsNetworkSopNode;
	postProcessNetwork: PostProcessNetworkSopNode;
	renderersNetwork: RenderersNetworkSopNode;
}

import {AddSopOperation} from '../../../operations/sop/Add';
import {AdjacencySopOperation} from '../../../operations/sop/Adjacency';
import {AmbientLightSopOperation} from '../../../operations/sop/AmbientLight';
import {AreaLightSopOperation} from '../../../operations/sop/AreaLight';
import {AttribAddMultSopOperation} from '../../../operations/sop/AttribAddMult';
import {AttribCastSopOperation} from '../../../operations/sop/AttribCast';
import {AttribCopySopOperation} from '../../../operations/sop/AttribCopy';
import {AttribCreateSopOperation} from '../../../operations/sop/AttribCreate';
import {AttribDeleteSopOperation} from '../../../operations/sop/AttribDelete';
import {AttribNormalizeSopOperation} from '../../../operations/sop/AttribNormalize';
import {AttribFromTextureSopOperation} from '../../../operations/sop/AttribFromTexture';
import {AttribIdSopOperation} from '../../../operations/sop/AttribId';
import {AttribPromoteSopOperation} from '../../../operations/sop/AttribPromote';
import {AttribRenameSopOperation} from '../../../operations/sop/AttribRename';
import {AttribSetAtIndexSopOperation} from '../../../operations/sop/AttribSetAtIndex';
import {AudioNotesSopOperation} from '../../../operations/sop/AudioNotes';
import {AxesHelperSopOperation} from '../../../operations/sop/AxesHelper';
import {BboxScatterSopOperation} from '../../../operations/sop/BboxScatter';
import {BooleanSopOperation} from '../../../operations/sop/Boolean';
import {BoxSopOperation} from '../../../operations/sop/Box';
import {BoxLinesSopOperation} from '../../../operations/sop/BoxLines';
import {BVHSopOperation} from '../../../operations/sop/BVH';
import {BVHVisualizerSopOperation} from '../../../operations/sop/BVHVisualizer';
import {CameraControlsSopOperation} from '../../../operations/sop/CameraControls';
import {CameraCSSRendererSopOperation} from '../../../operations/sop/CameraCSSRenderer';
import {CameraFPSSopOperation} from '../../../operations/sop/CameraFPS';
import {CameraFrameModeSopOperation} from '../../../operations/sop/CameraFrameMode';
import {CameraPostProcessSopOperation} from '../../../operations/sop/CameraPostProcess';
import {CameraProjectSopOperation} from '../../../operations/sop/CameraProject';
import {CameraRendererSopOperation} from '../../../operations/sop/CameraRenderer';
import {CameraRenderSceneSopOperation} from '../../../operations/sop/CameraRenderScene';
import {CameraViewerCodeSopOperation} from '../../../operations/sop/CameraViewerCode';
import {CameraViewOffsetSopOperation} from '../../../operations/sop/CameraViewOffset';
import {CameraWebXRARMarkerTrackingSopOperation} from '../../../operations/sop/CameraWebXRARMarkerTracking';
import {CameraWebXRARSopOperation} from '../../../operations/sop/CameraWebXRAR';
import {CameraWebXRVRSopOperation} from '../../../operations/sop/CameraWebXRVR';
import {CapsuleSopOperation} from '../../../operations/sop/Capsule';
import {CenterSopOperation} from '../../../operations/sop/Center';
import {CircleSopOperation} from '../../../operations/sop/Circle';
import {ClipSopOperation} from '../../../operations/sop/Clip';
import {ConvexHullSopOperation} from '../../../operations/sop/ConvexHull';
import {CubeCameraSopOperation} from '../../../operations/sop/CubeCamera';
import {CurveFromPointsSopOperation} from '../../../operations/sop/CurveFromPoints';
import {CurveGetPointSopOperation} from '../../../operations/sop/CurveGetPoint';
import {DecalSopOperation} from '../../../operations/sop/Decal';
import {DeleteByNameSopOperation} from '../../../operations/sop/DeleteByName';
import {DeleteNonManifoldSopOperation} from '../../../operations/sop/DeleteNonManifold';
import {DirectionalLightSopOperation} from '../../../operations/sop/DirectionalLight';
import {EmptyObjectSopOperation} from '../../../operations/sop/EmptyObject';
import {File3DSSopOperation} from '../../../operations/sop/File3DS';
import {FileDRCSopOperation} from '../../../operations/sop/FileDRC';
import {FileFBXSopOperation} from '../../../operations/sop/FileFBX';
import {FileGLTFSopOperation} from '../../../operations/sop/FileGLTF';
import {FileGEOJSONSopOperation} from '../../../operations/sop/FileGEOJSON';
import {FileJSONSopOperation} from '../../../operations/sop/FileJSON';
import {FileMPDSopOperation} from '../../../operations/sop/FileMPD';
import {FileOBJSopOperation} from '../../../operations/sop/FileOBJ';
import {FilePDBSopOperation} from '../../../operations/sop/FilePDB';
import {FilePLYSopOperation} from '../../../operations/sop/FilePLY';
import {FileSTLSopOperation} from '../../../operations/sop/FileSTL';
import {FileSVGSopOperation} from '../../../operations/sop/FileSVG';
import {FileVOXSopOperation} from '../../../operations/sop/FileVOX';
import {HemisphereLightSopOperation} from '../../../operations/sop/HemisphereLight';
import {HexagonsSopOperation} from '../../../operations/sop/Hexagons';
import {HierarchySopOperation} from '../../../operations/sop/Hierarchy';
import {IcosahedronSopOperation} from '../../../operations/sop/Icosahedron';
import {InstanceSopOperation} from '../../../operations/sop/Instance';
import {InstancedMeshToMeshSopOperation} from '../../../operations/sop/InstancedMeshToMesh';
import {InstanceUpdateSopOperation} from '../../../operations/sop/InstanceUpdate';
import {JitterSopOperation} from '../../../operations/sop/Jitter';
import {LatticeSopOperation} from '../../../operations/sop/Lattice';
import {LightProbeSopOperation} from '../../../operations/sop/LightProbe';
import {LookAtSopOperation} from '../../../operations/sop/LookAt';
import {MapboxCameraSopOperation} from '../../../operations/sop/MapboxCamera';
import {MaterialSopOperation} from '../../../operations/sop/Material';
import {MeasureSopOperation} from '../../../operations/sop/Measure';
import {MergeSopOperation} from '../../../operations/sop/Merge';
import {MetaballSopOperation} from '../../../operations/sop/Metaball';
import {MirrorSopOperation} from '../../../operations/sop/Mirror';
import {MaterialPropertiesSopOperation} from '../../../operations/sop/MaterialProperties';
// import {MaterialPropertiesMeshStandardSopOperation} from '../../../operations/sop/MaterialPropertiesMeshStandard';
import {NullSopOperation} from '../../../operations/sop/Null';
import {ObjectPropertiesSopOperation} from '../../../operations/sop/ObjectProperties';
import {ObjectsLayoutSopOperation} from '../../../operations/sop/ObjectsLayout';
// import {OceanPlaneSopOperation} from '../../../operations/sop/OceanPlane';
import {OrthographicCameraSopOperation} from '../../../operations/sop/OrthographicCamera';
import {PaletteSopOperation} from '../../../operations/sop/Palette';
import {ParticlesSystemGpuAttributesSopOperation} from '../../../operations/sop/ParticlesSystemGpuAttributes';
import {ParticlesSystemGpuMaterialSopOperation} from '../../../operations/sop/ParticlesSystemGpuMaterial';
import {PeakSopOperation} from '../../../operations/sop/Peak';
import {PerspectiveCameraSopOperation} from '../../../operations/sop/PerspectiveCamera';
import {PlaneSopOperation} from '../../../operations/sop/Plane';
import {PlaneHelperSopOperation} from '../../../operations/sop/PlaneHelper';
import {PolarTransformSopOperation} from '../../../operations/sop/PolarTransform';
import {PolywireSopOperation} from '../../../operations/sop/Polywire';
import {PointLightSopOperation} from '../../../operations/sop/PointLight';
import {RaySopOperation} from '../../../operations/sop/Ray';
// import {ReflectorSopOperation} from '../../../operations/sop/Reflector';
import {RestAttributesSopOperation} from '../../../operations/sop/RestAttributes';
import {RingSopOperation} from '../../../operations/sop/Ring';
import {RoundedBoxSopOperation} from '../../../operations/sop/RoundedBox';
import {ScatterSopOperation} from '../../../operations/sop/Scatter';
import {SetChildrenSopOperation} from '../../../operations/sop/SetChildren';
import {SetGeometrySopOperation} from '../../../operations/sop/SetGeometry';
import {ShearSopOperation} from '../../../operations/sop/Shear';
import {SortSopOperation} from '../../../operations/sop/Sort';
import {SphereSopOperation} from '../../../operations/sop/Sphere';
import {SpotLightSopOperation} from '../../../operations/sop/SpotLight';
import {SubdivideSopOperation} from '../../../operations/sop/Subdivide';
import {TangentSopOperation} from '../../../operations/sop/Tangent';
import {TextureCopySopOperation} from '../../../operations/sop/TextureCopy';
import {TexturePropertiesSopOperation} from '../../../operations/sop/TextureProperties';
import {TorusSopOperation} from '../../../operations/sop/Torus';
import {TorusKnotSopOperation} from '../../../operations/sop/TorusKnot';
import {TubeSopOperation} from '../../../operations/sop/Tube';
import {TransformSopOperation} from '../../../operations/sop/Transform';
import {TransformResetSopOperation} from '../../../operations/sop/TransformReset';
// import {UvLayoutSopOperation} from '../../../operations/sop/UvLayout';
import {UvTransformSopOperation} from '../../../operations/sop/UvTransform';
import {UvUnwrapSopOperation} from '../../../operations/sop/UvUnwrap';
// import {WebXRControllerSopOperation} from '../../../operations/sop/WebXRController';

import {PolyEngine} from '../../../Poly';
export class SopRegister {
	static run(poly: PolyEngine) {
		poly.registerOperation(AddSopOperation);
		poly.registerOperation(AdjacencySopOperation);
		poly.registerOperation(AmbientLightSopOperation);
		poly.registerOperation(AreaLightSopOperation);
		poly.registerOperation(AttribAddMultSopOperation);
		poly.registerOperation(AttribCastSopOperation);
		poly.registerOperation(AttribCopySopOperation);
		poly.registerOperation(AttribCreateSopOperation);
		poly.registerOperation(AttribDeleteSopOperation);
		poly.registerOperation(AttribNormalizeSopOperation);
		poly.registerOperation(AttribFromTextureSopOperation);
		poly.registerOperation(AttribIdSopOperation);
		poly.registerOperation(AttribPromoteSopOperation);
		poly.registerOperation(AttribRenameSopOperation);
		poly.registerOperation(AttribSetAtIndexSopOperation);
		poly.registerOperation(AudioNotesSopOperation);
		poly.registerOperation(AxesHelperSopOperation);
		poly.registerOperation(BboxScatterSopOperation);
		poly.registerOperation(BooleanSopOperation);
		poly.registerOperation(BoxSopOperation);
		poly.registerOperation(BoxLinesSopOperation);
		poly.registerOperation(BVHSopOperation);
		poly.registerOperation(BVHVisualizerSopOperation);
		poly.registerOperation(CameraControlsSopOperation);
		poly.registerOperation(CameraFPSSopOperation);
		poly.registerOperation(CameraFrameModeSopOperation);
		poly.registerOperation(CameraCSSRendererSopOperation);
		poly.registerOperation(CameraPostProcessSopOperation);
		poly.registerOperation(CameraProjectSopOperation);
		poly.registerOperation(CameraRendererSopOperation);
		poly.registerOperation(CameraRenderSceneSopOperation);
		poly.registerOperation(CameraViewerCodeSopOperation);
		poly.registerOperation(CameraViewOffsetSopOperation);
		poly.registerOperation(CameraWebXRARMarkerTrackingSopOperation);
		poly.registerOperation(CameraWebXRARSopOperation);
		poly.registerOperation(CameraWebXRVRSopOperation);
		poly.registerOperation(CapsuleSopOperation);
		poly.registerOperation(CenterSopOperation);
		poly.registerOperation(CircleSopOperation);
		poly.registerOperation(ClipSopOperation);
		poly.registerOperation(ConvexHullSopOperation);
		poly.registerOperation(CubeCameraSopOperation);
		poly.registerOperation(CurveFromPointsSopOperation);
		poly.registerOperation(CurveGetPointSopOperation);
		poly.registerOperation(DecalSopOperation);
		poly.registerOperation(DeleteByNameSopOperation);
		poly.registerOperation(DeleteNonManifoldSopOperation);
		poly.registerOperation(DirectionalLightSopOperation);
		poly.registerOperation(EmptyObjectSopOperation);
		poly.registerOperation(File3DSSopOperation);
		poly.registerOperation(FileDRCSopOperation);
		poly.registerOperation(FileFBXSopOperation);
		poly.registerOperation(FileGLTFSopOperation);
		poly.registerOperation(FileGEOJSONSopOperation);
		poly.registerOperation(FileJSONSopOperation);
		poly.registerOperation(FileMPDSopOperation);
		poly.registerOperation(FileOBJSopOperation);
		poly.registerOperation(FilePDBSopOperation);
		poly.registerOperation(FilePLYSopOperation);
		poly.registerOperation(FileSTLSopOperation);
		poly.registerOperation(FileSVGSopOperation);
		poly.registerOperation(FileVOXSopOperation);
		poly.registerOperation(HemisphereLightSopOperation);
		poly.registerOperation(HexagonsSopOperation);
		poly.registerOperation(HierarchySopOperation);
		poly.registerOperation(IcosahedronSopOperation);
		poly.registerOperation(InstanceSopOperation);
		poly.registerOperation(InstancedMeshToMeshSopOperation);
		poly.registerOperation(InstanceUpdateSopOperation);
		poly.registerOperation(JitterSopOperation);
		poly.registerOperation(LatticeSopOperation);
		poly.registerOperation(LightProbeSopOperation);
		poly.registerOperation(LookAtSopOperation);
		poly.registerOperation(MapboxCameraSopOperation);
		poly.registerOperation(MaterialSopOperation);
		poly.registerOperation(MaterialPropertiesSopOperation);
		poly.registerOperation(MeasureSopOperation);
		poly.registerOperation(MergeSopOperation);
		poly.registerOperation(MetaballSopOperation);
		poly.registerOperation(MirrorSopOperation);
		// poly.registerOperation(MaterialPropertiesMeshStandardSopOperation);
		poly.registerOperation(NullSopOperation);
		poly.registerOperation(ObjectPropertiesSopOperation);
		poly.registerOperation(ObjectsLayoutSopOperation);
		// poly.registerOperation(OceanPlaneSopOperation);
		poly.registerOperation(OrthographicCameraSopOperation);
		poly.registerOperation(PaletteSopOperation);
		poly.registerOperation(ParticlesSystemGpuAttributesSopOperation);
		poly.registerOperation(ParticlesSystemGpuMaterialSopOperation);
		poly.registerOperation(PeakSopOperation);
		poly.registerOperation(PerspectiveCameraSopOperation);
		poly.registerOperation(PlaneSopOperation);
		poly.registerOperation(PlaneHelperSopOperation);
		poly.registerOperation(PointLightSopOperation);
		poly.registerOperation(PolarTransformSopOperation);
		poly.registerOperation(PolywireSopOperation);
		poly.registerOperation(RaySopOperation);
		// poly.registerOperation(ReflectorSopOperation);
		poly.registerOperation(RestAttributesSopOperation);
		poly.registerOperation(RingSopOperation);
		poly.registerOperation(RoundedBoxSopOperation);
		poly.registerOperation(ScatterSopOperation);
		poly.registerOperation(SetChildrenSopOperation);
		poly.registerOperation(SetGeometrySopOperation);
		poly.registerOperation(ShearSopOperation);
		poly.registerOperation(SortSopOperation);
		poly.registerOperation(SphereSopOperation);
		poly.registerOperation(SpotLightSopOperation);
		poly.registerOperation(SubdivideSopOperation);
		poly.registerOperation(TangentSopOperation);
		poly.registerOperation(TextureCopySopOperation);
		poly.registerOperation(TexturePropertiesSopOperation);
		poly.registerOperation(TorusSopOperation);
		poly.registerOperation(TorusKnotSopOperation);
		poly.registerOperation(TransformSopOperation);
		poly.registerOperation(TransformResetSopOperation);
		poly.registerOperation(TubeSopOperation);
		// poly.registerOperation(UvLayoutSopOperation);
		poly.registerOperation(UvTransformSopOperation);
		poly.registerOperation(UvUnwrapSopOperation);
		// poly.registerOperation(WebXRControllerSopOperation);

		poly.registerNode(ActorSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ActorInstanceSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ActorPointSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(AddSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(AdjacencySopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(AmbientLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(AnimationCopySopNode, CATEGORY_SOP.ANIMATION);
		// poly.registerNode(AnimationMixerSopNode, CATEGORY_SOP.ANIMATION);
		poly.registerNode(AreaLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(AttribAddMultSopNode, CATEGORY_SOP.ATTRIBUTE);
		// if (process.env.NODE_ENV == 'development') {
		// 	poly.registerNode(AttribAudioAnalyserSopNode, CATEGORY_SOP.AUDIO);
		// }
		poly.registerNode(AttribCastSopNode, 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(AttribIdSopNode, 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(AttribSetAtIndexSopNode, CATEGORY_SOP.ATTRIBUTE);
		poly.registerNode(AttribTransferSopNode, CATEGORY_SOP.ATTRIBUTE);
		poly.registerNode(AudioNotesSopNode, CATEGORY_SOP.AUDIO);
		poly.registerNode(AxesHelperSopNode, CATEGORY_SOP.HELPERS);
		poly.registerNode(BboxScatterSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(BlendSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(BooleanSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(BoxSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(BoxLinesSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(BVHSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(BVHVisualizerSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(CacheSopNode, CATEGORY_SOP.MISC);
		// CAD
		poly.registerNode(CADBooleanSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADBoxSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADCircleSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADCircle2DSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CADCircle3PointsSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADConeSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADConvertDimensionSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADCurve2DToSurfaceSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADCurveFromPointsSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADCurveFromPoints2DSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADCurveTrimSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADEllipseSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADEllipse2DSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CADExporterSTEPSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.OUTPUT]);
		poly.registerNode(CADExtrudeSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADFileSTEPSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.INPUT]);
		poly.registerNode(CADFilletSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADGroupSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADLoftSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADMirrorSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADPipeSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADPointSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADPoint2DSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CADPointsFromCurveSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADRectangleSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADRevolutionSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADSegmentSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADSphereSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADThicknessSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADTorusSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADTransformSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADTransform2DSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADTriangulateSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADTubeSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CADUnpackSopNode, CATEGORY_SOP.CAD);
		poly.registerNode(CADWedgeSopNode, [CATEGORY_SOP.CAD, CATEGORY_SOP.PRIMITIVES]);
		//
		poly.registerNode(CameraControlsSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraFPSSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraFrameModeSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraCSSRendererSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraPlaneSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CameraPostProcessSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraProjectSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(CameraRendererSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraRenderSceneSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraViewerCodeSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraViewOffsetSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(CameraWebXRARMarkerTrackingSopNode, [CATEGORY_SOP.CAMERA, CATEGORY_SOP.WEBXR]);
		poly.registerNode(CameraWebXRARSopNode, [CATEGORY_SOP.CAMERA, CATEGORY_SOP.WEBXR]);
		poly.registerNode(CameraWebXRVRSopNode, [CATEGORY_SOP.CAMERA, CATEGORY_SOP.WEBXR]);
		poly.registerNode(CapsuleSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CenterSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CircleSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(Circle3PointsSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(ClipSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ClothPrepareSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(ClothSolverSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(CodeSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(ColorSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ConeSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(ContactShadowsSopNode, CATEGORY_SOP.RENDER);
		poly.registerNode(ConvexHullSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(CopySopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(CurveFromPointsSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CurveGetPointSopNode, CATEGORY_SOP.MODIFIER);
		// CSG
		poly.registerNode(CSGArcSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGBooleanSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGBoxSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGCenterSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGCircleSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGDodecahedronSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGEllipseSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGEllipsoidSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGExpandSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGExtrudeLinearSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGExtrudeRectangularSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGExtrudeRotateSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGHullSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGLineSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGMirrorSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGOffsetSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGPolygonSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGPolyhedronSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGProjectSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGRectangleSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGTransformResetSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGSphereSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGStarSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES_2D]);
		poly.registerNode(CSGTorusSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGTransform2DSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGTriangulateSopNode, CATEGORY_SOP.CSG);
		poly.registerNode(CSGTriangleSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGTubeSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		poly.registerNode(CSGTubeEllipticSopNode, [CATEGORY_SOP.CSG, CATEGORY_SOP.PRIMITIVES]);
		//
		poly.registerNode(CSS2DObjectSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CSS3DObjectSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(CubeCameraSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(DataSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(DataUrlSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(DecalSopNode, CATEGORY_SOP.MISC);
		poly.registerNode(DecomposeSopNode, CATEGORY_SOP.MISC);
		poly.registerNode(DelaySopNode, CATEGORY_SOP.MISC);
		poly.registerNode(DeleteSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(DeleteByNameSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(DeleteNonManifoldSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(DirectionalLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(DrawRangeSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(EmptyObjectSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(EntityBuilderSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ExporterGLTFSopNode, CATEGORY_SOP.OUTPUT);
		poly.registerNode(ExporterOBJSopNode, CATEGORY_SOP.OUTPUT);
		poly.registerNode(ExporterPLYSopNode, CATEGORY_SOP.OUTPUT);
		poly.registerNode(ExporterSTLSopNode, CATEGORY_SOP.OUTPUT);
		poly.registerNode(ExtrudeOpenEdgesSopNode, CATEGORY_SOP.MODIFIER);
		// poly.registerNode(ExporterUSDZSopNode, CATEGORY_SOP.OUTPUT);
		poly.registerNode(FaceSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(FacetSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(File3DSSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileDRCSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileFBXSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileGEOJSONSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileGLTFSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileJSONSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileMPDSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileMultiGLTFSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileMultiOBJSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileOBJSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FilePDBSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FilePLYSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileSTLSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileSVGSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileUSDZSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FileVOXSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(FuseSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(GroundProjectedSkyboxSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(HemisphereLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(HeightMapSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(HexagonsSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(HierarchySopNode, CATEGORY_SOP.MISC);
		poly.registerNode(IcosahedronSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(InstanceSopNode, CATEGORY_SOP.INSTANCE);
		poly.registerNode(InstanceBuilderSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(InstancedMeshToMeshSopNode, CATEGORY_SOP.INSTANCE);
		poly.registerNode(InstanceUpdateSopNode, CATEGORY_SOP.INSTANCE);
		poly.registerNode(InstancesCountSopNode, CATEGORY_SOP.INSTANCE);
		poly.registerNode(JitterSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(LatticeSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(LayerSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(LightMixerSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(LightProbeSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(LineSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(LodSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(LookAtSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ManifoldTestSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(MapboxCameraSopNode, CATEGORY_SOP.MAPS);
		poly.registerNode(MapboxLayerSopNode, CATEGORY_SOP.MAPS);
		poly.registerNode(MapboxPlaneSopNode, CATEGORY_SOP.MAPS);
		poly.registerNode(MapboxTransformSopNode, CATEGORY_SOP.MAPS);
		poly.registerNode(MaterialSopNode, CATEGORY_SOP.RENDER);
		poly.registerNode(MaterialPropertiesSopNode, CATEGORY_SOP.RENDER);
		// poly.registerNode(MaterialPropertiesMeshStandardSopNode, CATEGORY_SOP.RENDER);
		poly.registerNode(MeasureSopNode, CATEGORY_SOP.ATTRIBUTE);
		poly.registerNode(MergeSopNode, CATEGORY_SOP.FLOW);
		poly.registerNode(MetaballSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(MirrorSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(NoiseSopNode, CATEGORY_SOP.MISC);
		poly.registerNode(NormalsSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(NormalsHelperSopNode, CATEGORY_SOP.HELPERS);
		poly.registerNode(NullSopNode, CATEGORY_SOP.FLOW);
		poly.registerNode(ObjectBuilderSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ObjectMergeSopNode, CATEGORY_SOP.INPUT);
		poly.registerNode(ObjectPropertiesSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ObjectsLayoutSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(OceanPlaneSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(OperationsComposerSopNode, CATEGORY_SOP.ADVANCED, {userAllowed: false});
		poly.registerNode(OrthographicCameraSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(PaletteSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ParticlesSystemGpuSopNode, CATEGORY_SOP.DYNAMICS);
		poly.registerNode(ParticlesSystemGpuAttributesSopNode, CATEGORY_SOP.DYNAMICS);
		poly.registerNode(ParticlesSystemGpuMaterialSopNode, CATEGORY_SOP.DYNAMICS);
		poly.registerNode(PeakSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(PerspectiveCameraSopNode, CATEGORY_SOP.CAMERA);
		poly.registerNode(PhysicsDebugSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PhysicsGroundSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PhysicsPlayerSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PhysicsRBDJointsSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PhysicsRBDAttributesSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PhysicsWorldSopNode, CATEGORY_SOP.PHYSICS);
		poly.registerNode(PlaneSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(PlaneHelperSopNode, CATEGORY_SOP.HELPERS);
		poly.registerNode(PolarTransformSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(PointBuilderSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(PointSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(PointLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(PolywireSopNode, CATEGORY_SOP.MODIFIER);
		// QUAD
		poly.registerNode(QuadConnectionSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadCornersSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadExtrudeSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadFuseSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadMirrorSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadPlaneSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadSmoothSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadTriangulateSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadUniqueNeighbourIdSopNode, CATEGORY_SOP.QUAD);
		poly.registerNode(QuadrangulateSopNode, CATEGORY_SOP.QUAD);
		//
		poly.registerNode(RaySopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ReflectorSopNode, CATEGORY_SOP.RENDER);
		poly.registerNode(ResampleSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(RestAttributesSopNode, CATEGORY_SOP.ATTRIBUTE);
		poly.registerNode(RingSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(RoundedBoxSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(ScatterSopNode, CATEGORY_SOP.MODIFIER);
		// SDF
		// poly.registerNode(SDFBooleanSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFBoxSopNode, CATEGORY_SOP.SDF);
		poly.registerNode(SDFBuilderSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFExtrudeSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFLevelSetSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFRefineSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFSmoothSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFSphereSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFTriangulateSopNode, CATEGORY_SOP.SDF);
		// poly.registerNode(SDFTubeSopNode, CATEGORY_SOP.SDF);
		//
		poly.registerNode(SetChildrenSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SetGeometrySopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SkeletonHelperSopNode, CATEGORY_SOP.HELPERS);
		poly.registerNode(SkinSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ShearSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(ShortestPathSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SolverSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(SolverPreviousFrameSopNode, CATEGORY_SOP.ADVANCED);
		poly.registerNode(SortSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SphereSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(SplitSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SpotLightSopNode, CATEGORY_SOP.LIGHTS);
		poly.registerNode(SubdivideSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(SubnetSopNode, CATEGORY_SOP.SUBNET);
		poly.registerNode(
			SubnetInputSopNode,
			CATEGORY_SOP.SUBNET /*{
			// TODO: use "except" so that it works inside PolyNodes
			// only: [`${NodeContext.SOP}/${SubnetSopNode.type()}`, `${NodeContext.SOP}/poly`],
		}*/
		);
		poly.registerNode(
			SubnetOutputSopNode,
			CATEGORY_SOP.SUBNET /*{
			// only: [`${NodeContext.SOP}/${SubnetSopNode.type()}`, `${NodeContext.SOP}/poly`],
		}*/
		);
		poly.registerNode(SwitchSopNode, CATEGORY_SOP.FLOW);
		poly.registerNode(TangentSopNode, CATEGORY_SOP.ATTRIBUTE);
		poly.registerNode(TangentsHelperSopNode, CATEGORY_SOP.HELPERS);
		//
		// poly.registerNode(TetBunnySopNode, CATEGORY_SOP.TET);
		poly.registerNode(TetDeleteSopNode, CATEGORY_SOP.TET);
		poly.registerNode(TetEmbedSopNode, CATEGORY_SOP.TET);
		poly.registerNode(TetSoftBodySolverSopNode, CATEGORY_SOP.TET);
		poly.registerNode(TetTriangulateSopNode, CATEGORY_SOP.TET);
		poly.registerNode(TetrahedralizeSopNode, CATEGORY_SOP.TET);
		//
		poly.registerNode(TetrahedronSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(TextSopNode, CATEGORY_SOP.PRIMITIVES);
		poly.registerNode(TextureCopySopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(TexturePropertiesSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(TrackingLandmarksFaceSopNode, CATEGORY_SOP.COMPUTER_VISION);
		poly.registerNode(TrackingLandmarksFaceAttributesSopNode, CATEGORY_SOP.COMPUTER_VISION);
		poly.registerNode(TrackingLandmarksHandSopNode, CATEGORY_SOP.COMPUTER_VISION);
		poly.registerNode(TrackingLandmarksHandAttributesSopNode, CATEGORY_SOP.COMPUTER_VISION);
		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(UvLayoutSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(UvProjectSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(UvTransformSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(UvUnwrapSopNode, CATEGORY_SOP.MODIFIER);
		poly.registerNode(WebXRAREstimatedLightSopNode, CATEGORY_SOP.WEBXR);
		poly.registerNode(WFCBuilderSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCDebugSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCRuleFromProximitySopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCRuleConnectionFromSideNameSopNode, CATEGORY_SOP.WFC);
		// poly.registerNode(WFCRuleConnectionToEmptyTileSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCRuleConnectionToGridBorderSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCRuleTileWeightSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCSolverSopNode, CATEGORY_SOP.WFC);
		// poly.registerNode(WFCSolverUpdateSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTileEmptyObjectSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTileErrorObjectSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTilePropertiesSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTileSideNameSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTileTransformSopNode, CATEGORY_SOP.WFC);
		poly.registerNode(WFCTileUnresolvedObjectSopNode, CATEGORY_SOP.WFC);

		// networks
		poly.registerNode(ActorsNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(AnimationsNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(AudioNetworkSopNode, CATEGORY_SOP.NETWORK);
		// poly.registerNode(CadNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(CopNetworkSopNode, CATEGORY_SOP.NETWORK);
		// poly.registerNode(CsgNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(EventsNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(MaterialsNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(PostProcessNetworkSopNode, CATEGORY_SOP.NETWORK);
		poly.registerNode(RenderersNetworkSopNode, CATEGORY_SOP.NETWORK);
	}
}
