static Spacetime interpolateSpacetime(Spacetime st1, Spacetime st2, uint32_t t)
{
	// Cyp says this should never happen, #3037 and #3238 say it does though.
	ASSERT_OR_RETURN(st1, st1.time != st2.time, "Spacetime overlap!");
	return Spacetime(interpolatePos(st1.pos, st2.pos, st1.time, st2.time, t), interpolateRot(st1.rot, st2.rot, st1.time, st2.time, t), t);
}
int DrawFountain(float t)
{
	float seconds = fabs((t-tStart))*1000.0;

	if((seconds >= 136500.001) && (seconds <= 137000.001))
	{
		glClearColor(1.0,1.0,1.0,1.0);
	}
	else if((seconds >= 137000.001) && (seconds <= 138000.001))
	{
		glClearColor(0.0,0.0,0.0,0.0);
	}

	if(seconds >= 136500.001)
	{
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		gluLookAt(0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

		glPushMatrix();
		glTranslatef(pos1[0], pos1[1], pos1[2]);
		glRotatef(angle, 1.0, 0.0, 0.0);
			
		fountain->Draw(t);
		fountain2->Draw(t);
		glPopMatrix();

		glPushMatrix();
		glTranslatef(p[0], p[1], p[2]);
		glRotatef(angle, 1.0, 0.0, 0.0);

		fountain3->Draw(t);
		glPopMatrix();
	}

	if( (seconds >= 139000.001 && seconds < 142000.001) || (seconds >= 148000.001 && seconds < 151000.001) )
	{
		interpolatePos(pos1, pos2, (t*1000.0)/3000.0);
		interpolatePos(p, p2, (t*1000.0)/3000.0);
	}
	else if( (seconds >= 142000.001 && seconds < 145000.001) || (seconds >= 151000.001 && seconds < 154000.001) )
	{
		interpolatePos(pos1, pos3, (t*1000.0)/3000.0);
		interpolatePos(p, p3, (t*1000.0)/3000.0);
	}
	else if( (seconds >= 145000.001 && seconds < 148000.001) || (seconds >= 154000.001 && seconds < 157000.001) )
	{
		interpolatePos(pos1, pos4, (t*1000.0)/3000.0);
		interpolatePos(p, pos4, (t*1000.0)/3000.0);
	}
	else if(seconds >= 157000.001 && seconds < 161000.001)
	{
		interpolatePos(pos1, pos4, (t*1000.0)/1000.0);
		interpolatePos(p, pos4, (t*1000.0)/1000.0);
	}
	else if(seconds >= 164000.001 && seconds < 169000.001)
	{
		fountain->disableLooping();
		fountain2->disableLooping();
		fountain3->disableLooping();

		angle += (-90.0*(t*1000.00))/3000.00;
	}

	return 1;
}
static Spacetime interpolateSpacetime(Spacetime st1, Spacetime st2, uint32_t t)
{
	return Spacetime(interpolatePos(st1.pos, st2.pos, st1.time, st2.time, t), interpolateRot(st1.rot, st2.rot, st1.time, st2.time, t), t);
}