15 .
description(
"The corner to retrieve data from. Defaults to the corner from the context")
16 .structure_type(StructureType::Field);
18 .field_source_reference_all()
19 .
description(
"The index of the face the corner is a part of");
21 .field_source_reference_all()
22 .
description(
"The index of the corner starting from the first corner in the face");
36 if (domain != AttrDomain::Corner) {
44 return 2348712958475728;
64 if (domain != AttrDomain::Corner) {
68 const Span<int> corner_to_face = mesh.corner_to_face_map();
70 const int face_i = corner_to_face[corner];
71 return corner - faces[face_i].start();
87 return AttrDomain::Corner;
94 if (
params.output_is_required(
"Face Index")) {
95 params.set_output(
"Face Index",
96 Field<int>(std::make_shared<bke::EvaluateAtIndexInput>(
98 Field<int>(std::make_shared<CornerFaceIndexInput>()),
99 AttrDomain::Corner)));
101 if (
params.output_is_required(
"Index in Face")) {
102 params.set_output(
"Index in Face",
103 Field<int>(std::make_shared<bke::EvaluateAtIndexInput>(
105 Field<int>(std::make_shared<CornerIndexInFaceInput>()),
106 AttrDomain::Corner)));
114 ntype.
ui_name =
"Face of Corner";
115 ntype.
ui_description =
"Retrieve the face each face corner is part of";
#define GEO_NODE_MESH_TOPOLOGY_FACE_OF_CORNER
@ NODE_DEFAULT_INPUT_INDEX_FIELD
#define NOD_REGISTER_NODE(REGISTER_FUNC)
unsigned long long int uint64_t
static VArray from_func(const int64_t size, GetFunc get_func)
static VArray from_span(Span< T > values)
void node_register_type(bNodeType &ntype)
static void node_declare(NodeDeclarationBuilder &b)
static void node_register()
static void node_geo_exec(GeoNodeExecParams params)
void geo_node_type_base(blender::bke::bNodeType *ntype, std::string idname, const std::optional< int16_t > legacy_type)
std::string ui_description
NodeGeometryExecFunction geometry_node_execute
const char * enum_name_legacy
NodeDeclareFunction declare