def point_node_items(context): if context is None: return space = context.space_data if not space: return if geometry_nodes_legacy_poll(context): yield NodeItem("GeometryNodeLegacyAlignRotationToVector", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyPointDistribute", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyPointInstance", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyPointScale", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyPointSeparate", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyPointTranslate", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyRotatePoints", poll=geometry_nodes_legacy_poll) yield NodeItemCustom( draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeDistributePointsOnFaces") yield NodeItem("GeometryNodePointsToVertices") yield NodeItem("GeometryNodePointsToVolume") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetPointRadius")
def geometry_node_items(context): if context is None: return space = context.space_data if not space: return if geometry_nodes_legacy_poll(context): yield NodeItem("GeometryNodeLegacyDeleteGeometry", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacyRaycast", poll=geometry_nodes_legacy_poll) yield NodeItemCustom( draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeBoundBox") yield NodeItem("GeometryNodeConvexHull") yield NodeItem("GeometryNodeDeleteGeometry") yield NodeItem("GeometryNodeGeometryToInstance") yield NodeItem("GeometryNodeMergeByDistance") yield NodeItem("GeometryNodeProximity") yield NodeItem("GeometryNodeJoinGeometry") yield NodeItem("GeometryNodeRaycast") yield NodeItem("GeometryNodeSeparateComponents") yield NodeItem("GeometryNodeSeparateGeometry") yield NodeItem("GeometryNodeTransform") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetID") yield NodeItem("GeometryNodeSetPosition")
def geometry_input_node_items(context): if context is None: return space = context.space_data if not space: return if geometry_nodes_legacy_poll(context): yield NodeItem("FunctionNodeLegacyRandomFloat") yield NodeItemCustom( draw=lambda self, layout, context: layout.separator()) yield NodeItem("FunctionNodeInputBool") yield NodeItem("GeometryNodeCollectionInfo") yield NodeItem("FunctionNodeInputColor") yield NodeItem("FunctionNodeInputInt") yield NodeItem("GeometryNodeIsViewport") yield NodeItem("GeometryNodeInputMaterial") yield NodeItem("GeometryNodeObjectInfo") yield NodeItem("FunctionNodeInputString") yield NodeItem("ShaderNodeValue") yield NodeItem("FunctionNodeInputVector") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputID") yield NodeItem("GeometryNodeInputIndex") yield NodeItem("GeometryNodeInputNormal") yield NodeItem("GeometryNodeInputPosition") yield NodeItem("GeometryNodeInputRadius") yield NodeItem("GeometryNodeInputSceneTime")
def mesh_node_items(context): if context is None: return space = context.space_data if not space: return yield NodeItem("GeometryNodeDualMesh") yield NodeItem("GeometryNodeExtrudeMesh") yield NodeItem("GeometryNodeFlipFaces") yield NodeItem("GeometryNodeMeshBoolean") yield NodeItem("GeometryNodeMeshToCurve") yield NodeItem("GeometryNodeMeshToPoints") yield NodeItem("GeometryNodeMeshToVolume") yield NodeItem("GeometryNodeSplitEdges") yield NodeItem("GeometryNodeSubdivideMesh") yield NodeItem("GeometryNodeSubdivisionSurface") yield NodeItem("GeometryNodeTriangulate") yield NodeItem("GeometryNodeScaleElements") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputMeshEdgeAngle") yield NodeItem("GeometryNodeInputMeshEdgeNeighbors") yield NodeItem("GeometryNodeInputMeshEdgeVertices") yield NodeItem("GeometryNodeInputMeshFaceArea") yield NodeItem("GeometryNodeInputMeshFaceNeighbors") yield NodeItem("GeometryNodeInputMeshFaceIsPlanar") yield NodeItem("GeometryNodeInputMeshIsland") yield NodeItem("GeometryNodeInputShadeSmooth") yield NodeItem("GeometryNodeInputMeshVertexNeighbors") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetShadeSmooth")
def mesh_node_items(context): if context is None: return space = context.space_data if not space: return if geometry_nodes_legacy_poll(context): yield NodeItem("GeometryNodeLegacyEdgeSplit", poll=geometry_nodes_legacy_poll) yield NodeItem("GeometryNodeLegacySubdivisionSurface", poll=geometry_nodes_legacy_poll) yield NodeItemCustom( draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeMeshBoolean") yield NodeItem("GeometryNodeMeshToCurve") yield NodeItem("GeometryNodeMeshToPoints") yield NodeItem("GeometryNodeSplitEdges") yield NodeItem("GeometryNodeSubdivideMesh") yield NodeItem("GeometryNodeSubdivisionSurface") yield NodeItem("GeometryNodeTriangulate") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputShadeSmooth") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetShadeSmooth")
def curve_node_items(context): if context is None: return space = context.space_data if not space: return yield NodeItem("GeometryNodeCurveLength") yield NodeItem("GeometryNodeCurveToMesh") yield NodeItem("GeometryNodeCurveToPoints") yield NodeItem("GeometryNodeDeformCurvesOnSurface") yield NodeItem("GeometryNodeFillCurve") yield NodeItem("GeometryNodeFilletCurve") yield NodeItem("GeometryNodeResampleCurve") yield NodeItem("GeometryNodeReverseCurve") yield NodeItem("GeometryNodeSampleCurve") yield NodeItem("GeometryNodeSubdivideCurve") yield NodeItem("GeometryNodeTrimCurve") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputCurveHandlePositions") yield NodeItem("GeometryNodeInputTangent") yield NodeItem("GeometryNodeInputCurveTilt") yield NodeItem("GeometryNodeCurveEndpointSelection") yield NodeItem("GeometryNodeCurveHandleTypeSelection") yield NodeItem("GeometryNodeInputSplineCyclic") yield NodeItem("GeometryNodeSplineLength") yield NodeItem("GeometryNodeSplineParameter") yield NodeItem("GeometryNodeInputSplineResolution") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetCurveRadius") yield NodeItem("GeometryNodeSetCurveTilt") yield NodeItem("GeometryNodeSetCurveHandlePositions") yield NodeItem("GeometryNodeCurveSetHandles") yield NodeItem("GeometryNodeSetSplineCyclic") yield NodeItem("GeometryNodeSetSplineResolution") yield NodeItem("GeometryNodeCurveSplineType")
def point_node_items(context): if context is None: return space = context.space_data if not space: return yield NodeItem("GeometryNodeDistributePointsOnFaces") yield NodeItem("GeometryNodePointsToVertices") yield NodeItem("GeometryNodePointsToVolume") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetPointRadius")
def geometry_material_node_items(context): if context is None: return space = context.space_data if not space: return yield NodeItem("GeometryNodeReplaceMaterial") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputMaterialIndex") yield NodeItem("GeometryNodeMaterialSelection") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetMaterial") yield NodeItem("GeometryNodeSetMaterialIndex")
def node_group_items(context): if context is None: return space = context.space_data if not space: return ntree = space.edit_tree if not ntree: return yield NodeItemCustom(draw=group_tools_draw) def contains_group(nodetree, group): if nodetree == group: return True else: for node in nodetree.nodes: if node.bl_idname in node_tree_group_type.values( ) and node.node_tree is not None: if contains_group(node.node_tree, group): return True return False for group in context.blend_data.node_groups: if group.bl_idname != ntree.bl_idname: continue # filter out recursive groups if contains_group(group, ntree): continue # filter out hidden nodetrees if group.name.startswith('.'): continue yield NodeItem(node_tree_group_type[group.bl_idname], group.name, {"node_tree": "bpy.data.node_groups[%r]" % group.name})
def curve_node_items(context): if context is None: return space = context.space_data if not space: return if not space.edit_tree: return if geometry_nodes_legacy_poll(context): yield NodeItem("GeometryNodeLegacyCurveEndpoints") yield NodeItem("GeometryNodeLegacyCurveReverse") yield NodeItem("GeometryNodeLegacyCurveSubdivide") yield NodeItem("GeometryNodeLegacyCurveToPoints") yield NodeItem("GeometryNodeLegacyMeshToCurve") yield NodeItem("GeometryNodeLegacyCurveSelectHandles") yield NodeItem("GeometryNodeLegacyCurveSetHandles") yield NodeItem("GeometryNodeLegacyCurveSplineType") yield NodeItemCustom( draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeCurveFill") yield NodeItem("GeometryNodeCurveFillet") yield NodeItem("GeometryNodeCurveLength") yield NodeItem("GeometryNodeCurveReverse") yield NodeItem("GeometryNodeCurveSample") yield NodeItem("GeometryNodeCurveSubdivide") yield NodeItem("GeometryNodeCurveToMesh") yield NodeItem("GeometryNodeCurveTrim") yield NodeItem("GeometryNodeCurveResample") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputCurveHandlePositions") yield NodeItem("GeometryNodeCurveParameter") yield NodeItem("GeometryNodeInputTangent") yield NodeItem("GeometryNodeInputCurveTilt") yield NodeItem("GeometryNodeCurveHandleTypeSelection") yield NodeItem("GeometryNodeInputSplineCyclic") yield NodeItem("GeometryNodeSplineLength") yield NodeItem("GeometryNodeInputSplineResolution") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetCurveRadius") yield NodeItem("GeometryNodeSetCurveTilt") yield NodeItem("GeometryNodeSetCurveHandlePositions") yield NodeItem("GeometryNodeCurveSetHandles") yield NodeItem("GeometryNodeSetSplineCyclic") yield NodeItem("GeometryNodeSetSplineResolution") yield NodeItem("GeometryNodeCurveSplineType")
def node_group_items(context): if context is None: return space = context.space_data if not space: return yield NodeItemCustom(draw=group_tools_draw) yield NodeItem("NodeGroupInput", poll=group_input_output_item_poll) yield NodeItem("NodeGroupOutput", poll=group_input_output_item_poll) ntree = space.edit_tree if not ntree: return yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) def contains_group(nodetree, group): if nodetree == group: return True else: for node in nodetree.nodes: if node.bl_idname in node_tree_group_type.values( ) and node.node_tree is not None: if contains_group(node.node_tree, group): return True return False for group in context.blend_data.node_groups: if group.bl_idname != ntree.bl_idname: continue # filter out recursive groups if contains_group(group, ntree): continue # filter out hidden nodetrees if group.name.startswith('.'): continue yield NodeItem( node_tree_group_type[group.bl_idname], label=group.name, settings={"node_tree": "bpy.data.node_groups[%r]" % group.name})
def geometry_material_node_items(context): if context is None: return space = context.space_data if not space: return if not space.edit_tree: return if geometry_nodes_legacy_poll(context): yield NodeItem("GeometryNodeLegacyMaterialAssign") yield NodeItem("GeometryNodeLegacySelectByMaterial") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeReplaceMaterial") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputMaterialIndex") yield NodeItem("GeometryNodeMaterialSelection") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeSetMaterial") yield NodeItem("GeometryNodeSetMaterialIndex")
def geometry_instance_node_items(context): if context is None: return space = context.space_data if not space: return yield NodeItem("GeometryNodeInstanceOnPoints") yield NodeItem("GeometryNodeInstancesToPoints") yield NodeItem("GeometryNodeRealizeInstances") yield NodeItem("GeometryNodeRotateInstances") yield NodeItem("GeometryNodeScaleInstances") yield NodeItem("GeometryNodeTranslateInstances") yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) yield NodeItem("GeometryNodeInputInstanceRotation") yield NodeItem("GeometryNodeInputInstanceScale")
def sv_group_items(context): """ Based on the built in node_group_items in the blender distrubution somewhat edited to fit. """ if context is None: return space = context.space_data if not space: return ntree = space.edit_tree if not ntree: return yield NodeItemCustom(draw=draw_node_ops) def contains_group(nodetree, group): if nodetree == group: return True else: for node in nodetree.nodes: if node.bl_idname in node_tree_group_type.values( ) and node.node_tree is not None: if contains_group(node.node_tree, group): return True return False if ntree.bl_idname == "SverchGroupTreeType": yield NodeItem("SvMonadInfoNode", "Monad Info") for monad in context.blend_data.node_groups: if monad.bl_idname != "SverchGroupTreeType": continue # make sure class exists cls_ref = get_node_class_reference(monad.cls_bl_idname) if cls_ref and monad.cls_bl_idname: yield NodeItem(monad.cls_bl_idname, monad.name) elif monad.cls_bl_idname: monad_cls_template_dict = { "cls_bl_idname": "str('{}')".format(monad.cls_bl_idname) } yield NodeItem("SvMonadGenericNode", monad.name, monad_cls_template_dict)