11218
|
1 #include "face.h"
|
|
2 #include "sharky.h"
|
|
3 #include "doggy.h"
|
|
4 #include <assert.h>
|
|
5
|
|
6 FACE init_face(KIND kind)
|
|
7 {
|
|
8 FACE face;
|
|
9 face = (FACE)malloc(sizeof(*face));
|
|
10
|
|
11 switch(kind){
|
|
12 case DOG:
|
|
13 init_dog(face);
|
|
14 break;
|
|
15 case SHARK:
|
|
16 init_shark(face);
|
|
17 break;
|
|
18 default:
|
|
19 printf("default face\n");
|
|
20 init_dog(face);
|
|
21 break;
|
|
22 }
|
|
23 return face;
|
|
24 }
|
|
25
|
|
26 void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode){
|
|
27 face->draw_func(face, zrot, yrot, left_eye, right_eye, mouth_open, dir, mode);
|
|
28 }
|
|
29
|
|
30 void change_materials(FACE f, int* mats, int num_change){
|
|
31 int i;
|
|
32 assert(!(num_change<0 || num_change>NUM_PARTS));
|
|
33 for(i=0;i<num_change;i++){
|
|
34 f->mat_indeces[i]=mats[i];
|
|
35 }
|
|
36 }
|
|
37
|
|
38 void free_face(FACE f){}
|