commit 9ad09faed5b37f5fec5161a25baa4b9c743b8ee4 Author: Joshua Moerman Date: Sat Jan 5 12:41:46 2013 +0100 First commit, pretty good and simple GLTemplate diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..54df945 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +build +*.xcworkspace +*/xcuserdata diff --git a/GLGameTemplate/App.h b/GLGameTemplate/App.h new file mode 100644 index 0000000..b8d69bb --- /dev/null +++ b/GLGameTemplate/App.h @@ -0,0 +1,63 @@ +// +// App.h +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#ifndef GLGameTemplate_App_h +#define GLGameTemplate_App_h + +#include +#include +#include "shader.h" + +#include "myGL.h" + +#include "Game.h" + +struct App { + constexpr static int preferred_frames_per_second(){ return 60; } + constexpr static bool multisample(){ return false; } + constexpr static bool depth(){ return true; } + + unsigned int width, height; + float aspect; + float time; + + Game game; + + App(float w, float h) + : width(w) + , height(h) + , aspect(w/h) + , time(0) + , game() + { + } + + ~App() { + } + + void resize(float w, float h) { + aspect = std::abs(w/h); + } + + void update(float dt) { + time += dt; + game.update(dt); + + // Update the FBO's here + // (can't be done in draw, because of apple's fbo shizzle) + } + + void draw() { + glClearColor(0.1, 0.0, 0.05, 0.0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + game.draw(); + } +}; + +#endif diff --git a/GLGameTemplate/AppDelegate.h b/GLGameTemplate/AppDelegate.h new file mode 100644 index 0000000..9d0ee4f --- /dev/null +++ b/GLGameTemplate/AppDelegate.h @@ -0,0 +1,16 @@ +// +// AppDelegate.h +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#import + +@class ViewController; + +@interface AppDelegate : UIResponder +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) ViewController *viewController; +@end diff --git a/GLGameTemplate/AppDelegate.m b/GLGameTemplate/AppDelegate.m new file mode 100644 index 0000000..255f1d6 --- /dev/null +++ b/GLGameTemplate/AppDelegate.m @@ -0,0 +1,57 @@ +// +// AppDelegate.m +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#import "AppDelegate.h" +#import "ViewController.h" + + +@implementation AppDelegate +@synthesize window = _window; +@synthesize viewController = _viewController; + +- (void)dealloc { + [_window release]; + [_viewController release]; + [super dealloc]; +} + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { + self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease]; + } else { + self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease]; + } + self.window.rootViewController = self.viewController; + [self.window makeKeyAndVisible]; + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/GLGameTemplate/Game.h b/GLGameTemplate/Game.h new file mode 100644 index 0000000..98d6143 --- /dev/null +++ b/GLGameTemplate/Game.h @@ -0,0 +1,67 @@ +// +// Game.h +// SkyRoads +// +// Created by Joshua Moerman on 12/22/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#ifndef SkyRoads_Game_h +#define SkyRoads_Game_h + +#include "myGL.h" + +constexpr static const char* attributes[] = { + "position", + "normal", + "color", + "tex_coord0" +}; + +template +std::vector from_strarray(const char* const (& strs)[N]) { + std::vector v(N); + for(auto i = 0; i < N; ++i){ + v.push_back(strs[i]); + } + return v; +} + +inline std::string getPath(std::string name, std::string kind) { + return [[[NSBundle mainBundle] pathForResource:[NSString stringWithUTF8String:name.c_str()] ofType:[NSString stringWithUTF8String:kind.c_str()]] UTF8String]; +} + +struct Game{ + std::vector triangle{ + {10.0, 0.0, 3.0, 1.0, 1.0, 1.0, 1.0}, + {-8.0, 5.0, -3.0, 1.0, 1.0, 1.0, 1.0}, + {-8.0, -5.0, 0.0, 1.0, 0.0, 1.0, 1.0} + }; + J::shader basic_shader; + + Game() + : basic_shader(getPath("basic_shader", "vsh"), getPath("basic_shader", "fsh"), from_strarray(attributes)) + {} + + void update(float dt){ + + } + + void draw(){ + GLKMatrix4 projectionMatrix = GLKMatrix4MakeOrtho(0.0, 768.0, 1024.0, 0.0f, -100, 100.0); + GLKMatrix4 modelViewMatrix = GLKMatrix4MakeTranslation(50.0f, 50.0f, 0.0f); + GLKMatrix4 modelViewProjectionMatrix = GLKMatrix4Multiply(projectionMatrix, modelViewMatrix); + GLKMatrix3 normalMatrix = GLKMatrix3InvertAndTranspose(GLKMatrix4GetMatrix3(modelViewMatrix), NULL); + + basic_shader.begin(); + basic_shader.set_uniform("modelViewProjectionMatrix", modelViewProjectionMatrix.m, 0); + basic_shader.set_uniform("normalMatrix", normalMatrix.m, 0); + + basic_shader.set_attribute("position", 3, GL_FLOAT, GL_FALSE, sizeof(gl::Vertex), &triangle[0][0]); + basic_shader.set_attribute("color", 4, GL_FLOAT, GL_FALSE, sizeof(gl::Vertex), &triangle[0][3]); + glDrawArrays(GL_TRIANGLE_STRIP, 0, triangle.size()); + basic_shader.end(); + } +}; + +#endif diff --git a/GLGameTemplate/Shaders/.DS_Store b/GLGameTemplate/Shaders/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/GLGameTemplate/Shaders/.DS_Store differ diff --git a/GLGameTemplate/Shaders/basic_shader.fsh b/GLGameTemplate/Shaders/basic_shader.fsh new file mode 100755 index 0000000..4cd88d3 --- /dev/null +++ b/GLGameTemplate/Shaders/basic_shader.fsh @@ -0,0 +1,8 @@ +varying lowp vec4 colorVarying; + +void main() { + gl_FragColor = colorVarying; + gl_FragColor.a = 1.0; +} + + diff --git a/GLGameTemplate/Shaders/basic_shader.vsh b/GLGameTemplate/Shaders/basic_shader.vsh new file mode 100755 index 0000000..a1cee87 --- /dev/null +++ b/GLGameTemplate/Shaders/basic_shader.vsh @@ -0,0 +1,13 @@ +attribute vec4 position; +attribute vec4 color; + +varying lowp vec4 colorVarying; + +uniform mat4 modelViewProjectionMatrix; +uniform mat3 normalMatrix; + +void main() { + gl_Position = modelViewProjectionMatrix * position; + + colorVarying = color; +} diff --git a/GLGameTemplate/SoundDrop2-Info.plist b/GLGameTemplate/SoundDrop2-Info.plist new file mode 100644 index 0000000..a64dc7a --- /dev/null +++ b/GLGameTemplate/SoundDrop2-Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + Vadovas.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/GLGameTemplate/SoundDrop2-Prefix.pch b/GLGameTemplate/SoundDrop2-Prefix.pch new file mode 100644 index 0000000..e8d5ce9 --- /dev/null +++ b/GLGameTemplate/SoundDrop2-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'GLGameTemplate' target in the 'GLGameTemplate' project +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/GLGameTemplate/ViewController.h b/GLGameTemplate/ViewController.h new file mode 100644 index 0000000..b95d6b7 --- /dev/null +++ b/GLGameTemplate/ViewController.h @@ -0,0 +1,15 @@ +// +// ViewController.h +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#import +#import + +@interface ViewController : GLKViewController{ +} + +@end diff --git a/GLGameTemplate/ViewController.mm b/GLGameTemplate/ViewController.mm new file mode 100644 index 0000000..3fac619 --- /dev/null +++ b/GLGameTemplate/ViewController.mm @@ -0,0 +1,114 @@ +// +// ViewController.m +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#import "ViewController.h" +#import "App.h" + +@interface ViewController () { + App * app; + float width; + float height; +} +@property (strong, nonatomic) EAGLContext *context; +- (void)setupGL; +- (void)tearDownGL; +@end + + +@implementation ViewController +@synthesize context = _context; + +- (void)dealloc { + [_context release]; + [super dealloc]; +} + +#pragma mark - View stuff +- (void)viewDidLoad { + self.preferredFramesPerSecond = App::preferred_frames_per_second(); + [super viewDidLoad]; + + self.context = [[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2] autorelease]; + if (!self.context) NSLog(@"Failed to create ES context"); + + GLKView* view = (GLKView* )self.view; + view.autoresizesSubviews = YES; + view.context = self.context; + if(App::depth()){ + view.drawableDepthFormat = GLKViewDrawableDepthFormat24; + glEnable(GL_DEPTH_TEST); + } + if(App::multisample()) view.drawableMultisample = GLKViewDrawableMultisample4X; + + [self setupGL]; +} + +- (void)viewDidUnload { + [super viewDidUnload]; + + [self tearDownGL]; + + if ([EAGLContext currentContext] == self.context) { + [EAGLContext setCurrentContext:nil]; + } + self.context = nil; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { + return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); + } else { + return YES; + } +} + +#pragma mark - openGL setup +- (void)setupGL { + [EAGLContext setCurrentContext:self.context]; + width = self.view.bounds.size.width; + height = self.view.bounds.size.height; + try { + app = new App(width, height); + } catch (std::exception & e) { + std::cout << e.what() << std::endl; + throw e; + } +} + +- (void)tearDownGL { + [EAGLContext setCurrentContext:self.context]; + + delete app; + app = 0; +} + +#pragma mark - GLKView and GLKViewController delegate methods +- (void)update { + try { + if(width != self.view.bounds.size.width || height != self.view.bounds.size.height){ + width = self.view.bounds.size.width; + height = self.view.bounds.size.height; + app->resize(width, height); + } + app->update(self.timeSinceLastUpdate); + } catch (std::exception & e) { + std::cout << e.what() << std::endl; + throw e; + } +} + +- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect { + try { + app->draw(); + } catch (std::exception & e) { + std::cout << e.what() << std::endl; + throw e; + } +} + +@end diff --git a/GLGameTemplate/en.lproj/InfoPlist.strings b/GLGameTemplate/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/GLGameTemplate/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/GLGameTemplate/en.lproj/ViewController_iPad.xib b/GLGameTemplate/en.lproj/ViewController_iPad.xib new file mode 100644 index 0000000..d276cc8 --- /dev/null +++ b/GLGameTemplate/en.lproj/ViewController_iPad.xib @@ -0,0 +1,110 @@ + + + + 1280 + 11C25 + 1919 + 1138.11 + 566.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 916 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 274 + {{0, 20}, {768, 1004}} + + + + 3 + MQA + + 2 + + + + 2 + + IBIPadFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + 1 + + + + + -1 + + + File's Owner + + + -2 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + GLKView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 3 + + + 0 + IBIPadFramework + YES + 3 + 916 + + diff --git a/GLGameTemplate/en.lproj/ViewController_iPhone.xib b/GLGameTemplate/en.lproj/ViewController_iPhone.xib new file mode 100644 index 0000000..7fcd2b4 --- /dev/null +++ b/GLGameTemplate/en.lproj/ViewController_iPhone.xib @@ -0,0 +1,108 @@ + + + + 1280 + 11C25 + 1919 + 1138.11 + 566.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 916 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {320, 460} + + + + 3 + MQA + + 2 + + + NO + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + ViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + GLKView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 4 + + + 0 + IBCocoaTouchFramework + YES + 3 + 916 + + diff --git a/GLGameTemplate/main.m b/GLGameTemplate/main.m new file mode 100644 index 0000000..243c730 --- /dev/null +++ b/GLGameTemplate/main.m @@ -0,0 +1,18 @@ +// +// main.m +// GLGameTemplate +// +// Created by Joshua Moerman on 5/4/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/GLGameTemplate/myGL.h b/GLGameTemplate/myGL.h new file mode 100644 index 0000000..c7e1d26 --- /dev/null +++ b/GLGameTemplate/myGL.h @@ -0,0 +1,35 @@ +// +// myGL.h +// SkyRoads +// +// Created by Joshua Moerman on 12/22/12. +// Copyright (c) 2012 Vadovas. All rights reserved. +// + +#ifndef SkyRoads_myGL_h +#define SkyRoads_myGL_h + +#import +#include + +namespace gl { + typedef std::array Vertex; + typedef std::array Quad; //degenerate + + Vertex translate(Vertex v, GLfloat x, GLfloat y, GLfloat z){ + v[0] += x; + v[1] += y; + v[2] += z; + return v; + } + + Vertex scale(Vertex v, GLfloat x, GLfloat y, GLfloat z){ + v[0] *= x; + v[1] *= y; + v[2] *= z; + return v; + } +} + + +#endif diff --git a/SoundDrop2.xcodeproj/project.pbxproj b/SoundDrop2.xcodeproj/project.pbxproj new file mode 100644 index 0000000..054f187 --- /dev/null +++ b/SoundDrop2.xcodeproj/project.pbxproj @@ -0,0 +1,403 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4280A91C1553DD4C00664DC2 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4280A91B1553DD4C00664DC2 /* UIKit.framework */; }; + 4280A91E1553DD4C00664DC2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4280A91D1553DD4C00664DC2 /* Foundation.framework */; }; + 4280A9201553DD4C00664DC2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4280A91F1553DD4C00664DC2 /* CoreGraphics.framework */; }; + 4280A9221553DD4C00664DC2 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4280A9211553DD4C00664DC2 /* GLKit.framework */; }; + 4280A9241553DD4C00664DC2 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4280A9231553DD4C00664DC2 /* OpenGLES.framework */; }; + 4280A92A1553DD4C00664DC2 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4280A9281553DD4C00664DC2 /* InfoPlist.strings */; }; + 4280A92C1553DD4C00664DC2 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4280A92B1553DD4C00664DC2 /* main.m */; }; + 4280A9301553DD4C00664DC2 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4280A92F1553DD4C00664DC2 /* AppDelegate.m */; }; + 4280A9371553DD4C00664DC2 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4280A9361553DD4C00664DC2 /* ViewController.mm */; }; + 4280A93A1553DD4C00664DC2 /* ViewController_iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4280A9381553DD4C00664DC2 /* ViewController_iPhone.xib */; }; + 4280A93D1553DD4C00664DC2 /* ViewController_iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4280A93B1553DD4C00664DC2 /* ViewController_iPad.xib */; }; + 42E092901553DFC2002EA900 /* libJ.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 42E0928C1553DFB7002EA900 /* libJ.a */; }; + 42E092CA1553FF6B002EA900 /* basic_shader.fsh in Sources */ = {isa = PBXBuildFile; fileRef = 42E092C41553FF6B002EA900 /* basic_shader.fsh */; }; + 42E092CB1553FF6B002EA900 /* basic_shader.vsh in Sources */ = {isa = PBXBuildFile; fileRef = 42E092C51553FF6B002EA900 /* basic_shader.vsh */; }; + 42E092D115540857002EA900 /* basic_shader.fsh in Resources */ = {isa = PBXBuildFile; fileRef = 42E092C41553FF6B002EA900 /* basic_shader.fsh */; }; + 42E092D215540857002EA900 /* basic_shader.vsh in Resources */ = {isa = PBXBuildFile; fileRef = 42E092C51553FF6B002EA900 /* basic_shader.vsh */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 42E0928B1553DFB7002EA900 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 42E092841553DFB7002EA900 /* J.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 42681365140A321800CBF943; + remoteInfo = J; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 42458D5C168605DA0089C2A3 /* Game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Game.h; sourceTree = ""; }; + 4280A9171553DD4C00664DC2 /* SoundDrop2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SoundDrop2.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4280A91B1553DD4C00664DC2 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 4280A91D1553DD4C00664DC2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 4280A91F1553DD4C00664DC2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 4280A9211553DD4C00664DC2 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; + 4280A9231553DD4C00664DC2 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 4280A9271553DD4C00664DC2 /* SoundDrop2-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SoundDrop2-Info.plist"; sourceTree = ""; }; + 4280A9291553DD4C00664DC2 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 4280A92B1553DD4C00664DC2 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 4280A92D1553DD4C00664DC2 /* SoundDrop2-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SoundDrop2-Prefix.pch"; sourceTree = ""; }; + 4280A92E1553DD4C00664DC2 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 4280A92F1553DD4C00664DC2 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 4280A9351553DD4C00664DC2 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 4280A9361553DD4C00664DC2 /* ViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ViewController.mm; sourceTree = ""; }; + 4280A9391553DD4C00664DC2 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPhone.xib; sourceTree = ""; }; + 4280A93C1553DD4C00664DC2 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ViewController_iPad.xib; sourceTree = ""; }; + 42E092841553DFB7002EA900 /* J.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = J.xcodeproj; path = ../J/J.xcodeproj; sourceTree = ""; }; + 42E092971553F367002EA900 /* App.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = App.h; sourceTree = ""; }; + 42E092C41553FF6B002EA900 /* basic_shader.fsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = basic_shader.fsh; sourceTree = ""; }; + 42E092C51553FF6B002EA900 /* basic_shader.vsh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = basic_shader.vsh; sourceTree = ""; }; + 42FF1C4C1685F15500E1541C /* myGL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = myGL.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4280A9141553DD4C00664DC2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 42E092901553DFC2002EA900 /* libJ.a in Frameworks */, + 4280A91C1553DD4C00664DC2 /* UIKit.framework in Frameworks */, + 4280A91E1553DD4C00664DC2 /* Foundation.framework in Frameworks */, + 4280A9201553DD4C00664DC2 /* CoreGraphics.framework in Frameworks */, + 4280A9221553DD4C00664DC2 /* GLKit.framework in Frameworks */, + 4280A9241553DD4C00664DC2 /* OpenGLES.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4280A90C1553DD4C00664DC2 = { + isa = PBXGroup; + children = ( + 4280A9251553DD4C00664DC2 /* SkyRoads */, + 4280A91A1553DD4C00664DC2 /* Frameworks */, + 4280A9181553DD4C00664DC2 /* Products */, + ); + sourceTree = ""; + }; + 4280A9181553DD4C00664DC2 /* Products */ = { + isa = PBXGroup; + children = ( + 4280A9171553DD4C00664DC2 /* SoundDrop2.app */, + ); + name = Products; + sourceTree = ""; + }; + 4280A91A1553DD4C00664DC2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 42E092841553DFB7002EA900 /* J.xcodeproj */, + 4280A91B1553DD4C00664DC2 /* UIKit.framework */, + 4280A91D1553DD4C00664DC2 /* Foundation.framework */, + 4280A91F1553DD4C00664DC2 /* CoreGraphics.framework */, + 4280A9211553DD4C00664DC2 /* GLKit.framework */, + 4280A9231553DD4C00664DC2 /* OpenGLES.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4280A9251553DD4C00664DC2 /* SkyRoads */ = { + isa = PBXGroup; + children = ( + 42E092971553F367002EA900 /* App.h */, + 42458D5C168605DA0089C2A3 /* Game.h */, + 42FF1C4C1685F15500E1541C /* myGL.h */, + 42E092A81553FDDB002EA900 /* Shaders */, + 42E092981553F7E6002EA900 /* GLViews */, + 4280A9261553DD4C00664DC2 /* Supporting Files */, + ); + name = SkyRoads; + path = GLGameTemplate; + sourceTree = ""; + }; + 4280A9261553DD4C00664DC2 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 4280A92E1553DD4C00664DC2 /* AppDelegate.h */, + 4280A92F1553DD4C00664DC2 /* AppDelegate.m */, + 4280A9271553DD4C00664DC2 /* SoundDrop2-Info.plist */, + 4280A9281553DD4C00664DC2 /* InfoPlist.strings */, + 4280A92B1553DD4C00664DC2 /* main.m */, + 4280A92D1553DD4C00664DC2 /* SoundDrop2-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 42E092851553DFB7002EA900 /* Products */ = { + isa = PBXGroup; + children = ( + 42E0928C1553DFB7002EA900 /* libJ.a */, + ); + name = Products; + sourceTree = ""; + }; + 42E092981553F7E6002EA900 /* GLViews */ = { + isa = PBXGroup; + children = ( + 4280A9351553DD4C00664DC2 /* ViewController.h */, + 4280A9361553DD4C00664DC2 /* ViewController.mm */, + 4280A9381553DD4C00664DC2 /* ViewController_iPhone.xib */, + 4280A93B1553DD4C00664DC2 /* ViewController_iPad.xib */, + ); + name = GLViews; + sourceTree = ""; + }; + 42E092A81553FDDB002EA900 /* Shaders */ = { + isa = PBXGroup; + children = ( + 42E092C11553FF6B002EA900 /* Shaders */, + ); + path = Shaders; + sourceTree = ""; + }; + 42E092C11553FF6B002EA900 /* Shaders */ = { + isa = PBXGroup; + children = ( + 42E092C41553FF6B002EA900 /* basic_shader.fsh */, + 42E092C51553FF6B002EA900 /* basic_shader.vsh */, + ); + name = Shaders; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4280A9161553DD4C00664DC2 /* SoundDrop2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4280A9401553DD4C00664DC2 /* Build configuration list for PBXNativeTarget "SoundDrop2" */; + buildPhases = ( + 4280A9131553DD4C00664DC2 /* Sources */, + 4280A9141553DD4C00664DC2 /* Frameworks */, + 4280A9151553DD4C00664DC2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SoundDrop2; + productName = GLGameTemplate; + productReference = 4280A9171553DD4C00664DC2 /* SoundDrop2.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 4280A90E1553DD4C00664DC2 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = Vadovas; + }; + buildConfigurationList = 4280A9111553DD4C00664DC2 /* Build configuration list for PBXProject "SoundDrop2" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + nl, + ); + mainGroup = 4280A90C1553DD4C00664DC2; + productRefGroup = 4280A9181553DD4C00664DC2 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 42E092851553DFB7002EA900 /* Products */; + ProjectRef = 42E092841553DFB7002EA900 /* J.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4280A9161553DD4C00664DC2 /* SoundDrop2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 42E0928C1553DFB7002EA900 /* libJ.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libJ.a; + remoteRef = 42E0928B1553DFB7002EA900 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 4280A9151553DD4C00664DC2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 42E092D115540857002EA900 /* basic_shader.fsh in Resources */, + 42E092D215540857002EA900 /* basic_shader.vsh in Resources */, + 4280A92A1553DD4C00664DC2 /* InfoPlist.strings in Resources */, + 4280A93A1553DD4C00664DC2 /* ViewController_iPhone.xib in Resources */, + 4280A93D1553DD4C00664DC2 /* ViewController_iPad.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4280A9131553DD4C00664DC2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4280A92C1553DD4C00664DC2 /* main.m in Sources */, + 4280A9301553DD4C00664DC2 /* AppDelegate.m in Sources */, + 4280A9371553DD4C00664DC2 /* ViewController.mm in Sources */, + 42E092CA1553FF6B002EA900 /* basic_shader.fsh in Sources */, + 42E092CB1553FF6B002EA900 /* basic_shader.vsh in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 4280A9281553DD4C00664DC2 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 4280A9291553DD4C00664DC2 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 4280A9381553DD4C00664DC2 /* ViewController_iPhone.xib */ = { + isa = PBXVariantGroup; + children = ( + 4280A9391553DD4C00664DC2 /* en */, + ); + name = ViewController_iPhone.xib; + sourceTree = ""; + }; + 4280A93B1553DD4C00664DC2 /* ViewController_iPad.xib */ = { + isa = PBXVariantGroup; + children = ( + 4280A93C1553DD4C00664DC2 /* en */, + ); + name = ViewController_iPad.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 4280A93E1553DD4C00664DC2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 4280A93F1553DD4C00664DC2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 5.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 4280A9411553DD4C00664DC2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + "GCC_THUMB_SUPPORT[arch=armv6]" = ""; + HEADER_SEARCH_PATHS = "../J/**"; + INFOPLIST_FILE = "$(SRCROOT)/GLGameTemplate/SoundDrop2-Info.plist"; + PRODUCT_NAME = SoundDrop2; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 4280A9421553DD4C00664DC2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + "GCC_THUMB_SUPPORT[arch=armv6]" = ""; + HEADER_SEARCH_PATHS = "../J/**"; + INFOPLIST_FILE = "$(SRCROOT)/GLGameTemplate/SoundDrop2-Info.plist"; + PRODUCT_NAME = SoundDrop2; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4280A9111553DD4C00664DC2 /* Build configuration list for PBXProject "SoundDrop2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4280A93E1553DD4C00664DC2 /* Debug */, + 4280A93F1553DD4C00664DC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4280A9401553DD4C00664DC2 /* Build configuration list for PBXNativeTarget "SoundDrop2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4280A9411553DD4C00664DC2 /* Debug */, + 4280A9421553DD4C00664DC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 4280A90E1553DD4C00664DC2 /* Project object */; +}