gtk/plugins/crazychat/models.c

Sun, 20 May 2007 06:19:49 +0000

author
William Ehlhardt <williamehlhardt@gmail.com>
date
Sun, 20 May 2007 06:19:49 +0000
branch
gaim
changeset 20470
77693555855f
parent 11218
plugins/crazychat/models.c@886e6862af56
parent 14253
plugins/crazychat/models.c@b63ebf84c42b
child 20471
1966704b3e42
permissions
-rw-r--r--

merge of 'b98e72d4089afb8a1879e5fe9627cfb132ee88de'
and 'b2836a24d81e7a1bd1d21b3aea8794b094391344'

11218
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
1 #include"glm.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
2 #include <GL/gl.h>
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
3 #include <GL/glu.h>
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
4 #include "face.h"
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
5
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
6 #define ASCII_DIGITS 48
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
7
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
8 void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
9 int i;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
10 char c;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
11 GLint* temp_lists;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
12 GLMmodel** temp_models;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
13 char* temp = (char*)malloc(sizeof(char) * (strlen(name) + strlen(".obj" + 3)));
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
14 GLMmodel* model;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
15 float dum;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
16 temp_lists = (GLint*)malloc(sizeof(GLint) * num_lists);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
17 temp_models = (GLMmodel**)malloc(sizeof(GLMmodel*) * num_lists);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
18
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
19 for(i=0;i<num_lists;i++) {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
20 strcpy(temp, name);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
21 if(i<10){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
22 c = (char)(ASCII_DIGITS+i);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
23 strncat(temp, &c, 1);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
24 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
25 else{
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
26 c = (char)(i/10+ASCII_DIGITS);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
27 strncat(temp, &c, 1);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
28 c = (char)(i%10 + ASCII_DIGITS);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
29 strncat(temp, &c, 1);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
30 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
31 strcat(temp, ".obj");
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
32 temp_models[i]=glmReadOBJ(temp);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
33 glmScale(temp_models[i], my_scale);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
34 dum =glmUnitize(temp_models[i]); // this actually just centers
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
35 //printf("%s factor %f", temp, dum);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
36 temp_lists[i]=glmList(temp_models[i], GLM_SMOOTH);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
37 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
38
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
39 *lists = temp_lists;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
40 *models = temp_models;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
41 free(temp);
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
42 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
43
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
44 int compute_lid(BOOL open, int curr_lid, int max){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
45 if(open) {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
46 if(curr_lid < max){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
47 curr_lid++;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
48 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
49 else
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
50 curr_lid=max;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
51 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
52 else {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
53 if(curr_lid >=2){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
54 curr_lid-=2;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
55 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
56 else if(curr_lid==1){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
57 curr_lid--;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
58 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
59 curr_lid=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
60 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
61 return curr_lid;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
62 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
63
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
64 void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir)
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
65 {
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
66 struct doggy_struct* dog = (struct doggy_struct*)f->char_struct;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
67 if(f->my_mode==NORMAL){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
68 f->curr_z_angle=0;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
69 return;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
70 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
71 if(f->my_mode==CRAZY1){
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
72 f->curr_z_angle = f->curr_z_angle+ANGLE_INC;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
73 *angle = f->curr_z_angle;
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
74 }
886e6862af56 [gaim-migrate @ 13350]
Charlie Stockman <chuckleberry@users.sourceforge.net>
parents:
diff changeset
75 }

mercurial