void ofxIndustrialRobotVisualizer::drawGeneric(){
	
	//Base
	ofSetColor(0, 255, 255);	
	glTranslated(0, -25, 0);
	//ofxBox(ofxVec3f(0,25,0), ofxVec3f(200, 50, 200));	
	
	//model.draw();
	ofSetColor(255, 0, 0);
	glPushMatrix();
	glScaled(1.0, -1.0, 1.0);
	ofSetColor(255, 255, 255);

//	model.draw();
	glPopMatrix();
	//	ofxSphere(ofxVec3f(0,0,0), ofxVec3f(200, 200, 200));
	
	glRotated(180, 0.0, 0.0, -1.0); 
	glPushMatrix();
		glScaled(1.0, 1.0, -1.0);
	//	glScaled(0.1, 0.1, 0.1);
	drawArm0();
	drawArm1();
	drawArm2();
	drawArm3();
	drawArm4();
	//Draw tool
	ofSetColor(255, 0, 0);
	float l = helper->getTool()->l; //The length of the tool
	ofxVec3f rotation = helper->getTool()->getRotation();
	glRotated(rotation.z, 0.0, 0.0, 1.0);
	ofxBox(ofxVec3f(helper->getTool()->h/2.0,l/2,0), ofxVec3f(helper->getTool()->h, l, helper->getTool()->w), ofxVec3f(0.0, 0.0, 0.0));
	//	ofxVec3f axis = helper->getAxis(i); //The axis the arm rotates around
	//	ofxVec3f offset = helper->getOffset(i);
	//	glRotated(helper->getRotationAngle(i), axis.x, axis.y, axis.z); // Rotate it around the axis
	//	glTranslated(0, l, 0);
	//	ofxBox(ofxVec3f(0,-l/2.0,0), ofxVec3f(60, l, 60), ofxVec3f(0.0, 0.0, 0.0));
	//	glTranslated(-offset.y, offset.x, offset.z);	
	
	glPopMatrix();
	glScaled(1.0, 1.0, -1.0);

	//Target
	glRotated(180, 0.0, 1.0, 0.0); 
	ofSetColor(255, 0, 0);
	ofxSphere(controller->targetPosition, ofxVec3f(20, 20, 20));
	glBegin(GL_LINE_STRIP);
	glVertex3d(controller->targetPosition.x, controller->targetPosition.y, controller->targetPosition.z);
	ofxVec3f temp = controller->targetPosition+ controller->targetDir*500.0;
	glVertex3d(temp.x,temp.y, temp.z);
	glEnd();
	
	glPushMatrix();
	ofSetColor(0, 255, 0);
	for(int i=0;i<timeline->numberPositionCues(); i++){
		ofxVec3f vec = timeline->getPositionCue(i)->position;
		ofxSphere(vec, ofxVec3f(10, 10, 10));	
	}
	timeline->spline.drawRaw(10, 5);
	ofSetColor(255, 255, 0, 100);
	timeline->spline.drawSmooth(50, 0, 10);
	glLineWidth(1);
	ofSetColor(255, 255, 255, 255);
	ofFill();
	//	glDisable(GL_DEPTH_TEST);
	
/*	glBegin(GL_POLYGON);
	for(int i=0;i<3;i++){
		glVertex3f(plotter->spaceDefinition[i].x,plotter->spaceDefinition[i].y,plotter->spaceDefinition[i].z);
	}
	glVertex3f(plotter->fourthCorner().x,plotter->fourthCorner().y,plotter->fourthCorner().z);
	glEnd();
*/
	for(int i=0;i<plotter->lines.size();i++){
		glBegin(GL_LINE_STRIP);
		ofxVec3f x = (plotter->spaceDefinition[1]-plotter->spaceDefinition[0]).normalized();
		ofxVec3f y = (plotter->spaceDefinition[2]-plotter->spaceDefinition[1]).normalized();
		for(int u=0;u<plotter->lines[i].size();u++){
			ofxVec3f point = x * plotter->lines[i][u].x + y * plotter->lines[i][u].y + plotter->spaceDefinition[0];
			glVertex3f(point.x,point.y,point.z);
		}

		glEnd();
	}
	
	glPopMatrix();
	
	
}
void drawGuy2(void)
{
	mvstack.push(model_view);
	if (TIME >= 20 && TIME < 20.5)
	{
		model_view *= RotateX(-600+TIME*30);
	}
	else if (TIME >= 20.5 && TIME < 21.5)
	{
		model_view *= RotateX(15);
	}
	else if (TIME >= 21.5 && TIME < 22)
	{
		model_view *= RotateX(15);
		model_view *= RotateX((21.5*30) - TIME*30);
	}
	else if (TIME >= 22 && TIME < 22.5)
	{
		model_view *= RotateY((22*90)- TIME*90);
	}
	else if (TIME >= 22.5 && TIME < 23)
	{
		model_view *= RotateY(-45);
	}
	else if (TIME >= 23 && TIME < 23.5)
	{
		model_view *= RotateY(-45);
		model_view *= RotateY((-23*90) + TIME*90);
	}
	else if (TIME >= 23.5 && TIME < 24)
	{
		model_view *= RotateY((-23.5 * 90) + TIME*90);
	}
	else if (TIME >= 24 && TIME < 24.5)
	{
		model_view *= RotateY(45);
	}
	else if (TIME >= 24.5 && TIME < 25)
	{
		model_view *= RotateY(45);
		model_view *= RotateY((24.5*90) - TIME*90);
	}
	else if (TIME >= 25 && TIME < 25.5)
	{
		model_view *= RotateX ((-25*30) + TIME*30);
	}
	else if (TIME >= 25.5 && TIME < 28.5)
	{
		model_view *= RotateX(15);
	}
	else if (TIME >= 28.5 && TIME < 29.5)
	{
		model_view *= RotateX((28.5*15) - TIME*15);
	}
	drawHead2();
	model_view = mvstack.pop();

	mvstack.push(model_view);
		drawTorso2();
	model_view = mvstack.pop();
	
	// saber armi
	mvstack.push(model_view);
	if (TIME >=6 && TIME < 9.5)
	{
		model_view *= RotateX(-20*sin(3*TIME));
	}
	else if (TIME >= 9.5 && TIME < 10)
	{
		model_view *= RotateX(959 - TIME*102);
	}
	else if (TIME >= 10 && TIME < 16)
	{
		model_view *= RotateY(30*sin(5*TIME));
		model_view *= RotateX(-45);
	}
	else if (TIME >= 16 && TIME < 20)
	{
		model_view *= RotateX(-45);
	}
	else if (TIME >= 20 && TIME < 20.5)
	{
		model_view *= RotateX(-45);
		model_view *= RotateX(-1800 + TIME*20.5);
	}
	else if (TIME >= 29.5)
	{
		model_view *= RotateX(30*sin(20*TIME));
	}
	drawArm2();
	model_view = mvstack.pop();

	//static 
	mvstack.push(model_view);
	if (TIME >=6 && TIME < 10)
	{
		model_view *= RotateX(20*sin(3*TIME));
	}
	else if (TIME >= 10 &&  TIME < 20)
	{
		model_view *= RotateX(-45);
	}	
	else if (TIME >= 20 && TIME < 20.5)
	{
		model_view *= RotateX(-45);
		model_view *= RotateX(-1800 + TIME*20.5);
	}
	else if (TIME >= 29.5)
	{
		model_view *= RotateX(-30*sin(20*TIME));
	}
		drawTopArm2Right();
	model_view = mvstack.pop();

	//legs

	//LEG1
	mvstack.push(model_view);
	if (TIME >= 6 && TIME < 10)
	{
		model_view *= RotateX(5*sin(5*TIME));
	}
	else if (TIME >= 26.5 && TIME < 28.5)
	{
		model_view *= RotateX(5*sin(5*TIME));
	}
	else if (TIME >= 29.5)
	{
		model_view *= RotateX(5*sin(20*TIME));
	}
		mvstack.push(model_view);
			set_colour(.8, .8, .8);
			model_view *= Translate(-.25, -2.5, 0);
			model_view *= RotateX(180);
			//model_view *= RotateX(5+sin(2*TIME));
			drawLegPart3();
			model_view *= Translate(0, .9, 0);
			model_view *= Scale (.2, .2, .2);
			drawSphere();
		model_view = mvstack.pop();

		//LOWERLEG 1
		mvstack.push(model_view);
			set_colour(.8, .8, .8);
			model_view *= Translate(-.25, -4.32, 0);
			if (TIME >= 6 && TIME < 10)
			{
				model_view *= RotateX(5*sin(5*TIME));
			}
			else if (TIME >= 26.5 && TIME < 28.5)
			{
			model_view *= RotateX(5*sin(5*TIME));
			}
			else if (TIME >= 29.5)
			{
				model_view *= RotateX(5*sin(20*TIME));
			}
			drawLegPart4();
		model_view = mvstack.pop();
	model_view = mvstack.pop();

	//LEG2	
	mvstack.push(model_view);
		if (TIME >= 6 && TIME < 10)
		{
			model_view *= RotateX(-5*sin(5*TIME));
		}
		else if (TIME >= 26.5 && TIME < 28.5)
		{
			model_view *= RotateX(-5*sin(5*TIME));
		}
		else if (TIME >= 29.5)
		{
			model_view *= RotateX(-5*sin(20*TIME));
		}
		mvstack.push(model_view);
			set_colour(.8, .8, .8);
			model_view *= Translate(.25, -2.5, 0);
			model_view *= RotateX(180);
			drawLegPart3();
			model_view *= Translate(0, .9, 0);
			model_view *= Scale (.2, .2, .2);
			drawSphere();
		model_view = mvstack.pop();
		//LOWER LEG  2
		mvstack.push(model_view);
				set_colour(.8, .8, .8);
				model_view *= Translate(.25, -4.32, 0);
				if (TIME >= 6 && TIME < 10)
				{
					model_view *= RotateX(-5*sin(5*TIME));
				}
				else if (TIME >= 26.5 && TIME < 28.5)
				{
					model_view *= RotateX(-5*sin(5*TIME));
				}
					else if (TIME >= 29.5)
				{
					model_view *= RotateX(-5*sin(20*TIME));
				}
				drawLegPart4();
		model_view = mvstack.pop();

	model_view = mvstack.pop();
}