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:
-rw-r--r--source/blender/blenkernel/BKE_ipo.h2
-rw-r--r--source/blender/blenkernel/intern/blender.c15
-rw-r--r--source/blender/blenkernel/intern/ipo.c4
-rw-r--r--source/blender/blenkernel/intern/object.c2
4 files changed, 14 insertions, 9 deletions
diff --git a/source/blender/blenkernel/BKE_ipo.h b/source/blender/blenkernel/BKE_ipo.h
index a1fb24ae9b2..7c8c0186397 100644
--- a/source/blender/blenkernel/BKE_ipo.h
+++ b/source/blender/blenkernel/BKE_ipo.h
@@ -95,7 +95,7 @@ void do_ipo(struct Ipo *ipo);
void do_mat_ipo(struct Material *ma);
void do_ob_ipo(struct Object *ob);
void do_seq_ipo(struct Sequence *seq);
-void do_ob_ipodrivers(struct Object *ob, struct Ipo *ipo);
+void do_ob_ipodrivers(struct Object *ob, struct Ipo *ipo, float ctime);
int has_ipo_code(struct Ipo *ipo, int code);
void do_all_data_ipos(void);
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index db41f5c64c2..570f993f542 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -63,15 +63,16 @@
#include "DNA_mesh_types.h"
#include "DNA_screen_types.h"
-#include "BKE_library.h"
#include "BKE_blender.h"
+#include "BKE_curve.h"
+#include "BKE_depsgraph.h"
#include "BKE_displist.h"
+#include "BKE_font.h"
#include "BKE_global.h"
+#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_scene.h"
-#include "BKE_curve.h"
-#include "BKE_font.h"
#include "BLI_editVert.h"
@@ -378,15 +379,19 @@ static void setup_app_data(BlendFileData *bfd, char *filename)
if (!G.background) {
setscreen(G.curscreen);
}
- /* baseflags */
+
+ /* baseflags, groups, make depsgraph, etc */
set_scene_bg(G.scene);
- /* last stage of do_versions actually, update objects (like recalc poses) */
+ /* last stage of do_versions actually, that sets recalc flags for recalc poses */
for(ob= G.main->object.first; ob; ob= ob->id.next) {
if(ob->type==OB_ARMATURE)
if(ob->recalc) object_handle_update(ob);
}
+ /* now tag update flags, to ensure deformers get calculated on redraw */
+ DAG_scene_update_flags(G.scene, G.scene->lay);
+
if (G.f & G_DOSCRIPTLINKS) {
/* there's an onload scriptlink to execute in screenmain */
mainqenter(ONLOAD_SCRIPT, 1);
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 357f979ca2f..311ffb28019 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -1982,7 +1982,7 @@ void do_ob_ipo(Object *ob)
}
}
-void do_ob_ipodrivers(Object *ob, Ipo *ipo)
+void do_ob_ipodrivers(Object *ob, Ipo *ipo, float ctime)
{
IpoCurve *icu;
void *poin;
@@ -1990,7 +1990,7 @@ void do_ob_ipodrivers(Object *ob, Ipo *ipo)
for(icu= ipo->curve.first; icu; icu= icu->next) {
if(icu->driver) {
- icu->curval= eval_icu(icu, 0.0f);
+ icu->curval= eval_icu(icu, ctime);
poin= get_ipo_poin((ID *)ob, icu, &type);
if(poin) write_ipo_poin(poin, type, icu->curval);
}
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index fdae3ca2667..651f094226a 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1363,7 +1363,7 @@ void where_is_object_time(Object *ob, float ctime)
}
else {
/* but, the drivers have to be done */
- if(ob->ipo) do_ob_ipodrivers(ob, ob->ipo);
+ if(ob->ipo) do_ob_ipodrivers(ob, ob->ipo, stime);
}
if(ob->parent) {