From 3194ca93e7fb1af89a6e12b3d7ac255308363f85 Mon Sep 17 00:00:00 2001 From: Matej Jan Date: Tue, 19 Oct 2010 13:31:39 +0000 Subject: [PATCH] SpriteBatch implemented and fixed. git-svn-id: http://xni.googlecode.com/svn/XNI@35 ac433895-eea3-a490-d80a-17149a75e588 --- Classes/Retronator/Xni/Framework/Color.h | 6 +- Classes/Retronator/Xni/Framework/Color.m | 23 +- .../Xni/Framework/DrawableGameComponent.h | 30 ++ .../Xni/Framework/DrawableGameComponent.m | 69 +++ Classes/Retronator/Xni/Framework/Game.h | 3 +- Classes/Retronator/Xni/Framework/Game.m | 132 ++++- .../Retronator/Xni/Framework/GameComponent.h | 29 + .../Retronator/Xni/Framework/GameComponent.m | 61 +++ Classes/Retronator/Xni/Framework/GameView.m | 2 +- .../Xni/Framework/GameViewController.m | 3 +- Classes/Retronator/Xni/Framework/GameWindow.h | 1 + Classes/Retronator/Xni/Framework/GameWindow.m | 4 +- .../Xni/Framework/Graphics/GraphicsDevice.h | 8 + .../Xni/Framework/Graphics/GraphicsDevice.m | 13 + .../Graphics/IGraphicsDeviceService.h | 2 +- .../Xni/Framework/Graphics/SpriteBatch.h | 2 + .../Xni/Framework/Graphics/SpriteBatch.m | 70 ++- .../Xni/Framework/GraphicsDeviceManager.h | 2 +- .../Xni/Framework/GraphicsDeviceManager.m | 8 +- Classes/Retronator/Xni/Framework/IDrawable.h | 3 + .../Retronator/Xni/Framework/IGameComponent.h | 2 +- Classes/Retronator/Xni/Framework/IUpdatable.h | 3 + .../Xni/Framework/Input/Touch/TouchPanel.m | 10 + .../Retronator.Xni.Framework.classes.h | 2 +- .../Xni/Framework/Retronator.Xni.Framework.h | 6 +- Classes/System/System.classes.h | 2 +- XNI.xcodeproj/project.pbxproj | 497 +++++++++++++++++- 27 files changed, 922 insertions(+), 71 deletions(-) create mode 100644 Classes/Retronator/Xni/Framework/DrawableGameComponent.h create mode 100644 Classes/Retronator/Xni/Framework/DrawableGameComponent.m create mode 100644 Classes/Retronator/Xni/Framework/GameComponent.h create mode 100644 Classes/Retronator/Xni/Framework/GameComponent.m diff --git a/Classes/Retronator/Xni/Framework/Color.h b/Classes/Retronator/Xni/Framework/Color.h index 7269b17..0a7b13e 100644 --- a/Classes/Retronator/Xni/Framework/Color.h +++ b/Classes/Retronator/Xni/Framework/Color.h @@ -32,7 +32,11 @@ @property (nonatomic) Byte a; @property (nonatomic) uint packedValue; -//- (Vector3*) toVector3; ++ (Color*) multiply:(Color*)color withScalar:(float)value; + +- (void) multiply:(float)value; +- (Vector3*) toVector3; +- (Vector4*) toVector4; // Constants + (Color*) aliceBlue; diff --git a/Classes/Retronator/Xni/Framework/Color.m b/Classes/Retronator/Xni/Framework/Color.m index e157b5d..f169aca 100644 --- a/Classes/Retronator/Xni/Framework/Color.m +++ b/Classes/Retronator/Xni/Framework/Color.m @@ -8,8 +8,9 @@ #import "Color.h" -#define CLAMP_TO_BYTE(X) (X < 0 ? 0 : (X > 255 ? 255 : X)) +#import "Retronator.Xni.Framework.h" +#define CLAMP_TO_BYTE(X) (X < 0 ? 0 : (X > 255 ? 255 : X)) @implementation Color @@ -80,10 +81,24 @@ // METHODS -/*- (Vector3 *) toVector3 { - return [Vector3 vectorWithX:data.red Y:data.green Z:data.blue]; -}*/ ++ (Color*) multiply:(Color*)color withScalar:(float)value { + return [Color colorWithRed:color.r * value green:color.g * value blue:color.b * value alpha:color.a * value]; +} +- (void) multiply:(float)value { + self.r *= value; + self.g *= value; + self.b *= value; + self.a *= value; +} + +- (Vector3 *) toVector3 { + return [Vector3 vectorWithX:self.r/255.0f y:self.g/255.0f z:self.b/255.0f]; +} + +- (Vector4 *) toVector4 { + return [Vector4 vectorWithX:self.r/255.0f y:self.g/255.0f z:self.b/255.0f w:self.a/255.0f]; +} // Constants + (Color*) aliceBlue {return [Color colorWithRed:240 green:248 blue:255 alpha:255];} diff --git a/Classes/Retronator/Xni/Framework/DrawableGameComponent.h b/Classes/Retronator/Xni/Framework/DrawableGameComponent.h new file mode 100644 index 0000000..619d52f --- /dev/null +++ b/Classes/Retronator/Xni/Framework/DrawableGameComponent.h @@ -0,0 +1,30 @@ +// +// DrawableGameComponent.h +// XNI +// +// Created by Matej Jan on 12.10.10. +// Copyright 2010 Retronator. All rights reserved. +// + +#import +#import "Retronator.Xni.Framework.Graphics.classes.h" +#import "GameComponent.h" +#import "IDrawable.h" + +@interface DrawableGameComponent : GameComponent { +@private + BOOL visible; + int drawOrder; + + Event *visibleChanged; + Event *drawOrderChanged; + + id graphicsDeviceService; +} + +@property (nonatomic, readonly) GraphicsDevice* graphicsDevice; + +- (void) loadContent; +- (void) unloadContent; + +@end diff --git a/Classes/Retronator/Xni/Framework/DrawableGameComponent.m b/Classes/Retronator/Xni/Framework/DrawableGameComponent.m new file mode 100644 index 0000000..ea5f224 --- /dev/null +++ b/Classes/Retronator/Xni/Framework/DrawableGameComponent.m @@ -0,0 +1,69 @@ +// +// DrawableGameComponent.m +// XNI +// +// Created by Matej Jan on 12.10.10. +// Copyright 2010 Retronator. All rights reserved. +// + +#import "DrawableGameComponent.h" +#import "System.h" +#import "Retronator.Xni.Framework.h" +#import "Retronator.Xni.Framework.Graphics.h" + +@implementation DrawableGameComponent + +- (id) initWithGame:(Game *)theGame { + if (self = [super initWithGame:theGame]) { + visible = YES; + drawOrder = 0; + + visibleChanged = [[Event alloc] init]; + drawOrderChanged = [[Event alloc] init]; + + graphicsDeviceService = [self.game.services getServiceOfType:[Protocols graphicsDeviceService]]; + } + return self; +} + +@synthesize visible; +- (void) setVisible:(BOOL)value { + if (visible != value) { + visible = value; + [visibleChanged raiseWithSender:self]; + } +} + +@synthesize drawOrder; +- (void) setDrawOrder:(int)value { + if (drawOrder != value) { + drawOrder = value; + [drawOrderChanged raiseWithSender:self]; + } +} + +@synthesize visibleChanged; +@synthesize drawOrderChanged; + +- (GraphicsDevice*) graphicsDevice { + return graphicsDeviceService.graphicsDevice; +} + +- (void) initialize { + [self loadContent]; +} + +- (void) loadContent {} +- (void) drawWithGameTime:(GameTime*)gameTime {} +- (void) unloadContent {} + +- (void) dealloc +{ + [self unloadContent]; + [drawOrderChanged release]; + [visibleChanged release]; + [super dealloc]; +} + +@end + diff --git a/Classes/Retronator/Xni/Framework/Game.h b/Classes/Retronator/Xni/Framework/Game.h index fb4e4d4..3af51cf 100644 --- a/Classes/Retronator/Xni/Framework/Game.h +++ b/Classes/Retronator/Xni/Framework/Game.h @@ -41,6 +41,8 @@ // Game components GameComponentCollection *components; + NSMutableArray *enabledComponents; + NSMutableArray *visibleComponents; // Services GameServiceContainer *services; @@ -73,5 +75,4 @@ - (void) unloadContent; - (void) endRun; - @end diff --git a/Classes/Retronator/Xni/Framework/Game.m b/Classes/Retronator/Xni/Framework/Game.m index b1b0382..d4e3696 100644 --- a/Classes/Retronator/Xni/Framework/Game.m +++ b/Classes/Retronator/Xni/Framework/Game.m @@ -15,6 +15,17 @@ @implementation Game +NSArray *updateOrderSort; +NSArray *drawOrderSort; + ++ (void) initialize { + NSSortDescriptor *updateOrderSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"updateOrder" ascending:YES] autorelease]; + NSSortDescriptor *drawOrderSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"drawOrder" ascending:YES] autorelease]; + + updateOrderSort = [[NSArray arrayWithObject:updateOrderSortDescriptor] retain]; + drawOrderSort = [[NSArray arrayWithObject:drawOrderSortDescriptor] retain]; +} + - (id) init { if (self = [super init]) { @@ -22,8 +33,14 @@ gameTime = [[GameTime alloc] init]; components = [[GameComponentCollection alloc] init]; + enabledComponents = [[NSMutableArray alloc] init]; + visibleComponents = [[NSMutableArray alloc] init]; + [components.componentAdded subscribeDelegate: [Delegate delegateWithTarget:self Method:@selector(componentAddedTo:eventArgs:)]]; + + [components.componentRemoved subscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentRemovedFrom:eventArgs:)]]; services = [[GameServiceContainer alloc] init]; @@ -175,14 +192,8 @@ - (void) beginRun {} - (void) updateWithGameTime:(GameTime*)theGameTime { - for (id component in components) { - if (![component conformsToProtocol:@protocol(IUpdatable)]) { - continue; - } - id updatable = component; - if (updatable.enabled) { - [updatable updateWithGameTime:theGameTime]; - } + for (id updatable in enabledComponents) { + [updatable updateWithGameTime:theGameTime]; } } @@ -191,14 +202,8 @@ } - (void) drawWithGameTime:(GameTime*)theGameTime { - for (id component in components) { - if (![component conformsToProtocol:@protocol(IDrawable)]) { - continue; - } - id drawable = component; - if (drawable.visible) { - [drawable drawWithGameTime:theGameTime]; - } + for (id drawable in visibleComponents) { + [drawable drawWithGameTime:theGameTime]; } } @@ -210,19 +215,110 @@ - (void) endRun {} -// Private methods + + +// Private methods for component management. + +- (void) addEnabledComponent:(id)component { + [enabledComponents addObject:component]; + [enabledComponents sortUsingDescriptors:updateOrderSort]; +} + +- (void) addVisibleComponent:(id)component { + [visibleComponents addObject:component]; + [visibleComponents sortUsingDescriptors:drawOrderSort]; +} - (void) componentAddedTo:(GameComponentCollection*)sender eventArgs:(GameComponentCollectionEventArgs*)e { - if (initializeDone) { + // Initialize component if it's being added after main initialize has been called. + if (initializeDone) { [e.gameComponent initialize]; } + + // Process updatable component. + if ([e.gameComponent conformsToProtocol:@protocol(IUpdatable)]) { + id updatable = (id)e.gameComponent; + if (updatable.enabled) { + [self addEnabledComponent:updatable]; + } + [updatable.enabledChanged subscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentEnabledChanged:eventArgs:)]]; + [updatable.updateOrderChanged subscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentUpdateOrderChanged:eventArgs:)]]; + } + + // Process updatable component. + if ([e.gameComponent conformsToProtocol:@protocol(IDrawable)]) { + id drawable = (id)e.gameComponent; + if (drawable.visible) { + [self addVisibleComponent:drawable]; + } + [drawable.visibleChanged subscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentVisibleChanged:eventArgs:)]]; + [drawable.drawOrderChanged subscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentDrawOrderChanged:eventArgs:)]]; + } } +- (void) componentRemovedFrom:(GameComponentCollection*)sender eventArgs:(GameComponentCollectionEventArgs*)e { + // Process updatable component. + if ([e.gameComponent conformsToProtocol:@protocol(IUpdatable)]) { + id updatable = (id)e.gameComponent; + if (updatable.enabled) { + [enabledComponents removeObject:updatable]; + } + [updatable.enabledChanged unsubscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentEnabledChanged:eventArgs:)]]; + [updatable.updateOrderChanged unsubscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentUpdateOrderChanged:eventArgs:)]]; + } + + // Process updatable component. + if ([e.gameComponent conformsToProtocol:@protocol(IDrawable)]) { + id drawable = (id)e.gameComponent; + if (drawable.visible) { + [visibleComponents removeObject:drawable]; + } + [drawable.visibleChanged unsubscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentVisibleChanged:eventArgs:)]]; + [drawable.drawOrderChanged unsubscribeDelegate: + [Delegate delegateWithTarget:self Method:@selector(componentDrawOrderChanged:eventArgs:)]]; + } +} + +- (void) componentEnabledChanged:(id)sender eventArgs:(EventArgs*)e { + if (sender.enabled) { + [self addEnabledComponent: sender]; + } else { + [enabledComponents removeObject:sender]; + } +} + +- (void) componentUpdateOrderChanged:(id)sender eventArgs:(EventArgs*)e { + [enabledComponents sortUsingDescriptors:updateOrderSort]; +} + +- (void) componentVisibleChanged:(id)sender eventArgs:(EventArgs*)e { + if (sender.visible) { + [self addVisibleComponent:sender]; + } else { + [visibleComponents removeObject:sender]; + } +} + +- (void) componentDrawOrderChanged:(id)sender eventArgs:(EventArgs*)e { + [visibleComponents sortUsingDescriptors:drawOrderSort]; +} + + + - (void) dealloc { [self unloadContent]; [gameTime release]; + [enabledComponents release]; + [visibleComponents release]; [components release]; [services release]; diff --git a/Classes/Retronator/Xni/Framework/GameComponent.h b/Classes/Retronator/Xni/Framework/GameComponent.h new file mode 100644 index 0000000..a27d468 --- /dev/null +++ b/Classes/Retronator/Xni/Framework/GameComponent.h @@ -0,0 +1,29 @@ +// +// GameComponent.h +// XNI +// +// Created by Matej Jan on 12.10.10. +// Copyright 2010 Retronator. All rights reserved. +// + +#import +#import "System.classes.h" +#import "Retronator.Xni.Framework.classes.h" +#import "IGameComponent.h" +#import "IUpdatable.h" + +@interface GameComponent : NSObject { +@private + BOOL enabled; + Game *game; + int updateOrder; + + Event *enabledChanged; + Event *updateOrderChanged; +} + +- (id) initWithGame:(Game*) theGame; + +@property (nonatomic, readonly) Game *game; + +@end diff --git a/Classes/Retronator/Xni/Framework/GameComponent.m b/Classes/Retronator/Xni/Framework/GameComponent.m new file mode 100644 index 0000000..c6fc4ff --- /dev/null +++ b/Classes/Retronator/Xni/Framework/GameComponent.m @@ -0,0 +1,61 @@ +// +// GameComponent.m +// XNI +// +// Created by Matej Jan on 12.10.10. +// Copyright 2010 Retronator. All rights reserved. +// + +#import "GameComponent.h" + +#import "System.h" +#import "Retronator.Xni.Framework.h" + +@implementation GameComponent + +- (id) initWithGame:(Game *)theGame { + if (self = [super init]) { + game = theGame; + + enabled = YES; + updateOrder = 0; + + enabledChanged = [[Event alloc] init]; + updateOrderChanged = [[Event alloc] init]; + } + return self; +} + +@synthesize game; + +@synthesize enabled; +- (void) setEnabled:(BOOL)value { + if (enabled != value) { + enabled = value; + [enabledChanged raiseWithSender:self]; + } +} + +@synthesize updateOrder; +- (void) setUpdateOrder:(int)value { + if (updateOrder != value) { + updateOrder = value; + [updateOrderChanged raiseWithSender:self]; + } +} + +@synthesize enabledChanged; +@synthesize updateOrderChanged; + +- (void) initialize {} +- (void) updateWithGameTime:(GameTime*)gameTime {} + +- (void) dealloc +{ + [updateOrderChanged release]; + [enabledChanged release]; + [super dealloc]; +} + +@end + diff --git a/Classes/Retronator/Xni/Framework/GameView.m b/Classes/Retronator/Xni/Framework/GameView.m index 4c47ac9..8cccc6b 100644 --- a/Classes/Retronator/Xni/Framework/GameView.m +++ b/Classes/Retronator/Xni/Framework/GameView.m @@ -19,7 +19,7 @@ CAEAGLLayer *eaglLayer = (CAEAGLLayer*)self.layer; eaglLayer.opaque = TRUE; - eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: + eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; } diff --git a/Classes/Retronator/Xni/Framework/GameViewController.m b/Classes/Retronator/Xni/Framework/GameViewController.m index cde3323..2d4248b 100644 --- a/Classes/Retronator/Xni/Framework/GameViewController.m +++ b/Classes/Retronator/Xni/Framework/GameViewController.m @@ -10,6 +10,7 @@ #import "Retronator.Xni.Framework.h" #import "TouchPanel+Internal.h" +#import "GameView.h" @implementation GameViewController @@ -50,7 +51,7 @@ - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { //InterfaceOrientationFlags orientationFlag = 1 << interfaceOrientation; - return YES;// gameWindow.allowedOrientations & orientationFlag; + return YES; // gameWindow.allowedOrientations & orientationFlag; } diff --git a/Classes/Retronator/Xni/Framework/GameWindow.h b/Classes/Retronator/Xni/Framework/GameWindow.h index f69eb04..a3a180c 100644 --- a/Classes/Retronator/Xni/Framework/GameWindow.h +++ b/Classes/Retronator/Xni/Framework/GameWindow.h @@ -11,6 +11,7 @@ #import "System.h" #import "Retronator.Xni.Framework.classes.h" +@class GameViewController; @interface GameWindow : NSObject { Rectangle *clientBounds; diff --git a/Classes/Retronator/Xni/Framework/GameWindow.m b/Classes/Retronator/Xni/Framework/GameWindow.m index 9004d25..8d506d1 100644 --- a/Classes/Retronator/Xni/Framework/GameWindow.m +++ b/Classes/Retronator/Xni/Framework/GameWindow.m @@ -9,6 +9,8 @@ #import "GameWindow.h" #import "Retronator.Xni.Framework.h" +#import "GameViewController.h" +#import "GameView.h" @implementation GameWindow @@ -55,7 +57,7 @@ gameViewController.wantsFullScreenLayout = willBeFullscreen; [[UIApplication sharedApplication] setStatusBarHidden:willBeFullscreen]; gameViewController.view.frame = [UIScreen mainScreen].applicationFrame; - clientBounds = [Rectangle rectangleWithCGRect:gameViewController.view.bounds]; + clientBounds = [[Rectangle rectangleWithCGRect:gameViewController.view.bounds] retain]; } - (void) endScreenDeviceChange { diff --git a/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.h b/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.h index 45ae69a..de5c3e7 100644 --- a/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.h +++ b/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.h @@ -11,6 +11,7 @@ #import #import +#import "System.classes.h" #import "Retronator.Xni.Framework.classes.h" #import "Retronator.Xni.Framework.Graphics.classes.h" @@ -37,6 +38,10 @@ TextureCollection *textures; Viewport *viewport; + // Events + Event *deviceResetting; + Event *deviceReset; + NSMutableArray *vertices; } @@ -54,6 +59,9 @@ @property (nonatomic, readonly) TextureCollection *textures; @property (nonatomic, retain) Viewport *viewport; +@property (nonatomic, readonly) Event *deviceResetting; +@property (nonatomic, readonly) Event *deviceReset; + + (int) getNumberOfVerticesForPrimitiveType:(PrimitiveType)primitiveType primitiveCount:(int)primitiveCount; // Presentation diff --git a/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.m b/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.m index 32f0890..7b674e0 100644 --- a/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.m +++ b/Classes/Retronator/Xni/Framework/Graphics/GraphicsDevice.m @@ -63,6 +63,10 @@ samplerStates = [[SamplerStateCollection alloc] init]; textures = [[TextureCollection alloc] init]; [samplerStates insertObject:[SamplerState linearClamp] atIndex:0]; + + // Create events. + deviceResetting = [[Event alloc] init]; + deviceReset = [[Event alloc] init]; } return self; @@ -127,8 +131,13 @@ } } +@synthesize deviceReset; +@synthesize deviceResetting; + // Presentation - (void) reset { + [deviceResetting raiseWithSender:self]; + CAEAGLLayer *layer = (CAEAGLLayer*)game.window.handle; // Allocate color buffer backing based on the current layer size. @@ -154,6 +163,8 @@ // Set state defaults. glEnable(GL_BLEND); + + [deviceReset raiseWithSender:self]; } - (void) present { @@ -292,6 +303,8 @@ [samplerStates release]; [textures release]; [viewport release]; + [deviceResetting release]; + [deviceReset release]; [super dealloc]; } diff --git a/Classes/Retronator/Xni/Framework/Graphics/IGraphicsDeviceService.h b/Classes/Retronator/Xni/Framework/Graphics/IGraphicsDeviceService.h index 6604c22..c5c6907 100644 --- a/Classes/Retronator/Xni/Framework/Graphics/IGraphicsDeviceService.h +++ b/Classes/Retronator/Xni/Framework/Graphics/IGraphicsDeviceService.h @@ -8,7 +8,7 @@ @property (nonatomic, readonly) Event *deviceCreated; @property (nonatomic, readonly) Event *deviceDisposing; -@property (nonatomic, readonly) Event *deviceReseting; +@property (nonatomic, readonly) Event *deviceResetting; @property (nonatomic, readonly) Event *deviceReset; @end \ No newline at end of file diff --git a/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.h b/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.h index 873b6f1..ef0144b 100644 --- a/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.h +++ b/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.h @@ -23,6 +23,8 @@ BOOL beginCalled; + int drawCalls; + NSMutableArray *sprites; VertexPositionColorTextureArray *vertexArray; } diff --git a/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.m b/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.m index 4461786..745fb4d 100644 --- a/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.m +++ b/Classes/Retronator/Xni/Framework/Graphics/SpriteBatch.m @@ -18,7 +18,7 @@ typedef struct { float height; } RectangleFStruct; -@interface Sprite : NSObject +@interface XniSprite : NSObject { @public Texture2D *texture; @@ -32,13 +32,17 @@ typedef struct { @property (nonatomic, readonly) Texture2D *texture; @property (nonatomic, readonly) float layerDepth; +@property (nonatomic, readonly) uint textureId; @end -@implementation Sprite +@implementation XniSprite @synthesize texture; @synthesize layerDepth; +- (uint) textureId { + return texture.textureId; +} @end @@ -48,7 +52,7 @@ NSArray *textureSort; NSArray *frontToBackSort; NSArray *backToFrontSort; -static inline void SpriteSetSource(Sprite *sprite, Rectangle *source, Texture2D *texture, SpriteEffects effects) { +static inline void SpriteSetSource(XniSprite *sprite, Rectangle *source, Texture2D *texture, SpriteEffects effects) { if (source) { sprite->source.x = (float)source.x / texture.width; sprite->source.y = (float)source.y / texture.height; @@ -70,7 +74,7 @@ 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) { +static inline void SpriteSetVertices(XniSprite *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); @@ -83,33 +87,34 @@ static inline void SpriteSetVertices(Sprite *sprite, float positionX, float posi sprite->height.y = height * scaleY * c; } -static inline void SpriteSetDestinationFast(Sprite *sprite, Rectangle *destination) { +static inline void SpriteSetDestinationFast(XniSprite *sprite, Rectangle *destination) { sprite->position.x = destination.x; sprite->position.y = destination.y; sprite->width.x = destination.width; sprite->height.y = destination.height; } -static inline void SpriteSetDestination(Sprite *sprite, Rectangle *destination, float originX, float originY, float rotation) { +static inline void SpriteSetDestination(XniSprite *sprite, Rectangle *destination, float originX, float originY, float rotation) { SpriteSetVertices(sprite, destination.x + originX, destination.y + originY, originX, originY, 1, 1, rotation, destination.width, destination.height); } -static inline void SpriteSetPositionFast(Sprite *sprite, Vector2 *position, float width, float height) { +static inline void SpriteSetPositionFast(XniSprite *sprite, Vector2 *position, float width, float height) { sprite->position.x = position.x; sprite->position.y = position.y; sprite->width.x = width; sprite->height.y = height; } -static inline void SpriteSetPosition(Sprite *sprite, Vector2 *position, float originX, float originY, float scaleX, float scaleY, float rotation, float width, float height) { +static inline void SpriteSetPosition(XniSprite *sprite, Vector2 *position, float originX, float originY, float scaleX, float scaleY, float rotation, float width, float height) { SpriteSetVertices(sprite, position.x, position.y, originX, originY, scaleX, scaleY, rotation, width, height); } @interface SpriteBatch() +- (void) setProjection; - (void) apply; -- (void) draw:(Sprite*)sprite; +- (void) draw:(XniSprite*)sprite; - (void) draw; - (void) drawFrom:(int)startIndex to:(int)endIndex; @@ -125,24 +130,23 @@ static VertexPositionColorTextureStruct vertices[4]; self = [super initWithGraphicsDevice:theGraphicsDevice]; if (self != nil) { basicEffect = [[BasicEffect alloc] initWithGraphicsDevice:theGraphicsDevice]; - basicEffect.projection = [Matrix createOrthographicOffCenterWithLeft:0 - right:theGraphicsDevice.viewport.width - bottom:theGraphicsDevice.viewport.height - top:0 - zNearPlane:0 - zFarPlane:1]; + [self setProjection]; + basicEffect.textureEnabled = YES; basicEffect.vertexColorEnabled = YES; sprites = [[NSMutableArray alloc] init]; vertexArray = [[VertexPositionColorTextureArray alloc] initWithInitialCapacity:256]; + + [theGraphicsDevice.deviceReset subscribeDelegate:[Delegate delegateWithTarget:self Method:@selector(setProjection)]]; + } return self; } + (void) initialize { identity = [[Matrix identity] retain]; - NSSortDescriptor *textureSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"texture" ascending:YES] autorelease]; + NSSortDescriptor *textureSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"textureId" ascending:YES] autorelease]; NSSortDescriptor *depthAscendingSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"layerDepth" ascending:YES] autorelease]; NSSortDescriptor *depthDescendingSortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"layerDepth" ascending:NO] autorelease]; @@ -153,6 +157,15 @@ static VertexPositionColorTextureStruct vertices[4]; backToFrontSort = [[NSArray arrayWithObjects:depthDescendingSortDescriptor, textureSortDescriptor, nil] retain]; } +- (void) setProjection { + basicEffect.projection = [Matrix createOrthographicOffCenterWithLeft:0 + right:self.graphicsDevice.viewport.width + bottom:self.graphicsDevice.viewport.height + top:0 + zNearPlane:0 + zFarPlane:1]; +} + - (void) begin { [self beginWithSortMode:SpriteSortModeDeffered BlendState:nil SamplerState:nil DepthStencilState:nil RasterizerState:nil Effect:nil TransformMatrix:nil]; } @@ -211,7 +224,7 @@ static VertexPositionColorTextureStruct vertices[4]; } - (void) draw:(Texture2D*)texture toRectangle:(Rectangle*)destinationRectangle tintWithColor:(Color*)color { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetDestinationFast(sprite, destinationRectangle); SpriteSetSource(sprite, nil, texture, SpriteEffectsNone); @@ -220,7 +233,7 @@ static VertexPositionColorTextureStruct vertices[4]; } - (void) draw:(Texture2D*)texture toRectangle:(Rectangle*)destinationRectangle fromRectangle:(Rectangle*)sourceRectangle tintWithColor:(Color*)color { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetDestinationFast(sprite, destinationRectangle); SpriteSetSource(sprite, sourceRectangle, texture, SpriteEffectsNone); @@ -230,7 +243,7 @@ static VertexPositionColorTextureStruct vertices[4]; - (void) draw:(Texture2D*)texture toRectangle:(Rectangle*)destinationRectangle fromRectangle:(Rectangle*)sourceRectangle tintWithColor:(Color*)color rotation:(float)rotation origin:(Vector2*)origin effects:(SpriteEffects)effects layerDepth:(float)layerDepth { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetDestination(sprite, destinationRectangle, origin.x, origin.y, rotation); SpriteSetSource(sprite, sourceRectangle, texture, effects); @@ -240,7 +253,7 @@ static VertexPositionColorTextureStruct vertices[4]; } - (void) draw:(Texture2D*)texture to:(Vector2*)position tintWithColor:(Color*)color { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetPositionFast(sprite, position, texture.width, texture.height); SpriteSetSource(sprite, nil, texture, SpriteEffectsNone); @@ -249,7 +262,7 @@ static VertexPositionColorTextureStruct vertices[4]; } - (void) draw:(Texture2D*)texture to:(Vector2*)position fromRectangle:(Rectangle*)sourceRectangle tintWithColor:(Color*)color { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetPositionFast(sprite, position, sourceRectangle ? sourceRectangle.width : texture.width, sourceRectangle ? sourceRectangle.height : texture.height); SpriteSetSource(sprite, sourceRectangle, texture, SpriteEffectsNone); @@ -259,7 +272,7 @@ static VertexPositionColorTextureStruct vertices[4]; - (void) draw:(Texture2D*)texture to:(Vector2*)position fromRectangle:(Rectangle*)sourceRectangle tintWithColor:(Color*)color rotation:(float)rotation origin:(Vector2*)origin scaleUniform:(float)scale effects:(SpriteEffects)effects layerDepth:(float)layerDepth { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetPosition(sprite, position, origin.x, origin.y, scale, scale, rotation, sourceRectangle ? sourceRectangle.width : texture.width, sourceRectangle ? sourceRectangle.height : texture.height); SpriteSetSource(sprite, sourceRectangle, texture, effects); @@ -269,7 +282,7 @@ static VertexPositionColorTextureStruct vertices[4]; - (void) draw:(Texture2D*)texture to:(Vector2*)position fromRectangle:(Rectangle*)sourceRectangle tintWithColor:(Color*)color rotation:(float)rotation origin:(Vector2*)origin scale:(Vector2*)scale effects:(SpriteEffects)effects layerDepth:(float)layerDepth { - Sprite *sprite = [[[Sprite alloc] init] autorelease]; + XniSprite *sprite = [[[XniSprite alloc] init] autorelease]; sprite->texture = texture; SpriteSetPosition(sprite, position, origin.x, origin.y, scale.x, scale.y, rotation, sourceRectangle ? sourceRectangle.width : texture.width, sourceRectangle ? sourceRectangle.height : texture.height); SpriteSetSource(sprite, sourceRectangle, texture, effects); @@ -278,11 +291,12 @@ static VertexPositionColorTextureStruct vertices[4]; [self draw:sprite]; } -- (void) draw:(Sprite *)sprite { +- (void) draw:(XniSprite *)sprite { [sprites addObject:sprite]; if (sortMode == SpriteSortModeImmediate) { [self draw]; + [sprites removeAllObjects]; } } @@ -337,11 +351,11 @@ static VertexPositionColorTextureStruct vertices[4]; // Continue until all sprites are drawn. while (startIndex < count) { // Get the texture for the next batch. - Texture2D *currentTexture = ((Sprite*)[sprites objectAtIndex:startIndex]).texture; + Texture2D *currentTexture = ((XniSprite*)[sprites objectAtIndex:startIndex]).texture; // Try to expend the end to include all sprites with the same texture. if (count > 1) { - while (endIndex + 1 < count && ((Sprite*)[sprites objectAtIndex:endIndex + 1]).texture == currentTexture) { + while (endIndex + 1 < count && ((XniSprite*)[sprites objectAtIndex:endIndex + 1]).texture == currentTexture) { endIndex++; } } @@ -359,7 +373,7 @@ static VertexPositionColorTextureStruct vertices[4]; // Fill the vertex array for (int i = startIndex; i <= endIndex; i++) { - Sprite *sprite = [sprites objectAtIndex:i]; + XniSprite *sprite = [sprites objectAtIndex:i]; vertices[0].position.x = sprite->position.x; vertices[0].position.y = sprite->position.y; @@ -401,7 +415,7 @@ static VertexPositionColorTextureStruct vertices[4]; } // Apply the effect with the texture. - basicEffect.texture = ((Sprite*)[sprites objectAtIndex:startIndex]).texture; + basicEffect.texture = ((XniSprite*)[sprites objectAtIndex:startIndex]).texture; [[basicEffect.currentTechnique.passes objectAtIndex:0] apply]; // Draw the vertex array. diff --git a/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.h b/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.h index 60d11df..928b4e4 100644 --- a/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.h +++ b/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.h @@ -28,7 +28,7 @@ GraphicsDevice *graphicsDevice; Event *deviceCreated; Event *deviceDisposing; - Event *deviceReseting; + Event *deviceResetting; Event *deviceReset; } diff --git a/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.m b/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.m index 76012ad..a911402 100644 --- a/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.m +++ b/Classes/Retronator/Xni/Framework/GraphicsDeviceManager.m @@ -19,7 +19,7 @@ deviceCreated = [[Event alloc] init]; deviceDisposing = [[Event alloc] init]; - deviceReseting = [[Event alloc] init]; + deviceResetting = [[Event alloc] init]; deviceReset = [[Event alloc] init]; [game.services addService:self ofType:[Protocols graphicsDeviceManager]]; @@ -40,7 +40,7 @@ @synthesize graphicsDevice; @synthesize deviceCreated; @synthesize deviceDisposing; -@synthesize deviceReseting; +@synthesize deviceResetting; @synthesize deviceReset; - (void) toggleFullscreen { @@ -89,7 +89,7 @@ [deviceCreated raiseWithSender:self]; } else { // Reset the existing device. - [deviceReseting raiseWithSender:self]; + [deviceResetting raiseWithSender:self]; [graphicsDevice reset]; [game.window endScreenDeviceChange]; [deviceReset raiseWithSender:self]; @@ -101,7 +101,7 @@ [graphicsDevice release]; [deviceCreated release]; [deviceDisposing release]; - [deviceReseting release]; + [deviceResetting release]; [deviceReset release]; [super dealloc]; } diff --git a/Classes/Retronator/Xni/Framework/IDrawable.h b/Classes/Retronator/Xni/Framework/IDrawable.h index e60e0ca..14c902e 100644 --- a/Classes/Retronator/Xni/Framework/IDrawable.h +++ b/Classes/Retronator/Xni/Framework/IDrawable.h @@ -3,7 +3,10 @@ @protocol IDrawable @property (nonatomic) BOOL visible; +@property (nonatomic) int drawOrder; + @property (nonatomic, readonly) Event *visibleChanged; +@property (nonatomic, readonly) Event *drawOrderChanged; - (void) drawWithGameTime:(GameTime*)gameTime; diff --git a/Classes/Retronator/Xni/Framework/IGameComponent.h b/Classes/Retronator/Xni/Framework/IGameComponent.h index 3ba8b3e..b1b3627 100644 --- a/Classes/Retronator/Xni/Framework/IGameComponent.h +++ b/Classes/Retronator/Xni/Framework/IGameComponent.h @@ -1,4 +1,4 @@ -@protocol IGameComponent +@protocol IGameComponent - (void) initialize; diff --git a/Classes/Retronator/Xni/Framework/IUpdatable.h b/Classes/Retronator/Xni/Framework/IUpdatable.h index 0b671c0..11a584e 100644 --- a/Classes/Retronator/Xni/Framework/IUpdatable.h +++ b/Classes/Retronator/Xni/Framework/IUpdatable.h @@ -3,7 +3,10 @@ @protocol IUpdatable @property (nonatomic) BOOL enabled; +@property (nonatomic) int updateOrder; + @property (nonatomic, readonly) Event *enabledChanged; +@property (nonatomic, readonly) Event *updateOrderChanged; - (void) updateWithGameTime:(GameTime*)gameTime; diff --git a/Classes/Retronator/Xni/Framework/Input/Touch/TouchPanel.m b/Classes/Retronator/Xni/Framework/Input/Touch/TouchPanel.m index fe5a028..a7049d7 100644 --- a/Classes/Retronator/Xni/Framework/Input/Touch/TouchPanel.m +++ b/Classes/Retronator/Xni/Framework/Input/Touch/TouchPanel.m @@ -23,6 +23,7 @@ @property (nonatomic) TouchLocationState state; +- (void) moveIfPressed; - (void) moveToPosition:(Vector2*)newPosition; - (TouchLocation*) createTouchLocation; @@ -47,6 +48,12 @@ static int nextID = 0; @synthesize state; +- (void) moveIfPressed { + if (state == TouchLocationStatePressed) { + state = TouchLocationStateMoved; + } +} + - (void) moveToPosition:(Vector2*)newPosition { [previousPosition release]; previousPosition = position; @@ -110,6 +117,9 @@ static TouchPanel *instance; TouchCollection *collection = [[[TouchCollection alloc] init] autorelease]; for (InternalTouchLocation *touch in [touchLocations allValues]) { [collection addObject:[touch createTouchLocation]]; + + // After get state is done, all pressed touches should be moved. + [touch moveIfPressed]; } return collection; } diff --git a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h index a2f42db..d0643fd 100644 --- a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h +++ b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.classes.h @@ -10,7 +10,7 @@ @class Game, GameTime, GameServiceContainer, GraphicsDeviceManager; // Game host -@class GameHost, GameWindow, GameViewController, GameView; +@class GameHost, GameWindow; // Game components @protocol IGameComponent, IUpdatable, IDrawable; diff --git a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h index b8be62a..3fbc841 100644 --- a/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h +++ b/Classes/Retronator/Xni/Framework/Retronator.Xni.Framework.h @@ -15,15 +15,13 @@ // Game host #import "GameHost.h" #import "GameWindow.h" -#import "GameViewController.h" -#import "GameView.h" // Game components #import "IGameComponent.h" #import "IUpdatable.h" #import "IDrawable.h" -//#import "GameComponent.h" -//#import "DrawableGameComponent.h" +#import "GameComponent.h" +#import "DrawableGameComponent.h" #import "GameComponentCollection.h" #import "GameComponentCollectionEventArgs.h" diff --git a/Classes/System/System.classes.h b/Classes/System/System.classes.h index 6c2829f..ffa9bad 100644 --- a/Classes/System/System.classes.h +++ b/Classes/System/System.classes.h @@ -6,4 +6,4 @@ @class Delegate, Event, EventArgs; // Arrays -@class AdaptiveArray; +@class AdaptiveArray; \ No newline at end of file diff --git a/XNI.xcodeproj/project.pbxproj b/XNI.xcodeproj/project.pbxproj index 4350817..3fca0fb 100644 --- a/XNI.xcodeproj/project.pbxproj +++ b/XNI.xcodeproj/project.pbxproj @@ -8,6 +8,10 @@ /* Begin PBXBuildFile section */ AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; + B50769141264EE9500E4474F /* GameComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B50769121264EE9500E4474F /* GameComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B50769151264EE9500E4474F /* GameComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = B50769131264EE9500E4474F /* GameComponent.m */; }; + B507691C1264EF0B00E4474F /* DrawableGameComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B507691A1264EF0B00E4474F /* DrawableGameComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B507691D1264EF0B00E4474F /* DrawableGameComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = B507691B1264EF0B00E4474F /* DrawableGameComponent.m */; }; B50806FF122E4ECF00C330E2 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = B50806FD122E4ECF00C330E2 /* Texture.h */; settings = {ATTRIBUTES = (Public, ); }; }; B5080700122E4ECF00C330E2 /* Texture.m in Sources */ = {isa = PBXBuildFile; fileRef = B50806FE122E4ECF00C330E2 /* Texture.m */; }; B5080703122E4EE900C330E2 /* Texture2D.h in Headers */ = {isa = PBXBuildFile; fileRef = B5080701122E4EE900C330E2 /* Texture2D.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -75,6 +79,194 @@ B5BBC2D31248F98D0066F5ED /* VertexBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2D11248F98D0066F5ED /* VertexBuffer.m */; }; B5BBC2EC1248FC7A0066F5ED /* VertexBufferBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC2EA1248FC7A0066F5ED /* VertexBufferBinding.h */; settings = {ATTRIBUTES = (Public, ); }; }; B5BBC2ED1248FC7A0066F5ED /* VertexBufferBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2EB1248FC7A0066F5ED /* VertexBufferBinding.m */; }; + B5C6FDD9126DD2AE002ED666 /* XNI_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = B5F4E2A812095FAF00B2FC0F /* XNI_Prefix.pch */; }; + B5C6FDDA126DD2AE002ED666 /* GameView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194C11F89C1F00BF3275 /* GameView.h */; }; + B5C6FDDB126DD2AE002ED666 /* TouchPanel+Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = B52BACF9125527E200B308F6 /* TouchPanel+Internal.h */; }; + B5C6FDDC126DD2AE002ED666 /* GameViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE194811F89C0900BF3275 /* GameViewController.h */; }; + B5C6FDDD126DD2AE002ED666 /* VertexBufferBinding.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC2EA1248FC7A0066F5ED /* VertexBufferBinding.h */; }; + B5C6FDDE126DD2AE002ED666 /* IndexBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC1CD1248D4CB0066F5ED /* IndexBuffer.h */; }; + B5C6FDDF126DD2AE002ED666 /* Vector2.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853B31239334300E6FD71 /* Vector2.h */; }; + B5C6FDE0126DD2AE002ED666 /* Retronator.Xni.Framework.Content.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A1C83012353F9B00DB60CB /* Retronator.Xni.Framework.Content.classes.h */; }; + B5C6FDE1126DD2AE002ED666 /* Vector2Struct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853B71239335900E6FD71 /* Vector2Struct.h */; }; + B5C6FDE2126DD2AE002ED666 /* Effect.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B7812429BBD00DDD99A /* Effect.h */; }; + B5C6FDE3126DD2AE002ED666 /* AdaptiveArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA637C124921D0001245A4 /* AdaptiveArray.h */; }; + B5C6FDE4126DD2AE002ED666 /* BlendState.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B6012429AEC00DDD99A /* BlendState.h */; }; + B5C6FDE5126DD2AE002ED666 /* TouchPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC59F71252B917001E7DFC /* TouchPanel.h */; }; + B5C6FDE6126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE82E11FF1213000DB38B /* Retronator.Xni.Framework.Graphics.classes.h */; }; + B5C6FDE7126DD2AE002ED666 /* SamplerState.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B6C12429B1A00DDD99A /* SamplerState.h */; }; + B5C6FDE8126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE83011FF1222000DB38B /* Retronator.Xni.Framework.Graphics.h */; }; + B5C6FDE9126DD2AE002ED666 /* Matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853A5123931F900E6FD71 /* Matrix.h */; }; + B5C6FDEA126DD2AE002ED666 /* Retronator.Xni.Framework.Content.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A1C82E12353F8700DB60CB /* Retronator.Xni.Framework.Content.h */; }; + B5C6FDEB126DD2AE002ED666 /* ContentIdentity.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD8211236E76E00F99511 /* ContentIdentity.h */; }; + B5C6FDEC126DD2AE002ED666 /* Texture2D.h in Headers */ = {isa = PBXBuildFile; fileRef = B5080701122E4EE900C330E2 /* Texture2D.h */; }; + B5C6FDED126DD2AE002ED666 /* VertexPositionColor.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA636D124917E2001245A4 /* VertexPositionColor.h */; }; + B5C6FDEE126DD2AE002ED666 /* MatrixStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853A3123931F100E6FD71 /* MatrixStruct.h */; }; + B5C6FDEF126DD2AE002ED666 /* Vector4.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F8539B12392E2000E6FD71 /* Vector4.h */; }; + B5C6FDF0126DD2AE002ED666 /* Retronator.Xni.Framework.Input.Touch.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC59FB1252BE32001E7DFC /* Retronator.Xni.Framework.Input.Touch.classes.h */; }; + B5C6FDF1126DD2AE002ED666 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = B50806FD122E4ECF00C330E2 /* Texture.h */; }; + B5C6FDF2126DD2AE002ED666 /* ContentItem.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD81D1236E59A00F99511 /* ContentItem.h */; }; + B5C6FDF3126DD2AE002ED666 /* EffectTechnique.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA65D5124952C9001245A4 /* EffectTechnique.h */; }; + B5C6FDF4126DD2AE002ED666 /* IGraphicsDeviceService.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE82A11FF10EF000DB38B /* IGraphicsDeviceService.h */; }; + B5C6FDF5126DD2AE002ED666 /* SamplerStateCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC1DE1248D5640066F5ED /* SamplerStateCollection.h */; }; + B5C6FDF6126DD2AE002ED666 /* VertexArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA638D1249229D001245A4 /* VertexArray.h */; }; + B5C6FDF7126DD2AE002ED666 /* FrameworkEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = B52BADAC1255426600B308F6 /* FrameworkEnums.h */; }; + B5C6FDF8126DD2AE002ED666 /* Color.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE90711FF352E000DB38B /* Color.h */; }; + B5C6FDF9126DD2AE002ED666 /* MipmapChainCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC50F123A739100B72347 /* MipmapChainCollection.h */; }; + B5C6FDFA126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD81B1236E56800F99511 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.h */; }; + B5C6FDFB126DD2AE002ED666 /* Retronator.Xni.Framework.Input.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC5A921252C710001E7DFC /* Retronator.Xni.Framework.Input.h */; }; + B5C6FDFC126DD2AE002ED666 /* VertexPositionTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA65511249482D001245A4 /* VertexPositionTexture.h */; }; + B5C6FDFD126DD2AE002ED666 /* IServiceProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC559123A846C00B72347 /* IServiceProvider.h */; }; + B5C6FDFE126DD2AE002ED666 /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18A311F888BC00BF3275 /* System.h */; }; + B5C6FDFF126DD2AE002ED666 /* Retronator.Xni.Framework.Input.Touch.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC59FD1252BE3B001E7DFC /* Retronator.Xni.Framework.Input.Touch.h */; }; + B5C6FE00126DD2AE002ED666 /* RasterizerState.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B6812429B0E00DDD99A /* RasterizerState.h */; }; + B5C6FE01126DD2AE002ED666 /* IGameComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE80111FF0AE3000DB38B /* IGameComponent.h */; }; + B5C6FE02126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD80B1236E21900F99511 /* Retronator.Xni.Framework.Content.Pipeline.h */; }; + B5C6FE03126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.PackedVector.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD89F1236F1FF00F99511 /* Retronator.Xni.Framework.Graphics.PackedVector.classes.h */; }; + B5C6FE04126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD80D1236E22B00F99511 /* Retronator.Xni.Framework.Content.Pipeline.classes.h */; }; + B5C6FE05126DD2AE002ED666 /* DepthStencilState.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B6412429AF900DDD99A /* DepthStencilState.h */; }; + B5C6FE06126DD2AE002ED666 /* PackedVectorStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F8536D1239206700E6FD71 /* PackedVectorStructs.h */; }; + B5C6FE07126DD2AE002ED666 /* VertexPositionColorArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA655E1249495C001245A4 /* VertexPositionColorArray.h */; }; + B5C6FE08126DD2AE002ED666 /* GameHost.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18FA11F88AD900BF3275 /* GameHost.h */; }; + B5C6FE09126DD2AE002ED666 /* ColorPixelBitmapContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F8546B1239484700E6FD71 /* ColorPixelBitmapContent.h */; }; + B5C6FE0A126DD2AE002ED666 /* GestureSample.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC5A4D1252C2DF001E7DFC /* GestureSample.h */; }; + B5C6FE0B126DD2AE002ED666 /* GameWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18FC11F88AD900BF3275 /* GameWindow.h */; }; + B5C6FE0C126DD2AE002ED666 /* Rectangle.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190211F88AF500BF3275 /* Rectangle.h */; }; + B5C6FE0D126DD2AE002ED666 /* TouchLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC5A0E1252BEDF001E7DFC /* TouchLocation.h */; }; + B5C6FE0E126DD2AE002ED666 /* SpriteBatch.h in Headers */ = {isa = PBXBuildFile; fileRef = B5E78B481242925600DDD99A /* SpriteBatch.h */; }; + B5C6FE0F126DD2AE002ED666 /* TextureContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD8661236EC2300F99511 /* TextureContent.h */; }; + B5C6FE10126DD2AE002ED666 /* VertexPositionColorTextureArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B57E36CA124BE36E00DDAA42 /* VertexPositionColorTextureArray.h */; }; + B5C6FE11126DD2AE002ED666 /* GameTime.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE82011FF0D4F000DB38B /* GameTime.h */; }; + B5C6FE12126DD2AE002ED666 /* BasicEffect.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA660012495618001245A4 /* BasicEffect.h */; }; + B5C6FE13126DD2AE002ED666 /* Retronator.Xni.Framework.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE18A011F8888B00BF3275 /* Retronator.Xni.Framework.h */; }; + B5C6FE14126DD2AE002ED666 /* Quaternion.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853CB1239357400E6FD71 /* Quaternion.h */; }; + B5C6FE15126DD2AE002ED666 /* IDrawable.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE80611FF0B3C000DB38B /* IDrawable.h */; }; + B5C6FE16126DD2AE002ED666 /* DrawableGameComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B507691A1264EF0B00E4474F /* DrawableGameComponent.h */; }; + B5C6FE17126DD2AE002ED666 /* VertexElement.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC2BA1248F2990066F5ED /* VertexElement.h */; }; + B5C6FE18126DD2AE002ED666 /* TextureImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD80F1236E25700F99511 /* TextureImporter.h */; }; + B5C6FE19126DD2AE002ED666 /* InputEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC5A181252BF63001E7DFC /* InputEnums.h */; }; + B5C6FE1A126DD2AE002ED666 /* GameComponentCollectionEventArgs.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE80811FF0C24000DB38B /* GameComponentCollectionEventArgs.h */; }; + B5C6FE1B126DD2AE002ED666 /* RectangleStruct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE190611F88B5D00BF3275 /* RectangleStruct.h */; }; + B5C6FE1C126DD2AE002ED666 /* IGraphicsDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE82C11FF10FD000DB38B /* IGraphicsDeviceManager.h */; }; + B5C6FE1D126DD2AE002ED666 /* IUpdatable.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE80411FF0B2D000DB38B /* IUpdatable.h */; }; + B5C6FE1E126DD2AE002ED666 /* VertexDeclaration.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC2AC1248F0C40066F5ED /* VertexDeclaration.h */; }; + B5C6FE1F126DD2AE002ED666 /* ReachGraphicsDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C111FF29E8000DB38B /* ReachGraphicsDevice.h */; }; + B5C6FE20126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD8191236E55E00F99511 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.classes.h */; }; + B5C6FE21126DD2AE002ED666 /* Vector4Struct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F8539F12392E4500E6FD71 /* Vector4Struct.h */; }; + B5C6FE22126DD2AE002ED666 /* ContentManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A1C83212353FBB00DB60CB /* ContentManager.h */; }; + B5C6FE23126DD2AE002ED666 /* Game.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE7E911FF04E3000DB38B /* Game.h */; }; + B5C6FE24126DD2AE002ED666 /* ContentTypeReaderManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC5C5123A928A00B72347 /* ContentTypeReaderManager.h */; }; + B5C6FE25126DD2AE002ED666 /* GameComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = B50769121264EE9500E4474F /* GameComponent.h */; }; + B5C6FE26126DD2AE002ED666 /* TextureCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC1EF1248D6090066F5ED /* TextureCollection.h */; }; + B5C6FE27126DD2AE002ED666 /* Protocols.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE89411FF16A3000DB38B /* Protocols.h */; }; + B5C6FE28126DD2AE002ED666 /* Viewport.h in Headers */ = {isa = PBXBuildFile; fileRef = B57E3663124BC23E00DDAA42 /* Viewport.h */; }; + B5C6FE29126DD2AE002ED666 /* ContentTypeReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC5C1123A927500B72347 /* ContentTypeReader.h */; }; + B5C6FE2A126DD2AE002ED666 /* Texture2DContentTypeReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC5C9123A92BB00B72347 /* Texture2DContentTypeReader.h */; }; + B5C6FE2B126DD2AE002ED666 /* Texture2DContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC525123A79E800B72347 /* Texture2DContent.h */; }; + B5C6FE2C126DD2AE002ED666 /* VectorConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F85385123929F800E6FD71 /* VectorConverter.h */; }; + B5C6FE2D126DD2AE002ED666 /* BitmapContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD86C1236ED3900F99511 /* BitmapContent.h */; }; + B5C6FE2E126DD2AE002ED666 /* GraphicsEnums.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C911FF2AD6000DB38B /* GraphicsEnums.h */; }; + B5C6FE2F126DD2AE002ED666 /* VertexStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA634E12491709001245A4 /* VertexStructs.h */; }; + B5C6FE30126DD2AE002ED666 /* GraphicsResource.h in Headers */ = {isa = PBXBuildFile; fileRef = B508070A122E4FBB00C330E2 /* GraphicsResource.h */; }; + B5C6FE31126DD2AE002ED666 /* Vector3Struct.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853BB1239336C00E6FD71 /* Vector3Struct.h */; }; + B5C6FE32126DD2AE002ED666 /* Event.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189411F8884A00BF3275 /* Event.h */; }; + B5C6FE33126DD2AE002ED666 /* VertexBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = B5BBC2D01248F98D0066F5ED /* VertexBuffer.h */; }; + B5C6FE34126DD2AE002ED666 /* HiDefGraphicsDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE8C511FF2A23000DB38B /* HiDefGraphicsDevice.h */; }; + B5C6FE35126DD2AE002ED666 /* EventArgs.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189611F8884A00BF3275 /* EventArgs.h */; }; + B5C6FE36126DD2AE002ED666 /* GraphicsDeviceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE98F11FF546B000DB38B /* GraphicsDeviceManager.h */; }; + B5C6FE37126DD2AE002ED666 /* TouchCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EC5A051252BE9E001E7DFC /* TouchCollection.h */; }; + B5C6FE38126DD2AE002ED666 /* DirectionalLight.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA660B124956CE001245A4 /* DirectionalLight.h */; }; + B5C6FE39126DD2AE002ED666 /* EffectPass.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA65CD12495297001245A4 /* EffectPass.h */; }; + B5C6FE3A126DD2AE002ED666 /* GameComponentCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE7FD11FF0A0F000DB38B /* GameComponentCollection.h */; }; + B5C6FE3B126DD2AE002ED666 /* System.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189E11F8886D00BF3275 /* System.classes.h */; }; + B5C6FE3C126DD2AE002ED666 /* Vector3.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F853AF1239331C00E6FD71 /* Vector3.h */; }; + B5C6FE3D126DD2AE002ED666 /* VertexPositionColorTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = B57E36BC124BE2DD00DDAA42 /* VertexPositionColorTexture.h */; }; + B5C6FE3E126DD2AE002ED666 /* Delegate.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189211F8884A00BF3275 /* Delegate.h */; }; + B5C6FE3F126DD2AE002ED666 /* VertexPositionTextureArray.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EA657612494AC3001245A4 /* VertexPositionTextureArray.h */; }; + B5C6FE40126DD2AE002ED666 /* ContentReader.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC5BB123A915700B72347 /* ContentReader.h */; }; + B5C6FE41126DD2AE002ED666 /* PixelBitmapContent.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD8801236EFF200F99511 /* PixelBitmapContent.h */; }; + B5C6FE42126DD2AE002ED666 /* ContentImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD7EE1236E07300F99511 /* ContentImporter.h */; }; + B5C6FE43126DD2AE002ED666 /* GraphicsDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE85A11FF1326000DB38B /* GraphicsDevice.h */; }; + B5C6FE44126DD2AE002ED666 /* Retronator.Xni.Framework.classes.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DE189F11F8888B00BF3275 /* Retronator.Xni.Framework.classes.h */; }; + B5C6FE45126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.PackedVector.h in Headers */ = {isa = PBXBuildFile; fileRef = B59AD8A11236F20B00F99511 /* Retronator.Xni.Framework.Graphics.PackedVector.h */; }; + B5C6FE46126DD2AE002ED666 /* GameServiceContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE7ED11FF06BB000DB38B /* GameServiceContainer.h */; }; + B5C6FE47126DD2AE002ED666 /* MipmapChain.h in Headers */ = {isa = PBXBuildFile; fileRef = B56CC50B123A6F3600B72347 /* MipmapChain.h */; }; + B5C6FE48126DD2B7002ED666 /* GameHost.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE18FB11F88AD900BF3275 /* GameHost.m */; }; + B5C6FE49126DD2B7002ED666 /* HiDefGraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE8C611FF2A23000DB38B /* HiDefGraphicsDevice.m */; }; + B5C6FE4A126DD2B7002ED666 /* MipmapChainCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC510123A739100B72347 /* MipmapChainCollection.m */; }; + B5C6FE4B126DD2B7002ED666 /* Event.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE189511F8884A00BF3275 /* Event.m */; }; + B5C6FE4C126DD2B7002ED666 /* RasterizerState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B6912429B0E00DDD99A /* RasterizerState.m */; }; + B5C6FE4D126DD2B7002ED666 /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE7EA11FF04E3000DB38B /* Game.m */; }; + B5C6FE4E126DD2B7002ED666 /* PixelBitmapContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD8811236EFF200F99511 /* PixelBitmapContent.m */; }; + B5C6FE4F126DD2B7002ED666 /* TextureContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD8671236EC2300F99511 /* TextureContent.m */; }; + B5C6FE50126DD2B7002ED666 /* TouchLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EC5A0F1252BEDF001E7DFC /* TouchLocation.m */; }; + B5C6FE51126DD2B7002ED666 /* GameServiceContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE7EE11FF06BB000DB38B /* GameServiceContainer.m */; }; + B5C6FE52126DD2B7002ED666 /* GameComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = B50769131264EE9500E4474F /* GameComponent.m */; }; + B5C6FE53126DD2B7002ED666 /* Rectangle.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE190311F88AF500BF3275 /* Rectangle.m */; }; + B5C6FE54126DD2B7002ED666 /* VectorConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F85386123929F800E6FD71 /* VectorConverter.m */; }; + B5C6FE55126DD2B7002ED666 /* IndexBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC1CE1248D4CB0066F5ED /* IndexBuffer.m */; }; + B5C6FE56126DD2B7002ED666 /* Effect.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B7912429BBD00DDD99A /* Effect.m */; }; + B5C6FE57126DD2B7002ED666 /* ContentIdentity.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD8221236E76E00F99511 /* ContentIdentity.m */; }; + B5C6FE58126DD2B7002ED666 /* Texture.m in Sources */ = {isa = PBXBuildFile; fileRef = B50806FE122E4ECF00C330E2 /* Texture.m */; }; + B5C6FE59126DD2B7002ED666 /* GestureSample.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EC5A4E1252C2DF001E7DFC /* GestureSample.m */; }; + B5C6FE5A126DD2B7002ED666 /* BlendState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B6112429AEC00DDD99A /* BlendState.m */; }; + B5C6FE5B126DD2B7002ED666 /* VertexElement.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2BB1248F2990066F5ED /* VertexElement.m */; }; + B5C6FE5C126DD2B7002ED666 /* SamplerStateCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC1DF1248D5640066F5ED /* SamplerStateCollection.m */; }; + B5C6FE5D126DD2B7002ED666 /* Texture2DContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC526123A79E800B72347 /* Texture2DContent.m */; }; + B5C6FE5E126DD2B7002ED666 /* GameComponentCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE7FE11FF0A0F000DB38B /* GameComponentCollection.m */; }; + B5C6FE5F126DD2B7002ED666 /* GameTime.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE82111FF0D4F000DB38B /* GameTime.m */; }; + B5C6FE60126DD2B7002ED666 /* BitmapContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD86D1236ED3900F99511 /* BitmapContent.m */; }; + B5C6FE61126DD2B7002ED666 /* TouchPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EC59F81252B917001E7DFC /* TouchPanel.m */; }; + B5C6FE62126DD2B7002ED666 /* TouchCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EC5A061252BE9E001E7DFC /* TouchCollection.m */; }; + B5C6FE63126DD2B7002ED666 /* Texture2D.m in Sources */ = {isa = PBXBuildFile; fileRef = B5080702122E4EE900C330E2 /* Texture2D.m */; }; + B5C6FE64126DD2B7002ED666 /* EffectTechnique.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA65D6124952C9001245A4 /* EffectTechnique.m */; }; + B5C6FE65126DD2B7002ED666 /* AdaptiveArray.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA637D124921D0001245A4 /* AdaptiveArray.m */; }; + B5C6FE66126DD2B7002ED666 /* Delegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE189311F8884A00BF3275 /* Delegate.m */; }; + B5C6FE67126DD2B7002ED666 /* GameView.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE194D11F89C1F00BF3275 /* GameView.m */; }; + B5C6FE68126DD2B7002ED666 /* VertexPositionColorTextureArray.m in Sources */ = {isa = PBXBuildFile; fileRef = B57E36CB124BE36E00DDAA42 /* VertexPositionColorTextureArray.m */; }; + B5C6FE69126DD2B7002ED666 /* VertexPositionTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA65521249482D001245A4 /* VertexPositionTexture.m */; }; + B5C6FE6A126DD2B7002ED666 /* VertexPositionColor.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA636E124917E2001245A4 /* VertexPositionColor.m */; }; + B5C6FE6B126DD2B7002ED666 /* ContentImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD7EF1236E07300F99511 /* ContentImporter.m */; }; + B5C6FE6C126DD2B7002ED666 /* VertexBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2D11248F98D0066F5ED /* VertexBuffer.m */; }; + B5C6FE6D126DD2B7002ED666 /* GameViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE194911F89C0900BF3275 /* GameViewController.m */; }; + B5C6FE6E126DD2B7002ED666 /* TextureImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD8101236E25700F99511 /* TextureImporter.m */; }; + B5C6FE6F126DD2B7002ED666 /* GameComponentCollectionEventArgs.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE80911FF0C24000DB38B /* GameComponentCollectionEventArgs.m */; }; + B5C6FE70126DD2B7002ED666 /* GameWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE18FD11F88AD900BF3275 /* GameWindow.m */; }; + B5C6FE71126DD2B7002ED666 /* ColorPixelBitmapContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F8546C1239484700E6FD71 /* ColorPixelBitmapContent.m */; }; + B5C6FE72126DD2B7002ED666 /* DirectionalLight.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA660C124956CE001245A4 /* DirectionalLight.m */; }; + B5C6FE73126DD2B7002ED666 /* BasicEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA660112495618001245A4 /* BasicEffect.m */; }; + B5C6FE74126DD2B7002ED666 /* Vector3.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F853B01239331C00E6FD71 /* Vector3.m */; }; + B5C6FE75126DD2B7002ED666 /* VertexArray.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA638E1249229D001245A4 /* VertexArray.m */; }; + B5C6FE76126DD2B7002ED666 /* MipmapChain.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC50C123A6F3600B72347 /* MipmapChain.m */; }; + B5C6FE77126DD2B7002ED666 /* Texture2DContentTypeReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC5CA123A92BB00B72347 /* Texture2DContentTypeReader.m */; }; + B5C6FE78126DD2B7002ED666 /* SpriteBatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B491242925600DDD99A /* SpriteBatch.m */; }; + B5C6FE79126DD2B7002ED666 /* VertexPositionColorArray.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA655F1249495C001245A4 /* VertexPositionColorArray.m */; }; + B5C6FE7A126DD2B7002ED666 /* Vector2.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F853B41239334300E6FD71 /* Vector2.m */; }; + B5C6FE7B126DD2B7002ED666 /* Vector4.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F8539C12392E2000E6FD71 /* Vector4.m */; }; + B5C6FE7C126DD2B7002ED666 /* DrawableGameComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = B507691B1264EF0B00E4474F /* DrawableGameComponent.m */; }; + B5C6FE7D126DD2B7002ED666 /* ContentManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B5A1C83312353FBB00DB60CB /* ContentManager.m */; }; + B5C6FE7E126DD2B7002ED666 /* DepthStencilState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B6512429AF900DDD99A /* DepthStencilState.m */; }; + B5C6FE7F126DD2B7002ED666 /* Quaternion.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F853CC1239357400E6FD71 /* Quaternion.m */; }; + B5C6FE80126DD2B7002ED666 /* Matrix.m in Sources */ = {isa = PBXBuildFile; fileRef = B5F853A6123931F900E6FD71 /* Matrix.m */; }; + B5C6FE81126DD2B7002ED666 /* Color.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE90811FF352E000DB38B /* Color.m */; }; + B5C6FE82126DD2B7002ED666 /* Viewport.m in Sources */ = {isa = PBXBuildFile; fileRef = B57E3664124BC23E00DDAA42 /* Viewport.m */; }; + B5C6FE83126DD2B7002ED666 /* ContentItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B59AD81E1236E59A00F99511 /* ContentItem.m */; }; + B5C6FE84126DD2B7002ED666 /* ContentTypeReaderManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC5C6123A928A00B72347 /* ContentTypeReaderManager.m */; }; + B5C6FE85126DD2B7002ED666 /* VertexPositionTextureArray.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA657712494AC3001245A4 /* VertexPositionTextureArray.m */; }; + B5C6FE86126DD2B7002ED666 /* VertexPositionColorTexture.m in Sources */ = {isa = PBXBuildFile; fileRef = B57E36BD124BE2DD00DDAA42 /* VertexPositionColorTexture.m */; }; + B5C6FE87126DD2B7002ED666 /* VertexBufferBinding.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2EB1248FC7A0066F5ED /* VertexBufferBinding.m */; }; + B5C6FE88126DD2B7002ED666 /* VertexDeclaration.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC2AD1248F0C40066F5ED /* VertexDeclaration.m */; }; + B5C6FE89126DD2B7002ED666 /* GraphicsDeviceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE99011FF546B000DB38B /* GraphicsDeviceManager.m */; }; + B5C6FE8A126DD2B7002ED666 /* ContentReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC5BC123A915700B72347 /* ContentReader.m */; }; + B5C6FE8B126DD2B7002ED666 /* EventArgs.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DE189711F8884A00BF3275 /* EventArgs.m */; }; + B5C6FE8C126DD2B7002ED666 /* TextureCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BBC1F01248D6090066F5ED /* TextureCollection.m */; }; + B5C6FE8D126DD2B7002ED666 /* GraphicsResource.m in Sources */ = {isa = PBXBuildFile; fileRef = B508070B122E4FBB00C330E2 /* GraphicsResource.m */; }; + B5C6FE8E126DD2B7002ED666 /* EffectPass.m in Sources */ = {isa = PBXBuildFile; fileRef = B5EA65CE12495297001245A4 /* EffectPass.m */; }; + B5C6FE8F126DD2B7002ED666 /* SamplerState.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E78B6D12429B1A00DDD99A /* SamplerState.m */; }; + B5C6FE90126DD2B7002ED666 /* GraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE85B11FF1326000DB38B /* GraphicsDevice.m */; }; + B5C6FE91126DD2B7002ED666 /* ContentTypeReader.m in Sources */ = {isa = PBXBuildFile; fileRef = B56CC5C2123A927500B72347 /* ContentTypeReader.m */; }; + B5C6FE92126DD2B7002ED666 /* ReachGraphicsDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE8C211FF29E8000DB38B /* ReachGraphicsDevice.m */; }; + B5C6FE93126DD2B7002ED666 /* Protocols.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE89511FF16A3000DB38B /* Protocols.m */; }; + B5C6FEE9126DD2EA002ED666 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; B5DDE7EB11FF04E3000DB38B /* Game.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE7E911FF04E3000DB38B /* Game.h */; settings = {ATTRIBUTES = (Public, ); }; }; B5DDE7EC11FF04E3000DB38B /* Game.m in Sources */ = {isa = PBXBuildFile; fileRef = B5DDE7EA11FF04E3000DB38B /* Game.m */; }; B5DDE7EF11FF06BB000DB38B /* GameServiceContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B5DDE7ED11FF06BB000DB38B /* GameServiceContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -195,6 +387,10 @@ /* Begin PBXFileReference section */ AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + B50769121264EE9500E4474F /* GameComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameComponent.h; sourceTree = ""; }; + B50769131264EE9500E4474F /* GameComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GameComponent.m; sourceTree = ""; }; + B507691A1264EF0B00E4474F /* DrawableGameComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawableGameComponent.h; sourceTree = ""; }; + B507691B1264EF0B00E4474F /* DrawableGameComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawableGameComponent.m; sourceTree = ""; }; B50806FD122E4ECF00C330E2 /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = ""; }; B50806FE122E4ECF00C330E2 /* Texture.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Texture.m; sourceTree = ""; }; B5080701122E4EE900C330E2 /* Texture2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Texture2D.h; sourceTree = ""; }; @@ -262,6 +458,7 @@ B5BBC2D11248F98D0066F5ED /* VertexBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VertexBuffer.m; sourceTree = ""; }; B5BBC2EA1248FC7A0066F5ED /* VertexBufferBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VertexBufferBinding.h; sourceTree = ""; }; B5BBC2EB1248FC7A0066F5ED /* VertexBufferBinding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VertexBufferBinding.m; sourceTree = ""; }; + B5C6FDD3126DD292002ED666 /* libXNI Release.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libXNI Release.a"; sourceTree = BUILT_PRODUCTS_DIR; }; B5DDE7E911FF04E3000DB38B /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = ""; }; B5DDE7EA11FF04E3000DB38B /* Game.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Game.m; sourceTree = ""; }; B5DDE7ED11FF06BB000DB38B /* GameServiceContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GameServiceContainer.h; sourceTree = ""; }; @@ -382,6 +579,14 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + B5C6FDD1126DD292002ED666 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B5C6FEE9126DD2EA002ED666 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D2AAC07C0554694100DB518D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -397,6 +602,7 @@ isa = PBXGroup; children = ( D2AAC07E0554694100DB518D /* libXNI.a */, + B5C6FDD3126DD292002ED666 /* libXNI Release.a */, ); name = Products; sourceTree = ""; @@ -635,6 +841,10 @@ B5DDE80111FF0AE3000DB38B /* IGameComponent.h */, B5DDE80411FF0B2D000DB38B /* IUpdatable.h */, B5DDE80611FF0B3C000DB38B /* IDrawable.h */, + B50769121264EE9500E4474F /* GameComponent.h */, + B50769131264EE9500E4474F /* GameComponent.m */, + B507691A1264EF0B00E4474F /* DrawableGameComponent.h */, + B507691B1264EF0B00E4474F /* DrawableGameComponent.m */, B5DDE7FD11FF0A0F000DB38B /* GameComponentCollection.h */, B5DDE7FE11FF0A0F000DB38B /* GameComponentCollection.m */, B5DDE80811FF0C24000DB38B /* GameComponentCollectionEventArgs.h */, @@ -708,6 +918,124 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + B5C6FDCF126DD292002ED666 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B5C6FDD9126DD2AE002ED666 /* XNI_Prefix.pch in Headers */, + B5C6FDDA126DD2AE002ED666 /* GameView.h in Headers */, + B5C6FDDB126DD2AE002ED666 /* TouchPanel+Internal.h in Headers */, + B5C6FDDC126DD2AE002ED666 /* GameViewController.h in Headers */, + B5C6FDDD126DD2AE002ED666 /* VertexBufferBinding.h in Headers */, + B5C6FDDE126DD2AE002ED666 /* IndexBuffer.h in Headers */, + B5C6FDDF126DD2AE002ED666 /* Vector2.h in Headers */, + B5C6FDE0126DD2AE002ED666 /* Retronator.Xni.Framework.Content.classes.h in Headers */, + B5C6FDE1126DD2AE002ED666 /* Vector2Struct.h in Headers */, + B5C6FDE2126DD2AE002ED666 /* Effect.h in Headers */, + B5C6FDE3126DD2AE002ED666 /* AdaptiveArray.h in Headers */, + B5C6FDE4126DD2AE002ED666 /* BlendState.h in Headers */, + B5C6FDE5126DD2AE002ED666 /* TouchPanel.h in Headers */, + B5C6FDE6126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.classes.h in Headers */, + B5C6FDE7126DD2AE002ED666 /* SamplerState.h in Headers */, + B5C6FDE8126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.h in Headers */, + B5C6FDE9126DD2AE002ED666 /* Matrix.h in Headers */, + B5C6FDEA126DD2AE002ED666 /* Retronator.Xni.Framework.Content.h in Headers */, + B5C6FDEB126DD2AE002ED666 /* ContentIdentity.h in Headers */, + B5C6FDEC126DD2AE002ED666 /* Texture2D.h in Headers */, + B5C6FDED126DD2AE002ED666 /* VertexPositionColor.h in Headers */, + B5C6FDEE126DD2AE002ED666 /* MatrixStruct.h in Headers */, + B5C6FDEF126DD2AE002ED666 /* Vector4.h in Headers */, + B5C6FDF0126DD2AE002ED666 /* Retronator.Xni.Framework.Input.Touch.classes.h in Headers */, + B5C6FDF1126DD2AE002ED666 /* Texture.h in Headers */, + B5C6FDF2126DD2AE002ED666 /* ContentItem.h in Headers */, + B5C6FDF3126DD2AE002ED666 /* EffectTechnique.h in Headers */, + B5C6FDF4126DD2AE002ED666 /* IGraphicsDeviceService.h in Headers */, + B5C6FDF5126DD2AE002ED666 /* SamplerStateCollection.h in Headers */, + B5C6FDF6126DD2AE002ED666 /* VertexArray.h in Headers */, + B5C6FDF7126DD2AE002ED666 /* FrameworkEnums.h in Headers */, + B5C6FDF8126DD2AE002ED666 /* Color.h in Headers */, + B5C6FDF9126DD2AE002ED666 /* MipmapChainCollection.h in Headers */, + B5C6FDFA126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.h in Headers */, + B5C6FDFB126DD2AE002ED666 /* Retronator.Xni.Framework.Input.h in Headers */, + B5C6FDFC126DD2AE002ED666 /* VertexPositionTexture.h in Headers */, + B5C6FDFD126DD2AE002ED666 /* IServiceProvider.h in Headers */, + B5C6FDFE126DD2AE002ED666 /* System.h in Headers */, + B5C6FDFF126DD2AE002ED666 /* Retronator.Xni.Framework.Input.Touch.h in Headers */, + B5C6FE00126DD2AE002ED666 /* RasterizerState.h in Headers */, + B5C6FE01126DD2AE002ED666 /* IGameComponent.h in Headers */, + B5C6FE02126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.h in Headers */, + B5C6FE03126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.PackedVector.classes.h in Headers */, + B5C6FE04126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.classes.h in Headers */, + B5C6FE05126DD2AE002ED666 /* DepthStencilState.h in Headers */, + B5C6FE06126DD2AE002ED666 /* PackedVectorStructs.h in Headers */, + B5C6FE07126DD2AE002ED666 /* VertexPositionColorArray.h in Headers */, + B5C6FE08126DD2AE002ED666 /* GameHost.h in Headers */, + B5C6FE09126DD2AE002ED666 /* ColorPixelBitmapContent.h in Headers */, + B5C6FE0A126DD2AE002ED666 /* GestureSample.h in Headers */, + B5C6FE0B126DD2AE002ED666 /* GameWindow.h in Headers */, + B5C6FE0C126DD2AE002ED666 /* Rectangle.h in Headers */, + B5C6FE0D126DD2AE002ED666 /* TouchLocation.h in Headers */, + B5C6FE0E126DD2AE002ED666 /* SpriteBatch.h in Headers */, + B5C6FE0F126DD2AE002ED666 /* TextureContent.h in Headers */, + B5C6FE10126DD2AE002ED666 /* VertexPositionColorTextureArray.h in Headers */, + B5C6FE11126DD2AE002ED666 /* GameTime.h in Headers */, + B5C6FE12126DD2AE002ED666 /* BasicEffect.h in Headers */, + B5C6FE13126DD2AE002ED666 /* Retronator.Xni.Framework.h in Headers */, + B5C6FE14126DD2AE002ED666 /* Quaternion.h in Headers */, + B5C6FE15126DD2AE002ED666 /* IDrawable.h in Headers */, + B5C6FE16126DD2AE002ED666 /* DrawableGameComponent.h in Headers */, + B5C6FE17126DD2AE002ED666 /* VertexElement.h in Headers */, + B5C6FE18126DD2AE002ED666 /* TextureImporter.h in Headers */, + B5C6FE19126DD2AE002ED666 /* InputEnums.h in Headers */, + B5C6FE1A126DD2AE002ED666 /* GameComponentCollectionEventArgs.h in Headers */, + B5C6FE1B126DD2AE002ED666 /* RectangleStruct.h in Headers */, + B5C6FE1C126DD2AE002ED666 /* IGraphicsDeviceManager.h in Headers */, + B5C6FE1D126DD2AE002ED666 /* IUpdatable.h in Headers */, + B5C6FE1E126DD2AE002ED666 /* VertexDeclaration.h in Headers */, + B5C6FE1F126DD2AE002ED666 /* ReachGraphicsDevice.h in Headers */, + B5C6FE20126DD2AE002ED666 /* Retronator.Xni.Framework.Content.Pipeline.Graphics.classes.h in Headers */, + B5C6FE21126DD2AE002ED666 /* Vector4Struct.h in Headers */, + B5C6FE22126DD2AE002ED666 /* ContentManager.h in Headers */, + B5C6FE23126DD2AE002ED666 /* Game.h in Headers */, + B5C6FE24126DD2AE002ED666 /* ContentTypeReaderManager.h in Headers */, + B5C6FE25126DD2AE002ED666 /* GameComponent.h in Headers */, + B5C6FE26126DD2AE002ED666 /* TextureCollection.h in Headers */, + B5C6FE27126DD2AE002ED666 /* Protocols.h in Headers */, + B5C6FE28126DD2AE002ED666 /* Viewport.h in Headers */, + B5C6FE29126DD2AE002ED666 /* ContentTypeReader.h in Headers */, + B5C6FE2A126DD2AE002ED666 /* Texture2DContentTypeReader.h in Headers */, + B5C6FE2B126DD2AE002ED666 /* Texture2DContent.h in Headers */, + B5C6FE2C126DD2AE002ED666 /* VectorConverter.h in Headers */, + B5C6FE2D126DD2AE002ED666 /* BitmapContent.h in Headers */, + B5C6FE2E126DD2AE002ED666 /* GraphicsEnums.h in Headers */, + B5C6FE2F126DD2AE002ED666 /* VertexStructs.h in Headers */, + B5C6FE30126DD2AE002ED666 /* GraphicsResource.h in Headers */, + B5C6FE31126DD2AE002ED666 /* Vector3Struct.h in Headers */, + B5C6FE32126DD2AE002ED666 /* Event.h in Headers */, + B5C6FE33126DD2AE002ED666 /* VertexBuffer.h in Headers */, + B5C6FE34126DD2AE002ED666 /* HiDefGraphicsDevice.h in Headers */, + B5C6FE35126DD2AE002ED666 /* EventArgs.h in Headers */, + B5C6FE36126DD2AE002ED666 /* GraphicsDeviceManager.h in Headers */, + B5C6FE37126DD2AE002ED666 /* TouchCollection.h in Headers */, + B5C6FE38126DD2AE002ED666 /* DirectionalLight.h in Headers */, + B5C6FE39126DD2AE002ED666 /* EffectPass.h in Headers */, + B5C6FE3A126DD2AE002ED666 /* GameComponentCollection.h in Headers */, + B5C6FE3B126DD2AE002ED666 /* System.classes.h in Headers */, + B5C6FE3C126DD2AE002ED666 /* Vector3.h in Headers */, + B5C6FE3D126DD2AE002ED666 /* VertexPositionColorTexture.h in Headers */, + B5C6FE3E126DD2AE002ED666 /* Delegate.h in Headers */, + B5C6FE3F126DD2AE002ED666 /* VertexPositionTextureArray.h in Headers */, + B5C6FE40126DD2AE002ED666 /* ContentReader.h in Headers */, + B5C6FE41126DD2AE002ED666 /* PixelBitmapContent.h in Headers */, + B5C6FE42126DD2AE002ED666 /* ContentImporter.h in Headers */, + B5C6FE43126DD2AE002ED666 /* GraphicsDevice.h in Headers */, + B5C6FE44126DD2AE002ED666 /* Retronator.Xni.Framework.classes.h in Headers */, + B5C6FE45126DD2AE002ED666 /* Retronator.Xni.Framework.Graphics.PackedVector.h in Headers */, + B5C6FE46126DD2AE002ED666 /* GameServiceContainer.h in Headers */, + B5C6FE47126DD2AE002ED666 /* MipmapChain.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D2AAC07A0554694100DB518D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -821,12 +1149,32 @@ B5EC5A931252C710001E7DFC /* Retronator.Xni.Framework.Input.h in Headers */, B52BACFB125527E200B308F6 /* TouchPanel+Internal.h in Headers */, B52BADAD1255426600B308F6 /* FrameworkEnums.h in Headers */, + B50769141264EE9500E4474F /* GameComponent.h in Headers */, + B507691C1264EF0B00E4474F /* DrawableGameComponent.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + B5C6FDD2126DD292002ED666 /* XNI Release */ = { + isa = PBXNativeTarget; + buildConfigurationList = B5C6FEEC126DD30C002ED666 /* Build configuration list for PBXNativeTarget "XNI Release" */; + buildPhases = ( + B5C6FDCF126DD292002ED666 /* Headers */, + B5C6FDD0126DD292002ED666 /* Sources */, + B5C6FDD1126DD292002ED666 /* Frameworks */, + B5C6FE95126DD2CD002ED666 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "XNI Release"; + productName = "XNI Release"; + productReference = B5C6FDD3126DD292002ED666 /* libXNI Release.a */; + productType = "com.apple.product-type.library.static"; + }; D2AAC07D0554694100DB518D /* XNI */ = { isa = PBXNativeTarget; buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "XNI" */; @@ -854,18 +1202,125 @@ }; buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "XNI" */; compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); mainGroup = 0867D691FE84028FC02AAC07 /* XNI */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( D2AAC07D0554694100DB518D /* XNI */, + B5C6FDD2126DD292002ED666 /* XNI Release */, ); }; /* End PBXProject section */ +/* Begin PBXShellScriptBuildPhase section */ + B5C6FE95126DD2CD002ED666 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Purpose:\n# Create a static library for iPhone from within XCode\n# Because Apple staff DELIBERATELY broke Xcode to make this impossible from the GUI (Xcode 3.2.3 specifically states this in the Release notes!)\n# ...no, I don't understand why they did such a stupid thing either!\n#\n# Author: Adam Martin - http://twitter.com/redglassesapps\n# Based on: original script from Eonil (main changes: Eonil's script WILL NOT WORK in Xcode GUI - it WILL CRASH YOUR COMPUTER)\n#\n# More info: see this Stack Overflow question: http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4\n\n\n#####################[ part 1 ]##################\n# First, work out the BASESDK version number (NB: Apple ought to report this, but they hide it)\n# (incidental: searching for substrings in sh is a nightmare! Sob)\n\nSDK_VERSION=$(echo ${SDK_NAME} | grep -o '.\\{3\\}$')\n\n# Next, work out if we're in SIM or DEVICE\n\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]\nthen\nOTHER_SDK_TO_BUILD=iphoneos${SDK_VERSION}\nelse\nOTHER_SDK_TO_BUILD=iphonesimulator${SDK_VERSION}\nfi\n\necho \"XCode has selected SDK: ${PLATFORM_NAME} with version: ${SDK_VERSION} (although back-targetting: ${IPHONEOS_DEPLOYMENT_TARGET})\"\necho \"...therefore, OTHER_SDK_TO_BUILD = ${OTHER_SDK_TO_BUILD}\"\n#\n#####################[ end of part 1 ]##################\n\n#####################[ part 2 ]##################\n#\n# IF this is the original invocation, invoke WHATEVER other builds are required\n#\n# Xcode is already building ONE target...\n#\n# ...but this is a LIBRARY, so Apple is wrong to set it to build just one.\n# ...we need to build ALL targets\n# ...we MUST NOT re-build the target that is ALREADY being built: Xcode WILL CRASH YOUR COMPUTER if you try this (infinite recursion!)\n#\n#\n# So: build ONLY the missing platforms/configurations.\n\nif [ \"true\" = ${ALREADYINVOKED} ]\nthen\necho \"RECURSION: I am NOT the root invocation, so I'm NOT going to recurse\"\nelse\n# CRITICAL:\n# Prevent infinite recursion (Xcode sucks)\nexport ALREADYINVOKED=\"true\"\n\necho \"RECURSION: I am the root ... recursing all missing build targets NOW...\"\necho \"RECURSION: ...about to invoke: xcodebuild -configuration \\\"${CONFIGURATION}\\\" -target \\\"${TARGET_NAME}\\\" -sdk \\\"${OTHER_SDK_TO_BUULD}\\\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO\"\nxcodebuild -configuration \"${CONFIGURATION}\" -target \"${TARGET_NAME}\" -sdk \"${OTHER_SDK_TO_BUILD}\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO\nfi\n\nACTION=\"build\"\n\n#Merge all platform binaries as a fat binary for each configurations.\n\nCURRENTCONFIG_DEVICE_DIR=${SYMROOT}/${CONFIGURATION}-iphoneos\nCURRENTCONFIG_SIMULATOR_DIR=${SYMROOT}/${CONFIGURATION}-iphonesimulator\nCURRENTCONFIG_UNIVERSAL_DIR=${SYMROOT}/${CONFIGURATION}-universal\n\n# ... remove the products of previous runs of this script\n# NB: this directory is ONLY created by this script - it should be safe to delete!\n\nrm -rf \"${CURRENTCONFIG_UNIVERSAL_DIR}\"\nmkdir \"${CURRENTCONFIG_UNIVERSAL_DIR}\"\n\n#\necho \"lipo: for current configuration (${CONFIGURATION}) creating output file: ${CURRENTCONFIG_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\"\nlipo -create -output \"${CURRENTCONFIG_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_DEVICE_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_SIMULATOR_DIR}/${EXECUTABLE_NAME}\""; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + B5C6FDD0126DD292002ED666 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B5C6FE48126DD2B7002ED666 /* GameHost.m in Sources */, + B5C6FE49126DD2B7002ED666 /* HiDefGraphicsDevice.m in Sources */, + B5C6FE4A126DD2B7002ED666 /* MipmapChainCollection.m in Sources */, + B5C6FE4B126DD2B7002ED666 /* Event.m in Sources */, + B5C6FE4C126DD2B7002ED666 /* RasterizerState.m in Sources */, + B5C6FE4D126DD2B7002ED666 /* Game.m in Sources */, + B5C6FE4E126DD2B7002ED666 /* PixelBitmapContent.m in Sources */, + B5C6FE4F126DD2B7002ED666 /* TextureContent.m in Sources */, + B5C6FE50126DD2B7002ED666 /* TouchLocation.m in Sources */, + B5C6FE51126DD2B7002ED666 /* GameServiceContainer.m in Sources */, + B5C6FE52126DD2B7002ED666 /* GameComponent.m in Sources */, + B5C6FE53126DD2B7002ED666 /* Rectangle.m in Sources */, + B5C6FE54126DD2B7002ED666 /* VectorConverter.m in Sources */, + B5C6FE55126DD2B7002ED666 /* IndexBuffer.m in Sources */, + B5C6FE56126DD2B7002ED666 /* Effect.m in Sources */, + B5C6FE57126DD2B7002ED666 /* ContentIdentity.m in Sources */, + B5C6FE58126DD2B7002ED666 /* Texture.m in Sources */, + B5C6FE59126DD2B7002ED666 /* GestureSample.m in Sources */, + B5C6FE5A126DD2B7002ED666 /* BlendState.m in Sources */, + B5C6FE5B126DD2B7002ED666 /* VertexElement.m in Sources */, + B5C6FE5C126DD2B7002ED666 /* SamplerStateCollection.m in Sources */, + B5C6FE5D126DD2B7002ED666 /* Texture2DContent.m in Sources */, + B5C6FE5E126DD2B7002ED666 /* GameComponentCollection.m in Sources */, + B5C6FE5F126DD2B7002ED666 /* GameTime.m in Sources */, + B5C6FE60126DD2B7002ED666 /* BitmapContent.m in Sources */, + B5C6FE61126DD2B7002ED666 /* TouchPanel.m in Sources */, + B5C6FE62126DD2B7002ED666 /* TouchCollection.m in Sources */, + B5C6FE63126DD2B7002ED666 /* Texture2D.m in Sources */, + B5C6FE64126DD2B7002ED666 /* EffectTechnique.m in Sources */, + B5C6FE65126DD2B7002ED666 /* AdaptiveArray.m in Sources */, + B5C6FE66126DD2B7002ED666 /* Delegate.m in Sources */, + B5C6FE67126DD2B7002ED666 /* GameView.m in Sources */, + B5C6FE68126DD2B7002ED666 /* VertexPositionColorTextureArray.m in Sources */, + B5C6FE69126DD2B7002ED666 /* VertexPositionTexture.m in Sources */, + B5C6FE6A126DD2B7002ED666 /* VertexPositionColor.m in Sources */, + B5C6FE6B126DD2B7002ED666 /* ContentImporter.m in Sources */, + B5C6FE6C126DD2B7002ED666 /* VertexBuffer.m in Sources */, + B5C6FE6D126DD2B7002ED666 /* GameViewController.m in Sources */, + B5C6FE6E126DD2B7002ED666 /* TextureImporter.m in Sources */, + B5C6FE6F126DD2B7002ED666 /* GameComponentCollectionEventArgs.m in Sources */, + B5C6FE70126DD2B7002ED666 /* GameWindow.m in Sources */, + B5C6FE71126DD2B7002ED666 /* ColorPixelBitmapContent.m in Sources */, + B5C6FE72126DD2B7002ED666 /* DirectionalLight.m in Sources */, + B5C6FE73126DD2B7002ED666 /* BasicEffect.m in Sources */, + B5C6FE74126DD2B7002ED666 /* Vector3.m in Sources */, + B5C6FE75126DD2B7002ED666 /* VertexArray.m in Sources */, + B5C6FE76126DD2B7002ED666 /* MipmapChain.m in Sources */, + B5C6FE77126DD2B7002ED666 /* Texture2DContentTypeReader.m in Sources */, + B5C6FE78126DD2B7002ED666 /* SpriteBatch.m in Sources */, + B5C6FE79126DD2B7002ED666 /* VertexPositionColorArray.m in Sources */, + B5C6FE7A126DD2B7002ED666 /* Vector2.m in Sources */, + B5C6FE7B126DD2B7002ED666 /* Vector4.m in Sources */, + B5C6FE7C126DD2B7002ED666 /* DrawableGameComponent.m in Sources */, + B5C6FE7D126DD2B7002ED666 /* ContentManager.m in Sources */, + B5C6FE7E126DD2B7002ED666 /* DepthStencilState.m in Sources */, + B5C6FE7F126DD2B7002ED666 /* Quaternion.m in Sources */, + B5C6FE80126DD2B7002ED666 /* Matrix.m in Sources */, + B5C6FE81126DD2B7002ED666 /* Color.m in Sources */, + B5C6FE82126DD2B7002ED666 /* Viewport.m in Sources */, + B5C6FE83126DD2B7002ED666 /* ContentItem.m in Sources */, + B5C6FE84126DD2B7002ED666 /* ContentTypeReaderManager.m in Sources */, + B5C6FE85126DD2B7002ED666 /* VertexPositionTextureArray.m in Sources */, + B5C6FE86126DD2B7002ED666 /* VertexPositionColorTexture.m in Sources */, + B5C6FE87126DD2B7002ED666 /* VertexBufferBinding.m in Sources */, + B5C6FE88126DD2B7002ED666 /* VertexDeclaration.m in Sources */, + B5C6FE89126DD2B7002ED666 /* GraphicsDeviceManager.m in Sources */, + B5C6FE8A126DD2B7002ED666 /* ContentReader.m in Sources */, + B5C6FE8B126DD2B7002ED666 /* EventArgs.m in Sources */, + B5C6FE8C126DD2B7002ED666 /* TextureCollection.m in Sources */, + B5C6FE8D126DD2B7002ED666 /* GraphicsResource.m in Sources */, + B5C6FE8E126DD2B7002ED666 /* EffectPass.m in Sources */, + B5C6FE8F126DD2B7002ED666 /* SamplerState.m in Sources */, + B5C6FE90126DD2B7002ED666 /* GraphicsDevice.m in Sources */, + B5C6FE91126DD2B7002ED666 /* ContentTypeReader.m in Sources */, + B5C6FE92126DD2B7002ED666 /* ReachGraphicsDevice.m in Sources */, + B5C6FE93126DD2B7002ED666 /* Protocols.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D2AAC07B0554694100DB518D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -944,6 +1399,8 @@ B5EC5A081252BE9E001E7DFC /* TouchCollection.m in Sources */, B5EC5A111252BEDF001E7DFC /* TouchLocation.m in Sources */, B5EC5A501252C2DF001E7DFC /* GestureSample.m in Sources */, + B50769151264EE9500E4474F /* GameComponent.m in Sources */, + B507691D1264EF0B00E4474F /* DrawableGameComponent.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -976,7 +1433,7 @@ DSTROOT = /tmp/XNI.dst; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "XNOC iOS_Prefix.pch"; + GCC_PREFIX_HEADER = XNI_Prefix.pch; INSTALL_PATH = /usr/local/lib; PRODUCT_NAME = XNI; }; @@ -993,7 +1450,7 @@ GCC_WARN_UNUSED_VARIABLE = YES; OTHER_LDFLAGS = "-ObjC"; PREBINDING = NO; - SDKROOT = iphoneos4.0; + SDKROOT = iphoneos4.1; }; name = Debug; }; @@ -1006,7 +1463,32 @@ GCC_WARN_UNUSED_VARIABLE = YES; OTHER_LDFLAGS = "-ObjC"; PREBINDING = NO; - SDKROOT = iphoneos4.0; + SDKROOT = iphoneos4.1; + }; + name = Release; + }; + B5C6FDD7126DD293002ED666 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PREBINDING = NO; + PRODUCT_NAME = "XNI Release"; + }; + name = Debug; + }; + B5C6FDD8126DD293002ED666 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PREBINDING = NO; + PRODUCT_NAME = "XNI Release"; + ZERO_LINK = NO; }; name = Release; }; @@ -1031,6 +1513,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B5C6FEEC126DD30C002ED666 /* Build configuration list for PBXNativeTarget "XNI Release" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B5C6FDD7126DD293002ED666 /* Debug */, + B5C6FDD8126DD293002ED666 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 0867D690FE84028FC02AAC07 /* Project object */;