int main() { SDL_Window* win; // initialize SDL if(SDL_Init(SDL_INIT_EVERYTHING) != 0) { fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError()); } // initialize window and renderer if(SDL_CreateWindowAndRenderer(800, 600, SDL_WINDOW_RESIZABLE, &win, &ren) != 0) { fprintf(stderr, "\nUnable to intialize window: %s\n", SDL_GetError()); } init_physics(); // main lopp for(;;) { Uint32 t = SDL_GetTicks() + 1000/60; // physics step update_friction(0); update_drive(); update_turn(); cpSpaceStep(space, 1.0/60.0); debug_physics(); // events SDL_Event e; while(SDL_PollEvent(&e)) { switch(e.type) { case SDL_QUIT: exit(0); break; } } const Uint8* k = SDL_GetKeyboardState(NULL); controls.forward = k[SDL_SCANCODE_UP]; controls.back = k[SDL_SCANCODE_DOWN]; controls.left = k[SDL_SCANCODE_LEFT]; controls.right = k[SDL_SCANCODE_RIGHT]; // render SDL_SetRenderDrawColor(ren, 255, 255, 255, 255); SDL_RenderClear(ren); SDL_SetRenderDrawColor(ren, 0, 0, 0, 255); render_objects(); SDL_RenderPresent(ren); // time if(SDL_GetTicks() < t) { SDL_Delay(t - SDL_GetTicks()); } } return 0; }
void CControlledActor::frame_update() { if (is_controlling() && m_need_turn) { update_turn(); } }