/** * @brief Actually runs the updates * * @param[in] dt Current delta tick. */ static void update_routine( double dt ) { space_update(dt); weapons_update(dt); spfx_update(dt); pilots_update(dt); missions_update(dt); events_update(dt); }
int main(void){ space = space_init(SCREEN_W, SCREEN_H); SDL_Event evt; if (SDL_Init(SDL_INIT_VIDEO) != 0) { return -1; } screen = SDL_SetVideoMode( SCREEN_W, SCREEN_H, 24, SDL_HWSURFACE | SDL_DOUBLEBUF); if (screen == NULL) { return -1; } while(1) { while(SDL_PollEvent(&evt)) { if(evt.type == SDL_QUIT) { goto finish; } if (evt.type == SDL_KEYUP && evt.key.keysym.sym == SDLK_ESCAPE) { goto finish; } if (evt.type == SDL_MOUSEMOTION ) space_mouse_move(space, evt.motion.x, evt.motion.y); if (evt.type == SDL_MOUSEBUTTONDOWN) space_mouse_down(space); if (evt.type == SDL_MOUSEBUTTONUP ) space_mouse_up (space); } SDL_LockSurface(screen); SDL_FillRect(screen, NULL, 0x000080); space_update(space, 0.02); DrawImpl(space); SDL_FreeSurface(screen); SDL_Flip(screen); } finish: space_destroy(space); SDL_FreeSurface(screen); SDL_Quit(); return 0; }
void space_do_step(Space *space) { GList *it; if (!space)return; if (space->stepstaken == space->steps) { space->stepstaken = 0; for (it = space->bodylist;it != NULL;it = g_list_next(it)) { if (!it->data)continue; body_reset((Body *)it->data); } } //run one iteration of space update space_update(space); //for each body, update it a little space->stepstaken++; }