[Bf-blender-cvs] [544519b49ea] soc-2021-curve-fillet: Fixed out of scope error
dilithjay
noreply at git.blender.org
Mon Sep 20 06:20:52 CEST 2021
Commit: 544519b49ea4f550a7a9f0e57e9d982fc8e1d5c6
Author: dilithjay
Date: Tue Sep 14 16:26:02 2021 +0530
Branches: soc-2021-curve-fillet
https://developer.blender.org/rB544519b49ea4f550a7a9f0e57e9d982fc8e1d5c6
Fixed out of scope error
===================================================================
M source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc
===================================================================
diff --git a/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc b/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc
index b7aeb47d4bd..1cb97cfd245 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_curve_fillet.cc
@@ -58,10 +58,10 @@ struct FilletParam {
GeometryNodeCurveFilletMode mode;
/* Number of points to be added. */
- GVArray_Typed<int> *counts;
+ const VArray<int> *counts;
/* Radii for fillet arc at all vertices. */
- GVArray_Typed<float> *radii;
+ const VArray<float> *radii;
/* Whether or not fillets are allowed to overlap. */
bool limit_radius;
@@ -595,33 +595,30 @@ static void geo_node_fillet_exec(GeoNodeExecParams params)
CurveComponent &component = geometry_set.get_component_for_write<CurveComponent>();
GeometryComponentFieldContext field_context{component, ATTR_DOMAIN_POINT};
const int domain_size = component.attribute_domain_size(ATTR_DOMAIN_POINT);
+ fn::FieldEvaluator field_evaluator{field_context, domain_size};
+
+ Field<float> radius_field = params.extract_input<Field<float>>("Radius");
+ field_evaluator.add(std::move(radius_field));
if (mode == GEO_NODE_CURVE_FILLET_POLY) {
Field<int> count_field = params.extract_input<Field<int>>("Count");
-
- fn::FieldEvaluator count_evaluator{field_context, domain_size};
- count_evaluator.add(count_field);
- count_evaluator.evaluate();
- const GVArray &count = count_evaluator.get_evaluated(0);
- GVArray_Typed<int> counts_array = GVArray_Typed<int>(count);
- fillet_param.counts = &counts_array;
+ field_evaluator.add(std::move(count_field));
}
- Field<float> radius_field = params.extract_input<Field<float>>("Radius");
- fn::FieldEvaluator radius_evaluator{field_context, domain_size};
- radius_evaluator.add(radius_field);
- radius_evaluator.evaluate();
- const GVArray &radius = radius_evaluator.get_evaluated(0);
- GVArray_Typed<float> radius_array = GVArray_Typed<float>(radius);
- fillet_param.radii = &radius_array;
-
- fillet_param.limit_radius = params.extract_input<bool>("Limit Radius");
+ field_evaluator.evaluate();
- if (radius_array->is_single() && radius_array->get_internal_single() < 0.0f) {
+ fillet_param.radii = &field_evaluator.get_evaluated<float>(0);
+ if (fillet_param.radii->is_single() && fillet_param.radii->get_internal_single() < 0.0f) {
params.set_output("Geometry", geometry_set);
return;
}
+ if (mode == GEO_NODE_CURVE_FILLET_POLY) {
+ fillet_param.counts = &field_evaluator.get_evaluated<int>(1);
+ }
+
+ fillet_param.limit_radius = params.extract_input<bool>("Limit Radius");
+
const CurveEval &input_curve = *geometry_set.get_curve_for_read();
std::unique_ptr<CurveEval> output_curve = fillet_curve(input_curve, fillet_param);
More information about the Bf-blender-cvs
mailing list