void reset() {
	resetFollow();
	while (g_pHead != 0) {
		destroy(popTail());
	}
	pushTail(initSun(createNewElement())); //init sun
}
void myInit()
{
	initMaths();
	camInit(g_Camera);
	camInputInit(g_Input);
	camInputExplore(g_Input, true);

	glClearColor(0.01f, 0.01f, 0.01f, 0.0f); //sets the colour values to use when clearing the colours, essentially sets the canvas colour
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_LIGHT0); //sets the colour of the light (0 == white)
	glEnable(GL_LIGHTING); //allows GL to make lighting calculations
	glEnableClientState(GL_VERTEX_ARRAY);

	pushTail(initSun(createNewElement())); //init sun

	loadTextures();
}
Example #3
0
bool TestParticle::init()
{
	if(! CCLayer::init())
		return false;
	size = CCDirector::sharedDirector()->getWinSize();

	initSmoke();	
	initFirework();
	initFire();
	initSun();
	initGalaxy();
	initFlower();
	initFlower();
	initBigFlower();
	initRotFlower();
	initMeteor();
	initSpiral();
	initExplosion();
	initSnow();

	return true;
}
void rightClickMenu(int iCommand) {


	switch (iCommand) { //change to constants

	case PAUSE:
		g_bPlaying = false;
		break;
	case PLAY:
		g_bPlaying = true;
		break;
	case RESET:
		reset();
		break;
	case LONG_TRAILS: {
		resetTrails();
		g_iHistoryVariableLength = iHistoryMax;
		break; }
	case SHORT_TRAILS: {
		resetTrails();
		g_iHistoryVariableLength = g_iHistoryVariableLength / 3;

		if (g_iHistoryVariableLength < 300) {
			g_iHistoryVariableLength = 300; //with alpha, any shorter and they are basically off
		}

		break; }
	case TRAILS_OFF:
		g_bTrailsOn = false;
		break;
	case TRAILS_ON:
		g_bTrailsOn = true;
		break;
	case INCREASE_FPS:
		g_fFPSMultiplier += 0.2f;
		break;
	case DECREASE_FPS: {
		g_fFPSMultiplier -= 0.2f;

		if (g_fFPSMultiplier < 0.2f) { //stops it from having 0 fps, which currently would cause a crash
			g_fFPSMultiplier = 0.2f;
		}
		break; }
	case SAVE:
		saveFile();
		break;
	case LOAD:
		loadFile();
		break;
	case INCREASE_POPCAP:
		g_iMaintainPlanetNumber = g_iMaintainPlanetNumber * 2;
		break;
	case DECREASE_POPCAP:
		g_iMaintainPlanetNumber = g_iMaintainPlanetNumber / 2;
		break;
	case TEXTURES_ON:
		g_bTexturesOn = true;
		break;
	case TEXTURES_OFF:
		g_bTexturesOn = false;
		break;
	case PARTICLES_ON:
		g_bParticlesOn = true;
		break;
	case PARTICLES_OFF:
		g_bParticlesOn = false;
		break;
	case INCREASE_VELOCITY: 
		g_fVelocityMultiplier *= 2.0f;
		break;
	case DECREASE_VELOCITY:
		g_fVelocityMultiplier /= 2.0f;
		break; 
	case REVERSE_VELOCITY:
		g_fVelocityMultiplier *= -1.0f;
		break;
	case INCREASE_SIZE: {
		if (g_pFollowing) {
			g_pFollowing->fMass *= 2.0f;
			g_pFollowing->fSize *= 2.0f;
			g_pFollowing->iSlices += 5;
			g_pFollowing->iSegments += 5;
		}
		break; }
	case DECREASE_SIZE: {
		if (g_pFollowing) {
			g_pFollowing->fMass /= 2.0f;
			g_pFollowing->fSize /= 2.0f;
			g_pFollowing->iSlices = 20;
			g_pFollowing->iSegments = 20;
		}
		break; }
	case REMOVE_VELOCITY: {
		if (g_pFollowing) {
			vecInitDVec(g_pFollowing->afVelocity);
			vecInitDVec(g_pFollowing->afAcceleration);
		}
		break; }
	case CHANGE_COLOUR: {
		if (g_pFollowing) {
			g_pFollowing->afDiffuse[0] = randFloat(0.3f, 0.8f);
			g_pFollowing->afDiffuse[1] = randFloat(0.3f, 0.8f);
			g_pFollowing->afDiffuse[2] = randFloat(0.3f, 0.8f);
			g_pFollowing->afAmbient[0] = g_pFollowing->afDiffuse[0] / 2.0f;
			g_pFollowing->afAmbient[1] = g_pFollowing->afDiffuse[1] / 2.0f;
			g_pFollowing->afAmbient[2] = g_pFollowing->afDiffuse[2] / 2.0f;
		}
		break; }
	case STOP_FOLLOWING: 
		resetFollow();
		break;
	case SPHERE:
		pushTail(seedPlanetValues(createNewElement()));
		break;
	case CUBE:
		pushTail(seedCubeValues(createNewElement()));
		break;
	case CONE:
		pushTail(seedConeValues(createNewElement()));
		break;
	case TEAPOT:
		pushTail(seedTeapotValues(createNewElement()));
		break;
	case VERY_LARGE_SPHERE: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement()); 
		pPlanet->fSize = randFloat(50.0f, 100.0f);
		pPlanet->fMass = pPlanet->fSize * 20;
		pPlanet->iSegments = 30;
		pPlanet->iSlices = 30;
		pushTail(pPlanet);
		break; }
	case COMET: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement()); 
		pPlanet->fSize = pPlanet->fSize / 2;
		pPlanet->fMass = pPlanet->fSize * 20;
		pPlanet->m_bParticles = true;
		pushTail(pPlanet);
		break; }
	case SUN: {
		jrPlanet* pSun = initSun(createNewElement());
		pSun->afPosition[0] = randFloat(-3000.0f, 3000.0f);
		pSun->afPosition[1] = randFloat(-3000.0f, 3000.0f);
		pSun->afPosition[2] = randFloat(-3000.0f, 3000.0f);
		pushTail(pSun);
		break; }
	case EARTH: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement());
		pPlanet->fMass *= 1.5f;
		pPlanet->fSize *= 1.5f;

		pPlanet->iSegments = 20;
		pPlanet->iSlices = 20;

		pPlanet->afDiffuse[0] = 0.2f;
		pPlanet->afDiffuse[1] = 0.4f;
		pPlanet->afDiffuse[2] = 0.8f;

		pPlanet->afAmbient[0] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[1] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[2] = pPlanet->afDiffuse[0] / 2.0f;

		pPlanet->iType = EARTH;
		pushTail(pPlanet);
		break; }
	case MOON: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement());
		pPlanet->fMass *= 1.5f;
		pPlanet->fSize *= 1.5f;

		pPlanet->iSegments = 20;
		pPlanet->iSlices = 20;

		pPlanet->afDiffuse[0] = 0.8f;
		pPlanet->afDiffuse[1] = 0.8f;
		pPlanet->afDiffuse[2] = 0.8f;

		pPlanet->afAmbient[0] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[1] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[2] = pPlanet->afDiffuse[0] / 2.0f;

		pPlanet->iType = MOON;
		pushTail(pPlanet);
		break; }
	case MARS: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement());
		pPlanet->fMass *= 1.5f;
		pPlanet->fSize *= 1.5f;

		pPlanet->iSegments = 20;
		pPlanet->iSlices = 20;

		pPlanet->afDiffuse[0] = 0.8f;
		pPlanet->afDiffuse[1] = 0.3f;
		pPlanet->afDiffuse[2] = 0.3f;

		pPlanet->afAmbient[0] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[1] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[2] = pPlanet->afDiffuse[0] / 2.0f;

		pPlanet->iType = MARS;
		pushTail(pPlanet);
		break; }
	case DEATH_STAR: {
		jrPlanet* pPlanet = seedPlanetValues(createNewElement());
		pPlanet->fMass *= 1.5f;
		pPlanet->fSize *= 1.5f;

		pPlanet->iSegments = 20;
		pPlanet->iSlices = 20;

		pPlanet->afDiffuse[0] = 0.2f;
		pPlanet->afDiffuse[1] = 0.2f;
		pPlanet->afDiffuse[2] = 0.2f;

		pPlanet->afAmbient[0] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[1] = pPlanet->afDiffuse[0] / 2.0f;
		pPlanet->afAmbient[2] = pPlanet->afDiffuse[0] / 2.0f;

		pPlanet->iType = DEATH_STAR;
		pushTail(pPlanet);
		break; }
	}
}
Example #5
0
int main(int argc, char *argv[]) {
  SDL_Surface *screen;
  if (argc > 1) {
    screen = gu_init_SDL("URS Ship Viewer", atoi(argv[1]));
  } else {
    screen = gu_init_SDL("URS Ship Viewer", 0);
  }
  gu_init_GL();
  gu_init_display(display);

  skuInitKeyBinder(&kb);
  skuBindKeyHandler(&kb, SDLK_BACKSPACE, reinitCam);
  skuBindKeyHandler(&kb, SDLK_UP, rotateUp);
  skuBindKeyHandler(&kb, SDLK_DOWN, rotateDown);
  skuBindKeyHandler(&kb, SDLK_LEFT, rotateLeft);
  skuBindKeyHandler(&kb, SDLK_RIGHT, rotateRight);
  skuBindKeyHandler(&kb, SDLK_z, zoom);
  skuBindKeyHandler(&kb, SDLK_s, dezoom);
  skuBindKeyHandler(&kb, SDLK_q, left);
  skuBindKeyHandler(&kb, SDLK_d, right);

  camInit(&camera);

  gu_initLights();

  GLfloat whiteLight[4] = {1, 1, 1, 1};
  GLfloat blackLight[4] = {0, 0, 0, 1};
  glLightfv(GL_LIGHT0, GL_AMBIENT, blackLight);
  glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteLight);
  glLightfv(GL_LIGHT0, GL_SPECULAR, whiteLight);

  glMatrixMode(GL_PROJECTION);
  gluPerspective(50, (float) screen->w / screen->h, 1, 10000);
  glMatrixMode(GL_MODELVIEW);
  reinitCam();

  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

  initShip(&ship, 0, 0, 0);
  initSun(&sun, 0, 30, 30, 3, 0, 0, 0, 0);
  GLuint texDesc;
  gu_initTextures(&texDesc, 1, 1, "space.png");
  initSpace(&space, 0, 0, 0, 10, 0, 0, texDesc, 10);

  continuer = 1;
  SDL_Event event;

  Uint32 startTime;
  Uint32 ellapsedTime = 0;
  int frameNb = 0;

  //Boucle principale
  while (continuer) {
    
    //Les FPS
    startTime = SDL_GetTicks();
    if (ellapsedTime >= 1000) {
      printf("\r~%d fps", frameNb);
      fflush(stdout);
      ellapsedTime = 0;
      frameNb = 0;
    }

    //Les events
    while (SDL_PollEvent(&event)) {
      eventCatcher(&event);
    }
    skuHandle(&kb);
    gu_display();
    frameNb++;

    ellapsedTime += SDL_GetTicks() - startTime;
  }
  //C'est finit, libération des ressources
  printf("\n");
  gu_SDLQuit(1);
  exit(EXIT_SUCCESS);
}