[Bf-blender-cvs] [3bb345b7c5a] hair_object: temp: add brushes for hair editing.

Lukas Tönne noreply at git.blender.org
Fri Dec 14 14:07:54 CET 2018


Commit: 3bb345b7c5a146417d7c8af552482acb687d169f
Author: Lukas Tönne
Date:   Fri Dec 14 13:07:16 2018 +0000
Branches: hair_object
https://developer.blender.org/rB3bb345b7c5a146417d7c8af552482acb687d169f

temp: add brushes for hair editing.

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

M	release/scripts/startup/bl_ui/properties_paint_common.py
M	source/blender/editors/screen/screen_context.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_sculpt_paint.c

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

diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py
index 1bd95019a45..5d2f979beeb 100644
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@ -42,6 +42,8 @@ class UnifiedPaintPanel:
             return None
         elif context.particle_edit_object:
             return toolsettings.particle_edit
+        elif context.hair_edit_object:
+            return toolsettings.hair_edit
 
         return None
 
diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c
index 1cfe34c86a1..6be1577ef1e 100644
--- a/source/blender/editors/screen/screen_context.c
+++ b/source/blender/editors/screen/screen_context.c
@@ -82,7 +82,7 @@ const char *screen_context_dir[] = {
 	"active_bone", "active_pose_bone",
 	"active_base", "active_object", "object", "edit_object",
 	"sculpt_object", "vertex_paint_object", "weight_paint_object",
-	"image_paint_object", "particle_edit_object", "uv_sculpt_object",
+	"image_paint_object", "particle_edit_object", "hair_edit_object", "uv_sculpt_object",
 	"sequences", "selected_sequences", "selected_editable_sequences", /* sequencer */
 	"gpencil_data", "gpencil_data_owner", /* grease pencil data */
 	"visible_gpencil_layers", "editable_gpencil_layers", "editable_gpencil_strokes",
@@ -447,6 +447,12 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult
 
 		return 1;
 	}
+	else if (CTX_data_equals(member, "hair_edit_object")) {
+		if (obact && (obact->mode & OB_MODE_EDIT) && obact->type == OB_HAIR) {
+			CTX_data_id_pointer_set(result, &obact->id);
+		}
+		return 1;
+	}
 	else if (CTX_data_equals(member, "uv_sculpt_object")) {
 		/* TODO(campbell): most likely we change rules for uv_sculpt. */
 		if (obact && (obact->mode & OB_MODE_EDIT)) {
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index f4d19621925..a1ed7e15bd8 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -917,8 +917,28 @@ typedef enum HairEditFollicleDrawMode {
 	HAIR_FOLLICLE_DRAW_AXES,
 } HairEditFollicleDrawMode;
 
+/* HairEditSettings.brushtype */
+typedef enum eHairBrushTypes {
+	HAIR_BRUSH_ADD           = 0,
+
+	/* !!! Update HairEditSettings brush[###]; below !!! */
+	HAIR_BRUSH_TYPE_MAX,
+} eHairBrushTypes;
+
+/* Settings for a hair brush */
+typedef struct HairBrushData {
+	short flag;
+	short size;             /* radius of brush */
+	float strength;         /* strength of effect */
+} HairBrushData;
+
 /* Hair Edit Mode Settings */
 typedef struct HairEditSettings {
+	HairBrushData brush[12];    /* HAIR_BRUSH_TYPE_MAX */
+	void *paintcursor;          /* runtime */
+
+	int brushtype;              /* eHairBrushTypes */
+
 	int flag;
 	short select_mode;
 	short follicle_draw_mode;
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index 01fec1b84d8..7818dfc3544 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -288,6 +288,18 @@ static void rna_HairEditSettings_update(bContext *C, PointerRNA *UNUSED(ptr))
 	}
 }
 
+static PointerRNA rna_HairEditSettings_brush_get(PointerRNA *ptr)
+{
+	HairEditSettings *hset = (HairEditSettings *)ptr->data;
+	HairBrushData *brush = NULL;
+
+	if (hset->brushtype >= 0 && hset->brushtype < HAIR_BRUSH_TYPE_MAX) {
+		brush = &hset->brush[hset->brushtype];
+	}
+
+	return rna_pointer_inherit_refine(ptr, &RNA_HairBrush, brush);
+}
+
 static bool rna_Brush_mode_poll(PointerRNA *ptr, PointerRNA value)
 {
 	const Paint *paint = ptr->data;
@@ -1233,6 +1245,12 @@ static void rna_def_hair_edit_settings(BlenderRNA *brna)
 	RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
 	RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE);
 	RNA_def_property_update(prop, NC_SCENE | ND_TOOLSETTINGS, "rna_HairEditSettings_update");
+
+	prop = RNA_def_property(srna, "brush", PROP_POINTER, PROP_NONE);
+	RNA_def_property_struct_type(prop, "HairBrush");
+	RNA_def_property_pointer_funcs(prop, "rna_HairEditSettings_brush_get", NULL, NULL, NULL);
+	RNA_def_parameter_clear_flags(prop, PROP_ANIMATABLE, 0);
+	RNA_def_property_ui_text(prop, "Brush", "");
 }
 
 static void rna_def_gpencil_sculpt(BlenderRNA *brna)



More information about the Bf-blender-cvs mailing list