Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Gavrilov <angavrilov@gmail.com>2018-11-08 13:56:57 +0300
committerAlexander Gavrilov <angavrilov@gmail.com>2018-11-08 14:01:45 +0300
commitfe0fdf1771c65dfcd64b5650190cc19f0eaac290 (patch)
treea932882cfce85d8ce07b9211acf1fc4fd970c7f2 /source/blender/makesrna/intern/rna_animation.c
parent0bb33294c12163191c180dda41533c690eea1b3a (diff)
RNA: tag animation update when changing Action Extrapolation/Blend/etc.
These fields affect the final result when using NLA.
Diffstat (limited to 'source/blender/makesrna/intern/rna_animation.c')
-rw-r--r--source/blender/makesrna/intern/rna_animation.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index 33cf8b581b8..43a89df0ed0 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -85,11 +85,13 @@ const EnumPropertyItem rna_enum_keying_flag_items[] = {
static void rna_AnimData_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
{
ID *id = ptr->id.data;
+ AnimData *adt = ptr->data;
/* tag for refresh so that scheduled updates (e.g. action changed) will
* get computed and reflected in the scene [#34869]
*/
- DEG_id_tag_update(id, OB_RECALC_OB | OB_RECALC_DATA);
+ adt->recalc |= ADT_RECALC_ANIM;
+ DEG_id_tag_update(id, OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME);
}
static int rna_AnimData_action_editable(PointerRNA *ptr, const char **UNUSED(r_info))
@@ -106,17 +108,9 @@ static int rna_AnimData_action_editable(PointerRNA *ptr, const char **UNUSED(r_i
static void rna_AnimData_action_set(PointerRNA *ptr, PointerRNA value)
{
ID *ownerId = (ID *)ptr->id.data;
- AnimData *adt;
/* set action */
BKE_animdata_set_action(NULL, ownerId, value.data);
-
- /* force action to get evaluated [#34869] */
- adt = BKE_animdata_from_id(ownerId);
- if (adt) {
- adt->recalc |= ADT_RECALC_ANIM;
- DEG_id_tag_update(ownerId, OB_RECALC_TIME);
- }
}
static void rna_AnimData_tweakmode_set(PointerRNA *ptr, const bool value)
@@ -1067,14 +1061,14 @@ static void rna_def_animdata(BlenderRNA *brna)
RNA_def_property_enum_items(prop, rna_enum_nla_mode_extend_items);
RNA_def_property_ui_text(prop, "Action Extrapolation",
"Action to take for gaps past the Active Action's range (when evaluating with NLA)");
- RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, NULL);
+ RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, "rna_AnimData_update");
prop = RNA_def_property(srna, "action_blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "act_blendmode");
RNA_def_property_enum_items(prop, rna_enum_nla_mode_blend_items);
RNA_def_property_ui_text(prop, "Action Blending",
"Method used for combining Active Action's result with result of NLA stack");
- RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, NULL); /* this will do? */
+ RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, "rna_AnimData_update"); /* this will do? */
prop = RNA_def_property(srna, "action_influence", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "act_influence");
@@ -1082,7 +1076,7 @@ static void rna_def_animdata(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Action Influence",
"Amount the Active Action contributes to the result of the NLA stack");
- RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, NULL); /* this will do? */
+ RNA_def_property_update(prop, NC_ANIMATION | ND_NLA, "rna_AnimData_update"); /* this will do? */
/* Drivers */
prop = RNA_def_property(srna, "drivers", PROP_COLLECTION, PROP_NONE);