Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_curve_trim.cc
| Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | static void geo_node_curve_trim_init(bNodeTree *UNUSED(tree), bNode *node) | ||||
| data->mode = GEO_NODE_CURVE_INTERPOLATE_FACTOR; | data->mode = GEO_NODE_CURVE_INTERPOLATE_FACTOR; | ||||
| node->storage = data; | node->storage = data; | ||||
| } | } | ||||
| static void geo_node_curve_trim_update(bNodeTree *UNUSED(ntree), bNode *node) | static void geo_node_curve_trim_update(bNodeTree *UNUSED(ntree), bNode *node) | ||||
| { | { | ||||
| const NodeGeometryCurveTrim &node_storage = *(NodeGeometryCurveTrim *)node->storage; | const NodeGeometryCurveTrim &node_storage = *(NodeGeometryCurveTrim *)node->storage; | ||||
| const GeometryNodeCurveSampleMode mode = (GeometryNodeCurveSampleMode)node_storage.mode; | const GeometryNodeCurveInterpolateMode mode = (GeometryNodeCurveInterpolateMode) | ||||
| node_storage.mode; | |||||
| bNodeSocket *start_fac = ((bNodeSocket *)node->inputs.first)->next; | bNodeSocket *start_fac = ((bNodeSocket *)node->inputs.first)->next; | ||||
| bNodeSocket *end_fac = start_fac->next; | bNodeSocket *end_fac = start_fac->next; | ||||
| bNodeSocket *start_len = end_fac->next; | bNodeSocket *start_len = end_fac->next; | ||||
| bNodeSocket *end_len = start_len->next; | bNodeSocket *end_len = start_len->next; | ||||
| nodeSetSocketAvailability(start_fac, mode == GEO_NODE_CURVE_INTERPOLATE_FACTOR); | nodeSetSocketAvailability(start_fac, mode == GEO_NODE_CURVE_INTERPOLATE_FACTOR); | ||||
| nodeSetSocketAvailability(end_fac, mode == GEO_NODE_CURVE_INTERPOLATE_FACTOR); | nodeSetSocketAvailability(end_fac, mode == GEO_NODE_CURVE_INTERPOLATE_FACTOR); | ||||
| ▲ Show 20 Lines • Show All 253 Lines • ▼ Show 20 Lines | static void trim_bezier_spline(Spline &spline, | ||||
| } | } | ||||
| bezier_spline.resize(size); | bezier_spline.resize(size); | ||||
| } | } | ||||
| static void geo_node_curve_trim_exec(GeoNodeExecParams params) | static void geo_node_curve_trim_exec(GeoNodeExecParams params) | ||||
| { | { | ||||
| const NodeGeometryCurveTrim &node_storage = *(NodeGeometryCurveTrim *)params.node().storage; | const NodeGeometryCurveTrim &node_storage = *(NodeGeometryCurveTrim *)params.node().storage; | ||||
| const GeometryNodeCurveSampleMode mode = (GeometryNodeCurveSampleMode)node_storage.mode; | const GeometryNodeCurveInterpolateMode mode = (GeometryNodeCurveInterpolateMode) | ||||
| node_storage.mode; | |||||
| GeometrySet geometry_set = params.extract_input<GeometrySet>("Curve"); | GeometrySet geometry_set = params.extract_input<GeometrySet>("Curve"); | ||||
| geometry_set = bke::geometry_set_realize_instances(geometry_set); | geometry_set = bke::geometry_set_realize_instances(geometry_set); | ||||
| if (!geometry_set.has_curve()) { | if (!geometry_set.has_curve()) { | ||||
| params.set_output("Curve", std::move(geometry_set)); | params.set_output("Curve", std::move(geometry_set)); | ||||
| return; | return; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 70 Lines • Show Last 20 Lines | |||||