From ae5ffedfeb5f3556b6a533e6f1692fddcc94be4e Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Sat, 23 Aug 2014 18:13:27 +0200 Subject: [PATCH] =?UTF-8?q?Entity:=20Color=20por=20defecto,=20para=20color?= =?UTF-8?q?ear=20las=20entidades=20sin=20perder=20el=20color=20por=20la=20?= =?UTF-8?q?iluminaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GameLib/Entity.c | 39 ++++++++++++++++++++++++++++++--------- GameLib/Entity.h | 7 +++++++ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/GameLib/Entity.c b/GameLib/Entity.c index e464c6c..64e9ab5 100644 --- a/GameLib/Entity.c +++ b/GameLib/Entity.c @@ -53,6 +53,8 @@ Entity Entity_New(){ 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->defaultColor[0]=e->defaultColor[1]= + e->defaultColor[2]=e->defaultColor[3]=1.0f; e->oncopy=NULL; e->ondelete=NULL; @@ -122,6 +124,10 @@ Entity Entity_Copy(Entity e){ n->light[1]=e->light[1]; n->light[2]=e->light[2]; 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->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 @@ -817,12 +834,16 @@ void Entity_Iluminate(Entity e,Entity *elist,int n){ if(!(e->flags&EntityFlag_Light)){ Entity_SetColor(e, - e->light[0], - e->light[1], - e->light[2], - 1.0f); + e->defaultColor[0]*e->light[0], + e->defaultColor[1]*e->light[1], + e->defaultColor[2]*e->light[2], + e->defaultColor[3]); }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; } @@ -836,10 +857,10 @@ void Entity_Iluminate(Entity e,Entity *elist,int n){ if(qdistlight[0], - f*elist[i]->light[1], - f*elist[i]->light[2], - 1.0f); + f*elist[i]->light[0]*e->defaultColor[0], + f*elist[i]->light[1]*e->defaultColor[1], + f*elist[i]->light[2]*e->defaultColor[2], + 0.0f); } } } diff --git a/GameLib/Entity.h b/GameLib/Entity.h index 07d417e..1f737d4 100644 --- a/GameLib/Entity.h +++ b/GameLib/Entity.h @@ -50,6 +50,7 @@ struct TEntity { float color[4]; float light[4]; + float defaultColor[4]; void (*oncopy)(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); +///////////////////////////// +// Entity_SetDefaultColor +// +void Entity_SetDefaultColor(Entity e,float r,float g,float b,float a); + + ///////////////////////////// // Entity_AddColor //