Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc')
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc70
1 files changed, 37 insertions, 33 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
index e0a3faaefb0..4ac155d2f57 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_delete_geometry.cc
@@ -46,7 +46,7 @@ extern void copy_masked_polys_to_new_mesh(const Mesh &src_mesh,
blender::Span<int> masked_poly_indices,
blender::Span<int> new_loop_starts);
-namespace blender::nodes {
+namespace blender::nodes::delete_geometry_node {
static void geo_node_delete_geometry_declare(NodeDeclarationBuilder &b)
{
@@ -1148,6 +1148,36 @@ static void separate_mesh_selection(GeometrySet &geometry_set,
do_mesh_separation(geometry_set, src_component, selection, invert, selection_domain, mode);
}
+static void geo_node_delete_geometry_exec(GeoNodeExecParams params)
+{
+ GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry");
+
+ const Field<bool> selection_field = params.extract_input<Field<bool>>("Selection");
+
+ const bNode &node = params.node();
+ const NodeGeometryDeleteGeometry &storage = *(const NodeGeometryDeleteGeometry *)node.storage;
+ const AttributeDomain domain = static_cast<AttributeDomain>(storage.domain);
+ const GeometryNodeDeleteGeometryMode mode = static_cast<GeometryNodeDeleteGeometryMode>(
+ storage.mode);
+
+ bool all_is_error = false;
+ geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) {
+ bool this_is_error = false;
+ /* Invert here because we want to keep the things not in the selection. */
+ separate_geometry(geometry_set, domain, mode, selection_field, true, this_is_error);
+ all_is_error &= this_is_error;
+ });
+ if (all_is_error) {
+ /* Only show this if none of the instances/components actually changed. */
+ params.error_message_add(NodeWarningType::Info, TIP_("No geometry with given domain"));
+ }
+
+ params.set_output("Geometry", std::move(geometry_set));
+}
+
+} // namespace blender::nodes::delete_geometry_node
+
+namespace blender::nodes {
void separate_geometry(GeometrySet &geometry_set,
const AttributeDomain domain,
const GeometryNodeDeleteGeometryMode mode,
@@ -1155,6 +1185,7 @@ void separate_geometry(GeometrySet &geometry_set,
const bool invert,
bool &r_is_error)
{
+ using namespace blender::nodes::delete_geometry_node;
bool some_valid_domain = false;
if (geometry_set.has_pointcloud()) {
if (domain == ATTR_DOMAIN_POINT) {
@@ -1176,34 +1207,6 @@ void separate_geometry(GeometrySet &geometry_set,
}
r_is_error = !some_valid_domain && geometry_set.has_realized_data();
}
-
-static void geo_node_delete_geometry_exec(GeoNodeExecParams params)
-{
- GeometrySet geometry_set = params.extract_input<GeometrySet>("Geometry");
-
- const Field<bool> selection_field = params.extract_input<Field<bool>>("Selection");
-
- const bNode &node = params.node();
- const NodeGeometryDeleteGeometry &storage = *(const NodeGeometryDeleteGeometry *)node.storage;
- const AttributeDomain domain = static_cast<AttributeDomain>(storage.domain);
- const GeometryNodeDeleteGeometryMode mode = static_cast<GeometryNodeDeleteGeometryMode>(
- storage.mode);
-
- bool all_is_error = false;
- geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) {
- bool this_is_error = false;
- /* Invert here because we want to keep the things not in the selection. */
- separate_geometry(geometry_set, domain, mode, selection_field, true, this_is_error);
- all_is_error &= this_is_error;
- });
- if (all_is_error) {
- /* Only show this if none of the instances/components actually changed. */
- params.error_message_add(NodeWarningType::Info, TIP_("No geometry with given domain"));
- }
-
- params.set_output("Geometry", std::move(geometry_set));
-}
-
} // namespace blender::nodes
void register_node_type_geo_delete_geometry()
@@ -1217,10 +1220,11 @@ void register_node_type_geo_delete_geometry()
node_free_standard_storage,
node_copy_standard_storage);
- node_type_init(&ntype, blender::nodes::geo_node_delete_geometry_init);
+ node_type_init(&ntype, blender::nodes::delete_geometry_node::geo_node_delete_geometry_init);
- ntype.declare = blender::nodes::geo_node_delete_geometry_declare;
- ntype.geometry_node_execute = blender::nodes::geo_node_delete_geometry_exec;
- ntype.draw_buttons = blender::nodes::geo_node_delete_geometry_layout;
+ ntype.declare = blender::nodes::delete_geometry_node::geo_node_delete_geometry_declare;
+ ntype.geometry_node_execute =
+ blender::nodes::delete_geometry_node::geo_node_delete_geometry_exec;
+ ntype.draw_buttons = blender::nodes::delete_geometry_node::geo_node_delete_geometry_layout;
nodeRegisterType(&ntype);
}