64 ot->
name =
"Insert Shape Key";
65 ot->
description =
"Insert mask shape keyframe for active mask layer at the current frame";
66 ot->
idname =
"MASK_OT_shape_key_insert";
92 if (mask_layer_shape) {
110 ot->
name =
"Clear Shape Key";
111 ot->
description =
"Remove mask shape keyframe for active mask layer at the current frame";
112 ot->
idname =
"MASK_OT_shape_key_clear";
127 bool changed =
false;
135 if (mask_layer->splines_shapes.first) {
144 for (mask_layer_shape = mask_layer->splines_shapes.first; mask_layer_shape;
145 mask_layer_shape = mask_layer_shape->
next) {
156 for (
int i = 0; i < spline->tot_point; i++) {
161 shape_ele_dst->
value[6] = shape_ele_src->
value[6];
194 ot->
name =
"Feather Reset Animation";
195 ot->
description =
"Reset feather weights on all selected points animation values";
196 ot->
idname =
"MASK_OT_shape_key_feather_reset";
219 bool changed =
false;
234 if (mask_layer->splines_shapes.first) {
238 for (mask_layer_shape = mask_layer->splines_shapes.first; mask_layer_shape;
239 mask_layer_shape = mask_layer_shape_next) {
243 mask_layer_shape_next = mask_layer_shape->
next;
247 if (mask_layer_shape_lastsel ==
NULL) {
248 mask_layer_shape_lastsel = mask_layer_shape;
250 if ((mask_layer_shape->
next ==
NULL) ||
252 mask_layer_shape_a = mask_layer_shape_lastsel;
253 mask_layer_shape_b = mask_layer_shape;
254 mask_layer_shape_lastsel =
NULL;
257 mask_layer_shape_next = mask_layer_shape->
next;
262 if (mask_layer_shape_a && mask_layer_shape_b) {
270 for (mask_layer_shape_tmp = mask_layer_shape_a;
271 mask_layer_shape_tmp && (mask_layer_shape_tmp != mask_layer_shape_tmp_last);
272 mask_layer_shape_tmp = mask_layer_shape_tmp_next) {
273 mask_layer_shape_tmp_next = mask_layer_shape_tmp->
next;
274 BLI_remlink(&mask_layer->splines_shapes, mask_layer_shape_tmp);
279 for (mask_layer_shape_tmp = shapes_tmp.
first; mask_layer_shape_tmp;
280 mask_layer_shape_tmp = mask_layer_shape_tmp->
next) {
283 mask_layer, mask_layer_shape_tmp->
frame);
289 for (mask_layer_shape_tmp = shapes_tmp.
first; mask_layer_shape_tmp;
290 mask_layer_shape_tmp = mask_layer_shape_tmp_next) {
296 mask_layer_shape_tmp_next = mask_layer_shape_tmp->
next;
300 mask_layer, mask_layer_shape_tmp->
frame);
306 for (
int i = 0; i < spline->tot_point; i++) {
314 memcpy(shape_ele_dst->
value, shape_ele_src->
value,
sizeof(
float[6]));
317 shape_ele_dst->
value[6] = shape_ele_src->
value[6];
352 ot->
name =
"Re-Key Points of Selected Shapes";
354 "Recalculate animation data on selected points for frames selected in the dopesheet";
355 ot->
idname =
"MASK_OT_shape_key_rekey";
381 bool changed =
false;
393 bool changed =
false;
struct Scene * CTX_data_scene(const bContext *C)
struct Mask * CTX_data_edit_mask(const bContext *C)
struct MaskLayerShape * BKE_mask_layer_shape_verify_frame(struct MaskLayer *masklay, int frame)
#define MASKPOINT_ISSEL_ANY(p)
struct MaskLayerShape * BKE_mask_layer_shape_alloc(struct MaskLayer *masklay, int frame)
void BKE_mask_layer_shape_unlink(struct MaskLayer *masklay, struct MaskLayerShape *masklay_shape)
void BKE_mask_layer_evaluate(struct MaskLayer *masklay, float ctime, bool do_newframe)
struct MaskLayerShape * BKE_mask_layer_shape_find_frame(struct MaskLayer *masklay, int frame)
void BKE_mask_layer_shape_from_mask(struct MaskLayer *masklay, struct MaskLayerShape *masklay_shape)
void BKE_mask_layer_shape_free(struct MaskLayerShape *masklay_shape)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void DEG_id_tag_update(struct ID *id, int flag)
Object is a sort of wrapper for general info.
bool ED_maskedit_mask_visible_splines_poll(struct bContext *C)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a point
bool ED_mask_layer_select_check(const struct MaskLayer *mask_layer)
static int mask_shape_key_insert_exec(bContext *C, wmOperator *UNUSED(op))
void MASK_OT_shape_key_insert(wmOperatorType *ot)
void MASK_OT_shape_key_feather_reset(wmOperatorType *ot)
void MASK_OT_shape_key_rekey(wmOperatorType *ot)
void MASK_OT_shape_key_clear(wmOperatorType *ot)
bool ED_mask_layer_shape_auto_key_select(Mask *mask, const int frame)
void ED_mask_layer_shape_auto_key(MaskLayer *mask_layer, const int frame)
bool ED_mask_layer_shape_auto_key_all(Mask *mask, const int frame)
static int mask_shape_key_clear_exec(bContext *C, wmOperator *UNUSED(op))
static int mask_shape_key_feather_reset_exec(bContext *C, wmOperator *UNUSED(op))
static int mask_shape_key_rekey_exec(bContext *C, wmOperator *op)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
float value[MASK_OBJECT_SHAPE_ELEM_SIZE]
struct MaskLayerShape * next
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
void WM_event_add_notifier(const bContext *C, uint type, void *reference)