[Bf-blender-cvs] [1bc20020289] temp-greasepencil-object-stacksplit: More changes to modifiers

Antonio Vazquez noreply at git.blender.org
Mon Jun 18 19:53:46 CEST 2018


Commit: 1bc20020289318a98a33393bbcc2f7981d96f1b0
Author: Antonio Vazquez
Date:   Mon Jun 18 19:53:35 2018 +0200
Branches: temp-greasepencil-object-stacksplit
https://developer.blender.org/rB1bc20020289318a98a33393bbcc2f7981d96f1b0

More changes to modifiers

Now it's possible to add modifiers again, but they are not visible yet.

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

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/editors/object/object_gpencil_modifier.c
M	source/blender/editors/object/object_intern.h
M	source/blender/editors/object/object_ops.c
M	source/creator/creator.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 943606dd2a8..e6c6c99556b 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -32,6 +32,11 @@ class ModifierButtonsPanel:
 class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
     bl_label = "Modifiers"
 
+    @classmethod
+    def poll(cls, context):
+        ob = context.object
+        return ob and ob.type != 'GPENCIL'
+
     def draw(self, context):
         layout = self.layout
 
@@ -1566,6 +1571,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
 class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
     bl_label = "Modifiers"
 
+    @classmethod
+    def poll(cls, context):
+        ob = context.object
+        return ob and ob.type == 'GPENCIL'
+
     def draw(self, context):
         layout = self.layout
 
@@ -1573,8 +1583,8 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
 
         layout.operator_menu_enum("object.gpencil_modifier_add", "type")
 
-        for md in ob.modifiers:
-            box = layout.template_modifier(md)
+        for md in ob.grease_pencil_modifiers:
+            box = layout.template_greasepencil_modifier(md)
             if box:
                 # match enum type to our functions, avoids a lookup table.
                 getattr(self, md.type)(box, ob, md)
@@ -1870,10 +1880,6 @@ class DATA_PT_gpencil_modifiers(ModifierButtonsPanel, Panel):
         row.prop_search(md, "layer", gpd, "layers", text="", icon='GREASEPENCIL')
         row.prop(md, "invert_layers", text="", icon="ARROW_LEFTRIGHT")
 
-#        row = col.row(align=True)
-#        row.prop(md, "pass_index", text="Pass")
-#        row.prop(md, "invert_pass", text="", icon="ARROW_LEFTRIGHT")
-
     def GP_LATTICE(self, layout, ob, md):
         gpd = ob.data
         split = layout.split()
