Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/src/previewrender.c')
-rw-r--r--source/blender/src/previewrender.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/source/blender/src/previewrender.c b/source/blender/src/previewrender.c
index 1730bb890bc..8dfa32d48c8 100644
--- a/source/blender/src/previewrender.c
+++ b/source/blender/src/previewrender.c
@@ -282,6 +282,15 @@ void BIF_preview_free_dbase(void)
free_main(pr_main);
}
+static Object *find_object(ListBase *lb, const char *name)
+{
+ Object *ob;
+ for(ob= lb->first; ob; ob= ob->id.next)
+ if(strcmp(ob->id.name+2, name)==0)
+ break;
+ return ob;
+}
+
/* call this with an ID pointer to initialize preview scene */
/* call this with ID NULL to restore assigned ID pointers in preview scene */
static Scene *preview_prepare_scene(RenderInfo *ri, int id_type, ID *id, int pr_method)
@@ -384,7 +393,16 @@ static Scene *preview_prepare_scene(RenderInfo *ri, int id_type, ID *id, int pr_
else if(id_type==ID_LA) {
Lamp *la= (Lamp *)id;
- sce->lay= 1<<MA_LAMP;
+ if(la && la->type==LA_SUN && (la->sun_effect_type & LA_SUN_EFFECT_SKY)) {
+ sce->lay= 1<<MA_ATMOS;
+ sce->world= G.scene->world;
+ sce->camera= (Object *)find_object(&pr_main->object, "CameraAtmo");
+ }
+ else {
+ sce->lay= 1<<MA_LAMP;
+ sce->world= NULL;
+ sce->camera= (Object *)find_object(&pr_main->object, "Camera");
+ }
sce->r.mode &= ~R_SHADOW;
for(base= sce->base.first; base; base= base->next) {