45 for (std::string attribute_name : attribute_names) {
46 if (attribute_name.empty()) {
50 if (!
component.attribute_try_delete(attribute_name)) {
52 TIP_(
"Cannot delete attribute with name \"") + attribute_name +
74 params.set_output(
"Geometry", geometry_set);
void node_type_socket_templates(struct bNodeType *ntype, struct bNodeSocketTemplate *inputs, struct bNodeSocketTemplate *outputs)
#define GEO_NODE_ATTRIBUTE_REMOVE
#define NODE_CLASS_ATTRIBUTE
void nodeRegisterType(struct bNodeType *ntype)
static uint8 component(Color32 c, uint i)
GeometrySet geometry_set_realize_instances(const GeometrySet &geometry_set)
static void geo_node_attribute_remove_exec(GeoNodeExecParams params)
static void remove_attribute(GeometryComponent &component, GeoNodeExecParams ¶ms, Span< std::string > attribute_names)
static bNodeSocketTemplate geo_node_attribute_remove_in[]
void register_node_type_geo_attribute_remove()
static bNodeSocketTemplate geo_node_attribute_remove_out[]
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass, short flag)
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
bool has(const GeometryComponentType component_type) const
Compact definition of a node socket.
NodeGeometryExecFunction geometry_node_execute