back to the text
/*----------------------------------------------------
 * 
 * GROW.c - app variables and draw functions
 * 
 *--------------------------------------------------*/

#include "INCLUDES.h"

static float alphanameA[4] = {1.0, 1.0, 1.0, 1.0};									
static float alphanameB[4] = {1.0, 1.0, 1.0, 0.6};									
static float alphanameC[4] = {1.0, 1.0, 1.0, 0.3};									


int growA=0; 
int blueA=15; 
static int eye = 0;

static int growROT1 = 0;
static int growROT2 = 0;
static int growROT3 = 0;
static float growGROW1 = 3.0;
static float growGROW2 = 3.0;
static float growGROW3 = 3.0;

static int blueROT1 = 0;
static int blueROT2 = 0;
static int blueROT3 = 0;
static float blueGROW1 = -2.0;
static float blueGROW2 = -2.0;
static float blueGROW3 = -2.0;

static float growB=1.0;
static float growCNT=1.0;

int growstrobe=1;

static int growC;


/*--------------------------------------------------*/

void grow_spheres(int, int, int, float, float, float);
void blue_spheres(int, int, int, float, float, float);
void grostro_lines();

/*--------------------------------------------------*/
/*--------------------------------------------------*/
/*--------------------------------------------------*/
/*--------------------------------------------------*/
/*----------------------------------------------------
 * 
 * DRAW functions
 * 
 *--------------------------------------------------*/

