GPv3: Opacity modifier #116946

Merged
Lukas Tönne merged 52 commits from LukasTonne/blender:gp3-opacity-modifier into main 2024-01-16 16:56:22 +01:00
3 changed files with 15 additions and 15 deletions
Showing only changes of commit 35b8228385 - Show all commits

View File

@ -59,7 +59,7 @@ static void init_data(ModifierData *md)
sizeof(*(omd)) - OFFSETOF_STRUCT_AFTER(omd, modifier));
}
LukasTonne marked this conversation as resolved Outdated

You can write const auto * with the cast, it might keep it on one line

You can write `const auto *` with the cast, it might keep it on one line
greasepencil::init_data_filter(&omd->filter);
greasepencil::init_filter_data(&omd->filter);
}
static void copy_data(const ModifierData *md, ModifierData *target, const int flag)
@ -68,7 +68,7 @@ static void copy_data(const ModifierData *md, ModifierData *target, const int fl
GreasePencilOpacityModifierData *tomd = (GreasePencilOpacityModifierData *)target;
BKE_modifier_copydata_generic(md, target, flag);
greasepencil::copy_data_filter(&omd->filter, &tomd->filter, flag);
greasepencil::copy_filter_data(&omd->filter, &tomd->filter, flag);
}
static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_masks)
@ -82,14 +82,14 @@ static void required_data_mask(ModifierData *md, CustomData_MeshMasks *r_cddata_
static void foreach_ID_link(ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
{
LukasTonne marked this conversation as resolved
Review

You should just be able to retrieve the vertex group as an attribute

You should just be able to retrieve the vertex group as an attribute
Review

Took some explaining from @filedescriptor how this works (maybe a good topic for technical docs?). As far as i understand the VArray wrapper for the curves->deform_verts() is ok here, since we're only using a single vertex group. For something like the armature modifier i'd guess we still want to use the MDeformVert directly.

Took some explaining from @filedescriptor how this works (maybe a good topic for technical docs?). As far as i understand the `VArray` wrapper for the `curves->deform_verts()` is ok here, since we're only using a single vertex group. For something like the armature modifier i'd guess we still want to use the `MDeformVert` directly.
Review

Right, exactly

Right, exactly
GreasePencilOpacityModifierData *omd = (GreasePencilOpacityModifierData *)md;
greasepencil::foreach_ID_link_filter(&omd->filter, ob, walk, user_data);
greasepencil::foreach_filter_ID_link(&omd->filter, ob, walk, user_data);
}
static void free_data(ModifierData *md)
{
GreasePencilOpacityModifierData *omd = (GreasePencilOpacityModifierData *)md;
greasepencil::free_data_filter(&omd->filter);
greasepencil::free_filter_data(&omd->filter);
}
static void modify_curves(ModifierData *md,
@ -150,7 +150,7 @@ static void panel_draw(const bContext *C, Panel *panel)
C, layout, "Influence", ptr, "open_influence_panel"))
{
PointerRNA filter_ptr = RNA_pointer_get(ptr, "filter");
greasepencil::draw_influence_settings(C, influence_panel, &filter_ptr);
greasepencil::draw_filter_settings(C, influence_panel, &filter_ptr);
}
uiLayoutSetPropSep(layout, true);

View File

@ -36,18 +36,18 @@ namespace blender::greasepencil {
using bke::greasepencil::Drawing;
using bke::greasepencil::Layer;
void init_data_filter(GreasePencilModifierFilterData * /*filter_data*/) {}
void init_filter_data(GreasePencilModifierFilterData * /*filter_data*/) {}
void copy_data_filter(const GreasePencilModifierFilterData *filter_data_src,
void copy_filter_data(const GreasePencilModifierFilterData *filter_data_src,
GreasePencilModifierFilterData *filter_data_dst,
const int /*flag*/)
{
memcpy(filter_data_dst, filter_data_src, sizeof(GreasePencilModifierFilterData));
}
void free_data_filter(GreasePencilModifierFilterData * /*filter_data*/) {}
void free_filter_data(GreasePencilModifierFilterData * /*filter_data*/) {}
void foreach_ID_link_filter(GreasePencilModifierFilterData *filter_data,
void foreach_filter_ID_link(GreasePencilModifierFilterData *filter_data,
Object *ob,
IDWalkFunc walk,
void *user_data)
@ -55,7 +55,7 @@ void foreach_ID_link_filter(GreasePencilModifierFilterData *filter_data,
walk(user_data, ob, (ID **)&filter_data->material, IDWALK_CB_USER);
}
void draw_influence_settings(const bContext * /*C*/, uiLayout *layout, PointerRNA *ptr)
void draw_filter_settings(const bContext * /*C*/, uiLayout *layout, PointerRNA *ptr)
{
PointerRNA ob_ptr = RNA_pointer_create(ptr->owner_id, &RNA_Object, ptr->owner_id);
PointerRNA obj_data_ptr = RNA_pointer_get(&ob_ptr, "data");

View File

@ -29,17 +29,17 @@ class Drawing;
namespace blender::greasepencil {
void init_data_filter(GreasePencilModifierFilterData *filter_data);
void copy_data_filter(const GreasePencilModifierFilterData *filter_data_src,
void init_filter_data(GreasePencilModifierFilterData *filter_data);
void copy_filter_data(const GreasePencilModifierFilterData *filter_data_src,
GreasePencilModifierFilterData *filter_data_dst,
int flag);
void free_data_filter(GreasePencilModifierFilterData *filter_data);
void foreach_ID_link_filter(GreasePencilModifierFilterData *filter_data,
void free_filter_data(GreasePencilModifierFilterData *filter_data);
void foreach_filter_ID_link(GreasePencilModifierFilterData *filter_data,
Object *ob,
IDWalkFunc walk,
void *user_data);
void draw_influence_settings(const bContext *C, uiLayout *layout, PointerRNA *ptr);
void draw_filter_settings(const bContext *C, uiLayout *layout, PointerRNA *ptr);
IndexMask get_filtered_layer_mask(const GreasePencil &grease_pencil,
const GreasePencilModifierFilterData &filter_data,