checking for V3D_LOCAL was duplicated in transform.c, and both checks not quite correct.
- When checking edimode, make sure its mesh editmode. - Graph editor supports this option but wasn't being checked.
This commit is contained in:
@@ -153,7 +153,6 @@ def edge_face_count_dict(mesh):
|
||||
:rtype: dict
|
||||
"""
|
||||
|
||||
#face_edge_keys = [face.edge_keys for face in ]
|
||||
face_edge_count = {}
|
||||
loops = mesh.loops
|
||||
edges = mesh.edges
|
||||
|
||||
@@ -104,6 +104,16 @@ static int doVertSlide(TransInfo *t, float perc);
|
||||
static void drawEdgeSlide(const struct bContext *C, TransInfo *t);
|
||||
static void drawVertSlide(const struct bContext *C, TransInfo *t);
|
||||
|
||||
static bool transdata_check_local_center(TransInfo *t)
|
||||
{
|
||||
return ((t->around == V3D_LOCAL) && (
|
||||
(t->flag & (T_OBJECT | T_POSE)) ||
|
||||
(t->obedit && t->obedit->type == OB_MESH && (t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE))) ||
|
||||
(t->obedit && t->obedit->type == OB_ARMATURE) ||
|
||||
(t->spacetype == SPACE_IPO))
|
||||
);
|
||||
}
|
||||
|
||||
/* ************************** SPACE DEPENDANT CODE **************************** */
|
||||
|
||||
void setTransformViewMatrices(TransInfo *t)
|
||||
@@ -3005,12 +3015,7 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3])
|
||||
}
|
||||
|
||||
/* local constraint shouldn't alter center */
|
||||
if ((t->around == V3D_LOCAL) &&
|
||||
( (t->flag & (T_OBJECT | T_POSE)) ||
|
||||
((t->flag & T_EDIT) && (t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE))) ||
|
||||
(t->obedit && t->obedit->type == OB_ARMATURE))
|
||||
)
|
||||
{
|
||||
if (transdata_check_local_center(t)) {
|
||||
copy_v3_v3(center, td->center);
|
||||
}
|
||||
else if (t->options & CTX_MOVIECLIP) {
|
||||
@@ -3387,20 +3392,16 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
|
||||
{
|
||||
float vec[3], totmat[3][3], smat[3][3];
|
||||
float eul[3], fmat[3][3], quat[4];
|
||||
float *center = t->center;
|
||||
const float *center;
|
||||
|
||||
/* local constraint shouldn't alter center */
|
||||
if (around == V3D_LOCAL) {
|
||||
if ( (t->flag & (T_OBJECT | T_POSE)) ||
|
||||
(t->settings->selectmode & (SCE_SELECT_EDGE | SCE_SELECT_FACE)) ||
|
||||
(t->obedit && t->obedit->type == OB_ARMATURE))
|
||||
if (transdata_check_local_center(t) ||
|
||||
((around == V3D_LOCAL) && (t->options & CTX_MOVIECLIP)))
|
||||
{
|
||||
center = td->center;
|
||||
}
|
||||
|
||||
if (t->options & CTX_MOVIECLIP) {
|
||||
center = td->center;
|
||||
}
|
||||
else {
|
||||
center = t->center;
|
||||
}
|
||||
|
||||
if (t->flag & T_POINTS) {
|
||||
|
||||
@@ -2548,7 +2548,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
|
||||
{0, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
/* this is basically the same as the one for the 3D-View, but with some entries ommitted */
|
||||
/* this is basically the same as the one for the 3D-View, but with some entries omitted */
|
||||
static EnumPropertyItem gpivot_items[] = {
|
||||
{V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", ""},
|
||||
{V3D_CURSOR, "CURSOR", ICON_CURSOR, "2D Cursor", ""},
|
||||
|
||||
Reference in New Issue
Block a user