Removed casting warnings from transform_manipulator.

PET is now checked as a transform flag during transform. Much cleaner that way for NOPET context (extrude, duplicate)
Added Sphere as a new PET falloff mode (icon and all) and reordered them around in a more logical fashion (IMHO).

Also brought back Subsurf toggle with Shift-O (was supposed to be for PET object mode but that was canned).
This commit is contained in:
Martin Poirier 2005-04-01 18:39:39 +00:00
parent d5aaba6c81
commit 312c8d146c
10 changed files with 1380 additions and 1426 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 40 KiB

@ -57,10 +57,11 @@
/* TRANSFORM PROPORTIONAL FALLOFF MODES */ /* TRANSFORM PROPORTIONAL FALLOFF MODES */
#define PROP_SHARP 0 #define PROP_SHARP 0
#define PROP_SMOOTH 1 #define PROP_LIN 1
#define PROP_ROOT 2 #define PROP_ROOT 2
#define PROP_LIN 3 #define PROP_SPHERE 3
#define PROP_CONST 4 #define PROP_CONST 4
#define PROP_SMOOTH 5
void Transform(int mode, int context); void Transform(int mode, int context);

File diff suppressed because it is too large Load Diff

@ -3437,10 +3437,11 @@ static char *propfalloff_pup(void)
strcpy(string, "Falloff:%t"); strcpy(string, "Falloff:%t");
strcat(string, "|Sharp Falloff%x0"); strcat(string, "|Sharp Falloff%x0");
strcat(string, "|Smooth Falloff%x1"); strcat(string, "|Linear Falloff%x1");
strcat(string, "|Root Falloff%x2"); strcat(string, "|Root Falloff%x2");
strcat(string, "|Linear Falloff%x3"); strcat(string, "|Round Falloff%x3");
strcat(string, "|Constant, No Falloff%x4"); strcat(string, "|Constant, No Falloff%x4");
strcat(string, "|Smooth Falloff%x5");
return (string); return (string);
} }

