Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2007-02-22 21:49:00 +0300
committerNicholas Bishop <nicholasbishop@gmail.com>2007-02-22 21:49:00 +0300
commita7bccae4779e88b75f326cdda2d0defc2045b19b (patch)
tree5d13e77e78b6859b14fe8a8722bb14ec7536be1e /source/blender/src/sculptmode.c
parent685d26f90131da6bfe4bc3de7cbde9b8d41135d6 (diff)
== Sculpt Mode ==
* Replaced get_tex_angle() with tex_angle() and set_tex_angle(). This removes the need to do a bunch of error-prone NULL checking everywhere the texture angle is used.
Diffstat (limited to 'source/blender/src/sculptmode.c')
-rw-r--r--source/blender/src/sculptmode.c55
1 files changed, 29 insertions, 26 deletions
diff --git a/source/blender/src/sculptmode.c b/source/blender/src/sculptmode.c
index 2a00287426e..2c1cfe2bb34 100644
--- a/source/blender/src/sculptmode.c
+++ b/source/blender/src/sculptmode.c
@@ -1005,13 +1005,20 @@ unsigned *get_ri_pixel(const RenderInfo *ri, int px, int py)
return ri->rect + py * ri->pr_rectx + px;
}
-/* Use the warpfac field in MTex to store a rotation value for sculpt textures. */
-float *get_tex_angle(void)
+/* Use the warpfac field in MTex to store a rotation value for sculpt textures. Value is in degrees */
+float tex_angle(void)
{
SculptData *sd= sculpt_data();
if(sd->texact!=-1 && sd->mtex[sd->texact])
- return &sd->mtex[sd->texact]->warpfac;
- return NULL;
+ return sd->mtex[sd->texact]->warpfac;
+ return 0;
+}
+
+void set_tex_angle(const float f)
+{
+ SculptData *sd = sculpt_data();
+ if(sd->texact != -1 && sd->mtex[sd->texact])
+ sd->mtex[sd->texact]->warpfac = f;
}
float to_rad(const float deg)
@@ -1054,8 +1061,7 @@ float tex_strength(EditData *e, float *point, const float len,const unsigned vin
else if(ss->texrndr) {
const short bsize= sculptmode_brush()->size * 2;
const short half= sculptmode_brush()->size;
- const float *ang= get_tex_angle();
- const float rot= ang?to_rad(*ang):0.0f;
+ const float rot= to_rad(tex_angle());
int px, py;
unsigned i, *p;
RenderInfo *ri= ss->texrndr;
@@ -1099,7 +1105,7 @@ float tex_strength(EditData *e, float *point, const float len,const unsigned vin
float fx= (pv.co[0] - e->mouse[0] + half) * (ri->pr_rectx*1.0f/bsize) - ri->pr_rectx/2;
float fy= (pv.co[1] - e->mouse[1] + half) * (ri->pr_recty*1.0f/bsize) - ri->pr_recty/2;
- float angle= atan2(fy, fx) + rot;
+ float angle= atan2(fy, fx) - rot;
float len= sqrtf(fx*fx + fy*fy);
px= ri->pr_rectx/2 + len * cos(angle);
@@ -1515,9 +1521,8 @@ void sculptmode_propset_header()
val= sculptmode_brush()->strength;
}
else if(pd->mode == PropsetTexRot) {
- float *ang= get_tex_angle();
name= "Texture Angle";
- val= ang?*get_tex_angle():0.0f;
+ val= tex_angle();
}
sprintf(str, "Brush %s: %d", name, val);
headerprint(str);
@@ -1528,19 +1533,18 @@ void sculptmode_propset_end(int cancel)
{
SculptSession *ss= sculpt_session();
PropsetData *pd= ss ? ss->propset : NULL;
- float *ang= get_tex_angle();
if(pd) {
if(cancel) {
sculptmode_brush()->size= pd->origsize;
sculptmode_brush()->strength= pd->origstrength;
- if(ang) *ang= pd->origtexrot;
+ set_tex_angle(pd->origtexrot);
} else {
if(pd->mode != PropsetSize)
sculptmode_brush()->size= pd->origsize;
if(pd->mode != PropsetStrength)
sculptmode_brush()->strength= pd->origstrength;
if(pd->mode != PropsetTexRot)
- if(ang) *ang= pd->origtexrot;
+ set_tex_angle(pd->origtexrot);
}
glDeleteTextures(1, &pd->tex);
MEM_freeN(pd->texdata);
@@ -1555,13 +1559,11 @@ void sculptmode_propset_init(PropsetMode mode)
{
SculptSession *ss= sculpt_session();
PropsetData *pd= ss->propset;
- float *ang= get_tex_angle();
+ const float ang= tex_angle();
if(!pd) {
short mouse[2];
- if(mode == PropsetTexRot && !ang) return;
-
pd= MEM_callocN(sizeof(PropsetData),"PropsetSize");
ss->propset= pd;
@@ -1574,14 +1576,13 @@ void sculptmode_propset_init(PropsetMode mode)
else if(mode == PropsetStrength)
pd->origloc[0]-= 200 - 2*sculptmode_brush()->strength;
else if(mode == PropsetTexRot) {
- pd->origloc[0]-= 200 * cos(to_rad(*ang));
- pd->origloc[1]-= 200 * sin(to_rad(*ang));
+ pd->origloc[0]-= 200 * cos(to_rad(ang));
+ pd->origloc[1]-= 200 * sin(to_rad(ang));
}
pd->origsize= sculptmode_brush()->size;
pd->origstrength= sculptmode_brush()->strength;
- if(ang)
- pd->origtexrot= *ang;
+ pd->origtexrot= ang;
sculptmode_propset_calctex();
@@ -1622,7 +1623,6 @@ void sculptmode_propset(unsigned short event)
float dist;
BrushData *brush= sculptmode_brush();
char valset= 0;
- float *ang= get_tex_angle();
handleNumInput(&pd->num, event);
@@ -1634,7 +1634,7 @@ void sculptmode_propset(unsigned short event)
else if(pd->mode==PropsetStrength)
brush->strength= val;
else if(pd->mode==PropsetTexRot)
- *ang= val;
+ set_tex_angle(val);
valset= 1;
allqueue(REDRAWVIEW3D, 0);
}
@@ -1656,8 +1656,9 @@ void sculptmode_propset(unsigned short event)
brush->strength= fin>=0 ? fin : 0;
if(ctrl) brush->strength= (brush->strength+5)/10*10;
} else if(pd->mode == PropsetTexRot) {
- *ang= (int)to_deg(atan2(tmp[1], tmp[0])) + 180;
- if(ctrl) *ang= ((int)(*ang)+5)/10*10;
+ set_tex_angle((int)to_deg(atan2(tmp[1], tmp[0])) + 180);
+ if(ctrl)
+ set_tex_angle(((int)(tex_angle())+5)/10*10);
}
valset= 1;
allqueue(REDRAWVIEW3D, 0);
@@ -1667,7 +1668,7 @@ void sculptmode_propset(unsigned short event)
case RIGHTMOUSE:
brush->size= pd->origsize;
brush->strength= pd->origstrength;
- if(ang) *ang= pd->origtexrot;
+ set_tex_angle(pd->origtexrot);
case LEFTMOUSE:
while(get_mbut()==L_MOUSE);
case RETKEY:
@@ -1688,8 +1689,10 @@ void sculptmode_propset(unsigned short event)
sculptmode_propset_calctex();
}
else if(pd->mode == PropsetTexRot) {
- if(*ang<0) *ang= 0;
- if(*ang>360) *ang= 360;
+ if(tex_angle() < 0)
+ set_tex_angle(0);
+ else if(tex_angle() > 360)
+ set_tex_angle(360);
}
}