Bugfixes for: [#28525] [#28690] [#28774] [#28777]

This commit basically disables the RNA update caches for now, and
introduces a workaround/hack to ensure that modifier properties still
work when animated/driven. The whole way that updates currently get
handled needs reviewing in future.

Fix provided by Brecht.
This commit is contained in:
Joshua Leung
2011-10-01 01:27:44 +00:00
parent 471ea617b2
commit b062056c05
2 changed files with 15 additions and 2 deletions

View File

@@ -1160,6 +1160,8 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
return 0;
}
/* RNA property update disabled for now - [#28525] [#28690] [#28774] [#28777] */
#if 0
/* buffer property update for later flushing */
if (RNA_property_update_check(prop)) {
short skip_updates_hack = 0;
@@ -1176,6 +1178,7 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
if (skip_updates_hack == 0)
RNA_property_update_cache_add(&new_ptr, prop);
}
#endif
}
/* successful */

View File

@@ -2028,17 +2028,27 @@ static int object_modifiers_use_time(Object *ob)
/* check whether any modifiers are animated */
if (ob->adt) {
AnimData *adt = ob->adt;
FCurve *fcu;
/* action - check for F-Curves with paths containing 'modifiers[' */
if (adt->action) {
FCurve *fcu;
for (fcu = adt->action->curves.first; fcu; fcu = fcu->next) {
if (fcu->rna_path && strstr(fcu->rna_path, "modifiers["))
return 1;
}
}
/* This here allows modifier properties to get driven and still update properly
*
* Workaround to get [#26764] (e.g. subsurf levels not updating when animated/driven)
* working, without the updating problems ([#28525] [#28690] [#28774] [#28777]) caused
* by the RNA updates cache introduced in r.38649
*/
for (fcu = adt->drivers.first; fcu; fcu = fcu->next) {
if (fcu->rna_path && strstr(fcu->rna_path, "modifiers["))
return 1;
}
// XXX: also, should check NLA strips, though for now assume that nobody uses
// that and we can omit that for performance reasons...
}