[Quest-ed-checkins] CVS: quest-3b/src/fe/gl render.c,1.6,1.7
Brought to you by:
alexm
|
From: Alexander M. <al...@us...> - 2002-05-21 19:38:06
|
Update of /cvsroot/quest-ed/quest-3b/src/fe/gl
In directory usw-pr-cvs1:/tmp/cvs-serv6897/src/fe/gl
Modified Files:
render.c
Log Message:
Draw angle indicators for entities in wireframe mode.
Index: render.c
===================================================================
RCS file: /cvsroot/quest-ed/quest-3b/src/fe/gl/render.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** render.c 20 May 2002 01:01:30 -0000 1.6
--- render.c 21 May 2002 19:03:16 -0000 1.7
***************
*** 159,220 ****
! static void DrawLink(entity_t *e,const char *key,const char *dst_name)
{
! entity_t *e2;
! vec3_t delta,vr,vu,t,t2;
! const char *d;
! for (e2=M.VEntityHead;e2;e2=e2->VNext)
! {
! d=GetKeyValue(e2,dst_name);
! if (!d) continue;
! if (strcmp(d,key)) continue;
! glBegin(GL_LINES);
! glVertex3fv((float *)&e->center);
! glVertex3fv((float *)&e2->center);
! glEnd();
! VEC_Sub(delta,e2->center,e->center);
! Normalize(&delta);
! vr.x=vr.y=vr.z=0;
! if (fabs(delta.x)>fabs(delta.y))
! vr.y=1;
! else
! vr.x=1;
! CrossProd(vr,delta,&vu);
! Normalize(&vu);
! CrossProd(vu,delta,&vr);
! vr.x*=8; vr.y*=8; vr.z*=8;
! vu.x*=8; vu.y*=8; vu.z*=8;
! delta.x*=32; delta.y*=32; delta.z*=32;
!
! glBegin(GL_TRIANGLE_FAN);
! glVertex3fv((float *)&e2->center);
!
! VEC_Sub(t2,e2->center,delta);
! VEC_Sub(t2,t2,vr);
! VEC_Sub(t2,t2,vu);
! glVertex3fv((float *)&t2);
!
! VEC_Sub(t,e2->center,delta);
! VEC_Sub(t,t,vr);
! VEC_Add(t,t,vu);
! glVertex3fv((float *)&t);
!
! VEC_Sub(t,e2->center,delta);
! VEC_Add(t,t,vr);
! VEC_Add(t,t,vu);
! glVertex3fv((float *)&t);
!
! VEC_Sub(t,e2->center,delta);
! VEC_Add(t,t,vr);
! VEC_Sub(t,t,vu);
! glVertex3fv((float *)&t);
!
! glVertex3fv((float *)&t2);
!
! glEnd();
! }
}
--- 159,228 ----
! static void DrawArrow(vec3_t from,vec3_t to,float size)
{
! vec3_t delta,vr,vu,t,t2;
! glBegin(GL_LINES);
! glVertex3fv((float *)&from);
! glVertex3fv((float *)&to);
! glEnd();
!
! VEC_Sub(delta,to,from);
! Normalize(&delta);
!
! vr.x=vr.y=vr.z=0;
! if (fabs(delta.x)>fabs(delta.y))
! vr.y=1;
! else
! vr.x=1;
! CrossProd(vr,delta,&vu);
! Normalize(&vu);
! CrossProd(vu,delta,&vr);
! vr.x*=size; vr.y*=size; vr.z*=size;
! vu.x*=size; vu.y*=size; vu.z*=size;
! delta.x*=size*4; delta.y*=size*4; delta.z*=size*4;
!
! glBegin(GL_TRIANGLE_FAN);
! glVertex3fv((float *)&to);
!
! VEC_Sub(t2,to,delta);
! VEC_Sub(t2,t2,vr);
! VEC_Sub(t2,t2,vu);
! glVertex3fv((float *)&t2);
!
! VEC_Sub(t,to,delta);
! VEC_Sub(t,t,vr);
! VEC_Add(t,t,vu);
! glVertex3fv((float *)&t);
!
! VEC_Sub(t,to,delta);
! VEC_Add(t,t,vr);
! VEC_Add(t,t,vu);
! glVertex3fv((float *)&t);
!
! VEC_Sub(t,to,delta);
! VEC_Add(t,t,vr);
! VEC_Sub(t,t,vu);
! glVertex3fv((float *)&t);
! glVertex3fv((float *)&t2);
! glEnd();
! }
!
!
! static void DrawLink(entity_t *e,const char *key,const char *dst_name)
! {
! entity_t *e2;
! const char *d;
!
! for (e2=M.VEntityHead;e2;e2=e2->VNext)
! {
! d=GetKeyValue(e2,dst_name);
! if (!d) continue;
! if (strcmp(d,key)) continue;
!
! DrawArrow(e->center,e2->center,8);
! }
}
***************
*** 277,302 ****
static void Wire_Ent(entity_t *e)
{
! glBegin(GL_LINE_LOOP);
! glVertex3f(e->min.x,e->min.y,e->min.z);
! glVertex3f(e->min.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->min.y,e->min.z);
! glEnd();
! glBegin(GL_LINE_LOOP);
! glVertex3f(e->min.x,e->min.y,e->max.z);
! glVertex3f(e->min.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->min.y,e->max.z);
! glEnd();
! glBegin(GL_LINES);
! glVertex3f(e->min.x,e->min.y,e->min.z);
! glVertex3f(e->min.x,e->min.y,e->max.z);
! glVertex3f(e->max.x,e->min.y,e->min.z);
! glVertex3f(e->max.x,e->min.y,e->max.z);
! glVertex3f(e->min.x,e->max.y,e->min.z);
! glVertex3f(e->min.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->max.y,e->max.z);
! glEnd();
}
--- 285,332 ----
static void Wire_Ent(entity_t *e)
{
! glBegin(GL_LINE_LOOP);
! glVertex3f(e->min.x,e->min.y,e->min.z);
! glVertex3f(e->min.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->min.y,e->min.z);
! glEnd();
! glBegin(GL_LINE_LOOP);
! glVertex3f(e->min.x,e->min.y,e->max.z);
! glVertex3f(e->min.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->min.y,e->max.z);
! glEnd();
! glBegin(GL_LINES);
! glVertex3f(e->min.x,e->min.y,e->min.z);
! glVertex3f(e->min.x,e->min.y,e->max.z);
! glVertex3f(e->max.x,e->min.y,e->min.z);
! glVertex3f(e->max.x,e->min.y,e->max.z);
! glVertex3f(e->min.x,e->max.y,e->min.z);
! glVertex3f(e->min.x,e->max.y,e->max.z);
! glVertex3f(e->max.x,e->max.y,e->min.z);
! glVertex3f(e->max.x,e->max.y,e->max.z);
! glEnd();
!
! if (!e->num_brushes)
! {
! float angle;
! vec3_t c;
! angle=0;
! if (GetKeyValue(e,"angle"))
! sscanf(GetKeyValue(e,"angle"),"%f",&angle);
! c=e->center;
! if (angle==-1)
! c.z+=20;
! else if (angle==-2)
! c.z-=20;
! else
! {
! c.x+=cos(angle*PI/180.0)*20;
! c.y+=sin(angle*PI/180.0)*20;
! }
! glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
! DrawArrow(e->center,c,2);
! glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
! }
}
|