view plugins/crazychat/models.c @ 13014:5efbb0162f86

[gaim-migrate @ 15367] I don't expect any of this to be controversial. * Some comment and other small changes. * Changed gtkconn.c to store the list of errored accounts in a hash table instead of a glist * Added init and uninit functions to gtkconn.c. They're used to create and destroy the two hash tables used within that file. * Also use the new init and uninit functions to connect to the account deleted signal so that we clear out the old error message if we delete an account that had an error while connecting. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Mon, 23 Jan 2006 06:54:29 +0000
parents ed017b9c532d
children
line wrap: on
line source

#include"glm.h"
#include <GL/gl.h>
#include <GL/glu.h>
#include "face.h"

#define ASCII_DIGITS 48

void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale){
	int i;
	char c;
	GLint* temp_lists;
	GLMmodel** temp_models;
	char* temp = (char*)malloc(sizeof(char) * (strlen(name) + strlen(".obj" + 3)));
	GLMmodel* model;	
	float dum;
	temp_lists = (GLint*)malloc(sizeof(GLint) * num_lists);	
	temp_models = (GLMmodel**)malloc(sizeof(GLMmodel*) * num_lists);

	for(i=0;i<num_lists;i++) {
		strcpy(temp, name);
		if(i<10){
			c = (char)(ASCII_DIGITS+i);
			strncat(temp, &c, 1);
		}
		else{
			c = (char)(i/10+ASCII_DIGITS);
			strncat(temp, &c, 1);
			c = (char)(i%10 + ASCII_DIGITS);
			strncat(temp, &c, 1);
		}
		strcat(temp, ".obj");
		temp_models[i]=glmReadOBJ(temp);
		glmScale(temp_models[i], my_scale);
		dum =glmUnitize(temp_models[i]); // this actually just centers
		//printf("%s factor %f", temp, dum);
		temp_lists[i]=glmList(temp_models[i], GLM_SMOOTH);
	}

	*lists = temp_lists;
	*models = temp_models;
	free(temp);	
}

int compute_lid(BOOL open, int curr_lid, int max){
	if(open) {
		if(curr_lid < max){
			curr_lid++;
		}
		else
			curr_lid=max;
	}
	else {
		if(curr_lid >=2){
			curr_lid-=2;	
		}
		else if(curr_lid==1){
			curr_lid--;
		}
		curr_lid=0;
	}
	return curr_lid;
}

void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir)
{
	struct doggy_struct* dog = (struct doggy_struct*)f->char_struct;
	if(f->my_mode==NORMAL){
		f->curr_z_angle=0;
		return;
	}
	if(f->my_mode==CRAZY1){
		f->curr_z_angle = f->curr_z_angle+ANGLE_INC;
		*angle = f->curr_z_angle;
	}
}