* fixed bug in rainbow color for material and world ipoview

* removed 32 channel limit (can now have 50, or of you know what number to change, 999 ;)
* added new IPOs: mirror fresnel and fac, transparency fresnel and fac, and glow factor transparent materials (add)
This commit is contained in:
Nathan Letwory 2004-07-07 08:49:33 +00:00
parent 2388cada01
commit 6757a8159b
5 changed files with 79 additions and 23 deletions

@ -107,6 +107,7 @@ int ma_ar[MA_TOTIPO]= {
MA_REF, MA_ALPHA, MA_EMIT, MA_AMB,
MA_SPEC, MA_HARD, MA_SPTR, MA_IOR,
MA_MODE, MA_HASIZE, MA_TRANSLU, MA_RAYM,
MA_FRESMIR, MA_FRESMIRI, MA_FRESTRA, MA_FRESTRAI, MA_ADD,
MA_MAP1+MAP_OFS_X, MA_MAP1+MAP_OFS_Y, MA_MAP1+MAP_OFS_Z,
MA_MAP1+MAP_SIZE_X, MA_MAP1+MAP_SIZE_Y, MA_MAP1+MAP_SIZE_Z,
@ -1078,6 +1079,16 @@ void *get_ipo_poin(ID *id, IpoCurve *icu, int *type)
poin= &(ma->translucency); break;
case MA_RAYM:
poin= &(ma->ray_mirror); break;
case MA_FRESMIR:
poin= &(ma->fresnel_mir); break;
case MA_FRESMIRI:
poin= &(ma->fresnel_mir_i); break;
case MA_FRESTRA:
poin= &(ma->fresnel_tra); break;
case MA_FRESTRAI:
poin= &(ma->fresnel_tra_i); break;
case MA_ADD:
poin= &(ma->add); break;
}
if(poin==0) {
@ -1272,12 +1283,28 @@ void set_icu_vars(IpoCurve *icu)
icu->ymax= 2.0; break;
case MA_MODE:
icu->ipo= IPO_CONST;
icu->vartype= IPO_BITS;
break;
icu->vartype= IPO_BITS; break;
case MA_RAYM:
icu->ymax= 1.0; break;
case MA_TRANSLU:
icu->ymax= 1.0; break;
case MA_IOR:
icu->ymin= 1.0;
icu->ymax= 3.0; break;
case MA_FRESMIR:
icu->ymax= 5.0; break;
case MA_FRESMIRI:
icu->ymin= 1.0;
icu->ymax= 5.0; break;
case MA_FRESTRA:
icu->ymax= 5.0; break;
case MA_FRESTRAI:
icu->ymin= 1.0;
icu->ymax= 5.0; break;
case MA_ADD:
icu->ymax= 1.0; break;
default:
icu->ymax= 1.0;
break;
icu->ymax= 1.0; break;
}
}
else {

@ -114,7 +114,7 @@ typedef short IPO_Channel;
/* ******************** */
#define MA_TOTIPO 35
#define MA_TOTIPO 40
#define MA_COL_R 1
#define MA_COL_G 2
@ -137,6 +137,11 @@ typedef short IPO_Channel;
#define MA_HASIZE 19
#define MA_TRANSLU 20
#define MA_RAYM 21
#define MA_FRESMIR 22
#define MA_FRESMIRI 23
#define MA_FRESTRA 24
#define MA_FRESTRAI 25
#define MA_ADD 26
#define MA_MAP1 0x20
#define MA_MAP2 0x40
@ -310,5 +315,7 @@ typedef short IPO_Channel;
#define IPO_EDIT 4
#define IPO_LOCK 8
#define IPO_IS_SELECTED 6 /* note, this is number of bit! */
#endif

@ -807,7 +807,7 @@ static void draw_ipobuts(SpaceIpo *sipo)
y= area->winy-30+sipo->butofs;
for(a=0; a<sipo->totipo; a++, ei++, y-=IPOBUTY) {
but= uiDefButI(block, TOG|BIT|a, a+1, ei->name, v2d->mask.xmax+18, y, IPOBUTX-15, IPOBUTY-1, &(sipo->rowbut), 0, 0, 0, 0, "");
but= uiDefButS(block, TOG|BIT|6, a+1, ei->name, v2d->mask.xmax+18, y, IPOBUTX-15, IPOBUTY-1, &(ei->flag), 0, 0, 0, 0, "");
// no hilite, its not visible, but most of all the winmatrix is not correct later on...
uiButSetFlag(but, UI_TEXT_LEFT|UI_NO_HILITE);

@ -339,6 +339,16 @@ void getname_mat_ei(int nr, char *str)
strcpy(str, "Translu"); break;
case MA_RAYM:
strcpy(str, "RayMir"); break;
case MA_FRESMIR:
strcpy(str, "FresMir"); break;
case MA_FRESMIRI:
strcpy(str, "FresMirI"); break;
case MA_FRESTRA:
strcpy(str, "FresTra"); break;
case MA_FRESTRAI:
strcpy(str, "FresTraI"); break;
case MA_ADD:
strcpy(str, "TraGlow"); break;
default:
str[0]= 0;
}
@ -1002,7 +1012,7 @@ void make_mat_editipo(SpaceIpo *si)
if(ei->adrcode==MA_MODE) ei->disptype= IPO_DISPBITS;
}
ei->col= ipo_rainbow(a, WO_TOTIPO);
ei->col= ipo_rainbow(a, MA_TOTIPO);
len= strlen(ei->name);
if(len) {
@ -1043,7 +1053,7 @@ void make_world_editipo(SpaceIpo *si)
if(ei->adrcode==MA_MODE) ei->disptype= IPO_DISPBITS;
}
ei->col= ipo_rainbow(a, MA_TOTIPO);
ei->col= ipo_rainbow(a, WO_TOTIPO);
len= strlen(ei->name);
if(len) {
@ -1271,12 +1281,10 @@ void make_editipo()
if(G.sipo->editipo==0) return;
/* rowbut for VISIBLE select */
G.sipo->rowbut= 0;
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++, ei++) {
if(ei->flag & IPO_VISIBLE) G.sipo->rowbut |= (1<<a);
if(ei->flag & IPO_VISIBLE) ei->flag |= (1<<IPO_IS_SELECTED);
if(ei->icu) ei->icu->flag= ei->flag;
}
@ -1423,15 +1431,15 @@ void update_editipo_flags()
{
EditIpo *ei;
IpoKey *ik;
unsigned int flag;
short flag;/*unsigned int flag;*/
int a;
ei= G.sipo->editipo;
if(ei) {
for(a=0; a<G.sipo->totipo; a++, ei++) {
ei->flag &= ~IPO_VISIBLE;
flag= (1<<a);
if( G.sipo->rowbut & flag ) ei->flag |= IPO_VISIBLE;
flag= (1<<IPO_IS_SELECTED);
if( ei->flag & flag ) ei->flag |= IPO_VISIBLE;
if(ei->icu) ei->icu->flag= ei->flag;
@ -1590,14 +1598,13 @@ void swap_visible_editipo()
get_status_editipo();
G.sipo->rowbut= 0;
ei= G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++) {
if(totipo_vis==0) {
if(ei->icu) {
ei->flag |= IPO_VISIBLE;
G.sipo->rowbut |= (1<<a);
ei->flag |= (1<<IPO_IS_SELECTED);
}
}
else ei->flag &= ~IPO_VISIBLE;
@ -1791,8 +1798,16 @@ void move_to_frame()
void do_ipowin_buts(short event)
{
EditIpo *ei = 0;
int a;
if((G.qual & LR_SHIFTKEY)==0) {
G.sipo->rowbut= (1<<event);
if(event>G.sipo->totipo) return;
ei = G.sipo->editipo;
for(a=0; a<G.sipo->totipo; a++) {
if(a==event) ei->flag |= (1<<IPO_IS_SELECTED);
else ei->flag &= ~(1<<IPO_IS_SELECTED);
ei++;
}
}
scrarea_queue_winredraw(curarea);
@ -1830,7 +1845,7 @@ void do_ipo_selectbuttons()
if(ei->icu) {
if((ei->flag & IPO_VISIBLE)==0) {
ei->flag |= IPO_VISIBLE;
G.sipo->rowbut |= (1<<nr);
ei->flag |= (1<<IPO_IS_SELECTED);
}
if((G.qual & LR_SHIFTKEY)==0) {
@ -3685,7 +3700,7 @@ void common_insertkey()
id= G.buts->lockpoin;
ma= G.buts->lockpoin;
if(id) {
event= pupmenu("Insert Key %t|RGB%x0|Alpha%x1|Halo Size%x2|Mode %x3|All Color%x10|Ofs%x12|Size%x13|All Mapping%x11");
event= pupmenu("Insert Key %t|RGB%x0|Alpha%x1|Halo Size%x2|Mode %x3|All Color%x10|All Mirror%x14|Ofs%x12|Size%x13|All Mapping%x11");
if(event== -1) return;
map= texchannel_to_adrcode(ma->texact);
@ -3715,7 +3730,14 @@ void common_insertkey()
insertkey(id, MA_HARD);
insertkey(id, MA_MODE);
insertkey(id, MA_TRANSLU);
insertkey(id, MA_ADD);
}
if(event==14) {
insertkey(id, MA_RAYM);
insertkey(id, MA_FRESMIR);
insertkey(id, MA_FRESMIRI);
insertkey(id, MA_FRESTRA);
insertkey(id, MA_FRESTRAI);
}
if(event==12 || event==11) {
insertkey(id, map+MAP_OFS_X);
@ -3818,9 +3840,9 @@ void common_insertkey()
}
}
else if(G.buts->mainb==CONTEXT_OBJECT) {
int tab= G.buts->tab[CONTEXT_OBJECT];
int tab= G.buts->tab[CONTEXT_OBJECT];
ob= OBACT;
if(tab==TAB_OBJECT_EFFECTS) {
ob= OBACT;
if(ob && ob->type==OB_MESH) {
id= (ID *) (ob);
if(id) {

@ -1591,7 +1591,7 @@ void winqreadipospace(ScrArea *sa, void *spacedata, BWinEvent *evt)
switch(event) {
case UI_BUT_EVENT:
/* note: bad bad code, will be cleaned! is because event queues are all shattered */
if(val>0 && val < 32) do_ipowin_buts(val-1);
if(val>0 && val < 51) do_ipowin_buts(val-1);
else do_ipobuts(val);
break;