[Bf-blender-cvs] [8137c1be091] soc-2021-porting-modifiers-to-nodes_all: SOC2021 Porting Modifiers To nodes all

Fabian Schempp noreply at git.blender.org
Thu Aug 19 22:07:13 CEST 2021


Commit: 8137c1be091e083edce9fecab3fc2dcc6d7d0e93
Author: Fabian Schempp
Date:   Thu Aug 19 07:30:56 2021 +0200
Branches: soc-2021-porting-modifiers-to-nodes_all
https://developer.blender.org/rB8137c1be091e083edce9fecab3fc2dcc6d7d0e93

SOC2021 Porting Modifiers To nodes all

This branch merges all branches from soc2021 porting modifiers to nodes
into one. The branche is mainly used to make a testbuild.

===================================================================



===================================================================

diff --cc source/blender/blenkernel/intern/node.cc
index 251989cb653,bd22f049a8b..a152771d5ae
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@@ -5157,14 -5156,12 +5157,15 @@@ static void registerGeometryNodes(
    register_node_type_geo_curve_to_points();
    register_node_type_geo_curve_trim();
    register_node_type_geo_delete_geometry();
 +  register_node_type_geo_dissolve();
    register_node_type_geo_edge_split();
-   register_node_type_geo_mesh_extrude();
    register_node_type_geo_input_material();
    register_node_type_geo_is_viewport();
    register_node_type_geo_join_geometry();
    register_node_type_geo_material_assign();
    register_node_type_geo_material_replace();
++  register_node_type_geo_mesh_extrude();
++  register_node_type_geo_mesh_inset();
    register_node_type_geo_mesh_primitive_circle();
    register_node_type_geo_mesh_primitive_cone();
    register_node_type_geo_mesh_primitive_cube();
diff --cc source/blender/bmesh/intern/bmesh_mesh.c
index 1b420cea417,b2958a9e744..cab2f8cc713
--- a/source/blender/bmesh/intern/bmesh_mesh.c
+++ b/source/blender/bmesh/intern/bmesh_mesh.c
@@@ -1446,203 -1446,4 +1446,242 @@@ void BM_mesh_vert_coords_apply_with_mat
    }
  }
  
 -/** \} */
 +/**
 + * Use to select bmesh vertex data based on an array of bool.
 + */
 +void BM_select_vertices(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMVert *v;
 +  int i;
 +  BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
 +    BM_elem_flag_set(v, BM_ELEM_SELECT, mask[i]);
 +  }
 +}
 +
 +/**
 + * Use to select bmesh edge data based on an array of bool.
 + */
 +void BM_select_edges(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    BM_elem_flag_set(e, BM_ELEM_SELECT, mask[i]);
 +  }
 +}
 +
 +/**
 + * Use to select bmesh face data based on an array of bool.
 + */
 +void BM_select_faces(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMFace *f;
 +  int i = 0;
 +  BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
 +    BM_elem_flag_set(f, BM_ELEM_SELECT, mask[i]);
 +  }
 +}
 +
 +/**
 + * Use to temporary tag bmesh edge data based on an array of bool.
 + */
 +void BM_tag_vertices(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    BM_elem_flag_set(e, BM_ELEM_TAG, mask[i]);
 +  }
 +}
 +
 +/**
 + * Use to temporary tag bmesh edge data based on an array of bool.
 + */
 +void BM_tag_edges(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    BM_elem_flag_set(e, BM_ELEM_TAG, mask[i]);
 +  }
 +}
 +
 +/**
 + * Use to temporary tag bmesh face data based on an array of bool.
 + */
 +void BM_tag_faces(BMesh *bm, const bool *mask)
 +{
 +  BMIter iter;
 +  BMFace *f;
 +  int i;
 +  BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
 +    BM_elem_flag_set(f, BM_ELEM_TAG, mask[i]);
 +  }
 +}
 +
 +/**
 + * Write selected bmesh vertex to array of bool with length of totvert.
 + */
 +void BM_get_selected_vertices(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMVert *v;
 +  int i;
 +  BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(v, BM_ELEM_SELECT);
 +  }
 +}
 +
 +/**
 + * Write selected bmesh edge to array of bool with length of totedge.
 + */
 +void BM_get_selected_edges(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(e, BM_ELEM_SELECT);
 +  }
 +}
 +
 +/**
 + * Write selected bmesh face to array of bool with length of totpoly.
 + */
 +void BM_get_selected_faces(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMFace *f;
 +  int i;
 +  BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(f, BM_ELEM_SELECT);
 +  }
 +}
 +
 +/**
 + * Write tagged bmesh vertex to array of bool with length of totvert.
 + */
 +void BM_get_tagged_vertices(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMVert *v;
 +  int i;
 +  BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(v, BM_ELEM_TAG);
 +  }
 +}
 +
 +/**
 + * Write tagged bmesh edge to array of bool with length of totedge.
 + */
 +void BM_get_tagged_edges(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(e, BM_ELEM_TAG);
 +  }
 +}
 +
 +/**
 + * Write tagged bmesh faces to array of bool with length of totpoly.
 + */
 +void BM_get_tagged_faces(BMesh *bm, bool *selection)
 +{
 +  BMIter iter;
 +  BMFace *f;
 +  int i;
 +  BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
 +    selection[i] = BM_elem_flag_test(f, BM_ELEM_TAG);
 +  }
 +}
 +
 +/**
 + * Use to remove tag from all bmesh verts that are tagged with another tag.
 + */
 +void BM_untag_vertices_by_tag(BMesh *bm, int tag)
 +{
 +  BMIter iter;
 +  BMVert *v;
 +  int i;
 +  BM_ITER_MESH_INDEX (v, &iter, bm, BM_VERTS_OF_MESH, i) {
 +    if (BM_elem_flag_test(v, tag)) {
 +      BM_elem_flag_disable(v, BM_ELEM_TAG);
 +    }
 +  }
 +}
 +
 +/**
 + * Use to remove tag from all bmesh edges that are tagged with another tag.
 + */
 +void BM_untag_edges_by_tag(BMesh *bm, int tag)
 +{
 +  BMIter iter;
 +  BMEdge *e;
 +  int i;
 +  BM_ITER_MESH_INDEX (e, &iter, bm, BM_EDGES_OF_MESH, i) {
 +    if (BM_elem_flag_test(e, tag)) {
 +      BM_elem_flag_disable(e, BM_ELEM_TAG);
 +    }
 +  }
 +}
 +
 +/**
 + * Use to remove tag from all bmesh faces that are tagged with another tag.
 + */
 +void BM_untag_faces_by_tag(BMesh *bm, int tag)
 +{
 +  BMIter iter;
 +  BMFace *f;
 +  int i;
 +  BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, i) {
 +    if (BM_elem_flag_test(f, tag)) {
 +      BM_elem_flag_disable(f, BM_ELEM_TAG);
 +    }
 +  }
 +}
