1
0
mirror of https://github.com/thes3m/XNI synced 2024-12-26 13:26:06 +01:00

Finished touch panel state.

git-svn-id: http://xni.googlecode.com/svn/XNI@34 ac433895-eea3-a490-d80a-17149a75e588
This commit is contained in:
Matej Jan 2010-10-01 02:36:21 +00:00
parent 7b2c58017d
commit 093802dbc4
16 changed files with 321 additions and 63 deletions

View File

@ -1,6 +0,0 @@
typedef enum {
DisplayOrientationDefault = 0,
DisplayOrientationLandscapeLeft = 1,
DisplayOrientationLandscapeRight = 2,
DisplayOrientationPortrait
} DisplayOrientation;

View File

@ -0,0 +1,6 @@
typedef enum {
DisplayOrientationDefault,
DisplayOrientationLandscapeLeft,
DisplayOrientationLandscapeRight,
DisplayOrientationPortrait
} DisplayOrientation;

View File

@ -11,6 +11,7 @@
#import "Retronator.Xni.Framework.h"
#import "Retronator.Xni.Framework.Graphics.h"
#import "Retronator.Xni.Framework.Content.h"
#import "TouchPanel+Internal.h"
@implementation Game
@ -117,6 +118,9 @@
gameTime.elapsedGameTime = elapsedGameTime;
gameTime.totalGameTime += elapsedGameTime;
gameTime.isRunningSlowly = elapsedRealTime > elapsedGameTime;
// Update input.
[[TouchPanel instance] update];
// Update the game.
[self updateWithGameTime:gameTime];

View File

@ -15,4 +15,6 @@
- initWithGameWindow: (GameWindow*)theGameWindow;
+ (DisplayOrientation) getDisplayOrientationForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
@end

View File

