[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