@ -1425,16 +1425,18 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break; break;
case OKEY: case OKEY:
ob= OBACT; ob= OBACT;
if (G.qual==LR_SHIFTKEY) { if (G.obedit) {
extern int prop_mode; if (G.qual==LR_SHIFTKEY) {
prop_mode = (prop_mode+1)%5; extern int prop_mode;
allqueue(REDRAWHEADERS, 0); prop_mode = (prop_mode+1)%6;
allqueue(REDRAWHEADERS, 0);
}
else if((G.qual==0)) {
G.f ^= G_PROPORTIONAL;
allqueue(REDRAWHEADERS, 0);
}
} }
else if((G.qual==0)) { else if((G.qual==LR_SHIFTKEY)) {
G.f ^= G_PROPORTIONAL;
allqueue(REDRAWHEADERS, 0);
}
else if((G.qual==LR_CTRLKEY)) {
if(ob && ob->type == OB_MESH) { if(ob && ob->type == OB_MESH) {
flip_subdivison(ob, -1); flip_subdivison(ob, -1);
} }

@ -491,7 +491,7 @@ static void createTransMBallVerts(void)
TransDataExtension *tx; TransDataExtension *tx;
float mtx[3][3], smtx[3][3]; float mtx[3][3], smtx[3][3];
int count=0, countsel=0; int count=0, countsel=0;
int propmode = G.f & G_PROPORTIONAL; int propmode = Trans.flag & T_PROP_EDIT;
/* count totals */ /* count totals */
for(ml= editelems.first; ml; ml= ml->next) { for(ml= editelems.first; ml; ml= ml->next) {
@ -597,7 +597,7 @@ static void createTransCurveVerts(void)
float mtx[3][3], smtx[3][3]; float mtx[3][3], smtx[3][3];
int a; int a;
int count=0, countsel=0; int count=0, countsel=0;
int propmode = G.f & G_PROPORTIONAL; int propmode = Trans.flag & T_PROP_EDIT;
/* count total of vertices, check identical as in 2nd loop for making transdata! */ /* count total of vertices, check identical as in 2nd loop for making transdata! */
for(nu= editNurb.first; nu; nu= nu->next) { for(nu= editNurb.first; nu; nu= nu->next) {
@ -725,7 +725,7 @@ static void createTransLatticeVerts(void)
float mtx[3][3], smtx[3][3]; float mtx[3][3], smtx[3][3];
int a; int a;
int count=0, countsel=0; int count=0, countsel=0;
int propmode = G.f & G_PROPORTIONAL; int propmode = Trans.flag & T_PROP_EDIT;
bp= editLatt->def; bp= editLatt->def;
a= editLatt->pntsu*editLatt->pntsv*editLatt->pntsw; a= editLatt->pntsu*editLatt->pntsv*editLatt->pntsw;
@ -918,7 +918,7 @@ static void createTransEditVerts(void)
float mtx[3][3], smtx[3][3]; float mtx[3][3], smtx[3][3];
float *vectors; float *vectors;
int count=0, countsel=0; int count=0, countsel=0;
int propmode = G.f & G_PROPORTIONAL; int propmode = Trans.flag & T_PROP_EDIT;
// transform now requires awareness for select mode, so we tag the f1 flags in verts // transform now requires awareness for select mode, so we tag the f1 flags in verts
if(G.scene->selectmode & SCE_SELECT_VERTEX) { if(G.scene->selectmode & SCE_SELECT_VERTEX) {
@ -1452,7 +1452,7 @@ static void createTransData(TransInfo *t)
printf("not done yet! only have mesh surface curve\n"); printf("not done yet! only have mesh surface curve\n");
} }
if(G.f & G_PROPORTIONAL) { if(t->flag & T_PROP_EDIT) {
if (ELEM(G.obedit->type, OB_CURVE, OB_MESH)) { if (ELEM(G.obedit->type, OB_CURVE, OB_MESH)) {
sort_trans_data(t); // makes selected become first in array sort_trans_data(t); // makes selected become first in array
set_prop_dist(t, 0); set_prop_dist(t, 0);
@ -1484,22 +1484,11 @@ static void createTransData(TransInfo *t)
void Transform(int mode, int context) void Transform(int mode, int context)
{ {
int ret_val = 0; int ret_val = 0;
short pmval[2] = {0, 0}, mval[2], val, oldprop; short pmval[2] = {0, 0}, mval[2], val;
float mati[3][3]; float mati[3][3];
unsigned short event; unsigned short event;
char cmode = '\0'; char cmode = '\0';
/* STUPID HACK, but this needs fixing right now */
if (G.f & G_PROPORTIONAL)
oldprop = 1;
else
oldprop = 0;
if (context & CTX_NOPET) {
G.f &= ~G_PROPORTIONAL;
}
/*joeedh -> hopefully may be what makes the old transform() constant*/ /*joeedh -> hopefully may be what makes the old transform() constant*/
/* ton: I doubt, but it doesnt harm for now. shouldnt be needed though */ /* ton: I doubt, but it doesnt harm for now. shouldnt be needed though */
areawinset(curarea->win); areawinset(curarea->win);
@ -1747,16 +1736,16 @@ void Transform(int mode, int context)
} }
break; break;
case OKEY: case OKEY:
if (G.qual==LR_SHIFTKEY) { if (Trans.flag & T_PROP_EDIT && G.qual==LR_SHIFTKEY) {
extern int prop_mode; extern int prop_mode;
prop_mode = (prop_mode+1)%5; prop_mode = (prop_mode+1)%6;
calculatePropRatio(&Trans); calculatePropRatio(&Trans);
Trans.redraw= 1; Trans.redraw= 1;
} }
break; break;
case WHEELDOWNMOUSE: case WHEELDOWNMOUSE:
case PADPLUSKEY: case PADPLUSKEY:
if(G.f & G_PROPORTIONAL) { if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 1.1f; Trans.propsize*= 1.1f;
calculatePropRatio(&Trans); calculatePropRatio(&Trans);
Trans.redraw= 1; Trans.redraw= 1;
@ -1764,7 +1753,7 @@ void Transform(int mode, int context)
break; break;
case WHEELUPMOUSE: case WHEELUPMOUSE:
case PADMINUS: case PADMINUS:
if(G.f & G_PROPORTIONAL) { if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 0.90909090f; Trans.propsize*= 0.90909090f;
calculatePropRatio(&Trans); calculatePropRatio(&Trans);
Trans.redraw= 1; Trans.redraw= 1;
@ -1824,12 +1813,6 @@ void Transform(int mode, int context)
clear_trans_object_base_flags(); clear_trans_object_base_flags();
} }
if (context & CTX_NOPET) {
if (oldprop)
G.f |= G_PROPORTIONAL;
}
/* send events out for redraws */ /* send events out for redraws */
allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWVIEW3D, 0);
allqueue(REDRAWBUTSOBJECT, 0); allqueue(REDRAWBUTSOBJECT, 0);
@ -1945,7 +1928,7 @@ void ManipulatorTransform(int mode)
switch(event) { switch(event) {
case WHEELDOWNMOUSE: case WHEELDOWNMOUSE:
case PADPLUSKEY: case PADPLUSKEY:
if(G.f & G_PROPORTIONAL) { if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 1.1f; Trans.propsize*= 1.1f;
calculatePropRatio(&Trans); calculatePropRatio(&Trans);
Trans.redraw= 1; Trans.redraw= 1;
@ -1953,7 +1936,7 @@ void ManipulatorTransform(int mode)
break; break;
case WHEELUPMOUSE: case WHEELUPMOUSE:
case PADMINUS: case PADMINUS:
if(G.f & G_PROPORTIONAL) { if(Trans.flag & T_PROP_EDIT) {
Trans.propsize*= 0.90909090f; Trans.propsize*= 0.90909090f;
calculatePropRatio(&Trans); calculatePropRatio(&Trans);
Trans.redraw= 1; Trans.redraw= 1;
@ -2618,7 +2601,7 @@ static void applyRotation(TransInfo *t, float angle, float axis[3])
t->con.applyRot(t, td, axis); t->con.applyRot(t, td, axis);
VecRotToMat3(axis, angle * td->factor, mat); VecRotToMat3(axis, angle * td->factor, mat);
} }
else if (G.f & G_PROPORTIONAL) { else if (t->flag & T_PROP_EDIT) {
VecRotToMat3(axis, angle * td->factor, mat); VecRotToMat3(axis, angle * td->factor, mat);
} }
@ -2747,7 +2730,7 @@ static void applyTrackball(TransInfo *t, float axis1[3], float axis2[3], float a
VECCOPY(t->center, td->center); VECCOPY(t->center, td->center);
} }
if (G.f & G_PROPORTIONAL) { if (t->flag & T_PROP_EDIT) {
VecRotToMat3(axis1, td->factor * angles[0], smat); VecRotToMat3(axis1, td->factor * angles[0], smat);
VecRotToMat3(axis2, td->factor * angles[1], totmat); VecRotToMat3(axis2, td->factor * angles[1], totmat);

@ -164,6 +164,8 @@ typedef struct TransInfo {
#define T_NULL_ONE 512 #define T_NULL_ONE 512
#define T_NO_ZERO 1024 #define T_NO_ZERO 1024
#define T_PROP_EDIT 2048
/* transinfo->con->mode */ /* transinfo->con->mode */
#define CON_APPLY 1 #define CON_APPLY 1

@ -687,7 +687,7 @@ void BIF_drawPropCircle()
{ {
TransInfo *t = BIF_GetTransInfo(); TransInfo *t = BIF_GetTransInfo();
if (G.f & G_PROPORTIONAL) { if (t->flag & T_PROP_EDIT) {
float tmat[4][4], imat[4][4]; float tmat[4][4], imat[4][4];
BIF_ThemeColor(TH_GRID); BIF_ThemeColor(TH_GRID);

@ -387,6 +387,11 @@ void initTrans (TransInfo *t)
t->flag = 0; t->flag = 0;
/* setting PET flag */
if ((t->context & CTX_NOPET) == 0 && (G.f & G_PROPORTIONAL)) {
t->flag |= T_PROP_EDIT;
}
getmouseco_areawin(t->imval); getmouseco_areawin(t->imval);
t->con.imval[0] = t->imval[0]; t->con.imval[0] = t->imval[0];
t->con.imval[1] = t->imval[1]; t->con.imval[1] = t->imval[1];
@ -709,7 +714,7 @@ void calculatePropRatio(TransInfo *t)
float dist; float dist;
extern int prop_mode; extern int prop_mode;
if (G.f & G_PROPORTIONAL) { if (t->flag & T_PROP_EDIT) {
for(i = 0 ; i < t->total; i++, td++) { for(i = 0 ; i < t->total; i++, td++) {
if (td->flag & TD_SELECTED) { if (td->flag & TD_SELECTED) {
td->factor = 1.0f; td->factor = 1.0f;
@ -742,7 +747,9 @@ void calculatePropRatio(TransInfo *t)
break; break;
case PROP_CONST: case PROP_CONST:
td->factor = 1.0f; td->factor = 1.0f;
//td->factor = (float)sqrt(2*dist - dist * dist); break;
case PROP_SPHERE:
td->factor = (float)sqrt(2*dist - dist * dist);
break; break;
default: default:
td->factor = 1; td->factor = 1;
@ -751,7 +758,7 @@ void calculatePropRatio(TransInfo *t)
} }
switch(prop_mode) { switch(prop_mode) {
case PROP_SHARP: case PROP_SHARP:
strcpy(t->proptext, "(Quad)"); strcpy(t->proptext, "(Sharp)");
break; break;
case PROP_SMOOTH: case PROP_SMOOTH:
strcpy(t->proptext, "(Smooth)"); strcpy(t->proptext, "(Smooth)");
@ -764,7 +771,9 @@ void calculatePropRatio(TransInfo *t)
break; break;
case PROP_CONST: case PROP_CONST:
strcpy(t->proptext, "(Constant)"); strcpy(t->proptext, "(Constant)");
//strcpy(t->proptext, "(Sphere)"); break;
case PROP_SPHERE:
strcpy(t->proptext, "(Sphere)");
break; break;
default: default:
strcpy(t->proptext, ""); strcpy(t->proptext, "");

@ -402,17 +402,17 @@ static void partial_donut(float radring, float radhole, int start, int end, int
float ring_delta, side_delta; float ring_delta, side_delta;
int i, j; int i, j;
ring_delta= 2.0*M_PI/(float)nrings; ring_delta= 2.0f*(float)M_PI/(float)nrings;
side_delta= 2.0*M_PI/(float)nsides; side_delta= 2.0f*(float)M_PI/(float)nsides;
theta= M_PI+0.5*ring_delta; theta= (float)M_PI+0.5f*ring_delta;
cos_theta= cos(theta); cos_theta= (float)cos(theta);
sin_theta= sin(theta); sin_theta= (float)sin(theta);
for(i= nrings - 1; i >= 0; i--) { for(i= nrings - 1; i >= 0; i--) {
theta1= theta + ring_delta; theta1= theta + ring_delta;
cos_theta1= cos(theta1); cos_theta1= (float)cos(theta1);
sin_theta1= sin(theta1); sin_theta1= (float)sin(theta1);
if(i==start) { // cap if(i==start) { // cap
glBegin(GL_POLYGON); glBegin(GL_POLYGON);
@ -422,8 +422,8 @@ static void partial_donut(float radring, float radhole, int start, int end, int
float cos_phi, sin_phi, dist; float cos_phi, sin_phi, dist;
phi += side_delta; phi += side_delta;
cos_phi= cos(phi); cos_phi= (float)cos(phi);
sin_phi= sin(phi); sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi; dist= radhole + radring * cos_phi;
glVertex3f(cos_theta1 * dist, -sin_theta1 * dist, radring * sin_phi); glVertex3f(cos_theta1 * dist, -sin_theta1 * dist, radring * sin_phi);
@ -437,8 +437,8 @@ static void partial_donut(float radring, float radhole, int start, int end, int
float cos_phi, sin_phi, dist; float cos_phi, sin_phi, dist;
phi += side_delta; phi += side_delta;
cos_phi= cos(phi); cos_phi= (float)cos(phi);
sin_phi= sin(phi); sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi; dist= radhole + radring * cos_phi;
glNormal3f(cos_theta1 * cos_phi, -sin_theta1 * cos_phi, sin_phi); glNormal3f(cos_theta1 * cos_phi, -sin_theta1 * cos_phi, sin_phi);
@ -457,8 +457,8 @@ static void partial_donut(float radring, float radhole, int start, int end, int
float cos_phi, sin_phi, dist; float cos_phi, sin_phi, dist;
phi -= side_delta; phi -= side_delta;
cos_phi= cos(phi); cos_phi= (float)cos(phi);
sin_phi= sin(phi); sin_phi= (float)sin(phi);
dist= radhole + radring * cos_phi; dist= radhole + radring * cos_phi;
glVertex3f(cos_theta * dist, -sin_theta * dist, radring * sin_phi); glVertex3f(cos_theta * dist, -sin_theta * dist, radring * sin_phi);
@ -482,12 +482,12 @@ static void manipulator_setcolor(char axis, int colcode)
{ {
float vec[4]; float vec[4];
vec[3]= 0.7; // alpha set on 0.5, can be glEnabled or not vec[3]= 0.7f; // alpha set on 0.5, can be glEnabled or not
if(colcode==MAN_GREY) { if(colcode==MAN_GREY) {
if(axis > 'Z') glColor4ub(0, 0, 0, 70); if(axis > 'Z') glColor4ub(0, 0, 0, 70);
else { else {
vec[0]= vec[1]= vec[2]= 1.0; vec[3]= 0.3; vec[0]= vec[1]= vec[2]= 1.0f; vec[3]= 0.3f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec);
} }
} }
@ -510,21 +510,21 @@ static void manipulator_setcolor(char axis, int colcode)
glColor3ub(50, 50, 225); glColor3ub(50, 50, 225);
break; break;
case 'X': case 'X':
vec[2]= vec[1]= 0.0; vec[0]= 1.0; vec[2]= vec[1]= 0.0f; vec[0]= 1.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec);
break; break;
case 'Y': case 'Y':
vec[0]= vec[2]= 0.0; vec[1]= 1.0; vec[0]= vec[2]= 0.0f; vec[1]= 1.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec);
break; break;
case 'Z': case 'Z':
vec[0]= vec[1]= 0.0; vec[2]= 1.0; vec[0]= vec[1]= 0.0f; vec[2]= 1.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec);
break; break;
case 'C': case 'C':
BIF_GetThemeColor3fv(TH_TRANSFORM, vec); BIF_GetThemeColor3fv(TH_TRANSFORM, vec);
if(G.vd->twmode == V3D_MANIP_LOCAL) {vec[0]+= 0.25; vec[1]+=0.25; vec[2]+=0.25;} if(G.vd->twmode == V3D_MANIP_LOCAL) {vec[0]+= 0.25f; vec[1]+=0.25f; vec[2]+=0.25f;}
else if(G.vd->twmode == V3D_MANIP_NORMAL) {vec[0]-= 0.2; vec[1]-=0.2; vec[2]-=0.2;} else if(G.vd->twmode == V3D_MANIP_NORMAL) {vec[0]-= 0.2f; vec[1]-=0.2f; vec[2]-=0.2f;}
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec); glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, vec);
break; break;
} }
@ -587,17 +587,17 @@ static void draw_manipulator_rotate_ghost(float mat[][4], int drawflags)
glTranslatef(mat[3][0], mat[3][1], mat[3][2]); glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
/* sets view screen aligned */ /* sets view screen aligned */
glRotatef( -360.0*saacos(G.vd->viewquat[0])/M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]); glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]);
vec[0]= Trans.imval[0] - Trans.center2d[0]; vec[0]= (float)(Trans.imval[0] - Trans.center2d[0]);
vec[1]= Trans.imval[1] - Trans.center2d[1]; vec[1]= (float)(Trans.imval[1] - Trans.center2d[1]);
vec[2]= 0.0; vec[2]= 0.0f;
Normalise(vec); Normalise(vec);
startphi= saacos( vec[1] ); startphi= saacos( vec[1] );
if(vec[0]<0.0) startphi= -startphi; if(vec[0]<0.0) startphi= -startphi;
phi= fmod(-180.0*Trans.val/M_PI, 360.0); phi= (float)fmod(-180.0*Trans.val/M_PI, 360.0);
if(phi > 180.0) phi-= 360.0; if(phi > 180.0) phi-= 360.0;
else if(phi<-180.0) phi+= 360.0; else if(phi<-180.0) phi+= 360.0;
@ -660,14 +660,14 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
double plane[4]; double plane[4];
float size, vec[3], unitmat[4][4]; float size, vec[3], unitmat[4][4];
float cywid= 0.33f*0.01f*(float)U.tw_handlesize; float cywid= 0.33f*0.01f*(float)U.tw_handlesize;
float cusize= cywid*0.65; float cusize= cywid*0.65f;
int arcs= (G.rt==2); int arcs= (G.rt==2);
int colcode; int colcode;
if(moving) colcode= MAN_MOVECOL; if(moving) colcode= MAN_MOVECOL;
else colcode= MAN_RGB; else colcode= MAN_RGB;
if(G.rt==3) cusize= cywid*0.3; if(G.rt==3) cusize= cywid*0.3f;
/* when called while moving in mixed mode, do not draw when... */ /* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_ROT_C)==0) return; if((drawflags & MAN_ROT_C)==0) return;
@ -694,7 +694,7 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
glClipPlane(GL_CLIP_PLANE0, plane); glClipPlane(GL_CLIP_PLANE0, plane);
} }
/* sets view screen aligned */ /* sets view screen aligned */
glRotatef( -360.0*saacos(G.vd->viewquat[0])/M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]); glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]);
/* Screen aligned help circle */ /* Screen aligned help circle */
if(arcs) { if(arcs) {
@ -707,17 +707,17 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
if(drawflags & MAN_ROT_V) { if(drawflags & MAN_ROT_V) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
BIF_ThemeColor(TH_TRANSFORM); BIF_ThemeColor(TH_TRANSFORM);
drawcircball(unitmat[3], 1.2*size, unitmat); drawcircball(unitmat[3], 1.2f*size, unitmat);
if(moving) { if(moving) {
float vec[3]; float vec[3];
vec[0]= Trans.imval[0] - Trans.center2d[0]; vec[0]= (float)(Trans.imval[0] - Trans.center2d[0]);
vec[1]= Trans.imval[1] - Trans.center2d[1]; vec[1]= (float)(Trans.imval[1] - Trans.center2d[1]);
vec[2]= 0.0; vec[2]= 0.0f;
Normalise(vec); Normalise(vec);
VecMulf(vec, 1.2*size); VecMulf(vec, 1.2f*size);
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3fv(vec); glVertex3fv(vec);
glEnd(); glEnd();
} }
@ -835,14 +835,14 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
if(drawflags & MAN_ROT_Z) { if(drawflags & MAN_ROT_Z) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Z);
manipulator_setcolor('Z', colcode); manipulator_setcolor('Z', colcode);
partial_donut(cusize/3.0, 1.0, 0, 48, 8, 48); partial_donut(cusize/3.0f, 1.0f, 0, 48, 8, 48);
} }
/* X circle */ /* X circle */
if(drawflags & MAN_ROT_X) { if(drawflags & MAN_ROT_X) {
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_X);
glRotatef(90.0, 0.0, 1.0, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0);
manipulator_setcolor('X', colcode); manipulator_setcolor('X', colcode);
partial_donut(cusize/3.0, 1.0, 0, 48, 8, 48); partial_donut(cusize/3.0f, 1.0f, 0, 48, 8, 48);
glRotatef(-90.0, 0.0, 1.0, 0.0); glRotatef(-90.0, 0.0, 1.0, 0.0);
} }
/* Y circle */ /* Y circle */
@ -850,7 +850,7 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_Y);
glRotatef(-90.0, 1.0, 0.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0);
manipulator_setcolor('Y', colcode); manipulator_setcolor('Y', colcode);
partial_donut(cusize/3.0, 1.0, 0, 48, 8, 48); partial_donut(cusize/3.0f, 1.0f, 0, 48, 8, 48);
glRotatef(90.0, 1.0, 0.0, 0.0); glRotatef(90.0, 1.0, 0.0, 0.0);
} }
@ -939,7 +939,7 @@ static void draw_manipulator_rotate(float mat[][4], int moving, int drawflags, i
static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, int combo, int colcode) static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, int combo, int colcode)
{ {
float cywid= 0.33f*0.01f*(float)U.tw_handlesize; float cywid= 0.33f*0.01f*(float)U.tw_handlesize;
float cusize= cywid*0.75, dz; float cusize= cywid*0.75f, dz;
/* when called while moving in mixed mode, do not draw when... */ /* when called while moving in mixed mode, do not draw when... */
if((drawflags & MAN_SCALE_C)==0) return; if((drawflags & MAN_SCALE_C)==0) return;
@ -981,7 +981,7 @@ static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, in
dz= 1.0; dz= 1.0;
} }
else dz= 1.0-3.0*cusize; else dz= 1.0f-3.0f*cusize;
/* Z cube */ /* Z cube */
glTranslatef(0.0, 0.0, dz); glTranslatef(0.0, 0.0, dz);
@ -1028,27 +1028,27 @@ static void draw_manipulator_scale(float mat[][4], int moving, int drawflags, in
static void draw_cone(GLUquadricObj *qobj, float len, float width) static void draw_cone(GLUquadricObj *qobj, float len, float width)
{ {
glTranslatef(0.0, 0.0, -0.5*len); glTranslatef(0.0, 0.0, -0.5f*len);
gluCylinder(qobj, width, 0.0, len, 8, 1); gluCylinder(qobj, width, 0.0, len, 8, 1);
gluQuadricOrientation(qobj, GLU_INSIDE); gluQuadricOrientation(qobj, GLU_INSIDE);
gluDisk(qobj, 0.0, width, 8, 1); gluDisk(qobj, 0.0, width, 8, 1);
gluQuadricOrientation(qobj, GLU_OUTSIDE); gluQuadricOrientation(qobj, GLU_OUTSIDE);
glTranslatef(0.0, 0.0, 0.5*len); glTranslatef(0.0, 0.0, 0.5f*len);
} }
static void draw_cylinder(GLUquadricObj *qobj, float len, float width) static void draw_cylinder(GLUquadricObj *qobj, float len, float width)
{ {
width*= 0.8; // just for beauty width*= 0.8f; // just for beauty
glTranslatef(0.0, 0.0, -0.5*len); glTranslatef(0.0, 0.0, -0.5f*len);
gluCylinder(qobj, width, width, len, 8, 1); gluCylinder(qobj, width, width, len, 8, 1);
gluQuadricOrientation(qobj, GLU_INSIDE); gluQuadricOrientation(qobj, GLU_INSIDE);
gluDisk(qobj, 0.0, width, 8, 1); gluDisk(qobj, 0.0, width, 8, 1);
gluQuadricOrientation(qobj, GLU_OUTSIDE); gluQuadricOrientation(qobj, GLU_OUTSIDE);
glTranslatef(0.0, 0.0, len); glTranslatef(0.0, 0.0, len);
gluDisk(qobj, 0.0, width, 8, 1); gluDisk(qobj, 0.0, width, 8, 1);
glTranslatef(0.0, 0.0, -0.5*len); glTranslatef(0.0, 0.0, -0.5f*len);
} }
@ -1090,8 +1090,8 @@ static void draw_manipulator_translate(float mat[][4], int moving, int drawflags
gluSphere(qobj, cywid, 8, 6); gluSphere(qobj, cywid, 8, 6);
/* offset in combo mode */ /* offset in combo mode */
if(combo & (V3D_MANIP_ROTATE|V3D_MANIP_SCALE)) dz= 1.0+cylen; if(combo & (V3D_MANIP_ROTATE|V3D_MANIP_SCALE)) dz= 1.0f+cylen;
else dz= 1.0; else dz= 1.0f;
/* Z Cone */ /* Z Cone */
glTranslatef(0.0, 0.0, dz); glTranslatef(0.0, 0.0, dz);
@ -1147,7 +1147,7 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag
glTranslatef(mat[3][0], mat[3][1], mat[3][2]); glTranslatef(mat[3][0], mat[3][1], mat[3][2]);
/* sets view screen aligned */ /* sets view screen aligned */
glRotatef( -360.0*saacos(G.vd->viewquat[0])/M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]); glRotatef( -360.0f*saacos(G.vd->viewquat[0])/(float)M_PI, G.vd->viewquat[1], G.vd->viewquat[2], G.vd->viewquat[3]);
/* Screen aligned view rot circle */ /* Screen aligned view rot circle */
if(drawflags & MAN_ROT_V) { if(drawflags & MAN_ROT_V) {
@ -1156,15 +1156,15 @@ static void draw_manipulator_rotate_cyl(float mat[][4], int moving, int drawflag
if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V); if(G.f & G_PICKSEL) glLoadName(MAN_ROT_V);
BIF_ThemeColor(TH_TRANSFORM); BIF_ThemeColor(TH_TRANSFORM);
drawcircball(unitmat[3], 1.2*size, unitmat); drawcircball(unitmat[3], 1.2f*size, unitmat);
if(moving) { if(moving) {
float vec[3]; float vec[3];
vec[0]= Trans.imval[0] - Trans.center2d[0]; vec[0]= (float)(Trans.imval[0] - Trans.center2d[0]);
vec[1]= Trans.imval[1] - Trans.center2d[1]; vec[1]= (float)(Trans.imval[1] - Trans.center2d[1]);
vec[2]= 0.0; vec[2]= 0.0f;
Normalise(vec); Normalise(vec);
VecMulf(vec, 1.2*size); VecMulf(vec, 1.2f*size);
glBegin(GL_LINES); glBegin(GL_LINES);
glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 0.0, 0.0);
glVertex3fv(vec); glVertex3fv(vec);
@ -1373,9 +1373,9 @@ void BIF_draw_manipulator(ScrArea *sa)
switch(v3d->around) { switch(v3d->around) {
case V3D_CENTRE: case V3D_CENTRE:
case V3D_LOCAL: case V3D_LOCAL:
v3d->twmat[3][0]= (G.scene->twmin[0] + G.scene->twmax[0])/2.0; v3d->twmat[3][0]= (G.scene->twmin[0] + G.scene->twmax[0])/2.0f;
v3d->twmat[3][1]= (G.scene->twmin[1] + G.scene->twmax[1])/2.0; v3d->twmat[3][1]= (G.scene->twmin[1] + G.scene->twmax[1])/2.0f;
v3d->twmat[3][2]= (G.scene->twmin[2] + G.scene->twmax[2])/2.0; v3d->twmat[3][2]= (G.scene->twmin[2] + G.scene->twmax[2])/2.0f;
break; break;
case V3D_CENTROID: case V3D_CENTROID:
VECCOPY(v3d->twmat[3], G.scene->twcent); VECCOPY(v3d->twmat[3], G.scene->twcent);
@ -1502,12 +1502,12 @@ int BIF_do_manipulator(ScrArea *sa)
if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return 0; if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return 0;
// find the hotspots first test narrow hotspot // find the hotspots first test narrow hotspot
val= manipulator_selectbuf(sa, 0.5*(float)U.tw_hotspot); val= manipulator_selectbuf(sa, 0.5f*(float)U.tw_hotspot);
if(val) { if(val) {
short mvalo[2], mval[2]; short mvalo[2], mval[2];
// drawflags still global, for drawing call above // drawflags still global, for drawing call above
drawflags= manipulator_selectbuf(sa, 0.2*(float)U.tw_hotspot); drawflags= manipulator_selectbuf(sa, 0.2f*(float)U.tw_hotspot);
if(drawflags==0) drawflags= val; if(drawflags==0) drawflags= val;
getmouseco_areawin(mvalo); getmouseco_areawin(mvalo);