[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