[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