void check_bullet_asteroid_collision(list *bullet_list, list *asteroid_list, list *explosion_list, SDL_Surface **surfaces) { list bul_tmp = *bullet_list; list ast_tmp = *asteroid_list; celestial_object explosion; initExplosion(&explosion, surfaces); if (!is_empty(ast_tmp) && !is_empty(bul_tmp)) { while (!is_empty(ast_tmp)) { while (!is_empty(bul_tmp)) { if (collision(&bul_tmp->object, &ast_tmp->object, surfaces)) { // we create 3 new aste if ast_tmp is medium or bigger Mix_PlayChannel(2,noiseexplosion, 0); explosion.position.x = ast_tmp->object.position.x - 80; explosion.position.y = ast_tmp->object.position.y - 10 ; *explosion_list = push(explosion, *explosion_list); destroy_asteroid(ast_tmp->object, asteroid_list, surfaces); delete(ast_tmp, asteroid_list); delete(bul_tmp, bullet_list); ast_tmp = *asteroid_list; bul_tmp = *bullet_list; } bul_tmp = tail(bul_tmp); } ast_tmp = tail(ast_tmp); bul_tmp = *bullet_list; } } }
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 check_spaceship_collision(celestial_object *spaceship, list *asteroid_list, list *explosion_list, SDL_Surface **surfaces) { list ast_tmp = *asteroid_list; celestial_object explosion; initExplosion(&explosion, surfaces); while (!is_empty(ast_tmp)) { if (collision(spaceship, &ast_tmp->object, surfaces)) { explosion.position.x = ast_tmp->object.position.x; explosion.position.y = ast_tmp->object.position.y; Mix_PlayChannel(2,noiseexplosion, 0); explosion.isExplosionOfSpaceship = true; *explosion_list = push(explosion, *explosion_list); destroy_asteroid(ast_tmp->object, asteroid_list, surfaces); delete(ast_tmp, asteroid_list); spaceship_state = DESTROY; return; } ast_tmp = tail(ast_tmp); } }
void InitLivin(int width, int height){ int i; char letterpath[] = "data/x.obj"; /* character mesh mask */ char letterlist[LETTERNUM] = "bceginrsty"; /* Cybernetic genetics characters */ char greetingspath[21]; /* OpenGL related initialization */ glClearColor(0.0, 0.0, 0.0, 0.0); glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); perspectiveMatrix(pmatrix, 35.0, (float)width/(float)height, 0.1, 1500.0); /* Demo related initialization */ head = openDepthVideo("data/head.dv"); matat = openDepthVideo("data/matat.dv"); face = initFace("shaders/face.vs", "shaders/face.fs"); armface = initFace("shaders/face.vs", "shaders/face.fs"); knock = openOutline("data/knock.pyd", "shaders/knock.vs", "shaders/knock.fs"); jump = openOutline("data/jump.pyd", "shaders/jump.vs", "shaders/outline.fs"); hang = openOutline("data/hanging.pyd", "shaders/hang.vs", "shaders/outline.fs"); run = openOutline("data/run.pyd", "shaders/run.vs", "shaders/outline.fs"); falling = openOutline("data/falling_letters.pyd", "shaders/run.vs", "shaders/outline.fs"); door = openOutline("data/door.pyd", "shaders/door.vs", "shaders/door.fs"); trap = openOutline("data/trap.pyd", "shaders/trap.vs", "shaders/outline.fs"); fractalme = openOutline("data/fractalme.pyd", "shaders/frme.vs", "shaders/frme.fs"); /* Acrobatic outlines */ tiger = openOutline("data/tiger.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); hop = openOutline("data/hop.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); katf = openOutline("data/kezenatfordulas.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); flip = openOutline("data/flip.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); run2 = openOutline("data/run2.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); catwheel = openOutline("data/catwheel.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); tbill = openOutline("data/tarkobillenes.pyd", "shaders/acrobat.vs", "shaders/outline.fs"); createBox(); createBackground(); initGreetings(); createDistBack(); bigcube = createBigCube(600); titletex = loadPNGTexture("data/title.png"); greentex = loadPNGTexture("data/green.png"); creditstex = loadPNGTexture("data/credits.png"); bgalphatex = loadPNGTexture("data/bg_alpha.png"); whitetex = loadPNGTexture("data/white.png"); icubetex = loadPNGTexture("data/innercube.png"); headouttex = loadPNGTexture("data/headout.png"); chesstex = loadPNGTexture("data/chessboard.png"); atpartytex = loadPNGTexture("data/at_party.png"); for(i = 0; i < 12; i++){ sprintf(greetingspath, "data/greetings%d.png", i+1); greetingstex[i] = loadPNGTexture(greetingspath); } for(i = 0; i < MAXKNOCKINGMAN; i++){ knockingmans[i * 3 + 0] = drand48() * 4.0 + 8.0; knockingmans[i * 3 + 1] = drand48() * 6.0 + 1.0; knockingmans[i * 3 + 2] = drand48(); } /* Shaders */ background_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/background.vs"); background_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/background.fs"); background_src[2] = loadShader(GL_TESS_EVALUATION_SHADER, "shaders/background.te"); background_src[3] = loadShader(GL_TESS_CONTROL_SHADER, "shaders/background.tc"); background_src[4] = loadShader(GL_GEOMETRY_SHADER, "shaders/background.gs"); background_shader = createProgram(5, background_src); title_src[0] = background_src[0]; title_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/title.fs"); title_src[2] = background_src[2]; title_src[3] = background_src[3]; title_src[4] = background_src[4]; title_shader = createProgram(5, title_src); scroll_src[0] = background_src[0]; scroll_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/scroll.fs"); scroll_src[2] = background_src[2]; scroll_src[3] = background_src[3]; scroll_src[4] = background_src[4]; scroll_shader = createProgram(5, scroll_src); credits_src[0] = background_src[0]; credits_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/credits.fs"); credits_src[2] = background_src[2]; credits_src[3] = background_src[3]; credits_src[4] = loadShader(GL_GEOMETRY_SHADER, "shaders/credits.gs"); credits_shader = createProgram(5, credits_src); letter_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/letter.vs"); letter_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/letter.fs"); letter_shader = createProgram(2, letter_src); cube_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/cube.vs"); cube_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/cube.fs"); cube_src[2] = loadShader(GL_GEOMETRY_SHADER, "shaders/cube.gs"); cube_shader = createProgram(3, cube_src); gr_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/greetings.vs"); gr_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/greetings.fs"); gr_shader = createProgram(2, gr_src); dbgr_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/dbgr.vs"); dbgr_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/dbgr.fs"); dbgr_shader = createProgram(2, dbgr_src); bigcube_src[0] = loadShader(GL_VERTEX_SHADER, "shaders/bigcube.vs"); bigcube_src[1] = loadShader(GL_FRAGMENT_SHADER, "shaders/bigcube.fs"); bigcube_shader = createProgram(2, bigcube_src); /* Letters */ for(i = 0; i < LETTERNUM; i++){ letterpath[5] = letterlist[i]; letters[i] = loadOBJ(letterpath); glBindVertexArray(letters[i]->vao); bindVarToBuff(letter_shader, "vertex", letters[i]->vbo[MESHVERTEXINDEX], 3); bindVarToBuff(letter_shader, "normal", letters[i]->vbo[MESHNORMALINDEX], 3); bindVarToBuff(letter_shader, "tcoord", letters[i]->vbo[MESHTEXINDEX], 2); } cube = loadOBJ("data/cube.obj"); glBindVertexArray(cube->vao); bindVarToBuff(cube_shader, "vertex", cube->vbo[MESHVERTEXINDEX], 3); bindVarToBuff(cube_shader, "normal", cube->vbo[MESHNORMALINDEX], 3); bindVarToBuff(cube_shader, "tcoord", cube->vbo[MESHTEXINDEX], 2); initExplosion(); startTime(); }