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>2005-12-17 13:28:37 +0300
committerTon Roosendaal <ton@blender.org>2005-12-17 13:28:37 +0300
commit16aa8ea1b0b951d15dc04b2c9412a6b58f63447b (patch)
tree4a044fc1ba1b886ccbf6845e4e41efd400f09f36 /source/blender/src/edit.c
parente506a34bf860cf0cdc0b423e1f5635390359c125 (diff)
Orange: Snap-cursor-to-selected didn't respect bone layers yet.
Diffstat (limited to 'source/blender/src/edit.c')
-rw-r--r--source/blender/src/edit.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/source/blender/src/edit.c b/source/blender/src/edit.c
index 067a305d311..58edc4a817b 100644
--- a/source/blender/src/edit.c
+++ b/source/blender/src/edit.c
@@ -684,10 +684,13 @@ void countall()
}
else if(ob && (ob->flag & OB_POSEMODE)) {
if(ob->pose) {
+ bArmature *arm= ob->data;
bPoseChannel *pchan;
for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
G.totbone++;
- if(pchan->bone && (pchan->bone->flag & BONE_SELECTED)) G.totbonesel++;
+ if(pchan->bone && (pchan->bone->flag & BONE_SELECTED))
+ if(pchan->bone->layer & arm->layer)
+ G.totbonesel++;
}
}
allqueue(REDRAWINFO, 1); /* 1, because header->win==0! */
@@ -1159,6 +1162,7 @@ void snap_sel_to_curs()
ob= base->object;
if(ob->flag & OB_POSEMODE) {
bPoseChannel *pchan;
+ bArmature *arm= ob->data;
float cursp[3];
Mat4Invert(ob->imat, ob->obmat);
@@ -1167,10 +1171,13 @@ void snap_sel_to_curs()
for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next) {
if(pchan->bone->flag & BONE_SELECTED) {
- if(pchan->parent==NULL) {
- VECCOPY(pchan->loc, cursp);
+ if(pchan->bone->layer & arm->layer) {
+ if(pchan->parent==NULL) {
+ /* this is wrong... lazy! */
+ VECCOPY(pchan->loc, cursp);
+ }
+ /* else todo... */
}
- /* else todo... */
}
}
ob->pose->flag |= (POSE_LOCKED|POSE_DO_UNLOCK);
@@ -1268,14 +1275,17 @@ void snap_curs_to_sel()
Object *ob= OBACT;
if(ob && (ob->flag & OB_POSEMODE)) {
+ bArmature *arm= ob->data;
bPoseChannel *pchan;
for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next) {
- if(pchan->bone->flag & BONE_SELECTED) {
- VECCOPY(vec, pchan->pose_head);
- Mat4MulVecfl(ob->obmat, vec);
- VecAddf(centroid, centroid, vec);
- DO_MINMAX(vec, min, max);
- count++;
+ if(arm->layer & pchan->bone->layer) {
+ if(pchan->bone->flag & BONE_SELECTED) {
+ VECCOPY(vec, pchan->pose_head);
+ Mat4MulVecfl(ob->obmat, vec);
+ VecAddf(centroid, centroid, vec);
+ DO_MINMAX(vec, min, max);
+ count++;
+ }
}
}
}