store snapping in the scene, (theeth's suggestion)
This commit is contained in:
@@ -438,8 +438,8 @@ typedef struct Scene {
|
|||||||
|
|
||||||
ListBase markers;
|
ListBase markers;
|
||||||
|
|
||||||
short jumpframe;
|
short jumpframe, pad1;
|
||||||
short pad1, pad2, pad3;
|
short snap_flag, snap_target;
|
||||||
|
|
||||||
/* none of the dependancy graph vars is mean to be saved */
|
/* none of the dependancy graph vars is mean to be saved */
|
||||||
struct DagForest *theDag;
|
struct DagForest *theDag;
|
||||||
@@ -568,8 +568,12 @@ typedef struct Scene {
|
|||||||
|
|
||||||
/* base->flag is in DNA_object_types.h */
|
/* base->flag is in DNA_object_types.h */
|
||||||
|
|
||||||
/* sce->flag */
|
/* scene->snap_flag */
|
||||||
#define SCE_ADDSCENAME 1
|
#define SCE_SNAP 1
|
||||||
|
/* scene->snap_target */
|
||||||
|
#define SCE_SNAP_TARGET_CLOSEST 0
|
||||||
|
#define SCE_SNAP_TARGET_CENTER 1
|
||||||
|
#define SCE_SNAP_TARGET_MEDIAN 2
|
||||||
|
|
||||||
/* sce->selectmode */
|
/* sce->selectmode */
|
||||||
#define SCE_SELECT_VERTEX 1
|
#define SCE_SELECT_VERTEX 1
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ typedef struct View3D {
|
|||||||
|
|
||||||
short gridsubdiv; /* Number of subdivisions in the grid between each highlighted grid line */
|
short gridsubdiv; /* Number of subdivisions in the grid between each highlighted grid line */
|
||||||
|
|
||||||
short snap_target;
|
short pad3;
|
||||||
|
|
||||||
short pad2;
|
short pad2;
|
||||||
|
|
||||||
@@ -168,15 +168,9 @@ typedef struct View3D {
|
|||||||
/* View3d->flag2 (short) */
|
/* View3d->flag2 (short) */
|
||||||
#define V3D_OPP_DIRECTION_NAME 1
|
#define V3D_OPP_DIRECTION_NAME 1
|
||||||
#define V3D_FLYMODE 2
|
#define V3D_FLYMODE 2
|
||||||
#define V3D_TRANSFORM_SNAP 4
|
#define V3D_DEPRECATED 4 /* V3D_TRANSFORM_SNAP, moved to a scene setting */
|
||||||
#define V3D_SOLID_TEX 8
|
#define V3D_SOLID_TEX 8
|
||||||
|
|
||||||
/* View3d->snap_target */
|
|
||||||
#define V3D_SNAP_TARGET_CLOSEST 0
|
|
||||||
#define V3D_SNAP_TARGET_CENTER 1
|
|
||||||
#define V3D_SNAP_TARGET_MEDIAN 2
|
|
||||||
|
|
||||||
|
|
||||||
/* View3D->around */
|
/* View3D->around */
|
||||||
#define V3D_CENTER 0
|
#define V3D_CENTER 0
|
||||||
#define V3D_CENTROID 3
|
#define V3D_CENTROID 3
|
||||||
|
|||||||
@@ -1017,7 +1017,7 @@ static int draw_tface_mapped__set_draw(void *userData, int index)
|
|||||||
static int draw_em_tf_mapped__set_draw(void *userData, int index)
|
static int draw_em_tf_mapped__set_draw(void *userData, int index)
|
||||||
{
|
{
|
||||||
EditMesh *em = userData;
|
EditMesh *em = userData;
|
||||||
EditFace *efa = EM_get_face_for_index(index), *efa_act = userData;
|
EditFace *efa = EM_get_face_for_index(index);
|
||||||
MTFace *tface;
|
MTFace *tface;
|
||||||
MCol *mcol;
|
MCol *mcol;
|
||||||
int matnr;
|
int matnr;
|
||||||
|
|||||||
@@ -1743,19 +1743,19 @@ static void do_view3d_transformmenu(void *arg, int event)
|
|||||||
Transform();
|
Transform();
|
||||||
break;
|
break;
|
||||||
case 15:
|
case 15:
|
||||||
G.vd->flag2 &= ~V3D_TRANSFORM_SNAP;
|
G.scene->snap_flag &= ~SCE_SNAP;
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
G.vd->flag2 |= V3D_TRANSFORM_SNAP;
|
G.scene->snap_flag |= SCE_SNAP;
|
||||||
break;
|
break;
|
||||||
case 17:
|
case 17:
|
||||||
G.vd->snap_target = V3D_SNAP_TARGET_CLOSEST;
|
G.scene->snap_target = SCE_SNAP_TARGET_CLOSEST;
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 18:
|
||||||
G.vd->snap_target = V3D_SNAP_TARGET_CENTER;
|
G.scene->snap_target = SCE_SNAP_TARGET_CENTER;
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 19:
|
||||||
G.vd->snap_target = V3D_SNAP_TARGET_MEDIAN;
|
G.scene->snap_target = SCE_SNAP_TARGET_MEDIAN;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
allqueue(REDRAWVIEW3D, 0);
|
allqueue(REDRAWVIEW3D, 0);
|
||||||
@@ -1812,7 +1812,7 @@ static uiBlock *view3d_transformmenu(void *arg_unused)
|
|||||||
{
|
{
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
|
||||||
if (G.vd->flag2 & V3D_TRANSFORM_SNAP)
|
if (G.scene->snap_flag & SCE_SNAP)
|
||||||
{
|
{
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Grid", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 15, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 16, "");
|
||||||
@@ -1825,19 +1825,19 @@ static uiBlock *view3d_transformmenu(void *arg_unused)
|
|||||||
|
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
|
||||||
switch(G.vd->snap_target)
|
switch(G.scene->snap_target)
|
||||||
{
|
{
|
||||||
case V3D_SNAP_TARGET_CLOSEST:
|
case SCE_SNAP_TARGET_CLOSEST:
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
||||||
break;
|
break;
|
||||||
case V3D_SNAP_TARGET_CENTER:
|
case SCE_SNAP_TARGET_CENTER:
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
||||||
break;
|
break;
|
||||||
case V3D_SNAP_TARGET_MEDIAN:
|
case SCE_SNAP_TARGET_MEDIAN:
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Closest", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 17, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_DEHLT, "Snap Center", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 18, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_CHECKBOX_HLT, "Snap Median", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 19, "");
|
||||||
@@ -5106,18 +5106,15 @@ void view3d_buttons(void)
|
|||||||
if(G.obedit && (G.obedit->type == OB_MESH)) { // Only Mesh for now
|
if(G.obedit && (G.obedit->type == OB_MESH)) { // Only Mesh for now
|
||||||
uiBlockBeginAlign(block);
|
uiBlockBeginAlign(block);
|
||||||
|
|
||||||
if (G.vd->flag2 & V3D_TRANSFORM_SNAP)
|
if (G.scene->snap_flag & SCE_SNAP) {
|
||||||
{
|
uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEO,xco,0,XIC,YIC, &G.scene->snap_flag, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab)");
|
||||||
uiDefIconButBitS(block, TOG, V3D_TRANSFORM_SNAP, B_REDR, ICON_SNAP_GEO,xco,0,XIC,YIC, &G.vd->flag2, 0, 0, 0, 0, "Use Snap or Grid (Shift Tab)");
|
|
||||||
xco+= XIC;
|
xco+= XIC;
|
||||||
uiDefButS(block, MENU, B_NOP, "Mode%t|Closest%x0|Center%x1|Median%x2",xco,0,70,YIC, &G.vd->snap_target, 0, 0, 0, 0, "Snap Target Mode");
|
uiDefButS(block, MENU, B_NOP, "Mode%t|Closest%x0|Center%x1|Median%x2",xco,0,70,YIC, &G.scene->snap_target, 0, 0, 0, 0, "Snap Target Mode");
|
||||||
xco+= 70;
|
xco+= 70;
|
||||||
}
|
} else {
|
||||||
else
|
uiDefIconButBitS(block, TOG, SCE_SNAP, B_REDR, ICON_SNAP_GEAR,xco,0,XIC,YIC, &G.scene->snap_flag, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
|
||||||
{
|
|
||||||
uiDefIconButBitS(block, TOG, V3D_TRANSFORM_SNAP, B_REDR, ICON_SNAP_GEAR,xco,0,XIC,YIC, &G.vd->flag2, 0, 0, 0, 0, "Snap while Ctrl is held during transform (Shift Tab)");
|
|
||||||
xco+= XIC;
|
xco+= XIC;
|
||||||
}
|
}
|
||||||
|
|
||||||
uiBlockEndAlign(block);
|
uiBlockEndAlign(block);
|
||||||
xco+= 10;
|
xco+= 10;
|
||||||
|
|||||||
@@ -1524,7 +1524,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
|||||||
/* Snap toggle (only edit mesh right now) */
|
/* Snap toggle (only edit mesh right now) */
|
||||||
if (G.obedit && G.obedit->type==OB_MESH)
|
if (G.obedit && G.obedit->type==OB_MESH)
|
||||||
{
|
{
|
||||||
G.vd->flag2 ^= V3D_TRANSFORM_SNAP;
|
G.scene->snap_flag ^= SCE_SNAP;
|
||||||
allqueue(REDRAWHEADERS, 0);
|
allqueue(REDRAWHEADERS, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ void initSnapping(TransInfo *t)
|
|||||||
|
|
||||||
if (t->tsnap.applySnap != NULL && // A snapping function actually exist
|
if (t->tsnap.applySnap != NULL && // A snapping function actually exist
|
||||||
(G.obedit != NULL && G.obedit->type==OB_MESH) && // Temporary limited to edit mode meshes
|
(G.obedit != NULL && G.obedit->type==OB_MESH) && // Temporary limited to edit mode meshes
|
||||||
(G.vd->flag2 & V3D_TRANSFORM_SNAP) && // Only if the snap flag is on
|
(G.scene->snap_flag & SCE_SNAP) && // Only if the snap flag is on
|
||||||
(t->flag & T_PROP_EDIT) == 0) // No PET, obviously
|
(t->flag & T_PROP_EDIT) == 0) // No PET, obviously
|
||||||
{
|
{
|
||||||
t->tsnap.status |= SNAP_ON;
|
t->tsnap.status |= SNAP_ON;
|
||||||
@@ -197,17 +197,17 @@ void setSnappingCallback(TransInfo *t)
|
|||||||
{
|
{
|
||||||
t->tsnap.calcSnap = CalcSnapGeometry;
|
t->tsnap.calcSnap = CalcSnapGeometry;
|
||||||
|
|
||||||
switch(G.vd->snap_target)
|
switch(G.scene->snap_target)
|
||||||
{
|
{
|
||||||
case V3D_SNAP_TARGET_CLOSEST:
|
case SCE_SNAP_TARGET_CLOSEST:
|
||||||
t->tsnap.modeTarget = SNAP_CLOSEST;
|
t->tsnap.modeTarget = SNAP_CLOSEST;
|
||||||
t->tsnap.targetSnap = TargetSnapClosest;
|
t->tsnap.targetSnap = TargetSnapClosest;
|
||||||
break;
|
break;
|
||||||
case V3D_SNAP_TARGET_CENTER:
|
case SCE_SNAP_TARGET_CENTER:
|
||||||
t->tsnap.modeTarget = SNAP_CENTER;
|
t->tsnap.modeTarget = SNAP_CENTER;
|
||||||
t->tsnap.targetSnap = TargetSnapCenter;
|
t->tsnap.targetSnap = TargetSnapCenter;
|
||||||
break;
|
break;
|
||||||
case V3D_SNAP_TARGET_MEDIAN:
|
case SCE_SNAP_TARGET_MEDIAN:
|
||||||
t->tsnap.modeTarget = SNAP_MEDIAN;
|
t->tsnap.modeTarget = SNAP_MEDIAN;
|
||||||
t->tsnap.targetSnap = TargetSnapMedian;
|
t->tsnap.targetSnap = TargetSnapMedian;
|
||||||
break;
|
break;
|
||||||
@@ -224,7 +224,7 @@ void setSnappingCallback(TransInfo *t)
|
|||||||
t->tsnap.distance = RotationBetween;
|
t->tsnap.distance = RotationBetween;
|
||||||
|
|
||||||
// Can't do TARGET_CENTER with rotation, use TARGET_MEDIAN instead
|
// Can't do TARGET_CENTER with rotation, use TARGET_MEDIAN instead
|
||||||
if (G.vd->snap_target == V3D_SNAP_TARGET_CENTER) {
|
if (G.scene->snap_target == SCE_SNAP_TARGET_CENTER) {
|
||||||
t->tsnap.modeTarget = SNAP_MEDIAN;
|
t->tsnap.modeTarget = SNAP_MEDIAN;
|
||||||
t->tsnap.targetSnap = TargetSnapMedian;
|
t->tsnap.targetSnap = TargetSnapMedian;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user