Differential D16893 Diff 59260 source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_input_mesh_vertex_neighbors.cc
| Show First 20 Lines • Show All 61 Lines • ▼ Show 20 Lines | public: | ||||
| std::optional<eAttrDomain> preferred_domain(const Mesh & /*mesh*/) const override | std::optional<eAttrDomain> preferred_domain(const Mesh & /*mesh*/) const override | ||||
| { | { | ||||
| return ATTR_DOMAIN_POINT; | return ATTR_DOMAIN_POINT; | ||||
| } | } | ||||
| }; | }; | ||||
| static VArray<int> construct_face_count_gvarray(const Mesh &mesh, const eAttrDomain domain) | static VArray<int> construct_face_count_gvarray(const Mesh &mesh, const eAttrDomain domain) | ||||
| { | { | ||||
| const Span<MLoop> loops = mesh.loops(); | const Span<int> corner_verts = mesh.corner_verts(); | ||||
| if (domain == ATTR_DOMAIN_POINT) { | if (domain == ATTR_DOMAIN_POINT) { | ||||
| Array<int> vertices(mesh.totvert, 0); | Array<int> vertices(mesh.totvert, 0); | ||||
| for (const int i : loops.index_range()) { | for (const int vert_i : corner_verts) { | ||||
| int vertex = loops[i].v; | vertices[vert_i]++; | ||||
| vertices[vertex]++; | |||||
| } | } | ||||
| return VArray<int>::ForContainer(std::move(vertices)); | return VArray<int>::ForContainer(std::move(vertices)); | ||||
| } | } | ||||
| return {}; | return {}; | ||||
| } | } | ||||
| class VertexFaceCountFieldInput final : public bke::MeshFieldInput { | class VertexFaceCountFieldInput final : public bke::MeshFieldInput { | ||||
| public: | public: | ||||
| ▲ Show 20 Lines • Show All 51 Lines • Show Last 20 Lines | |||||