[Bf-blender-cvs] [37cfe9992da] temp-lineart-contained: LineArt: Baking flags for UI.

YimingWu noreply at git.blender.org
Fri Mar 12 15:00:11 CET 2021


Commit: 37cfe9992da817160f8df50622351df2d9aaf951
Author: YimingWu
Date:   Fri Mar 12 21:59:57 2021 +0800
Branches: temp-lineart-contained
https://developer.blender.org/rB37cfe9992da817160f8df50622351df2d9aaf951

LineArt: Baking flags for UI.

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

M	source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
M	source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
M	source/blender/makesdna/DNA_gpencil_modifier_types.h
M	source/blender/makesrna/intern/rna_gpencil_modifier.c

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

diff --git a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
index 0a0a615f2bf..41ea13dac67 100644
--- a/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
+++ b/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c
@@ -130,7 +130,7 @@ static bool isModifierDisabled(GpencilModifierData *md)
   }
 
   /* Preventing calculation in depsgraph when baking frames. */
-  if (lmd->flags & LRT_GPENCIL_IS_BAKING) {
+  if (lmd->flags & LRT_GPENCIL_IS_BAKED) {
     return true;
   }
 
@@ -247,8 +247,10 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
   PointerRNA obj_data_ptr = RNA_pointer_get(&ob_ptr, "data");
 
   int source_type = RNA_enum_get(ptr, "source_type");
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
 
   uiLayoutSetPropSep(layout, true);
+  uiLayoutSetEnabled(layout, !is_baked);
 
   uiItemR(layout, ptr, "source_type", 0, NULL, ICON_NONE);
 
@@ -292,7 +294,10 @@ static void style_panel_draw(const bContext *UNUSED(C), Panel *panel)
 
   uiLayout *layout = panel->layout;
 
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
+
   uiLayoutSetPropSep(layout, true);
+  uiLayoutSetEnabled(layout, !is_baked);
 
   uiLayout *column = uiLayoutColumn(layout, true);
 
@@ -307,7 +312,10 @@ static void occlusion_panel_draw(const bContext *UNUSED(C), Panel *panel)
 
   uiLayout *layout = panel->layout;
 
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
+
   uiLayoutSetPropSep(layout, true);
+  uiLayoutSetEnabled(layout, !is_baked);
 
   bool use_multiple_levels = RNA_boolean_get(ptr, "use_multiple_levels");
   bool use_transparency = RNA_boolean_get(ptr, "use_transparency");
@@ -350,7 +358,10 @@ static void chaining_panel_draw(const bContext *UNUSED(C), Panel *panel)
 
   uiLayout *layout = panel->layout;
 
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
+
   uiLayoutSetPropSep(layout, true);
+  uiLayoutSetEnabled(layout, !is_baked);
 
   uiLayout *column = uiLayoutColumn(layout, true);
   uiItemR(column, ptr, "chaining_geometry_threshold", 0, NULL, ICON_NONE);
@@ -368,7 +379,10 @@ static void vgroup_panel_draw(const bContext *UNUSED(C), Panel *panel)
 
   uiLayout *layout = panel->layout, *row;
 
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
+
   uiLayoutSetPropSep(layout, true);
+  uiLayoutSetEnabled(layout, !is_baked);
 
   uiLayout *column = uiLayoutColumn(layout, true);
 
@@ -389,10 +403,22 @@ static void vgroup_panel_draw(const bContext *UNUSED(C), Panel *panel)
 static void baking_panel_draw(const bContext *UNUSED(C), Panel *panel)
 {
   uiLayout *layout = panel->layout;
+  PointerRNA ob_ptr;
+  PointerRNA *ptr = gpencil_modifier_panel_get_property_pointers(panel, &ob_ptr);
+
+  bool is_baked = RNA_boolean_get(ptr, "is_baked");
 
   uiLayoutSetPropSep(layout, true);
 
+  if (is_baked) {
+    uiLayout *column = uiLayoutColumn(layout, false);
+    uiLayoutSetPropSep(column, false);
+    uiItemL(column, "Modifier has baked data.", ICON_NONE);
+    uiItemR(column, ptr, "is_baked", UI_ITEM_R_TOGGLE, "Continue Without Clearing", ICON_NONE);
+  }
+
   uiLayout *column = uiLayoutColumn(layout, false);
+  uiLayoutSetEnabled(column, !is_baked);
   uiItemO(column, NULL, ICON_NONE, "OBJECT_OT_lineart_bake_strokes");
   uiItemO(column, NULL, ICON_NONE, "OBJECT_OT_lineart_bake_strokes_all");
 
diff --git a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
index eaad2a1b077..3cbced4bbfe 100644
--- a/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
+++ b/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c
@@ -161,22 +161,14 @@ static bool lineart_gpencil_bake_single_target(LineartBakeJob *bj, Object *ob, i
   return touched;
 }
 
-static void lineart_gpencil_guard_modifiers(LineartBakeJob *bj, bool guard_set, bool hide_modifier)
+static void lineart_gpencil_guard_modifiers(LineartBakeJob *bj)
 {
   for (LinkNode *l = bj->objects; l; l = l->next) {
     Object *ob = l->link;
     LISTBASE_FOREACH (GpencilModifierData *, md, &ob->greasepencil_modifiers) {
       if (md->type == eGpencilModifierType_Lineart) {
         LineartGpencilModifierData *lmd = (LineartGpencilModifierData *)md;
-        if (guard_set) {
-          lmd->flags |= LRT_GPENCIL_IS_BAKING;
-        }
-        else {
-          lmd->flags &= (~LRT_GPENCIL_IS_BAKING);
-        }
-        if (hide_modifier) {
-          md->mode &= ~(eGpencilModifierMode_Realtime | eGpencilModifierMode_Render);
-        }
+        lmd->flags |= LRT_GPENCIL_IS_BAKED;
       }
     }
   }
@@ -192,7 +184,7 @@ static void lineart_gpencil_bake_startjob(void *customdata,
   bj->do_update = do_update;
   bj->progress = progress;
 
-  lineart_gpencil_guard_modifiers(bj, true, false);
+  lineart_gpencil_guard_modifiers(bj);
 
   for (int frame = bj->frame_begin; frame <= bj->frame_end; frame += bj->frame_increment) {
 
@@ -221,8 +213,6 @@ static void lineart_gpencil_bake_startjob(void *customdata,
   /* Restore original frame. */
   BKE_scene_frame_set(bj->scene, bj->frame_orig);
   BKE_scene_graph_update_for_newframe(bj->dg);
-
-  lineart_gpencil_guard_modifiers(bj, false, true);
 }
 
 static void lineart_gpencil_bake_endjob(void *customdata)
@@ -365,6 +355,8 @@ static void lineart_gpencil_clear_strokes_exec_common(Object *ob)
     BKE_gpencil_free_frames(gpl);
 
     md->mode |= eGpencilModifierMode_Realtime | eGpencilModifierMode_Render;
+
+    lmd->flags &= (~LRT_GPENCIL_IS_BAKED);
   }
   DEG_id_tag_update((struct ID *)ob->data, ID_RECALC_GEOMETRY);
 }
diff --git a/source/blender/makesdna/DNA_gpencil_modifier_types.h b/source/blender/makesdna/DNA_gpencil_modifier_types.h
index 3d0526aafec..a9262bf7ca4 100644
--- a/source/blender/makesdna/DNA_gpencil_modifier_types.h
+++ b/source/blender/makesdna/DNA_gpencil_modifier_types.h
@@ -820,7 +820,7 @@ typedef enum eLineArtGPencilModifierFlags {
   LRT_GPENCIL_INVERT_SOURCE_VGROUP = (1 << 0),
   LRT_GPENCIL_MATCH_OUTPUT_VGROUP = (1 << 1),
   LRT_GPENCIL_SOFT_SELECTION = (1 << 2),
-  LRT_GPENCIL_IS_BAKING = (1 << 3),
+  LRT_GPENCIL_IS_BAKED = (1 << 3),
 } eLineArtGPencilModifierFlags;
 
 typedef enum eLineartGpencilTransparencyFlags {
diff --git a/source/blender/makesrna/intern/rna_gpencil_modifier.c b/source/blender/makesrna/intern/rna_gpencil_modifier.c
index 78a3b0a691f..b89ad32b469 100644
--- a/source/blender/makesrna/intern/rna_gpencil_modifier.c
+++ b/source/blender/makesrna/intern/rna_gpencil_modifier.c
@@ -2514,6 +2514,11 @@ static void rna_def_modifier_gpencillineart(BlenderRNA *brna)
       prop, "Soft selection", "Preserve original vertex weight instead of clipping to 0/1");
   RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
 
+  prop = RNA_def_property(srna, "is_baked", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_GPENCIL_IS_BAKED);
+  RNA_def_property_ui_text(prop, "Is Baked", "This modifier has baked data.");
+  RNA_def_property_update(prop, 0, "rna_GpencilModifier_update");
+
   prop = RNA_def_property(srna, "thickness", PROP_INT, PROP_NONE);
   RNA_def_property_ui_text(prop, "Thickness", "The thickness that used to generate strokes");
   RNA_def_property_ui_range(prop, 1, 100, 1, 1);



More information about the Bf-blender-cvs mailing list