19 const std::string name =
params.extract_input<std::string>(
"Name");
21 params.set_output(
"Geometry", std::move(geometry_set));
26 params.set_output(
"Geometry", std::move(geometry_set));
30 std::atomic<bool> attribute_exists =
false;
31 std::atomic<bool> cannot_delete =
false;
42 if (read_only_component.
attributes()->contains(name)) {
43 attribute_exists =
true;
50 if (!
component.attributes_for_write()->remove(name)) {
57 if (attribute_exists && !cannot_delete) {
58 params.used_named_attribute(name, eNamedAttrUsage::Remove);
61 if (!attribute_exists) {
63 TIP_(
"Attribute does not exist: \"") + name +
"\"");
66 params.error_message_add(NodeWarningType::Warning,
67 TIP_(
"Cannot delete built-in attribute with name \"") + name +
"\"");
70 params.set_output(
"Geometry", std::move(geometry_set));
@ GEO_COMPONENT_TYPE_MESH
@ GEO_COMPONENT_TYPE_POINT_CLOUD
@ GEO_COMPONENT_TYPE_INSTANCES
@ GEO_COMPONENT_TYPE_CURVE
void node_type_size(struct bNodeType *ntype, int width, int minwidth, int maxwidth)
#define GEO_NODE_REMOVE_ATTRIBUTE
#define NODE_CLASS_ATTRIBUTE
void nodeRegisterType(struct bNodeType *ntype)
static uint8 component(Color32 c, uint i)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
in reality light always falls off quadratically Particle Info
virtual std::optional< blender::bke::AttributeAccessor > attributes() const
bool allow_procedural_attribute_access(StringRef attribute_name)
const char * no_procedural_access_message
static void node_declare(NodeDeclarationBuilder &b)
static void node_geo_exec(GeoNodeExecParams params)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
void register_node_type_geo_remove_attribute()
void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass)
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
bool has(const GeometryComponentType component_type) const
const GeometryComponent * get_component_for_read(GeometryComponentType component_type) const
void modify_geometry_sets(ForeachSubGeometryCallback callback)
NodeGeometryExecFunction geometry_node_execute
NodeDeclareFunction declare