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:
authorCampbell Barton <ideasman42@gmail.com>2011-03-25 11:43:41 +0300
committerCampbell Barton <ideasman42@gmail.com>2011-03-25 11:43:41 +0300
commit8b6b5341a55541110684e5272f8856559b89337f (patch)
tree110636f37d037400f65f9204fdb18591c5b7e7a2 /source/blender/blenkernel
parentd8e6dd705fbf7d98043e8a210bb49d6903792872 (diff)
move object re-linking into a function.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/BKE_object.h2
-rw-r--r--source/blender/blenkernel/intern/object.c29
2 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 065810089f1..cacfa702f7f 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -143,6 +143,8 @@ void object_camera_matrix(
float winmat[][4], struct rctf *viewplane, float *clipsta, float *clipend, float *lens, float *ycor,
float *viewdx, float *viewdy);
+void object_relink(struct Object *ob);
+
#ifdef __cplusplus
}
#endif
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 9f2de5be84a..0348d188a7d 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -3082,3 +3082,32 @@ int object_is_modified(Scene *scene, Object *ob)
return flag;
}
+
+static void copy_object__forwardModifierLinks(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin)
+{
+ /* this is copied from ID_NEW; it might be better to have a macro */
+ if(*idpoin && (*idpoin)->newid) *idpoin = (*idpoin)->newid;
+}
+
+void object_relink(Object *ob)
+{
+ if(ob->id.lib)
+ return;
+
+ relink_constraints(&ob->constraints);
+ if (ob->pose){
+ bPoseChannel *chan;
+ for (chan = ob->pose->chanbase.first; chan; chan=chan->next){
+ relink_constraints(&chan->constraints);
+ }
+ }
+ modifiers_foreachIDLink(ob, copy_object__forwardModifierLinks, NULL);
+
+ if(ob->adt)
+ BKE_relink_animdata(ob->adt);
+
+ ID_NEW(ob->parent);
+
+ ID_NEW(ob->proxy);
+ ID_NEW(ob->proxy_group);
+}