From 3d222c3de6a281b4e7165634eb6e01f8010ecbc2 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 10 Mar 2010 08:17:18 +0000 Subject: - scene sequencer camera override wasnt working for render strips (only opengl) - temp disable camera switching with override by clearning markers (hack) - check for GAMEBLENDER define else eclipse gets confused by multiple definitions of functons in the stub. --- source/blender/blenkernel/intern/sequencer.c | 29 +++++++++++----------- source/blender/makesrna/SConscript | 2 +- .../bad_level_call_stubs/CMakeLists.txt | 4 +++ .../blenderplayer/bad_level_call_stubs/SConscript | 3 +++ source/blenderplayer/bad_level_call_stubs/stubs.c | 3 +++ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 601ead8654e..341d0a542e6 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -2107,7 +2107,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int } } else if(seq->type == SEQ_SCENE) { // scene can be NULL after deletions Scene *sce= seq->scene;// *oldsce= scene; - Render *re; int have_seq= FALSE; int sce_valid= FALSE; @@ -2137,6 +2136,7 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int int frame= seq->sfra + se->nr + seq->anim_startofs; int oldcfra = seq->scene->r.cfra; Object *oldcamera= seq->scene->camera; + ListBase oldmarkers; /* Hack! This function can be called from do_render_seq(), in that case the seq->scene can already have a Render initialized with same name, @@ -2158,23 +2158,24 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int scene->r.scemode &= ~R_DOSEQ; seq->scene->r.cfra= frame; + if(seq->scene_camera) seq->scene->camera= seq->scene_camera; + else scene_camera_switch_update(seq->scene); + +#ifdef DURIAN_CAMERA_SWITCH + /* stooping to new low's in hackyness :( */ + oldmarkers= seq->scene->markers; + seq->scene->markers.first= seq->scene->markers.last= NULL; +#endif if(sequencer_view3d_cb && (seq->flag & SEQ_USE_SCENE_OPENGL) && (seq->scene == scene || have_seq==0)) { /* opengl offscreen render */ - if(seq->scene_camera) seq->scene->camera= seq->scene_camera; - else scene_camera_switch_update(seq->scene); - scene_update_for_newframe(seq->scene, seq->scene->lay); se->ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty); } else { + Render *re; RenderResult rres; -#ifdef DURIAN_CAMERA_SWITCH - /* stooping to new low's in hackyness :( */ - scene_marker_tfm_translate(seq->scene, MAXFRAME*2, 0); -#endif - if(rendering) re= RE_NewRender(" do_build_seq_ibuf", RE_SLOT_DEFAULT); else @@ -2199,11 +2200,6 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int RE_ReleaseResultImage(re); // BIF_end_render_callbacks(); - -#ifdef DURIAN_CAMERA_SWITCH - /* stooping to new low's in hackyness :( */ - scene_marker_tfm_translate(seq->scene, MAXFRAME*-2, 0); -#endif } /* restore */ @@ -2212,6 +2208,11 @@ static void do_build_seq_ibuf(Scene *scene, Sequence * seq, TStripElem *se, int seq->scene->r.cfra = oldcfra; seq->scene->camera= oldcamera; +#ifdef DURIAN_CAMERA_SWITCH + /* stooping to new low's in hackyness :( */ + seq->scene->markers= oldmarkers; +#endif + copy_to_ibuf_still(seq, se); if (!build_proxy_run) { diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index f78f931b669..cf31fb8e0e5 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -44,7 +44,7 @@ if env['BF_UNIT_TEST']: if env['OURPLATFORM'] == 'linux2': cflags='-pthread' - incs += ' ../../../extern/binreloc/include' + incs += ' ../../../extern/binreloc/include' if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] diff --git a/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt b/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt index a172ff71c11..9a53997fd66 100644 --- a/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt +++ b/source/blenderplayer/bad_level_call_stubs/CMakeLists.txt @@ -38,6 +38,10 @@ SET(INC ../../../source/blender/makesrna ) +IF(WITH_GAMEENGINE) + ADD_DEFINITIONS(-DGAMEBLENDER) +ENDIF(WITH_GAMEENGINE) + IF(WITH_INTERNATIONAL) ADD_DEFINITIONS(-DWITH_FREETYPE2) ENDIF(WITH_INTERNATIONAL) diff --git a/source/blenderplayer/bad_level_call_stubs/SConscript b/source/blenderplayer/bad_level_call_stubs/SConscript index ab98e984cef..aafe4933b59 100644 --- a/source/blenderplayer/bad_level_call_stubs/SConscript +++ b/source/blenderplayer/bad_level_call_stubs/SConscript @@ -10,4 +10,7 @@ defs = '' if env['WITH_BF_INTERNATIONAL']: defs += 'WITH_FREETYPE2' +if env['WITH_BF_GAMEENGINE']: + defs.append('GAMEBLENDER=1') + env.BlenderLib ('blenkernel_blc', sources = Split(sources), includes=Split(incs), defines=Split(defs), libtype=['player'],priority=[220] ) diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 00c827bab94..dfdfec217aa 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -28,6 +28,7 @@ * BKE_bad_level_calls function stubs */ +#if GAMEBLENDER == 1 #include #include "DNA_listBase.h" #include "RNA_types.h" @@ -373,3 +374,5 @@ int CSG_PerformBooleanOperation( CSG_FaceIteratorDescriptor obBFaces, CSG_VertexIteratorDescriptor obBVertices) { return 0;} + +#endif // GAMEBLENDER == 1 -- cgit v1.2.3