Entity: Color por defecto, para colorear las entidades sin perder el color por la iluminación
This commit is contained in:
@@ -53,6 +53,8 @@ Entity Entity_New(){
|
|||||||
|
|
||||||
e->color[0]=e->color[1]=e->color[2]=e->color[3]=1.0f;
|
e->color[0]=e->color[1]=e->color[2]=e->color[3]=1.0f;
|
||||||
e->light[0]=e->light[1]=e->light[2]=e->light[3]=1.0f;
|
e->light[0]=e->light[1]=e->light[2]=e->light[3]=1.0f;
|
||||||
|
e->defaultColor[0]=e->defaultColor[1]=
|
||||||
|
e->defaultColor[2]=e->defaultColor[3]=1.0f;
|
||||||
|
|
||||||
e->oncopy=NULL;
|
e->oncopy=NULL;
|
||||||
e->ondelete=NULL;
|
e->ondelete=NULL;
|
||||||
@@ -122,6 +124,10 @@ Entity Entity_Copy(Entity e){
|
|||||||
n->light[1]=e->light[1];
|
n->light[1]=e->light[1];
|
||||||
n->light[2]=e->light[2];
|
n->light[2]=e->light[2];
|
||||||
n->light[3]=e->light[3];
|
n->light[3]=e->light[3];
|
||||||
|
n->defaultColor[0]=e->defaultColor[0];
|
||||||
|
n->defaultColor[1]=e->defaultColor[1];
|
||||||
|
n->defaultColor[2]=e->defaultColor[2];
|
||||||
|
n->defaultColor[3]=e->defaultColor[3];
|
||||||
|
|
||||||
n->oncopy=e->oncopy;
|
n->oncopy=e->oncopy;
|
||||||
n->ondelete=e->ondelete;
|
n->ondelete=e->ondelete;
|
||||||
@@ -804,6 +810,17 @@ void Entity_SetLight(Entity e,float r,float g,float b,float rad){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////
|
||||||
|
// Entity_SetDefaultColor
|
||||||
|
//
|
||||||
|
//
|
||||||
|
void Entity_SetDefaultColor(Entity e,float r,float g,float b,float a){
|
||||||
|
e->defaultColor[0]=r;
|
||||||
|
e->defaultColor[1]=g;
|
||||||
|
e->defaultColor[2]=b;
|
||||||
|
e->defaultColor[3]=a;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Entity_Iluminate
|
// Entity_Iluminate
|
||||||
@@ -817,12 +834,16 @@ void Entity_Iluminate(Entity e,Entity *elist,int n){
|
|||||||
|
|
||||||
if(!(e->flags&EntityFlag_Light)){
|
if(!(e->flags&EntityFlag_Light)){
|
||||||
Entity_SetColor(e,
|
Entity_SetColor(e,
|
||||||
e->light[0],
|
e->defaultColor[0]*e->light[0],
|
||||||
e->light[1],
|
e->defaultColor[1]*e->light[1],
|
||||||
e->light[2],
|
e->defaultColor[2]*e->light[2],
|
||||||
1.0f);
|
e->defaultColor[3]);
|
||||||
}else{
|
}else{
|
||||||
Entity_SetColor(e,1.0f,1.0f,1.0f,1.0f);
|
Entity_SetColor(e,
|
||||||
|
e->defaultColor[0],
|
||||||
|
e->defaultColor[1],
|
||||||
|
e->defaultColor[2],
|
||||||
|
e->defaultColor[2]);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -836,10 +857,10 @@ void Entity_Iluminate(Entity e,Entity *elist,int n){
|
|||||||
if(qdist<qrad){
|
if(qdist<qrad){
|
||||||
f=1.0f-qdist/qrad;
|
f=1.0f-qdist/qrad;
|
||||||
Entity_AddColor(e,
|
Entity_AddColor(e,
|
||||||
f*elist[i]->light[0],
|
f*elist[i]->light[0]*e->defaultColor[0],
|
||||||
f*elist[i]->light[1],
|
f*elist[i]->light[1]*e->defaultColor[1],
|
||||||
f*elist[i]->light[2],
|
f*elist[i]->light[2]*e->defaultColor[2],
|
||||||
1.0f);
|
0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ struct TEntity {
|
|||||||
|
|
||||||
float color[4];
|
float color[4];
|
||||||
float light[4];
|
float light[4];
|
||||||
|
float defaultColor[4];
|
||||||
|
|
||||||
void (*oncopy)(Entity ent);
|
void (*oncopy)(Entity ent);
|
||||||
void (*ondelete)(Entity ent);
|
void (*ondelete)(Entity ent);
|
||||||
@@ -246,6 +247,12 @@ void Entity_AddColor(Entity e,float r,float g,float b,float a);
|
|||||||
void Entity_SetLight(Entity e,float r,float g,float b,float rad);
|
void Entity_SetLight(Entity e,float r,float g,float b,float rad);
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////
|
||||||
|
// Entity_SetDefaultColor
|
||||||
|
//
|
||||||
|
void Entity_SetDefaultColor(Entity e,float r,float g,float b,float a);
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
// Entity_AddColor
|
// Entity_AddColor
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user