Mercurial > sdl-ios-xcode
view src/joystick/iphoneos/SDLUIAccelerationDelegate.m @ 2362:44fc2537ff9e gsoc2008_iphone
These files contain the specification for a class which receives updates from the iPhone accelerometer. The class holds the accelerometer information, and is queried by SDL_sysjoystick.m.
author | Holmes Futrell <hfutrell@umail.ucsb.edu> |
---|---|
date | Fri, 18 Jul 2008 17:46:17 +0000 |
parents | |
children | 32b9909db651 |
line wrap: on
line source
// // SDLUIAccelerationDelegate.m // iPodSDL // // Created by Holmes Futrell on 6/21/08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import "SDLUIAccelerationDelegate.h" static SDLUIAccelerationDelegate *sharedDelegate=nil; @implementation SDLUIAccelerationDelegate +(SDLUIAccelerationDelegate *)sharedDelegate { if (sharedDelegate == nil) { sharedDelegate = [[SDLUIAccelerationDelegate alloc] init]; } return sharedDelegate; } -(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { x = acceleration.x; y = acceleration.y; z = acceleration.z; hasNewData = YES; //timestamp = acceleration.timestamp; } -(void)getLastOrientation:(Sint16 *)data { #define MAX_G_FORCE 5.0 #define MAX_SINT16 0x7FFF if (x > MAX_G_FORCE) x = MAX_G_FORCE; else if (x < -MAX_G_FORCE) x = -MAX_G_FORCE; if (y > MAX_G_FORCE) y = MAX_G_FORCE; else if (y < -MAX_G_FORCE) y = -MAX_G_FORCE; if (z > MAX_G_FORCE) z = MAX_G_FORCE; else if (z < -MAX_G_FORCE) z = -MAX_G_FORCE; data[0] = (x / MAX_G_FORCE) * MAX_SINT16; data[1] = (y / MAX_G_FORCE) * MAX_SINT16; data[2] = (z / MAX_G_FORCE) * MAX_SINT16; } -(id)init { self = [super init]; x = y = z = 0.0; return self; } -(void)dealloc { sharedDelegate = nil; [super dealloc]; } -(void)startup { [UIAccelerometer sharedAccelerometer].delegate = self; isRunning = YES; } -(void)shutdown { [UIAccelerometer sharedAccelerometer].delegate = nil; isRunning = NO; } -(BOOL)isRunning { return isRunning; } -(BOOL)hasNewData { return hasNewData; } -(void)setHasNewData:(BOOL)value { hasNewData = value; } @end