++
++void BM_tag_vertices_from_operator_slot(BMesh *bm,
++                                        BMOperator *b_mesh_operator,
++                                        const char *slot,
++                                        const int tag)
++{
++  BMIter iter;
++  BMVert *v;
++  BM_mesh_elem_hflag_disable_all(bm, BM_VERT, BM_ELEM_TAG, false);
++  BMO_ITER (v, &iter, b_mesh_operator->slots_out, slot, tag) {
++    BM_elem_flag_enable(v, BM_ELEM_TAG);
++  }
++}
++
++void BM_tag_edges_from_operator_slot(BMesh *bm,
++                                     BMOperator *b_mesh_operator,
++                                     const char *slot,
++                                     const int tag)
++{
++  BMIter iter;
++  BMEdge *e;
++  BM_mesh_elem_hflag_disable_all(bm, BM_EDGE, BM_ELEM_TAG, false);
++  BMO_ITER (e, &iter, b_mesh_operator->slots_out, slot, tag) {
++    BM_elem_flag_enable(e, BM_ELEM_TAG);
++  }
++}
++
++void BM_tag_faces_from_operator_slot(BMesh *bm,
++                                     BMOperator *b_mesh_operator,
++                                     const char *slot,
++                                     const int tag)
++{
++  BMIter iter;
++  BMFace *f;
++  BM_mesh_elem_hflag_disable_all(bm, BM_FACE, BM_ELEM_TAG, false);
++  BMO_ITER (f, &iter, b_mesh_operator->slots_out, slot, tag) {
++    BM_elem_flag_enable(f, BM_ELEM_TAG);
++  }
++}
diff --cc source/blender/bmesh/intern/bmesh_mesh.h
index 1cc9f4a6aca,bd0504b038a..dd987e96582
--- a/source/blender/bmesh/intern/bmesh_mesh.h
+++ b/source/blender/bmesh/intern/bmesh_mesh.h
@@@ -134,27 -134,3 +134,36 @@@ void BM_mesh_vert_coords_apply(BMesh *b
  void BM_mesh_vert_coords_apply_with_mat4(BMesh *bm,
                                           const float (*vert_coords)[3],
                                           const float mat[4][4]);
 +
 +void BM_select_vertices(BMesh *bm, const bool *mask);
 +void BM_select_edges(BMesh *bm, const bool *mask);
 +void BM_select_faces(BMesh *bm, const bool *mask);
 +
 +void BM_tag_vertices(BMesh *bm, const bool *mask);
 +void BM_tag_edges(BMesh *bm, const bool *mask);
 +void BM_tag_faces(BMesh *bm, const bool *mask);
 +
 +void BM_get_selected_vertices(BMesh *bm, bool *selection);
 +void BM_get_selected_edges(BMesh *bm, bool *selection);
 +void BM_get_selected_faces(BMesh *bm, bool *selection);
 +
 +void BM_get_tagged_vertices(BMesh *bm, bool *selection);
 +void BM_get_tagged_edges(BMesh *bm, bool *selection);
 +void BM_get_tagged_faces(BMesh *bm, bool *selection);
 +
 +void BM_untag_vertices_by_tag(BMesh *bm, int tag);
 +void BM_untag_edges_by_tag(BMesh *bm, int tag);
 +void BM_untag_faces_by_tag(BMesh *bm, int tag);
 +
- void BM_tag_new_vertices(BMesh *bm, BMOperator *b_mesh_operator);
- void BM_tag_new_edges(BMesh *bm, BMOperator *b_mesh_operator);
- void BM_tag_new_faces(BMesh *bm, BMOperator *b_mesh_operator);
++void BM_tag_vertices_from_operator_slot(BMesh *bm,
++                                     BMOperator *b_mesh_operator,
++                                     const char *slot,
++                                     const int tag);
++void BM_tag_edges_from_operator_slot(BMesh *bm,
++                                     BMOperator *b_mesh_operator,
++                                     const char *slot,
++                                     const int tag);
++void BM_tag_faces_from_operator_slot(BMesh *bm,
++                                     BMOperator *b_mesh_operator,
++                                     const char *slot,
++                                     const int tag);
diff --cc source/blender/makesrna/intern/rna_nodetree.c
index e878d5dc951,d8ab7c7a61b..9eaa1ce1d14
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@@ -10293,25 -10212,6 +10307,43 @@@ static void def_geo_attribute_transfer(
    RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
  }
  
 +static void def_geo_mesh_extrude(StructRNA *srna)
 +{
 +  PropertyRNA *prop;
 +
 +  static const EnumPropertyItem rna_node_geometry_extrude_domain_items[] = {
 +      {0, "VERTEX", 0, "Vertex", "Extrude Vertices"},
 +      {1, "EDGE", 0, "Edge", "Extrude Edges"},
 +      {

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list