void draw_GROW()
{
	/*cpack(0xff10ffff); clear(); zclear();*/

	translate(0.0, 2.75, 0.0);

	if (growC==1){
	   cpack(0xffffffff);
	   }
	   else
	  cpack(0xff10ffff);
	   clear();
	   zclear();
	
	/*----------------------------*/
	
	zbuffer(FALSE);
	/*backface(TRUE);*/
	/*msalpha(MSA_MASK);*/
	texbind(TX_TEXTURE_0, img_list[growA]);	
	blendfunction(BF_SA, BF_MSA);
	
	grow_spheres(growROT1, growROT2, growROT3,
				growGROW1, growGROW2, growGROW3);

	blendfunction(BF_ONE, BF_ZERO);	
	texbind(TX_TEXTURE_0, 0);
	/*msalpha(MSA_ALPHA);*/
	
	/*----------------------------*/

	texbind(TX_TEXTURE_0, img_list[blueA]);	
	blendfunction(BF_SA, BF_MSA);
	
	blue_spheres(blueROT1, blueROT2, blueROT3,
				blueGROW1, blueGROW2, blueGROW3);

	blendfunction(BF_ONE, BF_ZERO);	
	texbind(TX_TEXTURE_0, 0);
	zbuffer(TRUE);
	/*backface(FALSE);*/
	
	/*----------------------------*/
		
	grostro_lines();
	
	/*----------------------------*/
		
	
	/*----------------------------*/
		
	if(eye)
	{
		
			
		growB = growB + .999;									
		if (growB < 1 && growB > 0) {growA = 56; blueA=71;}
			else if (growB < 2 && growB > 1) {growA = 57; blueA=72;}
			else if (growB < 3 && growB > 2) {growA = 58; blueA=73;}
			else if (growB < 4 && growB > 3) {growA = 59; blueA=74;}
			else if (growB < 5 && growB > 4) {growA = 60; blueA=75;}
			else if (growB < 6 && growB > 5) {growA = 61; blueA=76;}
			else if (growB < 7 && growB > 6) {growA = 62; blueA=77;}
			else if (growB < 8 && growB > 7) {growA = 63; blueA=78;}
			else if (growB < 9 && growB > 8) {growA = 64; blueA=79;}
			else if (growB < 10 && growB > 9) {growA = 65; blueA=80;}
			else if (growB < 11 && growB > 10) {growA = 66; blueA=81;}
			else if (growB < 12 && growB > 11) {growA = 67; blueA=82;}
			else if (growB < 13 && growB > 12) {growA = 68; blueA=83;}
			else if (growB < 14 && growB > 13) {growA = 69; blueA=84;}
			else if (growB < 15 && growB > 14) {growA = 70; blueA=85;}
			else if (growB >= 15)
			{
				growA = 56;
				blueA = 71;
				growB = 0;
			}
		
		
		
		growCNT = growCNT + .999;	
		if (growCNT < 1 && growCNT > 0) alphanameA[3] = 0.1;							
			else if (growCNT < 2 && growCNT > 1) alphanameA[3] = 0.2;
			else if (growCNT < 3 && growCNT > 2) alphanameA[3] = 0.3;
			else if (growCNT < 4 && growCNT > 3) alphanameA[3] = 0.4;
			else if (growCNT < 5 && growCNT > 4) alphanameA[3] = 0.5;
			else if (growCNT < 6 && growCNT > 5) alphanameA[3] = 0.6;
			else if (growCNT < 7 && growCNT > 6) alphanameA[3] = 0.7;
			else if (growCNT < 8 && growCNT > 7) alphanameA[3] = 0.8;
			else if (growCNT < 9 && growCNT > 8) alphanameA[3] = 0.9;
			else if (growCNT < 10 && growCNT > 9) alphanameA[3] = 0.8;
			else if (growCNT < 11 && growCNT > 10) alphanameA[3] = 0.7;
			else if (growCNT < 12 && growCNT > 11) alphanameA[3] = 0.6;
			else if (growCNT < 13 && growCNT > 12) alphanameA[3] = 0.5;
			else if (growCNT < 14 && growCNT > 13) alphanameA[3] = 0.4;
			else if (growCNT < 15 && growCNT > 14) alphanameA[3] = 0.3;
			else if (growCNT < 16 && growCNT > 15) alphanameA[3] = 0.2;
			else if (growCNT >= 16)
			{
				alphanameA[3] = 0.1;
				growCNT = 0;
			}
		if (growCNT < 1 && growCNT > 0) alphanameB[3] = 0.6;							
			else if (growCNT < 2 && growCNT > 1) alphanameB[3] = 0.7;
			else if (growCNT < 3 && growCNT > 2) alphanameB[3] = 0.8;
			else if (growCNT < 4 && growCNT > 3) alphanameB[3] = 0.9;
			else if (growCNT < 5 && growCNT > 4) alphanameB[3] = 0.8;
			else if (growCNT < 6 && growCNT > 5) alphanameB[3] = 0.7;
			else if (growCNT < 7 && growCNT > 6) alphanameB[3] = 0.6;
			else if (growCNT < 8 && growCNT > 7) alphanameB[3] = 0.5;
			else if (growCNT < 9 && growCNT > 8) alphanameB[3] = 0.4;
			else if (growCNT < 10 && growCNT > 9) alphanameB[3] = 0.3;
			else if (growCNT < 11 && growCNT > 10) alphanameB[3] = 0.2;
			else if (growCNT < 12 && growCNT > 11) alphanameB[3] = 0.1;
			else if (growCNT < 13 && growCNT > 12) alphanameB[3] = 0.2;
			else if (growCNT < 14 && growCNT > 13) alphanameB[3] = 0.3;
			else if (growCNT < 15 && growCNT > 14) alphanameB[3] = 0.4;
			else if (growCNT < 16 && growCNT > 15) alphanameB[3] = 0.5;
			else if (growCNT >= 16)
			{
				alphanameB[3] = 0.6;
				growCNT = 0;
			}
		if (growCNT < 1 && growCNT > 0) alphanameC[3] = 0.3;							
			else if (growCNT < 2 && growCNT > 1) alphanameC[3] = 0.2;
			else if (growCNT < 3 && growCNT > 2) alphanameC[3] = 0.1;
			else if (growCNT < 4 && growCNT > 3) alphanameC[3] = 0.2;
			else if (growCNT < 5 && growCNT > 4) alphanameC[3] = 0.3;
			else if (growCNT < 6 && growCNT > 5) alphanameC[3] = 0.4;
			else if (growCNT < 7 && growCNT > 6) alphanameC[3] = 0.5;
			else if (growCNT < 8 && growCNT > 7) alphanameC[3] = 0.6;
			else if (growCNT < 9 && growCNT > 8) alphanameC[3] = 0.7;
			else if (growCNT < 10 && growCNT > 9) alphanameC[3] = 0.8;
			else if (growCNT < 11 && growCNT > 10) alphanameC[3] = 0.9;
			else if (growCNT < 12 && growCNT > 11) alphanameC[3] = 0.8;
			else if (growCNT < 13 && growCNT > 12) alphanameC[3] = 0.7;
			else if (growCNT < 14 && growCNT > 13) alphanameC[3] = 0.6;
			else if (growCNT < 15 && growCNT > 14) alphanameC[3] = 0.5;
			else if (growCNT < 16 && growCNT > 15) alphanameC[3] = 0.4;
			else if (growCNT >= 16)
			{
				alphanameC[3] = 0.3;
				growCNT = 0;
			}
			
			growstrobe = growstrobe + 1;
			if (growstrobe==5) growstrobe = 1;
			
			growC = growC + 1;
			if (growC==5) growC = 1;
	
	growROT1 = growROT1 + 1;
	if (growROT1 >3500) growROT1 = 0;
	growROT2 = growROT2 + 1;
	if (growROT2 >3500) growROT2 = 0;
	growROT3 = growROT3 + 1;
	if (growROT3 >3500) growROT3 = 0;
	
	growGROW1 = growGROW1 + .03;
	if (growGROW1 >= 10.0) growGROW1 = 1.0;
	growGROW2 = growGROW2 + .03;
	if (growGROW2 >= 10.0) growGROW2 = 1.0;
	growGROW3 = growGROW3 + .03;
	if (growGROW3 >= 10.0) growGROW3 = 1.0;
	
	blueROT1 = blueROT1 + 1;
	if (blueROT1 >3500) blueROT1 = 0;
	blueROT2 = blueROT2 + 1;
	if (blueROT2 >3500) blueROT2 = 0;
	blueROT3 = blueROT3 + 1;
	if (blueROT3 >3500) blueROT3 = 0;
	
	blueGROW1 = blueGROW1 + .1;
	if (blueGROW1 >= 10.0) blueGROW1 = drand48();
	blueGROW2 = blueGROW2 + .1;
	if (blueGROW2 >= 10.0) blueGROW2 = drand48();
	blueGROW3 = blueGROW3 + .1;
	if (blueGROW3 >= 10.0) blueGROW3 = drand48();
	
	
	
	}
	eye=!eye;
		
}

