/* SPDX-License-Identifier: GPL-2.0-or-later */ #include "node_geometry_util.hh" #include "node_util.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "BKE_mesh.h" #include "BKE_mesh_runtime.h" #include "BKE_pointcloud.h" #include "NOD_socket_search_link.hh" namespace blender::nodes { std::optional node_data_type_to_custom_data_type(const eNodeSocketDatatype type) { switch (type) { case SOCK_FLOAT: return CD_PROP_FLOAT; case SOCK_VECTOR: return CD_PROP_FLOAT3; case SOCK_RGBA: return CD_PROP_COLOR; case SOCK_BOOLEAN: return CD_PROP_BOOL; case SOCK_INT: return CD_PROP_INT32; case SOCK_STRING: return CD_PROP_STRING; default: return {}; } } std::optional node_socket_to_custom_data_type(const bNodeSocket &socket) { return node_data_type_to_custom_data_type(eNodeSocketDatatype(socket.type)); } } // namespace blender::nodes bool geo_node_poll_default(bNodeType * /*ntype*/, bNodeTree *ntree, const char **r_disabled_hint) { if (!STREQ(ntree->idname, "GeometryNodeTree")) { *r_disabled_hint = TIP_("Not a geometry node tree"); return false; } return true; } void geo_node_type_base(bNodeType *ntype, int type, const char *name, short nclass) { node_type_base(ntype, type, name, nclass); ntype->poll = geo_node_poll_default; ntype->insert_link = node_insert_link_default; ntype->gather_link_search_ops = blender::nodes::search_link_ops_for_basic_node; }