diff --git a/source/blender/editors/object/object_gpencil_modifier.c b/source/blender/editors/object/object_gpencil_modifier.c
index 58e36e26f4c..535568f0e65 100644
--- a/source/blender/editors/object/object_gpencil_modifier.c
+++ b/source/blender/editors/object/object_gpencil_modifier.c
@@ -265,13 +265,8 @@ int ED_object_gpencil_modifier_apply(
 	Main *bmain, ReportList *reports, Depsgraph *depsgraph,
 	Scene *scene, Object *ob, GreasePencilModifierData *md, int mode)
 {
-	int prev_mode;
-
-	if (BKE_object_is_in_editmode(ob)) {
-		BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in edit mode");
-		return 0;
-	}
-	else if (ob->type == OB_GPENCIL) {
+	
+	if (ob->type == OB_GPENCIL) {
 		if (ob->mode != OB_MODE_OBJECT) {
 			BKE_report(reports, RPT_ERROR, "Modifiers cannot be applied in paint, sculpt or edit mode");
 			return 0;
@@ -290,20 +285,13 @@ int ED_object_gpencil_modifier_apply(
 	if (md != ob->greasepencil_modifiers.first)
 		BKE_report(reports, RPT_INFO, "Applied modifier was not first, result may not be as expected");
 
-	/* allow apply of a not-realtime modifier, by first re-enabling realtime. */
-	prev_mode = md->mode;
-	md->mode |= eModifierMode_Realtime;
-
 	if (!gpencil_modifier_apply_obdata(reports, bmain, depsgraph, scene, ob, md)) {
-		md->mode = prev_mode;
 		return 0;
 	}
 
 	BLI_remlink(&ob->greasepencil_modifiers, md);
 	BKE_gpencil_modifier_free(md);
 
-	BKE_object_free_derived_caches(ob);
-
 	return 1;
 }
 
@@ -328,7 +316,7 @@ static int gpencil_modifier_add_exec(bContext *C, wmOperator *op)
 	Object *ob = ED_object_active_context(C);
 	int type = RNA_enum_get(op->ptr, "type");
 
-	if (!ED_object_modifier_add(op->reports, bmain, scene, ob, NULL, type))
+	if (!ED_object_gpencil_modifier_add(op->reports, bmain, scene, ob, NULL, type))
 		return OPERATOR_CANCELLED;
 
 	WM_event_add_notifier(C, NC_OBJECT | ND_MODIFIER, ob);
@@ -346,10 +334,10 @@ static const EnumPropertyItem *gpencil_modifier_add_itemf(
 	int totitem = 0, a;
 
 	if (!ob)
-		return rna_enum_object_modifier_type_items;
+		return rna_enum_object_greasepencil_modifier_type_items;
 
-	for (a = 0; rna_enum_object_modifier_type_items[a].identifier; a++) {
-		md_item = &rna_enum_object_modifier_type_items[a];
+	for (a = 0; rna_enum_object_greasepencil_modifier_type_items[a].identifier; a++) {
+		md_item = &rna_enum_object_greasepencil_modifier_type_items[a];
 		if (md_item->identifier[0]) {
 			mti = BKE_gpencil_modifierType_getInfo(md_item->value);
 
diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h
index 79131398173..f9f5ef69737 100644
--- a/source/blender/editors/object/object_intern.h
+++ b/source/blender/editors/object/object_intern.h
@@ -173,6 +173,14 @@ void OBJECT_OT_skin_armature_create(struct wmOperatorType *ot);
 void OBJECT_OT_laplaciandeform_bind(struct wmOperatorType *ot);
 void OBJECT_OT_surfacedeform_bind(struct wmOperatorType *ot);
 
+/* grease pencil modifiers */
+void OBJECT_OT_gpencil_modifier_add(struct wmOperatorType *ot);
+void OBJECT_OT_gpencil_modifier_remove(struct wmOperatorType *ot);
+void OBJECT_OT_gpencil_modifier_move_up(struct wmOperatorType *ot);
+void OBJECT_OT_gpencil_modifier_move_down(struct wmOperatorType *ot);
+void OBJECT_OT_gpencil_modifier_apply(struct wmOperatorType *ot);
+void OBJECT_OT_gpencil_modifier_copy(struct wmOperatorType *ot);
+
 /* object_constraint.c */
 void OBJECT_OT_constraint_add(struct wmOperatorType *ot);
 void OBJECT_OT_constraint_add_with_targets(struct wmOperatorType *ot);
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index e0ae9b2615e..263381a0b2a 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -147,6 +147,14 @@ void ED_operatortypes_object(void)
 	WM_operatortype_append(OBJECT_OT_skin_radii_equalize);
 	WM_operatortype_append(OBJECT_OT_skin_armature_create);
 
+	/* grease pencil modifiers */
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_add);
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_remove);
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_move_up);
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_move_down);
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_apply);
+	WM_operatortype_append(OBJECT_OT_gpencil_modifier_copy);
+
 	WM_operatortype_append(OBJECT_OT_correctivesmooth_bind);
 	WM_operatortype_append(OBJECT_OT_meshdeform_bind);
 	WM_operatortype_append(OBJECT_OT_explode_refresh);
diff --git a/source/creator/creator.c b/source/creator/creator.c
index bda97fba863..fc4f0dcb793 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -63,6 +63,7 @@
 #include "BKE_global.h"
 #include "BKE_material.h"
 #include "BKE_modifier.h"
+#include "BKE_gpencil_modifier.h"
 #include "BKE_node.h"
 #include "BKE_sound.h"
 #include "BKE_image.h"
@@ -366,6 +367,7 @@ int main(
 	BKE_cachefiles_init();
 	BKE_images_init();
 	BKE_modifier_init();
+	BKE_gpencil_modifier_init();
 	DEG_register_node_types();
 
 	BKE_brush_system_init();



More information about the Bf-blender-cvs mailing list