[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44798] trunk/blender: [#30373] Which part to snap in volume snapping is removed
Martin Poirier
theeth at yahoo.com
Sat Mar 10 22:40:42 CET 2012
Revision: 44798
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44798
Author: theeth
Date: 2012-03-10 21:40:35 +0000 (Sat, 10 Mar 2012)
Log Message:
-----------
[#30373] Which part to snap in volume snapping is removed
By Bug reported by Pep Ribal
Also fixed an object mode bug with volume snapping and made it compatible with the edit mode "Snap on self" option
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
trunk/blender/source/blender/editors/armature/editarmature_sketch.c
trunk/blender/source/blender/editors/include/ED_numinput.h
trunk/blender/source/blender/editors/include/ED_transform.h
trunk/blender/source/blender/editors/transform/transform_snap.c
Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2012-03-10 20:41:19 UTC (rev 44797)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2012-03-10 21:40:35 UTC (rev 44798)
@@ -88,10 +88,10 @@
row = layout.row(align=True)
row.prop(toolsettings, "use_snap", text="")
row.prop(toolsettings, "snap_element", text="", icon_only=True)
- if snap_element not in {'INCREMENT', 'VOLUME'}:
+ if snap_element != 'INCREMENT':
row.prop(toolsettings, "snap_target", text="")
if obj:
- if obj.mode == 'OBJECT':
+ if obj.mode == 'OBJECT' and snap_element != 'VOLUME':
row.prop(toolsettings, "use_snap_align_rotation", text="")
elif obj.mode == 'EDIT':
row.prop(toolsettings, "use_snap_self", text="")
Modified: trunk/blender/source/blender/editors/armature/editarmature_sketch.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature_sketch.c 2012-03-10 20:41:19 UTC (rev 44797)
+++ trunk/blender/source/blender/editors/armature/editarmature_sketch.c 2012-03-10 21:40:35 UTC (rev 44798)
@@ -1079,7 +1079,7 @@
mvalf[0]= dd->mval[0];
mvalf[1]= dd->mval[1];
- peelObjectsContext(C, &sketch->depth_peels, mvalf);
+ peelObjectsContext(C, &sketch->depth_peels, mvalf, SNAP_ALL);
if (stk->nb_points > 0 && stk->points[stk->nb_points - 1].type == PT_CONTINUOUS)
{
Modified: trunk/blender/source/blender/editors/include/ED_numinput.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_numinput.h 2012-03-10 20:41:19 UTC (rev 44797)
+++ trunk/blender/source/blender/editors/include/ED_numinput.h 2012-03-10 21:40:35 UTC (rev 44798)
@@ -28,6 +28,15 @@
#define __ED_NUMINPUT_H__
+/*
+ The ctrl value has different meaning:
+ 0 : No value has been typed
+
+ otherwise, |value| - 1 is where the cursor is located after the period
+ Positive : number is positive
+ Negative : number is negative
+*/
+
typedef struct NumInput {
short idx;
short idx_max;
Modified: trunk/blender/source/blender/editors/include/ED_transform.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_transform.h 2012-03-10 20:41:19 UTC (rev 44797)
+++ trunk/blender/source/blender/editors/include/ED_transform.h 2012-03-10 21:40:35 UTC (rev 44798)
@@ -175,8 +175,8 @@
#define SNAP_MIN_DISTANCE 30
-int peelObjectsTransForm(struct TransInfo *t, struct ListBase *depth_peels, const float mval[2]);
-int peelObjectsContext(struct bContext *C, struct ListBase *depth_peels, const float mval[2]);
+int peelObjectsTransForm(struct TransInfo *t, struct ListBase *depth_peels, const float mval[2], SnapMode mode);
+int peelObjectsContext(struct bContext *C, struct ListBase *depth_peels, const float mval[2], SnapMode mode);
int snapObjectsTransform(struct TransInfo *t, const float mval[2], int *r_dist, float r_loc[3], float r_no[3], SnapMode mode);
int snapObjectsContext(struct bContext *C, const float mval[2], int *r_dist, float r_loc[3], float r_no[3], SnapMode mode);
Modified: trunk/blender/source/blender/editors/transform/transform_snap.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_snap.c 2012-03-10 20:41:19 UTC (rev 44797)
+++ trunk/blender/source/blender/editors/transform/transform_snap.c 2012-03-10 21:40:35 UTC (rev 44798)
@@ -785,7 +785,7 @@
depth_peels.first = depth_peels.last = NULL;
- peelObjectsTransForm(t, &depth_peels, mval);
+ peelObjectsTransForm(t, &depth_peels, mval, t->tsnap.modeSelect);
// if (LAST_SNAP_POINT_VALID)
// {
@@ -1862,7 +1862,7 @@
return retval;
}
-static int peelObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, ListBase *depth_peels, const float mval[2])
+static int peelObjects(Scene *scene, View3D *v3d, ARegion *ar, Object *obedit, ListBase *depth_peels, const float mval[2], SnapMode mode)
{
Base *base;
int retval = 0;
@@ -1874,6 +1874,7 @@
if ( BASE_SELECTABLE(v3d, base) ) {
Object *ob = base->object;
+#if 0 //BMESH_TODO
if (ob->transflag & OB_DUPLI) {
DupliObject *dupli_ob;
ListBase *lb = object_duplilist(scene, ob);
@@ -1883,7 +1884,6 @@
Object *dob = dupli_ob->ob;
if (dob->type == OB_MESH) {
-#if 0 //BMESH_TODO
EditMesh *em;
DerivedMesh *dm = NULL;
int val;
@@ -1903,33 +1903,32 @@
retval = retval || val;
dm->release(dm);
-#endif
}
}
free_object_duplilist(lb);
}
+#endif
if (ob->type == OB_MESH) {
- BMEditMesh *em;
- DerivedMesh *dm = NULL;
- int val;
+ int val = 0;
- if (ob != obedit) {
- dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
+ if (ob != obedit && ((mode == SNAP_NOT_SELECTED && (base->flag & (SELECT|BA_WAS_SEL)) == 0) || ELEM(mode, SNAP_ALL, SNAP_NOT_OBEDIT))) {
+ DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);
val = peelDerivedMesh(ob, dm, ob->obmat, ray_start, ray_normal, mval, depth_peels);
+ dm->release(dm);
}
- else {
- em = BMEdit_FromObject(ob);
- dm = editbmesh_get_derived_cage(scene, obedit, em, CD_MASK_BAREMESH);
+ else if (ob == obedit && mode != SNAP_NOT_OBEDIT) {
+ BMEditMesh *em = BMEdit_FromObject(ob);
+ DerivedMesh *dm = editbmesh_get_derived_cage(scene, obedit, em, CD_MASK_BAREMESH);
val = peelDerivedMesh(ob, dm, ob->obmat, ray_start, ray_normal, mval, depth_peels);
+ dm->release(dm);
}
retval = retval || val;
- dm->release(dm);
}
}
}
@@ -1940,17 +1939,17 @@
return retval;
}
-int peelObjectsTransForm(TransInfo *t, ListBase *depth_peels, const float mval[2])
+int peelObjectsTransForm(TransInfo *t, ListBase *depth_peels, const float mval[2], SnapMode mode)
{
- return peelObjects(t->scene, t->view, t->ar, t->obedit, depth_peels, mval);
+ return peelObjects(t->scene, t->view, t->ar, t->obedit, depth_peels, mval, mode);
}
-int peelObjectsContext(bContext *C, ListBase *depth_peels, const float mval[2])
+int peelObjectsContext(bContext *C, ListBase *depth_peels, const float mval[2], SnapMode mode)
{
ScrArea *sa = CTX_wm_area(C);
View3D *v3d = sa->spacedata.first;
- return peelObjects(CTX_data_scene(C), v3d, CTX_wm_region(C), CTX_data_edit_object(C), depth_peels, mval);
+ return peelObjects(CTX_data_scene(C), v3d, CTX_wm_region(C), CTX_data_edit_object(C), depth_peels, mval, mode);
}
/*================================================================*/
More information about the Bf-blender-cvs
mailing list