diff options
author | Ton Roosendaal <ton@blender.org> | 2008-12-27 20:43:05 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2008-12-27 20:43:05 +0300 |
commit | b97ee36f8dc1cd12039d5cbd317cb32be43a59ef (patch) | |
tree | f885803b33b7436427485b9c9bd1392e57223a52 /source/blender/editors/animation/anim_deps.c | |
parent | b7c7057f3e876cd0f964e2badc43e0b9a5e25d3b (diff) |
2.5
Anim playback part 1 (needs more test, will do after commit)
- added the update_for_new_frame() back
- proper evaluation of time change notifier in WM level
- fixed redraw flushes for menus while animation plays.
Diffstat (limited to 'source/blender/editors/animation/anim_deps.c')
-rw-r--r-- | source/blender/editors/animation/anim_deps.c | 65 |
1 files changed, 56 insertions, 9 deletions
diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 36457e13f5b..f825a38bd7d 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -35,6 +35,7 @@ #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" +#include "DNA_texture_types.h" #include "DNA_view3d_types.h" #include "DNA_windowmanager_types.h" @@ -42,6 +43,10 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" +#include "BKE_global.h" +#include "BKE_scene.h" +#include "BKE_main.h" +#include "BKE_node.h" #include "BKE_utildefines.h" #include "RNA_access.h" @@ -50,24 +55,66 @@ /* ***************** depsgraph calls and anim updates ************* */ -/* generic update flush, reads from context Screen (layers) and scene */ -/* this is for compliancy, later it can do all windows etc */ -void ED_anim_dag_flush_update(bContext *C) +static unsigned int screen_view3d_layers(bScreen *screen) { - Scene *scene= CTX_data_scene(C); - bScreen *screen= CTX_wm_screen(C); - int layer= scene->lay; /* as minimum this */ - if(screen) { + unsigned int layer= screen->scene->lay; /* as minimum this */ ScrArea *sa; - + /* get all used view3d layers */ for(sa= screen->areabase.first; sa; sa= sa->next) { if(sa->spacetype==SPACE_VIEW3D) layer |= ((View3D *)sa->spacedata.first)->lay; } + return layer; } + return 0; +} + +/* generic update flush, reads from context Screen (layers) and scene */ +/* this is for compliancy, later it can do all windows etc */ +void ED_anim_dag_flush_update(bContext *C) +{ + Scene *scene= CTX_data_scene(C); + bScreen *screen= CTX_wm_screen(C); + + DAG_scene_flush_update(scene, screen_view3d_layers(screen), 0); +} + + +/* results in fully updated anim system */ +/* in future sound should be on WM level, only 1 sound can play! */ +void ED_update_for_newframe(bContext *C, int mute) +{ + bScreen *screen= CTX_wm_screen(C); + Scene *scene= screen->scene; - DAG_scene_flush_update(scene, layer, 0); + //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ + + /* this function applies the changes too */ + /* XXX future: do all windows */ + scene_update_for_newframe(scene, screen_view3d_layers(screen)); /* BKE_scene.h */ + + //if ( (CFRA>1) && (!mute) && (G.scene->audio.flag & AUDIO_SCRUB)) + // audiostream_scrub( CFRA ); + + /* 3d window, preview */ + //BIF_view3d_previewrender_signal(curarea, PR_DBASE|PR_DISPRECT); + + /* all movie/sequence images */ + //BIF_image_update_frame(); + + /* composite */ + if(scene->use_nodes && scene->nodetree) + ntreeCompositTagAnimated(scene->nodetree); + + /* update animated texture nodes */ + { + Tex *tex; + for(tex= G.main->tex.first; tex; tex= tex->id.next) + if( tex->use_nodes && tex->nodetree ) { + ntreeTexTagAnimated( tex->nodetree ); + } + } } |