11218
|
1 #ifndef __FACE_H__
|
|
2 #define __FACE_H__
|
|
3
|
|
4 #include <GL/gl.h>
|
|
5 #include <GL/glu.h>
|
|
6 #include "glm.h"
|
|
7
|
|
8 #define NUM_PARTS 10
|
|
9 #define DOG_SHARK_CHANGE 5
|
|
10 #define CRAZY_COUNT 12
|
|
11 #define MAX_EYE_POP 1.3
|
|
12 #define EYE_TIME 120
|
|
13 #define MAX_FILE_LEN 64
|
|
14 #define ANGLE_INC 60
|
|
15
|
|
16 typedef enum {DOG, SHARK} KIND;
|
|
17 typedef int BOOL;
|
|
18 typedef enum {UP, DOWN, CONST} DIRECTION;
|
|
19 typedef enum {NORMAL, CRAZY1, CRAZY2, CRAZY3} OUTPUT_MODE;
|
|
20
|
|
21 struct face_struct {
|
|
22 char* name;
|
|
23 KIND my_kind;
|
|
24 void* char_struct;
|
|
25 GLint* mat_indeces;
|
|
26 GLMmat_str* materials;
|
|
27 OUTPUT_MODE my_mode;
|
|
28 int eye_count, crazy_count;
|
|
29 void (*draw_func)(struct face_struct*, GLfloat, GLfloat, BOOL, BOOL, GLfloat, DIRECTION, OUTPUT_MODE);
|
|
30 float curr_z_angle, curr_eye_pop;
|
|
31 };
|
|
32
|
|
33 typedef struct face_struct* FACE;
|
|
34 typedef enum {APPENDAGE, HEAD, LIDS, LEFT_IRIS, RIGHT_IRIS, EYES, PUPIL, EXTRA1, EXTRA2, EXTRA3} PART;
|
|
35
|
|
36 FACE init_face(KIND kind);
|
|
37
|
|
38 FACE copy_face(FACE f);
|
|
39
|
|
40 void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode);
|
|
41
|
|
42 void change_materials(FACE face, int* mats, int num_change);
|
|
43
|
|
44 #endif
|