- CustomDataType -> eCustomDataType - CustomDataMask -> eCustomDataMask - AttributeDomain -> eAttrDomain - NamedAttributeUsage -> eNamedAttrUsage
62 lines
1.6 KiB
C++
62 lines
1.6 KiB
C++
/* 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<eCustomDataType> 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<eCustomDataType> node_socket_to_custom_data_type(const bNodeSocket &socket)
|
|
{
|
|
return node_data_type_to_custom_data_type(static_cast<eNodeSocketDatatype>(socket.type));
|
|
}
|
|
|
|
} // namespace blender::nodes
|
|
|
|
bool geo_node_poll_default(bNodeType *UNUSED(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;
|
|
}
|