RenderEngine: add .is_animation and .is_preview properties to detect if it's

an animation or preview render that is being done.
This commit is contained in:
Brecht Van Lommel 2011-11-02 13:36:28 +00:00
parent 3d35e004d3
commit 79a389ee37
5 changed files with 25 additions and 1 deletions

View File

@ -251,9 +251,16 @@ static void rna_def_render_engine(BlenderRNA *brna)
prop= RNA_def_string(func, "message", "", 0, "Report Message", "");
RNA_def_property_flag(prop, PROP_REQUIRED);
/* registration */
RNA_define_verify_sdna(0);
prop= RNA_def_property(srna, "is_animation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", RE_ENGINE_ANIMATION);
prop= RNA_def_property(srna, "is_preview", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", RE_ENGINE_PREVIEW);
/* registration */
prop= RNA_def_property(srna, "bl_idname", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "type->idname");
RNA_def_property_flag(prop, PROP_REGISTER|PROP_NEVER_CLAMP);

View File

@ -46,11 +46,16 @@ struct Scene;
/* External Engine */
/* RenderEngineType.flag */
#define RE_INTERNAL 1
#define RE_GAME 2
#define RE_USE_PREVIEW 4
#define RE_USE_POSTPROCESS 8
/* RenderEngine.flag */
#define RE_ENGINE_ANIMATION 1
#define RE_ENGINE_PREVIEW 2
extern ListBase R_engines;
typedef struct RenderEngineType {
@ -70,6 +75,8 @@ typedef struct RenderEngineType {
typedef struct RenderEngine {
RenderEngineType *type;
int flag;
struct Render *re;
ListBase fullresult;
} RenderEngine;

View File

@ -601,6 +601,7 @@ typedef struct LampRen {
#define R_NEED_TANGENT 16
#define R_BAKE_TRACE 32
#define R_BAKING 64
#define R_ANIMATION 128
/* vlakren->flag (vlak = face in dutch) char!!! */
#define R_SMOOTH 1

View File

@ -265,6 +265,11 @@ int RE_engine_render(Render *re, int do_all)
engine = RE_engine_create(type);
engine->re= re;
if(re->flag & R_ANIMATION)
engine->flag |= RE_ENGINE_ANIMATION;
if(re->r.scemode & R_PREVIEWBUTS)
engine->flag |= RE_ENGINE_PREVIEW;
if((re->r.scemode & (R_NO_FRAME_UPDATE|R_PREVIEWBUTS))==0)
scene_update_for_newframe(re->main, re->scene, re->lay);

View File

@ -3085,6 +3085,8 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
/* is also set by caller renderwin.c */
G.rendering= 1;
re->flag |= R_ANIMATION;
if(BKE_imtype_is_movie(scene->r.imtype))
if(!mh->start_movie(scene, &re->r, re->rectx, re->recty, re->reports))
G.afbreek= 1;
@ -3193,6 +3195,8 @@ void RE_BlenderAnim(Render *re, Main *bmain, Scene *scene, Object *camera_overri
scene->r.cfra= cfrao;
re->flag &= ~R_ANIMATION;
/* UGLY WARNING */
G.rendering= 0;
}