GPv3: Opacity modifier #116946
|
@ -59,7 +59,7 @@ static void init_data(ModifierData *md)
|
|||
sizeof(*(omd)) - OFFSETOF_STRUCT_AFTER(omd, modifier));
|
||||
}
|
||||
LukasTonne marked this conversation as resolved
Outdated
|
||||
|
||||
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
Hans Goudey
commented
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
Lukas Tönne
commented
Took some explaining from @filedescriptor how this works (maybe a good topic for technical docs?). As far as i understand the 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.
Hans Goudey
commented
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);
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue
You can write
const auto *
with the cast, it might keep it on one line