@ -9,6 +9,7 @@
#import "GameViewController.h"
#import "Retronator.Xni.Framework.h"
#import "TouchPanel+Internal.h"
@implementation GameViewController
@ -20,9 +21,28 @@
return self;
}
+ (DisplayOrientation) getDisplayOrientationForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) {
return DisplayOrientationPortrait;
} else {
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
return DisplayOrientationLandscapeLeft;
} else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
return DisplayOrientationLandscapeRight;
} else {
return DisplayOrientationDefault;
}
}
}
- (void)loadView {
GameView *gameView = [[GameView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame];
self.view = gameView;
[TouchPanel instance].displayWidth = self.view.bounds.size.width;
[TouchPanel instance].displayHeight = self.view.bounds.size.height;
[TouchPanel instance].displayOrientation = [GameViewController getDisplayOrientationForInterfaceOrientation:self.interfaceOrientation];
[gameView release];
}
@ -49,22 +69,22 @@
// Touches
/*
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[MultiTouch instance].touchesBegan fireWithSender:self eventArgs:[TouchEventArgs argsWithTouches:touches event:event]];
[[TouchPanel instance] touchesBegan:touches withEvent:event];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[[MultiTouch instance].touchesMoved fireWithSender:self eventArgs:[TouchEventArgs argsWithTouches:touches event:event]];
[[TouchPanel instance] touchesMoved:touches withEvent:event];
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[[MultiTouch instance].touchesEnded fireWithSender:self eventArgs:[TouchEventArgs argsWithTouches:touches event:event]];
[[TouchPanel instance] touchesEnded:touches withEvent:event];
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[[MultiTouch instance].touchesCancelled fireWithSender:self eventArgs:[TouchEventArgs argsWithTouches:touches event:event]];
}*/
[[TouchPanel instance] touchesCancelled:touches withEvent:event];
}
- (void)dealloc {
[super dealloc];

View File

@ -73,8 +73,8 @@ static inline void SpriteSetSource(Sprite *sprite, Rectangle *source, Texture2D
static inline void SpriteSetVertices(Sprite *sprite, float positionX, float positionY, float originX, float originY, float scaleX, float scaleY, float rotation, float width, float height) {
float x = originX * scaleX;
float y = -originY * scaleY;
float c = cos(-rotation);
float s = sin(-rotation);
float c = cos(rotation);
float s = sin(rotation);
sprite->position.x = positionX - x * c - y * s;
sprite->position.y = positionY - x * s + y * c;
sprite->width.x = width * scaleX * c;

View File

@ -10,10 +10,12 @@
#import "Retronator.Xni.Framework.Input.Touch.classes.h"
@interface TouchCollection : NSObject {
@interface TouchCollection : NSObject <NSFastEnumeration> {
NSMutableArray *collection;
}
- (id) initWithArray:(NSArray*)array;
- (int) count;
- (TouchLocation*)objectAtIndex:(NSUInteger)index;
- (void)addObject:(TouchLocation*)anObject;

View File

@ -21,6 +21,14 @@
return self;
}
- (id) initWithArray:(NSArray*)array {
self = [super init];
if (self != nil) {
collection = [[NSMutableArray alloc] initWithArray:array];
}
return self;
}
- (int) count {
return [collection count];
}
@ -37,4 +45,14 @@
[collection insertObject:anObject atIndex:index];
}
- (NSUInteger) countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len {
return [collection countByEnumeratingWithState:state objects:stackbuf count:len];
}
- (void) dealloc
{
[collection release];
[super dealloc];
}
@end

View File

@ -12,13 +12,19 @@
#import "Retronator.Xni.Framework.Input.Touch.classes.h"
@interface TouchLocation : NSObject {
int id;
int identifier;
Vector2 *position;
Vector2 *previousPosition;
TouchLocationState state;
}
@property (nonatomic, readonly) int id;
- (id) initWithIdentifier:(int)theIdentifier position:(Vector2*)thePosition
previousPosition:(Vector2*)thePreviousPosition state:(TouchLocationState)theState;
@property (nonatomic, readonly) int identifier;
@property (nonatomic, readonly) Vector2 *position;
@property (nonatomic, readonly) TouchLocationState state;
- (BOOL) tryGetPreviousPosition:(Vector2**)previousPosition;
@end

View File

@ -11,8 +11,38 @@
@implementation TouchLocation
@synthesize id;
- (id) initWithIdentifier:(int)theIdentifier position:(Vector2*)thePosition
previousPosition:(Vector2*)thePreviousPosition state:(TouchLocationState)theState;
{
self = [super init];
if (self != nil) {
identifier = theIdentifier;
position = [thePosition retain];
previousPosition = [thePreviousPosition retain];
state = theState;
}
return self;
}
@synthesize identifier;
@synthesize position;
@synthesize state;
- (BOOL) tryGetPreviousPosition:(Vector2**)thePeviousPosition {
if (previousPosition) {
*thePeviousPosition = previousPosition;
return YES;
} else {
return NO;
}
}
- (void) dealloc
{
[position release];
[previousPosition release];
[super dealloc];
}
@end

View File

@ -0,0 +1,22 @@
//
// TouchPanel+Internal.h
// XNI
//
// Created by Matej Jan on 30.9.10.
// Copyright 2010 Retronator. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "TouchPanel.h"
@interface TouchPanel (internal)
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
- (void) update;
@end

View File

@ -12,23 +12,27 @@
#import "Retronator.Xni.Framework.Input.Touch.classes.h"
@interface TouchPanel : NSObject {
int displayWidth;
int displayHeight;
DisplayOrientation displayOrientation;
GestureType enabledGestures;
NSMutableSet *addTouches;
NSMutableSet *removeTouches;
NSMutableSet *releaseTouches;
NSMutableSet *lateReleaseTouches;
NSMutableDictionary *touchLocations;
}
+ (int) getDisplayWidth;
+ (void) setDisplayWidth:(int)value;
+ (TouchPanel*) instance;
+ (int) getDisplayHeight;
+ (void) setDisplayHeight:(int)value;
@property (nonatomic) int displayWidth;
@property (nonatomic) int displayHeight;
@property (nonatomic) DisplayOrientation displayOrientation;
@property (nonatomic) GestureType enabledGestures;
@property (nonatomic, readonly) BOOL isGestureAvailable;
+ (DisplayOrientation) getDisplayOrientation;
+ (void) setDisplayOrientation:(DisplayOrientation)value;
+ (GestureType) getEnabledGestures;
+ (void) setEnabledGestures:(GestureType)value;
+ (BOOL) isGestureAvailable;
+ (TouchCollection*) getState;
+ (GestureSample*) readGesture;
- (TouchCollection*) getState;
- (GestureSample*) readGesture;
@end

View File

@ -7,45 +7,190 @@
//
#import "TouchPanel.h"
#import "TouchPanel+Internal.h"
#import "Retronator.Xni.Framework.h"
#import "Retronator.Xni.Framework.Input.Touch.h"
@interface InternalTouchLocation : NSObject {
int identifier;
Vector2 *position;
Vector2 *previousPosition;
TouchLocationState state;
}
- (id) initWithPosition:(Vector2*)thePosition;
@property (nonatomic) TouchLocationState state;
- (void) moveToPosition:(Vector2*)newPosition;
- (TouchLocation*) createTouchLocation;
@end
@implementation InternalTouchLocation
static int nextID = 0;
- (id) initWithPosition:(Vector2*)thePosition
{
self = [super init];
if (self != nil) {
identifier = nextID++;
position = [thePosition retain];
previousPosition = nil;
state = TouchLocationStatePressed;
}
return self;
}
@synthesize state;
- (void) moveToPosition:(Vector2*)newPosition {
[previousPosition release];
previousPosition = position;
position = [newPosition retain];
state = TouchLocationStateMoved;
}
- (TouchLocation *) createTouchLocation {
return [[[TouchLocation alloc] initWithIdentifier:identifier
position:[Vector2 vectorWithVector:position]
previousPosition:previousPosition ? [Vector2 vectorWithVector:previousPosition] : nil
state:state] autorelease];
}
- (void) dealloc
{
[position release];
[previousPosition release];
[super dealloc];
}
@end
@implementation TouchPanel
+ (int) getDisplayWidth {
}
static TouchPanel *instance;
+ (void) setDisplayWidth:(int)value{
}
+ (int) getDisplayHeight{
}
+ (void) setDisplayHeight:(int)value{
}
+ (DisplayOrientation) getDisplayOrientation{
}
+ (void) setDisplayOrientation:(DisplayOrientation)value{
}
+ (GestureType) getEnabledGestures{
}
+ (void) setEnabledGestures:(GestureType)value{
- (id) init
{
self = [super init];
if (self != nil) {
addTouches = [[NSMutableSet alloc] init];
removeTouches = [[NSMutableSet alloc] init];
releaseTouches = [[NSMutableSet alloc] init];
lateReleaseTouches = [[NSMutableSet alloc] init];
touchLocations = (NSMutableDictionary*)CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
}
return self;
}
+ (BOOL) isGestureAvailable{
+ (void) initialize {
instance = [[TouchPanel alloc] init];
}
+ (TouchCollection*) getState{
+ (TouchPanel*) instance {
return instance;
}
@synthesize displayWidth;
@synthesize displayHeight;
@synthesize displayOrientation;
@synthesize enabledGestures;
- (BOOL) isGestureAvailable{
return NO;
}
- (TouchCollection*) getState{
TouchCollection *collection = [[[TouchCollection alloc] init] autorelease];
for (InternalTouchLocation *touch in [touchLocations allValues]) {
[collection addObject:[touch createTouchLocation]];
}
return collection;
}
- (GestureSample*) readGesture{
return nil;
}
// Internal methods
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[addTouches unionSet:touches];
}
- (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
InternalTouchLocation *location = [touchLocations objectForKey:touch];
if (location) {
CGPoint position = [touch locationInView:touch.view];
[location moveToPosition:[Vector2 vectorWithX:position.x y:position.y]];
}
}
}
- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
if ([addTouches containsObject:touch]) {
[lateReleaseTouches addObject:touch];
} else {
[releaseTouches addObject:touch];
}
}
}
- (void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
// Just remove the touch locations so they dissapear from the state (without released happening).
for (UITouch *touch in touches) {
[touchLocations removeObjectForKey:touch];
}
}
- (void) update {
// Remove all previously released touches.
for (UITouch *touch in removeTouches) {
[touchLocations removeObjectForKey:touch];
}
[removeTouches removeAllObjects];
// Set released touches.
for (UITouch *touch in releaseTouches) {
InternalTouchLocation *location = [touchLocations objectForKey:touch];
location.state = TouchLocationStateReleased;
}
// Shift the pools.
NSMutableSet *temp = removeTouches;
removeTouches = releaseTouches;
releaseTouches = lateReleaseTouches;
lateReleaseTouches = temp;
// Add new touches
for (UITouch *touch in addTouches) {
CGPoint position = [touch locationInView:touch.view];
InternalTouchLocation *location = [[[InternalTouchLocation alloc]
initWithPosition:[Vector2 vectorWithX:position.x y:position.y]] autorelease];
CFDictionaryAddValue((CFMutableDictionaryRef)touchLocations, touch, location);
}
[addTouches removeAllObjects];
}
+ (GestureSample*) readGesture{
- (void) dealloc
{
[addTouches release];
[removeTouches release];
[releaseTouches release];
[lateReleaseTouches release];
[touchLocations release];
[super dealloc];
}
@end

View File

@ -1,3 +1,4 @@
#import "FrameworkEnums.h"
@class Protocols;
// Data structures
@ -5,7 +6,6 @@
@class Rectangle, Color;
// Game
#import "DisplayOrientation.h"
@protocol IGraphicsDeviceManager;
@class Game, GameTime, GameServiceContainer, GraphicsDeviceManager;

View File

@ -1,3 +1,4 @@
#import "FrameworkEnums.h"
#import "Protocols.h"
// Data structures

View File

@ -14,6 +14,8 @@
B5080704122E4EE900C330E2 /* Texture2D.m in Sources */ = {isa = PBXBuildFile; fileRef = B5080702122E4EE900C330E2 /* Texture2D.m */; };
B508070C122E4FBB00C330E2 /* GraphicsResource.h in Headers */ = {isa = PBXBuildFile; fileRef = B508070A122E4FBB00C330E2 /* GraphicsResource.h */; settings = {ATTRIBUTES = (Public, ); }; };
B508070D122E4FBB00C330E2 /* GraphicsResource.m in Sources */ = {isa = PBXBuildFile; fileRef = B508070B122E4FBB00C330E2 /* GraphicsResource.m */; };
B52BACFB125527E200B308F6 /* TouchPanel+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B52BACF9125527E200B308F6 /* TouchPanel+Internal.h */; };
B52BADAD1255426600B308F6 /* FrameworkEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = B52BADAC1255426600B308F6 /* FrameworkEnums.h */; settings = {ATTRIBUTES = (Public, ); }; };
B56CC50D123A6F3600B72347 /* MipmapChain.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC50B123A6F3600B72347 /* MipmapChain.h */; settings = {ATTRIBUTES = (Public, ); }; };
B56CC50E123A6F3600B72347 /* MipmapChain.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC50C123A6F3600B72347 /* MipmapChain.m */; };
B56CC511123A739100B72347 /* MipmapChainCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC50F123A739100B72347 /* MipmapChainCollection.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -120,10 +122,9 @@
B5DE190411F88AF500BF3275 /* Rectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190211F88AF500BF3275 /* Rectangle.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5DE190511F88AF500BF3275 /* Rectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE190311F88AF500BF3275 /* Rectangle.m */; };
B5DE190711F88B5D00BF3275 /* RectangleStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190611F88B5D00BF3275 /* RectangleStruct.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5DE193111F898AE00BF3275 /* DisplayOrientation.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE193011F898AE00BF3275 /* DisplayOrientation.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5DE194A11F89C0900BF3275 /* GameViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194811F89C0900BF3275 /* GameViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5DE194A11F89C0900BF3275 /* GameViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194811F89C0900BF3275 /* GameViewController.h */; settings = {ATTRIBUTES = (); }; };
B5DE194B11F89C0900BF3275 /* GameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE194911F89C0900BF3275 /* GameViewController.m */; };
B5DE194E11F89C1F00BF3275 /* GameView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194C11F89C1F00BF3275 /* GameView.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5DE194E11F89C1F00BF3275 /* GameView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194C11F89C1F00BF3275 /* GameView.h */; settings = {ATTRIBUTES = (); }; };
B5DE194F11F89C1F00BF3275 /* GameView.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE194D11F89C1F00BF3275 /* GameView.m */; };
B5E78B4A1242925600DDD99A /* SpriteBatch.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B481242925600DDD99A /* SpriteBatch.h */; settings = {ATTRIBUTES = (Public, ); }; };
B5E78B4B1242925600DDD99A /* SpriteBatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B491242925600DDD99A /* SpriteBatch.m */; };
@ -200,6 +201,8 @@
B5080702122E4EE900C330E2 /* Texture2D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Texture2D.m; sourceTree = "<group>"; };
B508070A122E4FBB00C330E2 /* GraphicsResource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsResource.h; sourceTree = "<group>"; };
B508070B122E4FBB00C330E2 /* GraphicsResource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GraphicsResource.m; sourceTree = "<group>"; };
B52BACF9125527E200B308F6 /* TouchPanel+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TouchPanel+Internal.h"; sourceTree = "<group>"; };
B52BADAC1255426600B308F6 /* FrameworkEnums.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameworkEnums.h; sourceTree = "<group>"; };
B56CC50B123A6F3600B72347 /* MipmapChain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipmapChain.h; sourceTree = "<group>"; };
B56CC50C123A6F3600B72347 /* MipmapChain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MipmapChain.m; sourceTree = "<group>"; };
B56CC50F123A739100B72347 /* MipmapChainCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipmapChainCollection.h; sourceTree = "<group>"; };
@ -306,7 +309,6 @@
B5DE190211F88AF500BF3275 /* Rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Rectangle.h; sourceTree = "<group>"; };
B5DE190311F88AF500BF3275 /* Rectangle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Rectangle.m; sourceTree = "<group>"; };
B5DE190611F88B5D00BF3275 /* RectangleStruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RectangleStruct.h; sourceTree = "<group>"; };
B5DE193011F898AE00BF3275 /* DisplayOrientation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DisplayOrientation.h; sourceTree = "<group>"; };
B5DE194811F89C0900BF3275 /* GameViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameViewController.h; sourceTree = "<group>"; };
B5DE194911F89C0900BF3275 /* GameViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameViewController.m; sourceTree = "<group>"; };
B5DE194C11F89C1F00BF3275 /* GameView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameView.h; sourceTree = "<group>"; };
@ -607,6 +609,7 @@
B5DDE82911FF10D0000DB38B /* Graphics */,
B5DE189F11F8888B00BF3275 /* Retronator.Xni.Framework.classes.h */,
B5DE18A011F8888B00BF3275 /* Retronator.Xni.Framework.h */,
B52BADAC1255426600B308F6 /* FrameworkEnums.h */,
B5DDE89411FF16A3000DB38B /* Protocols.h */,
B5DDE89511FF16A3000DB38B /* Protocols.m */,
B5DE190611F88B5D00BF3275 /* RectangleStruct.h */,
@ -618,7 +621,6 @@
B5DE18FB11F88AD900BF3275 /* GameHost.m */,
B5DDE7E911FF04E3000DB38B /* Game.h */,
B5DDE7EA11FF04E3000DB38B /* Game.m */,
B5DE193011F898AE00BF3275 /* DisplayOrientation.h */,
B5DE18FC11F88AD900BF3275 /* GameWindow.h */,
B5DE18FD11F88AD900BF3275 /* GameWindow.m */,
B5DE194811F89C0900BF3275 /* GameViewController.h */,
@ -691,6 +693,7 @@
B5EC59FD1252BE3B001E7DFC /* Retronator.Xni.Framework.Input.Touch.h */,
B5EC5A181252BF63001E7DFC /* InputEnums.h */,
B5EC59F71252B917001E7DFC /* TouchPanel.h */,
B52BACF9125527E200B308F6 /* TouchPanel+Internal.h */,
B5EC59F81252B917001E7DFC /* TouchPanel.m */,
B5EC5A051252BE9E001E7DFC /* TouchCollection.h */,
B5EC5A061252BE9E001E7DFC /* TouchCollection.m */,
@ -720,7 +723,6 @@
B5DE190011F88AD900BF3275 /* GameWindow.h in Headers */,
B5DE190411F88AF500BF3275 /* Rectangle.h in Headers */,
B5DE190711F88B5D00BF3275 /* RectangleStruct.h in Headers */,
B5DE193111F898AE00BF3275 /* DisplayOrientation.h in Headers */,
B5DE194A11F89C0900BF3275 /* GameViewController.h in Headers */,
B5DE194E11F89C1F00BF3275 /* GameView.h in Headers */,
B5DDE7EB11FF04E3000DB38B /* Game.h in Headers */,
@ -817,6 +819,8 @@
B5EC5A191252BF63001E7DFC /* InputEnums.h in Headers */,
B5EC5A4F1252C2DF001E7DFC /* GestureSample.h in Headers */,
B5EC5A931252C710001E7DFC /* Retronator.Xni.Framework.Input.h in Headers */,
B52BACFB125527E200B308F6 /* TouchPanel+Internal.h in Headers */,
B52BADAD1255426600B308F6 /* FrameworkEnums.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};