[Bf-blender-cvs] [c7414140a42] hair_guides: Sub-mode for groom editing, for editing different parts of the topology.

Lukas Tönne noreply at git.blender.org
Fri Dec 22 16:38:09 CET 2017


Commit: c7414140a425bd92fc9d37e6aea63d8237bf16e9
Author: Lukas Tönne
Date:   Fri Dec 22 14:41:41 2017 +0000
Branches: hair_guides
https://developer.blender.org/rBc7414140a425bd92fc9d37e6aea63d8237bf16e9

Sub-mode for groom editing, for editing different parts of the topology.

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

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/editors/groom/editgroom_region.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/makesrna/intern/rna_sculpt_paint.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index e84301dc3bd..3ff35551776 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -50,7 +50,9 @@ class VIEW3D_HT_header(Header):
         if obj:
             mode = obj.mode
             # Particle edit
-            if mode == 'PARTICLE_EDIT':
+            if mode == 'EDIT' and obj.type == 'GROOM':
+                row.prop(toolsettings.groom_edit_settings, "mode", text="", expand=True)
+            elif mode == 'PARTICLE_EDIT':
                 row.prop(toolsettings.particle_edit, "select_mode", text="", expand=True)
 
             # Occlude geometry
diff --git a/source/blender/editors/groom/editgroom_region.c b/source/blender/editors/groom/editgroom_region.c
index 9ce1aa01fe6..eeded7427a6 100644
--- a/source/blender/editors/groom/editgroom_region.c
+++ b/source/blender/editors/groom/editgroom_region.c
@@ -25,7 +25,7 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
-/** \file blender/editors/curve/editgroom_region.c
+/** \file blender/editors/groom/editgroom_region.c
  *  \ingroup edgroom
  */
 
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 065ee801b84..ff1e1a22133 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1080,6 +1080,22 @@ typedef struct ParticleEditSettings {
 	struct Object *shape_object;
 } ParticleEditSettings;
 
+/* ------------------------------------------- */
+/* Groom Edit */
+
+/* GroomEditSettings.mode */
+typedef enum GroomEditMode {
+	GM_EDIT_MODE_REGIONS,
+	GM_EDIT_MODE_CURVES,
+	GM_EDIT_MODE_SECTIONS,
+} GroomEditMode;
+
+/* Groom Edit Mode Settings */
+typedef struct GroomEditSettings {
+	int mode;
+	int pad;
+} GroomEditSettings;
+
 /* ------------------------------------------- */
 /* Sculpt */
 
@@ -1469,7 +1485,10 @@ typedef struct ToolSettings {
 
 	/* Particle Editing */
 	struct ParticleEditSettings particle;
-	
+
+	/* Groom Editing */
+	struct GroomEditSettings groom_edit_settings;
+
 	/* Transform Proportional Area of Effect */
 	float proportional_size;
 
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 785f805a33e..4f7dc35c2c1 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -2446,6 +2446,10 @@ static void rna_def_tool_settings(BlenderRNA  *brna)
 	RNA_def_property_pointer_sdna(prop, NULL, "particle");
 	RNA_def_property_ui_text(prop, "Particle Edit", "");
 
+	prop = RNA_def_property(srna, "groom_edit_settings", PROP_POINTER, PROP_NONE);
+	RNA_def_property_struct_type(prop, "GroomEditSettings");
+	RNA_def_property_ui_text(prop, "Groom Edit Settings", "");
+
 	prop = RNA_def_property(srna, "use_uv_sculpt", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "use_uv_sculpt", 1);
 	RNA_def_property_ui_text(prop, "UV Sculpt", "Enable brush for UV sculpting");
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index ddcf525c3c8..ed7d09cb095 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -241,6 +241,22 @@ static char *rna_ParticleEdit_path(PointerRNA *UNUSED(ptr))
 	return BLI_strdup("tool_settings.particle_edit");
 }
 
+static char *rna_GroomEditSettings_path(PointerRNA *UNUSED(ptr))
+{
+	return BLI_strdup("tool_settings.groom_edit_settings");
+}
+
+static void rna_GroomEditSettings_update(bContext *C, PointerRNA *UNUSED(ptr))
+{
+	ViewLayer *view_layer = CTX_data_view_layer(C);
+	Object *ob = OBACT(view_layer);
+
+	if (ob)
+	{
+		DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
+	}
+}
+
 static int rna_Brush_mode_poll(PointerRNA *ptr, PointerRNA value)
 {
 	Scene *scene = (Scene *)ptr->id.data;
@@ -1028,6 +1044,29 @@ static void rna_def_particle_edit(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Curve", "");
 }
 
+static void rna_def_groom_edit_settings(BlenderRNA *brna)
+{
+	StructRNA *srna;
+	PropertyRNA *prop;
+
+	static const EnumPropertyItem mode_items[] = {
+	    {GM_EDIT_MODE_REGIONS, "REGIONS", ICON_NONE, "Regions", "Region edit mode"},
+	    {GM_EDIT_MODE_CURVES, "CURVES", ICON_NONE, "Curves", "Curve edit mode"},
+	    {GM_EDIT_MODE_SECTIONS, "SECTIONS", ICON_NONE, "Sections", "Section edit mode"},
+	    {0, NULL, 0, NULL, NULL}
+	};
+
+	srna = RNA_def_struct(brna, "GroomEditSettings", NULL);
+	RNA_def_struct_path_func(srna, "rna_GroomEditSettings_path");
+	RNA_def_struct_ui_text(srna, "Groom Edit", "Properties of groom editing mode");
+
+	prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_items(prop, mode_items);
+	RNA_def_property_ui_text(prop, "Mode", "Select mode");
+	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
+	RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_GroomEditSettings_update");
+}
+
 static void rna_def_gpencil_sculpt(BlenderRNA *brna)
 {
 	static const EnumPropertyItem prop_direction_items[] = {
@@ -1141,6 +1180,7 @@ void RNA_def_sculpt_paint(BlenderRNA *brna)
 	rna_def_vertex_paint(brna);
 	rna_def_image_paint(brna);
 	rna_def_particle_edit(brna);
+	rna_def_groom_edit_settings(brna);
 	rna_def_gpencil_sculpt(brna);
 	RNA_define_animate_sdna(true);
 }



More information about the Bf-blender-cvs mailing list