view plugins/crazychat/models.c @ 13093:4f615c9fb63a

[gaim-migrate @ 15455] Since we try to discourage use of CVS, let's not talk about it in the segfault message. That line doesn't really provide any useful information to the average user anyway. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Thu, 02 Feb 2006 05:54:51 +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;
	}
}