diff options
Diffstat (limited to '3rdparty/SDL2/Xcode-iOS/Demos/src/accelerometer.c')
-rw-r--r-- | 3rdparty/SDL2/Xcode-iOS/Demos/src/accelerometer.c | 226 |
1 files changed, 0 insertions, 226 deletions
diff --git a/3rdparty/SDL2/Xcode-iOS/Demos/src/accelerometer.c b/3rdparty/SDL2/Xcode-iOS/Demos/src/accelerometer.c deleted file mode 100644 index e15de3ed4ec..00000000000 --- a/3rdparty/SDL2/Xcode-iOS/Demos/src/accelerometer.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - * accelerometer.c - * written by Holmes Futrell - * use however you want - */ - -#include "SDL.h" -#include "math.h" -#include "common.h" - -#define DAMPING 0.5f; /* after bouncing off a wall, damping coefficient determines final speed */ -#define FRICTION 0.0008f /* coefficient of acceleration that opposes direction of motion */ -#define GRAVITY_CONSTANT 0.004f /* how sensitive the ship is to the accelerometer */ - -/* If we aren't on an iPhone, then this definition ought to yield reasonable behavior */ -#ifndef SDL_IPHONE_MAX_GFORCE -#define SDL_IPHONE_MAX_GFORCE 5.0f -#endif - -static SDL_Joystick *accelerometer; /* used for controlling the ship */ - -static struct -{ - float x, y; /* position of ship */ - float vx, vy; /* velocity of ship (in pixels per millesecond) */ - SDL_Rect rect; /* (drawn) position and size of ship */ -} shipData; - -static SDL_Texture *ship = 0; /* texture for spaceship */ -static SDL_Texture *space = 0; /* texture for space (background */ - -void -render(SDL_Renderer *renderer, int w, int h, double deltaTime) -{ - double deltaMilliseconds = deltaTime * 1000; - float speed; - - /* get joystick (accelerometer) axis values and normalize them */ - float ax = SDL_JoystickGetAxis(accelerometer, 0); - float ay = SDL_JoystickGetAxis(accelerometer, 1); - - /* ship screen constraints */ - Uint32 minx = 0.0f; - Uint32 maxx = w - shipData.rect.w; - Uint32 miny = 0.0f; - Uint32 maxy = h - shipData.rect.h; - -#define SINT16_MAX ((float)(0x7FFF)) - - /* update velocity from accelerometer - the factor SDL_IPHONE_MAX_G_FORCE / SINT16_MAX converts between - SDL's units reported from the joytick, and units of g-force, as reported by the accelerometer - */ - shipData.vx += - ax * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT * - deltaMilliseconds; - shipData.vy += - ay * SDL_IPHONE_MAX_GFORCE / SINT16_MAX * GRAVITY_CONSTANT * - deltaMilliseconds; - - speed = sqrt(shipData.vx * shipData.vx + shipData.vy * shipData.vy); - - if (speed > 0) { - /* compensate for friction */ - float dirx = shipData.vx / speed; /* normalized x velocity */ - float diry = shipData.vy / speed; /* normalized y velocity */ - - /* update velocity due to friction */ - if (speed - FRICTION * deltaMilliseconds > 0) { - /* apply friction */ - shipData.vx -= dirx * FRICTION * deltaMilliseconds; - shipData.vy -= diry * FRICTION * deltaMilliseconds; - } else { - /* applying friction would MORE than stop the ship, so just stop the ship */ - shipData.vx = 0.0f; - shipData.vy = 0.0f; - } - } - - /* update ship location */ - shipData.x += shipData.vx * deltaMilliseconds; - shipData.y += shipData.vy * deltaMilliseconds; - - if (shipData.x > maxx) { - shipData.x = maxx; - shipData.vx = -shipData.vx * DAMPING; - } else if (shipData.x < minx) { - shipData.x = minx; - shipData.vx = -shipData.vx * DAMPING; - } - if (shipData.y > maxy) { - shipData.y = maxy; - shipData.vy = -shipData.vy * DAMPING; - } else if (shipData.y < miny) { - shipData.y = miny; - shipData.vy = -shipData.vy * DAMPING; - } - - /* draw the background */ - SDL_RenderCopy(renderer, space, NULL, NULL); - - /* draw the ship */ - shipData.rect.x = shipData.x; - shipData.rect.y = shipData.y; - - SDL_RenderCopy(renderer, ship, NULL, &shipData.rect); - - /* update screen */ - SDL_RenderPresent(renderer); - -} - -void -initializeTextures(SDL_Renderer *renderer) -{ - - SDL_Surface *bmp_surface; - - /* load the ship */ - bmp_surface = SDL_LoadBMP("ship.bmp"); - if (bmp_surface == NULL) { - fatalError("could not ship.bmp"); - } - /* set blue to transparent on the ship */ - SDL_SetColorKey(bmp_surface, 1, - SDL_MapRGB(bmp_surface->format, 0, 0, 255)); - - /* create ship texture from surface */ - ship = SDL_CreateTextureFromSurface(renderer, bmp_surface); - if (ship == 0) { - fatalError("could not create ship texture"); - } - SDL_SetTextureBlendMode(ship, SDL_BLENDMODE_BLEND); - - /* set the width and height of the ship from the surface dimensions */ - shipData.rect.w = bmp_surface->w; - shipData.rect.h = bmp_surface->h; - - SDL_FreeSurface(bmp_surface); - - /* load the space background */ - bmp_surface = SDL_LoadBMP("space.bmp"); - if (bmp_surface == NULL) { - fatalError("could not load space.bmp"); - } - /* create space texture from surface */ - space = SDL_CreateTextureFromSurface(renderer, bmp_surface); - if (space == 0) { - fatalError("could not create space texture"); - } - SDL_FreeSurface(bmp_surface); - -} - - - -int -main(int argc, char *argv[]) -{ - - SDL_Window *window; /* main window */ - SDL_Renderer *renderer; - int done; /* should we clean up and exit? */ - int w, h; - - /* initialize SDL */ - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { - fatalError("Could not initialize SDL"); - } - - /* create main window and renderer */ - window = SDL_CreateWindow(NULL, 0, 0, 320, 480, SDL_WINDOW_FULLSCREEN | SDL_WINDOW_ALLOW_HIGHDPI); - renderer = SDL_CreateRenderer(window, 0, 0); - - SDL_GetWindowSize(window, &w, &h); - SDL_RenderSetLogicalSize(renderer, w, h); - - /* print out some info about joysticks and try to open accelerometer for use */ - printf("There are %d joysticks available\n", SDL_NumJoysticks()); - printf("Default joystick (index 0) is %s\n", SDL_JoystickName(0)); - accelerometer = SDL_JoystickOpen(0); - if (accelerometer == NULL) { - fatalError("Could not open joystick (accelerometer)"); - } - printf("joystick number of axis = %d\n", - SDL_JoystickNumAxes(accelerometer)); - printf("joystick number of hats = %d\n", - SDL_JoystickNumHats(accelerometer)); - printf("joystick number of balls = %d\n", - SDL_JoystickNumBalls(accelerometer)); - printf("joystick number of buttons = %d\n", - SDL_JoystickNumButtons(accelerometer)); - - /* load graphics */ - initializeTextures(renderer); - - /* setup ship */ - shipData.x = (w - shipData.rect.w) / 2; - shipData.y = (h - shipData.rect.h) / 2; - shipData.vx = 0.0f; - shipData.vy = 0.0f; - - done = 0; - /* enter main loop */ - while (!done) { - double deltaTime = updateDeltaTime(); - SDL_Event event; - while (SDL_PollEvent(&event)) { - if (event.type == SDL_QUIT) { - done = 1; - } - } - render(renderer, w, h, deltaTime); - SDL_Delay(1); - } - - /* delete textures */ - SDL_DestroyTexture(ship); - SDL_DestroyTexture(space); - - /* shutdown SDL */ - SDL_Quit(); - - return 0; - -} |