/*--------------------------------------------------*/

void grow_spheres(int growROT1, int growROT2, int growROT3,
		float growGROW1, float growGROW2, float growGROW3)
{
	pushmatrix();
		c4f(alphanameA);
		translate(-7.0, 5.0, 0.0);
		rotate(growROT3, 'z');
		scale(growGROW3, growGROW3, growGROW3);
		callobj(GLobjSphIndex);
	popmatrix();	
		
	pushmatrix();	
		c4f(alphanameB);
		translate(0.0, 5.0, -5.0);
		rotate(growROT2, 'y');
		scale(growGROW2, growGROW2, growGROW2);
		callobj(GLobjSphIndex);
	popmatrix();
	
	pushmatrix();
		c4f(alphanameC);
		translate(7.0, 5.0, 0.0);
		rotate(growROT1, 'x');
		scale(growGROW1, growGROW1, growGROW1);
		callobj(GLobjSphIndex);
	popmatrix();	
}

/*--------------------------------------------------*/	

void blue_spheres(int blueROT1, int blueROT2, int blueROT3,
		float blueGROW1, float blueGROW2, float blueGROW3)
{
	pushmatrix();
		c4f(alphanameA);
		translate(-7 + drand48() *20, 0.0, -5.0);
		rotate(blueROT3, 'z');
		scale(blueGROW3, blueGROW3, blueGROW3);
		callobj(GLobjSphIndex);
	popmatrix();	
		
	pushmatrix();	
		c4f(alphanameB);
		translate(0.0, 0.0, 5.0);
		rotate(blueROT2, 'y');
		scale(blueGROW2, blueGROW2, blueGROW2);
		callobj(GLobjSphIndex);
	popmatrix();
	
	pushmatrix();
		c4f(alphanameC);
		translate(-7 + drand48() *20, 0.0, -5.0);
		rotate(blueROT1, 'x');
		scale(blueGROW1, blueGROW1, blueGROW1);
		callobj(GLobjSphIndex);
	popmatrix();	
}

/*--------------------------------------------------*/
	
void grostro_lines()
{  
	pushmatrix();
	if (growstrobe==1){
		   cpack(0xffffff);
		   }
		   else
		   cpack(0x000000);
		   
		translate(7.0, 0.0, -5.0);
		scale(5.0, .1, 0.0);
		callobj(GLobjSqrIndex);
	popmatrix();
	
	pushmatrix();
	if (growstrobe==1){
		   cpack(0xffffffff);						
		   }
		   else
		   cpack(0x000000);
		   
		translate(-7.0, 0.0, -5.0);
		scale(5.0, .1, 0.0);
		callobj(GLobjSqrIndex);
	popmatrix();
}

/*--------------------------------------------------*/