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()
20 "The edge after the corner in the face, in the direction of increasing indices");
22 .field_source_reference_all()
24 "The edge before the corner in the face, in the direction of decreasing indices");
38 if (domain != AttrDomain::Corner) {
56 return AttrDomain::Corner;
71 if (domain != AttrDomain::Corner) {
75 const Span<int> corner_edges = mesh.corner_edges();
76 const Span<int> corner_to_face = mesh.corner_to_face_map();
78 corner_edges.
size(), [
faces, corner_edges, corner_to_face](
const int corner) {
79 return corner_edges[bke::mesh::face_corner_prev(faces[corner_to_face[corner]], corner)];
85 return 987298345762465;
95 return AttrDomain::Corner;
102 if (
params.output_is_required(
"Next Edge Index")) {
103 params.set_output(
"Next Edge Index",
104 Field<int>(std::make_shared<bke::EvaluateAtIndexInput>(
106 Field<int>(std::make_shared<CornerNextEdgeFieldInput>()),
107 AttrDomain::Corner)));
109 if (
params.output_is_required(
"Previous Edge Index")) {
110 params.set_output(
"Previous Edge Index",
111 Field<int>(std::make_shared<bke::EvaluateAtIndexInput>(
113 Field<int>(std::make_shared<CornerPreviousEdgeFieldInput>()),
114 AttrDomain::Corner)));
122 ntype.
ui_name =
"Edges of Corner";
123 ntype.
ui_description =
"Retrieve the edges on both sides of a face corner";
#define GEO_NODE_MESH_TOPOLOGY_EDGES_OF_CORNER
@ NODE_DEFAULT_INPUT_INDEX_FIELD
#define NOD_REGISTER_NODE(REGISTER_FUNC)
unsigned long long int uint64_t
constexpr int64_t size() const
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