Revision: 28056
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28056
Author:   broken
Date:     2010-04-07 02:43:06 +0200 (Wed, 07 Apr 2010)

Log Message:
-----------
Fix [#21760] Snap to Origin doesn't work

Removed the 'Snap selected to origin' operator, it was dysfunctional and other 
operators 
contain better functionality to do the same things.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d.py
    trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
    trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
    trunk/blender/source/blender/editors/space_view3d/view3d_snap.c

Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py    2010-04-06 19:49:54 UTC 
(rev 28055)
+++ trunk/blender/release/scripts/ui/space_view3d.py    2010-04-07 00:43:06 UTC 
(rev 28056)
@@ -207,7 +207,6 @@
 
         layout.operator("view3d.snap_selected_to_grid", text="Selection to 
Grid")
         layout.operator("view3d.snap_selected_to_cursor", text="Selection to 
Cursor")
-        layout.operator("view3d.snap_selected_to_center", text="Selection to 
Origin")
 
         layout.separator()
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_intern.h   
2010-04-06 19:49:54 UTC (rev 28055)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_intern.h   
2010-04-07 00:43:06 UTC (rev 28056)
@@ -175,7 +175,6 @@
 
 void VIEW3D_OT_snap_selected_to_grid(struct wmOperatorType *ot);
 void VIEW3D_OT_snap_selected_to_cursor(struct wmOperatorType *ot);
-void VIEW3D_OT_snap_selected_to_center(struct wmOperatorType *ot);
 void VIEW3D_OT_snap_cursor_to_grid(struct wmOperatorType *ot);
 void VIEW3D_OT_snap_cursor_to_center(struct wmOperatorType *ot);
 void VIEW3D_OT_snap_cursor_to_selected(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_ops.c      
2010-04-06 19:49:54 UTC (rev 28055)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_ops.c      
2010-04-07 00:43:06 UTC (rev 28056)
@@ -93,7 +93,6 @@
        
        WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid);
        WM_operatortype_append(VIEW3D_OT_snap_selected_to_cursor);
-       WM_operatortype_append(VIEW3D_OT_snap_selected_to_center);
        WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid);
        WM_operatortype_append(VIEW3D_OT_snap_cursor_to_center);
        WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected);

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_snap.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_snap.c     
2010-04-06 19:49:54 UTC (rev 28055)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_snap.c     
2010-04-07 00:43:06 UTC (rev 28056)
@@ -872,204 +872,6 @@
        ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-/* ************************************** */
-
-static int snap_selected_to_center(bContext *C, wmOperator *op)
-{
-       extern float originmat[3][3];   /* XXX object.c */
-       Object *obedit= CTX_data_edit_object(C);
-       Scene *scene= CTX_data_scene(C);
-       View3D *v3d= CTX_wm_view3d(C);
-       TransVert *tv;
-       float snaploc[3], imat[3][3], bmat[3][3], vec[3], min[3], max[3], 
centroid[3];
-       int count, a;
-
-       /*calculate the snaplocation (centerpoint) */
-       count= 0;
-       INIT_MINMAX(min, max);
-       centroid[0]= centroid[1]= centroid[2]= 0.0f;
-       snaploc[0]= snaploc[1]= snaploc[2]= 0.0f;
-
-       if(obedit) {
-               tottrans= 0;
-               
-               if ELEM6(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, 
OB_SURF, OB_CURVE, OB_MBALL) 
-                       make_trans_verts(obedit, bmat[0], bmat[1], 0);
-               if(tottrans==0) return OPERATOR_CANCELLED;
-               
-               copy_m3_m4(bmat, obedit->obmat);
-               invert_m3_m3(imat, bmat);
-               
-               tv= transvmain;
-               for(a=0; a<tottrans; a++, tv++) {
-                       VECCOPY(vec, tv->loc);
-                       mul_m3_v3(bmat, vec);
-                       add_v3_v3v3(vec, vec, obedit->obmat[3]);
-                       add_v3_v3v3(centroid, centroid, vec);
-                       DO_MINMAX(vec, min, max);
-               }
-               
-               if(v3d->around==V3D_CENTROID) {
-                       mul_v3_fl(centroid, 1.0/(float)tottrans);
-                       VECCOPY(snaploc, centroid);
-               }
-               else {
-                       snaploc[0]= (min[0]+max[0])/2;
-                       snaploc[1]= (min[1]+max[1])/2;
-                       snaploc[2]= (min[2]+max[2])/2;
-               }
-               
-               MEM_freeN(transvmain);
-               transvmain= NULL;
-       }
-       else {
-               
-               CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
-                       if(ob->mode & OB_MODE_POSE) {
-                               bPoseChannel *pchan;
-                               bArmature *arm= ob->data;
-                               
-                               for (pchan = ob->pose->chanbase.first; pchan; 
pchan=pchan->next) {
-                                       if(pchan->bone->flag & BONE_SELECTED) {
-                                               if(pchan->bone->layer & 
arm->layer) {
-                                                       VECCOPY(vec, 
pchan->pose_mat[3]);
-                                                       add_v3_v3v3(centroid, 
centroid, vec);
-                                                       DO_MINMAX(vec, min, 
max);
-                                                       count++;
-                                               }
-                                       }
-                               }
-                       }
-                       else {
-                               /* not armature bones (i.e. objects) */
-                               VECCOPY(vec, ob->obmat[3]);
-                               add_v3_v3v3(centroid, centroid, vec);
-                               DO_MINMAX(vec, min, max);
-                               count++;
-                       }
-               }
-               CTX_DATA_END;
-
-               if(count) {
-                       if(v3d->around==V3D_CENTROID) {
-                               mul_v3_fl(centroid, 1.0/(float)count);
-                               VECCOPY(snaploc, centroid);
-                       }
-                       else {
-                               snaploc[0]= (min[0]+max[0])/2;
-                               snaploc[1]= (min[1]+max[1])/2;
-                               snaploc[2]= (min[2]+max[2])/2;
-                       }
-               }
-       }
-
-       /* Snap the selection to the snaplocation (duh!) */
-       if(obedit) {
-               tottrans= 0;
-               
-               if ELEM6(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, 
OB_SURF, OB_CURVE, OB_MBALL) 
-                       make_trans_verts(obedit, bmat[0], bmat[1], 0);
-               if(tottrans==0) return OPERATOR_CANCELLED;
-               
-               copy_m3_m4(bmat, obedit->obmat);
-               invert_m3_m3(imat, bmat);
-               
-               tv= transvmain;
-               for(a=0; a<tottrans; a++, tv++) {
-                       vec[0]= snaploc[0]-obedit->obmat[3][0];
-                       vec[1]= snaploc[1]-obedit->obmat[3][1];
-                       vec[2]= snaploc[2]-obedit->obmat[3][2];
-                       
-                       mul_m3_v3(imat, vec);
-                       VECCOPY(tv->loc, vec);
-               }
-               
-               special_transvert_update(scene, obedit);
-               
-               MEM_freeN(transvmain);
-               transvmain= NULL;
-               
-       }
-       else {
-
-               CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
-                       if(ob->mode & OB_MODE_POSE) {
-                               bPoseChannel *pchan;
-                               bArmature *arm= ob->data;
-                               
-                               for (pchan = ob->pose->chanbase.first; pchan; 
pchan=pchan->next) {
-                                       if(pchan->bone->flag & BONE_SELECTED) {
-                                               if(pchan->bone->layer & 
arm->layer) {
-                                                       if((pchan->bone->flag & 
BONE_CONNECTED)==0) { 
-                                                               /* get location 
of cursor in bone-space */
-                                                               
armature_loc_pose_to_bone(pchan, snaploc, vec);
-                                                               
-                                                               /* calculate 
new position */
-                                                               
VECCOPY(pchan->loc, vec);
-                                                       }
-                                                       /* if the bone has a 
parent and is connected to the parent, 
-                                                        * don't do anything - 
will break chain unless we do auto-ik. 
-                                                        */
-                                               }
-                                       }
-                               }
-                               
-                               /* auto-keyframing */
-                               ob->pose->flag |= POSE_DO_UNLOCK;
-// XXX                         autokeyframe_pose_cb_func(ob, TFM_TRANSLATION, 
0);
-                               DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
-                       }
-                       else {
-                               ob->recalc |= OB_RECALC_OB;
-                               
-                               vec[0]= -ob->obmat[3][0] + snaploc[0];
-                               vec[1]= -ob->obmat[3][1] + snaploc[1];
-                               vec[2]= -ob->obmat[3][2] + snaploc[2];
-                               
-                               if(ob->parent) {
-                                       where_is_object(scene, ob);
-                                       
-                                       invert_m3_m3(imat, originmat);
-                                       mul_m3_v3(imat, vec);
-                                       ob->loc[0]+= vec[0];
-                                       ob->loc[1]+= vec[1];
-                                       ob->loc[2]+= vec[2];
-                               }
-                               else {
-                                       ob->loc[0]+= vec[0];
-                                       ob->loc[1]+= vec[1];
-                                       ob->loc[2]+= vec[2];
-                               }
-                               /* auto-keyframing */
-// XXX                         autokeyframe_ob_cb_func(ob, TFM_TRANSLATION);
-                       }
-               }
-               CTX_DATA_END;
-       }
-       
-       DAG_ids_flush_update(0);
-       WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
-       
-       return OPERATOR_FINISHED;
-}
-
-void VIEW3D_OT_snap_selected_to_center(wmOperatorType *ot)
-{
-       
-       /* identifiers */
-       ot->name= "Snap Selection to Center";
-       ot->description= "Snap selected items to selections geometric center";
-       ot->idname= "VIEW3D_OT_snap_selected_to_center";
-       
-       /* api callbacks */
-       ot->exec= snap_selected_to_center;
-       ot->poll= ED_operator_view3d_active;
-       
-       /* flags */
-       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-
 /* **************************************************** */
 /*New Code - Snap Cursor to Center -*/
 static int snap_curs_to_center(bContext *C, wmOperator *op)


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to