[Bf-blender-cvs] [c15a7615245] master: Geometry Nodes: Miscellaneous changes in control point neighbors node
Hans Goudey
noreply at git.blender.org
Mon Sep 26 20:36:39 CEST 2022
Commit: c15a761524546faa5b82d7da6e7f614efd2ad89a
Author: Hans Goudey
Date: Mon Sep 26 13:23:07 2022 -0500
Branches: master
https://developer.blender.org/rBc15a761524546faa5b82d7da6e7f614efd2ad89a
Geometry Nodes: Miscellaneous changes in control point neighbors node
- Use const and whitespace more consistently
- Fix "Offset Valid" output only working on point domain
- Use the smallest output array that can contain the result.
- Consistent include ordering
- Use "data-block" term instead of "object" in tooltip
- Remove unnecessary call to set default output values
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_input_control_point_neighbors.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_input_control_point_neighbors.cc b/source/blender/nodes/geometry/nodes/node_geo_input_control_point_neighbors.cc
index 33b15e0056e..b5d0c8cdd74 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_input_control_point_neighbors.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_input_control_point_neighbors.cc
@@ -2,10 +2,10 @@
#include "BLI_task.hh"
-#include "node_geometry_util.hh"
-
#include "BKE_curves.hh"
+#include "node_geometry_util.hh"
+
namespace blender::nodes::node_geo_input_control_point_neighbors_cc {
static void node_declare(NodeDeclarationBuilder &b)
@@ -25,7 +25,7 @@ static void node_declare(NodeDeclarationBuilder &b)
b.add_output<decl::Int>(N_("Point Index"))
.field_source()
.description(N_("The index of the control point plus the offset within the entire "
- "curves object"));
+ "curves data-block"));
}
static int apply_offset_in_cyclic_range(const IndexRange range,
@@ -53,33 +53,34 @@ static Array<int> build_parent_curves(const bke::CurvesGeometry &curves)
class ControlPointNeighborFieldInput final : public bke::CurvesFieldInput {
private:
- Field<int> index_;
- Field<int> offset_;
+ const Field<int> index_;
+ const Field<int> offset_;
public:
ControlPointNeighborFieldInput(Field<int> index, Field<int> offset)
- : CurvesFieldInput(CPPType::get<int>(), "Control Point Neighbors node"),
- index_(index),
- offset_(offset)
+ : CurvesFieldInput(CPPType::get<int>(), "Control Point Neighbors"),
+ index_(std::move(index)),
+ offset_(std::move(offset))
{
category_ = Category::Generated;
}
GVArray get_varray_for_context(const bke::CurvesGeometry &curves,
const eAttrDomain domain,
- IndexMask mask) const final
+ const IndexMask mask) const final
{
const VArray<bool> cyclic = curves.cyclic();
const Array<int> parent_curves = build_parent_curves(curves);
- bke::CurvesFieldContext context{curves, domain};
+
+ const bke::CurvesFieldContext context{curves, domain};
fn::FieldEvaluator evaluator{context, &mask};
evaluator.add(index_);
evaluator.add(offset_);
evaluator.evaluate();
const VArray<int> indices = evaluator.get_evaluated<int>(0);
const VArray<int> offsets = evaluator.get_evaluated<int>(1);
- Array<int> output(curves.points_num());
+ Array<int> output(mask.min_array_size());
for (const int i_selection : mask) {
const int i_point = std::clamp(indices[i_selection], 0, curves.points_num() - 1);
const int i_curve = parent_curves[i_point];
@@ -91,7 +92,7 @@ class ControlPointNeighborFieldInput final : public bke::CurvesFieldInput {
curve_points, i_point, offsets[i_selection]);
continue;
}
- output[i_selection] = std::clamp(offset_point, 0, int(curves.points_num() - 1));
+ output[i_selection] = std::clamp(offset_point, 0, curves.points_num() - 1);
}
return VArray<int>::ForContainer(std::move(output));
@@ -100,12 +101,14 @@ class ControlPointNeighborFieldInput final : public bke::CurvesFieldInput {
class OffsetValidFieldInput final : public bke::CurvesFieldInput {
private:
- Field<int> index_;
- Field<int> offset_;
+ const Field<int> index_;
+ const Field<int> offset_;
public:
OffsetValidFieldInput(Field<int> index, Field<int> offset)
- : CurvesFieldInput(CPPType::get<bool>(), "Offset Valid"), index_(index), offset_(offset)
+ : CurvesFieldInput(CPPType::get<bool>(), "Offset Valid"),
+ index_(std::move(index)),
+ offset_(std::move(offset))
{
category_ = Category::Generated;
}
@@ -114,24 +117,25 @@ class OffsetValidFieldInput final : public bke::CurvesFieldInput {
const eAttrDomain domain,
const IndexMask mask) const final
{
- bke::CurvesFieldContext context{curves, ATTR_DOMAIN_POINT};
+ const VArray<bool> cyclic = curves.cyclic();
+ const Array<int> parent_curves = build_parent_curves(curves);
+
+ const bke::CurvesFieldContext context{curves, domain};
fn::FieldEvaluator evaluator{context, &mask};
evaluator.add(index_);
evaluator.add(offset_);
evaluator.evaluate();
const VArray<int> indices = evaluator.get_evaluated<int>(0);
const VArray<int> offsets = evaluator.get_evaluated<int>(1);
- Array<int> parent_curves = build_parent_curves(curves);
- VArray<bool> cyclic = curves.cyclic();
- Array<bool> output(curves.points_num());
+ Array<bool> output(mask.min_array_size());
for (const int i_selection : mask) {
const int i_point = indices[i_selection];
-
if (!curves.points_range().contains(i_point)) {
output[i_selection] = false;
continue;
}
+
const int i_curve = parent_curves[i_point];
const IndexRange curve_points = curves.points_for_curve(i_curve);
if (cyclic[i_curve]) {
@@ -157,7 +161,6 @@ static void node_geo_exec(GeoNodeExecParams params)
Field<bool> valid_field{std::make_shared<OffsetValidFieldInput>(index, offset)};
params.set_output("Is Valid Offset", std::move(valid_field));
}
- params.set_default_remaining_outputs();
}
} // namespace blender::nodes::node_geo_input_control_point_neighbors_cc
More information about the Bf-blender-cvs
mailing list