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:
authorJoerg Mueller <nexyon@gmail.com>2011-07-12 17:09:22 +0400
committerJoerg Mueller <nexyon@gmail.com>2011-07-12 17:09:22 +0400
commitd9cf98573050fa10f586ed121f514986e688e609 (patch)
tree6916742b8cb0b67387198592414d52860bf000cf /source/blender/editors
parent9132754dc1ed77429a6e870c479b69ac8829d845 (diff)
parentb90535cc334bb8ae3a51f8023732b8c786019ac7 (diff)
Merging trunk up to r38329.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/armature/poseUtils.c2
-rw-r--r--source/blender/editors/object/object_relations.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c13
-rw-r--r--source/blender/editors/transform/transform_conversions.c4
4 files changed, 18 insertions, 3 deletions
diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c
index 0f001751a96..e1e346ab920 100644
--- a/source/blender/editors/armature/poseUtils.c
+++ b/source/blender/editors/armature/poseUtils.c
@@ -121,7 +121,7 @@ static void fcurves_to_pchan_links_get (ListBase *pfLinks, Object *ob, bAction *
pfl->oldangle = pchan->rotAngle;
/* make copy of custom properties */
- if (transFlags & ACT_TRANS_PROP)
+ if (pchan->prop && (transFlags & ACT_TRANS_PROP))
pfl->oldprops = IDP_CopyProperty(pchan->prop);
}
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 285b08c521b..f21241b6e7a 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1319,7 +1319,7 @@ void OBJECT_OT_make_links_scene(wmOperatorType *ot)
/* identifiers */
ot->name= "Link Objects to Scene";
- ot->description = "Make linked data local to each object";
+ ot->description = "Link selection to another scene";
ot->idname= "OBJECT_OT_make_links_scene";
/* api callbacks */
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index aadb355f743..eeaf87757ce 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -468,8 +468,9 @@ void VIEW3D_OT_object_as_camera(wmOperatorType *ot)
void ED_view3d_calc_clipping(BoundBox *bb, float planes[4][4], bglMats *mats, rcti *rect)
{
+ float modelview[4][4];
double xs, ys, p[3];
- short val;
+ int val, flip_sign, a;
/* near zero floating point values can give issues with gluUnProject
in side view on some implementations */
@@ -493,11 +494,21 @@ void ED_view3d_calc_clipping(BoundBox *bb, float planes[4][4], bglMats *mats, rc
VECCOPY(bb->vec[4+val], p);
}
+ /* verify if we have negative scale. doing the transform before cross
+ product flips the sign of the vector compared to doing cross product
+ before transform then, so we correct for that. */
+ for(a=0; a<16; a++)
+ ((float*)modelview)[a] = mats->modelview[a];
+ flip_sign = is_negative_m4(modelview);
+
/* then plane equations */
for(val=0; val<4; val++) {
normal_tri_v3(planes[val], bb->vec[val], bb->vec[val==3?0:val+1], bb->vec[val+4]);
+ if(flip_sign)
+ negate_v3(planes[val]);
+
planes[val][3]= - planes[val][0]*bb->vec[val][0]
- planes[val][1]*bb->vec[val][1]
- planes[val][2]*bb->vec[val][2];
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 30010aad3d7..faf8c16f991 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -4988,6 +4988,10 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
where_is_pose(t->scene, pose_ob);
}
+ /* set BONE_TRANSFORM flags for autokey, manipulator draw might have changed them */
+ if (!cancelled && (t->mode != TFM_DUMMY))
+ count_set_pose_transflags(&t->mode, t->around, ob);
+
/* if target-less IK grabbing, we calculate the pchan transforms and clear flag */
if (!cancelled && t->mode==TFM_TRANSLATION)
targetless_ik= apply_targetless_ik(ob);