forked from bartvdbraak/blender
=Python API bugfix=
Scene.update(full=1) was pretty useless as it didn't actually evaluate the depsgraph DAG. This meant, for example, that re-evaluating the parenting tree for an armature pose could only be done by redrawing the view (which evaluates the depsgraph). scene_update_for_newframe() is now called when Scene.update is in "full" mode; to prevent firing off newframe scriptlink events, scriptlinks are temporarily disabled while scene_update_for_newframe() is being called.
This commit is contained in:
parent
50e5c9d1c2
commit
b4ec6efb41
@ -805,10 +805,18 @@ static PyObject *Scene_update( BPy_Scene * self, PyObject * args )
|
||||
if( !full )
|
||||
DAG_scene_sort( scene );
|
||||
|
||||
else if( full == 1 )
|
||||
else if( full == 1 ) {
|
||||
int enablescripts = G.f & G_DOSCRIPTLINKS;
|
||||
|
||||
/*Disable scriptlinks to prevent firing off newframe scriptlink
|
||||
events.*/
|
||||
G.f &= ~G_DOSCRIPTLINKS;
|
||||
set_scene_bg( scene );
|
||||
|
||||
else
|
||||
scene_update_for_newframe( scene, scene->lay );
|
||||
|
||||
/*re-enabled scriptlinks if necassary.*/
|
||||
if (enablescripts) G.f |= G_DOSCRIPTLINKS;
|
||||
} else
|
||||
return EXPP_ReturnPyObjError( PyExc_ValueError,
|
||||
"in method scene.update(full), full should be:\n"
|
||||
"0: to only sort scene elements (old behavior); or\n"
|
||||
|
Loading…
Reference in New Issue
Block a user