diff options
| -rw-r--r-- | src/graphics_c3_freeglut.c | 29 | 
1 files changed, 22 insertions, 7 deletions
diff --git a/src/graphics_c3_freeglut.c b/src/graphics_c3_freeglut.c index d73aec1..e4d6cf8 100644 --- a/src/graphics_c3_freeglut.c +++ b/src/graphics_c3_freeglut.c @@ -194,7 +194,7 @@ void draw_c3_shape(c3_s_t s) {//outlined. needs to be filled? //draw minimap shi    s2.len=s.len;    s3.id=s.id;    s3.len=s.len; -  c3_group_rot_t *gr=get_group_rotation(s.id); +  c3_group_rot_t *gr=get_group_relative(s.id);    if(s.len > 1) {     for(i=0;i<s.len+(s.len==1);i++) {//apply the group's rotation and store in s2.       if(gr) { @@ -291,7 +291,7 @@ real shitdist(struct c3_shape *s,c3_t p) {//this function is a killer. :/   int i;   real curdist=0;   real maxdist=0; - c3_group_rot_t *gr=get_group_rotation(s->id); + c3_group_rot_t *gr=get_group_relative(s->id);   for(i=0;i< s->len+(s->len==1);i++) {    if(gr) {     curdist=shitdist2(global.camera.p,rotate_c3_yr(c3_add(gr->p,s->p[i]),gr->p,d2r(gr->r.y))); @@ -306,7 +306,7 @@ real shitdist(struct c3_shape *s,c3_t p) {//this function is a killer. :/   /*   real total=0;   for(i=0;i< s->len+(s->len==1);i++) { -  c3_group_rot_t *gr=get_group_rotation(s->id); +  c3_group_rot_t *gr=get_group_relative(s->id);    total=total+shitdist2(                  rotate_c3_yr(//we're rotating the point around the camera...                    gr? @@ -395,6 +395,7 @@ void set_aspect_ratio() {  }  int graphics_event_handler() { +  draw_screen();//kek    return 0;//dunno  } @@ -407,6 +408,11 @@ int graphics_sub_init() {   glutInitWindowSize(640,480);   glutInitWindowPosition(0,0);   glutCreateWindow("hackvr"); + + glViewport(0,0,320,240); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(45.0f,4/3,1.0f,200.0f);   //glutDisplayFunc();   //glutReshapeFunc();   //initGL(); @@ -421,18 +427,26 @@ int graphics_sub_init() {  void draw_screen() {//welp... do something here.    int i,j; +  c3_group_rot_t *gr;    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);    glMatrixMode(GL_MODELVIEW);    //for each object:    for(i=0;global.shape[i];i++) {//let's see if drawing not in groups is slow as fuck.     glLoadIdentity();//resets the current matrix to default. not translation or rotation will be applied to the shapes going in... -   glTranslatef(1.5f, 0.0f, -7.0f);//group_rotation data goes into this +   gr=get_group_relative(global.shape[i]->id); +   if(gr) { +     glRotatef(gr->r.x +     glTranslatef(gr->p.x + global.camera.p.x , gr->p.y + global.camera.p.y , gr->p.z + global.camera.p.z); +   } else { +     glTranslatef(global.camera.p.x,global.camera.p.y,global.camera.p.z); +   }     switch(global.shape[i]->len) {      case 0:       continue;      case 1://circle... skip for now.       continue;      case 2://line. dunno. +     glBegin(GL_LINES);       continue;      case 3:       glBegin(GL_TRIANGLES); @@ -444,15 +458,16 @@ void draw_screen() {//welp... do something here.       continue;//fuck it.     }     for(j=0;j<global.shape[i]->len;j++) { -    glColor3f(1.0f,0.0f,0.0f);//red +    //TODO: actually set colors. +    glColor3f((float)(random()%256) / 256.0f,(float)(random()%256) / 256.0f,(float)(random()%256) / 256.0f);      glVertex3f(global.shape[i]->p[j].x,global.shape[i]->p[j].y,global.shape[i]->p[j].z); -    glEnd();     } +   glEnd();     //now to draw all the shapes inside this object... can I draw the shape out of order?    }    //    glutSwapBuffers(); -  //glutMainLoopEvent();//what do we need this for? calling the callbacks? I could do that... +  glutMainLoopEvent();//what do we need this for? calling the callbacks? I could do that...  }  int graphics_init() {  | 
