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:
authorTon Roosendaal <ton@blender.org>2006-11-11 19:45:17 +0300
committerTon Roosendaal <ton@blender.org>2006-11-11 19:45:17 +0300
commitfeb210f08ebd5d6283624996883719b00fa590eb (patch)
treef08814d79d54c87810a320a0f6f101ba5e1a1175 /source/blender/src/transform_generics.c
parent97f892b86b9b31e8165c27c698da7996dfd2d0a2 (diff)
Experimental feature, especially for the animation department:
THE OBJECT PROXY Or simple said; local control of referenced data from libraries. Having library files with references is a very common studio setup, and Blender did do quite well in that area. Were it not that for character setups it was impossible to use still. This commit will enable a full rig+character to remain in the library, and still have - under strict control - local access for animation edits. Full log: http://www.blender3d.org/cms/Proxy_Objects.824.0.html
Diffstat (limited to 'source/blender/src/transform_generics.c')
-rwxr-xr-xsource/blender/src/transform_generics.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/source/blender/src/transform_generics.c b/source/blender/src/transform_generics.c
index 8b75586442b..f9e75d2336a 100755
--- a/source/blender/src/transform_generics.c
+++ b/source/blender/src/transform_generics.c
@@ -322,21 +322,23 @@ void recalcData(TransInfo *t)
}
else {
for(base= FIRSTBASE; base; base= base->next) {
+ Object *ob= base->object;
+
/* this flag is from depgraph, was stored in nitialize phase, handled in drawview.c */
if(base->flag & BA_HAS_RECALC_OB)
- base->object->recalc |= OB_RECALC_OB;
+ ob->recalc |= OB_RECALC_OB;
if(base->flag & BA_HAS_RECALC_DATA)
- base->object->recalc |= OB_RECALC_DATA;
+ ob->recalc |= OB_RECALC_DATA;
/* thanks to ob->ctime usage, ipos are not called in where_is_object,
unless we edit ipokeys */
if(base->flag & BA_DO_IPO) {
- if(base->object->ipo) {
+ if(ob->ipo) {
IpoCurve *icu;
- base->object->ctime= -1234567.0;
+ ob->ctime= -1234567.0;
- icu= base->object->ipo->curve.first;
+ icu= ob->ipo->curve.first;
while(icu) {
calchandles_ipocurve(icu);
icu= icu->next;
@@ -345,10 +347,14 @@ void recalcData(TransInfo *t)
}
/* softbody exception */
- if(modifiers_isSoftbodyEnabled(base->object)) {
- if(base->object->recalc & OB_RECALC_DATA)
- base->object->softflag |= OB_SB_REDO;
+ if(modifiers_isSoftbodyEnabled(ob)) {
+ if(ob->recalc & OB_RECALC_DATA)
+ ob->softflag |= OB_SB_REDO;
}
+
+ /* proxy exception */
+ if(ob->proxy)
+ ob->proxy->recalc |= ob->recalc;
}
}