aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom-Ski <tomaszwojciechowski@hotmail.co.uk>2016-05-11 22:26:33 +0100
committerTom-Ski <tomaszwojciechowski@hotmail.co.uk>2016-05-11 22:26:33 +0100
commitaeee032f4ca0fe3851fa3aa2e5821675239301bc (patch)
tree00f78efd3561b3fbbe87f67555302d602a56fbfb
parent7dadefc6694a8380005b8c960aef14109e1f7b24 (diff)
parentd6c17c069b74acfa6f852a6c0c81d4d4e858d613 (diff)
downloadlibgdx-aeee032f4ca0fe3851fa3aa2e5821675239301bc.tar.gz
Merge branch 'moe'
-rw-r--r--.gitignore11
-rw-r--r--backends/gdx-backend-moe/.classpath8
-rw-r--r--backends/gdx-backend-moe/.project17
-rwxr-xr-xbackends/gdx-backend-moe/build-objectal.sh36
-rwxr-xr-xbackends/gdx-backend-moe/libs/intel-moe-core.jarbin0 -> 8743184 bytes
-rwxr-xr-xbackends/gdx-backend-moe/libs/intel-moe-ios.jarbin0 -> 4487540 bytes
-rw-r--r--backends/gdx-backend-moe/pom.xml59
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplication.java458
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplicationConfiguration.java100
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSAudio.java70
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSDevice.java96
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFileHandle.java66
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFiles.java85
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGLKView.java79
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGraphics.java495
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSInput.java656
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSMusic.java122
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSNet.java68
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSPreferences.java194
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSSound.java164
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSUIViewController.java104
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSViewControllerListener.java30
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/custom/HWMachine.java48
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALBuffer.java121
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALChannelSource.java372
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALContext.java198
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALDevice.java133
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALListener.java186
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALOrientation.java69
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALPoint.java75
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSource.java284
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSourcePool.java77
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSource.java466
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALVector.java75
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioSession.java230
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioTrack.java396
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSimpleAudio.java343
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendListener.java44
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendManager.java42
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES20.java369
-rwxr-xr-xbackends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES30.java217
-rw-r--r--build.gradle25
-rw-r--r--extensions/gdx-bullet/jni/maven/pom.xml8
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/BuildScriptHelper.java12
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java23
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetup.java26
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetupUI.java7
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/gradle.properties4
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/build.gradle56
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-375w-667h@2x.pngbin0 -> 98595 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-414w-736h@3x.pngbin0 -> 110696 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-568h@2x.pngbin0 -> 84382 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default.pngbin0 -> 29751 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x.pngbin0 -> 85109 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x~ipad.pngbin0 -> 97633 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default~ipad.pngbin0 -> 34134 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72.pngbin0 -> 4439 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72@2x.pngbin0 -> 6231 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon.pngbin0 -> 4028 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon@2x.pngbin0 -> 5679 bytes
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/src/IOSMoeLauncher29
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/Info-Test.plist36
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/build.xcconfig30
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj550
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/Info.plist50
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/build.xcconfig32
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/custom.xcconfig1
-rw-r--r--extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/main.cpp35
-rw-r--r--pom.xml2
-rw-r--r--settings.gradle2
-rw-r--r--test/core/assets/badlogic.jpgbin0 -> 68465 bytes
-rw-r--r--test/ios-moe/resources/Default-375w-667h@2x.pngbin0 -> 98595 bytes
-rw-r--r--test/ios-moe/resources/Default-414w-736h@3x.pngbin0 -> 110696 bytes
-rw-r--r--test/ios-moe/resources/Default-568h@2x.pngbin0 -> 84382 bytes
-rw-r--r--test/ios-moe/resources/Default.pngbin0 -> 29751 bytes
-rw-r--r--test/ios-moe/resources/Default@2x.pngbin0 -> 85109 bytes
-rw-r--r--test/ios-moe/resources/Default@2x~ipad.pngbin0 -> 97633 bytes
-rw-r--r--test/ios-moe/resources/Default~ipad.pngbin0 -> 34134 bytes
-rw-r--r--test/ios-moe/resources/Icon-72.pngbin0 -> 4439 bytes
-rw-r--r--test/ios-moe/resources/Icon-72@2x.pngbin0 -> 6231 bytes
-rw-r--r--test/ios-moe/resources/Icon.pngbin0 -> 4028 bytes
-rw-r--r--test/ios-moe/resources/Icon@2x.pngbin0 -> 5679 bytes
-rw-r--r--tests/gdx-tests-ios-intel/build.gradle79
-rw-r--r--tests/gdx-tests-ios-intel/src/main/java/com/badlogicgames/gdx/tests/IOSTests.java45
-rw-r--r--tests/gdx-tests-ios-intel/src/main/resources/LaunchScreen.xib36
-rw-r--r--tests/gdx-tests-ios-intel/src/main/resources/MainUI.storyboard61
-rw-r--r--tests/gdx-tests-ios-intel/src/main/resources/intel_logo.pngbin0 -> 26643 bytes
-rw-r--r--tests/gdx-tests-ios-intel/src/main/resources/layout/sample_design.ixml18
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests-Test/Info-Test.plist36
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests-Test/build.xcconfig30
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests.xcodeproj/project.pbxproj526
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests/Info.plist54
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests/build.xcconfig32
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests/custom.xcconfig1
-rw-r--r--tests/gdx-tests-ios-intel/xcode/IOSTests/main.cpp35
-rw-r--r--tests/gdx-tests-iosrobovm/src/com/badlogic/gdx/tests/IOSRobovmTests.java6
-rw-r--r--tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java10
97 files changed, 8533 insertions, 27 deletions
diff --git a/.gitignore b/.gitignore
index 9ac65dd1d..09b8bd4dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,10 @@
*~
.*.swp
.DS_STORE
-
+robovm-build/
+project.xcworkspace/
+xcuserdata/
+xcode/native/
.gradle/
build/
bin/
@@ -66,3 +69,9 @@ libgdx-*.zip.MD5
#directories created by fetch.xml
/tests/gdx-tests-android/libs
/tmp/
+
+#gradle wrapper
+/gradle/
+/gradlew
+/gradlew.bat
+/local.properties
diff --git a/backends/gdx-backend-moe/.classpath b/backends/gdx-backend-moe/.classpath
new file mode 100644
index 000000000..94e1a482d
--- /dev/null
+++ b/backends/gdx-backend-moe/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/gdx"/>
+ <classpathentry kind="lib" path="libs/intel-moe-core.jar"/>
+ <classpathentry kind="lib" path="libs/intel-moe-ios.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath> \ No newline at end of file
diff --git a/backends/gdx-backend-moe/.project b/backends/gdx-backend-moe/.project
new file mode 100644
index 000000000..60c292a10
--- /dev/null
+++ b/backends/gdx-backend-moe/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>gdx-backend-moe</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription> \ No newline at end of file
diff --git a/backends/gdx-backend-moe/build-objectal.sh b/backends/gdx-backend-moe/build-objectal.sh
new file mode 100755
index 000000000..6e672d717
--- /dev/null
+++ b/backends/gdx-backend-moe/build-objectal.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+BASE=$(cd $(dirname $0); pwd -P)
+
+BUILD_DIR=$BASE/target/objectal
+rm -rf $BUILD_DIR
+mkdir -p $BUILD_DIR
+
+curl https://codeload.github.com/libgdx/ObjectAL-for-iPhone/legacy.tar.gz/master -o $BUILD_DIR/objectal.tar.gz
+
+tar xvfz $BUILD_DIR/objectal.tar.gz -C $BUILD_DIR --strip-components 1
+
+XCODEPROJ=$BUILD_DIR/ObjectAL/ObjectAL.xcodeproj
+
+xcodebuild -project $XCODEPROJ -arch armv7 -sdk iphoneos CONFIGURATION_BUILD_DIR=$BUILD_DIR/armv7 OTHER_CFLAGS="-fembed-bitcode -miphoneos-version-min=6.0"
+xcodebuild -project $XCODEPROJ -arch arm64 -sdk iphoneos CONFIGURATION_BUILD_DIR=$BUILD_DIR/arm64 OTHER_CFLAGS="-fembed-bitcode -miphoneos-version-min=6.0"
+xcodebuild -project $XCODEPROJ -arch i386 -sdk iphonesimulator CONFIGURATION_BUILD_DIR=$BUILD_DIR/i386 OTHER_CFLAGS="-miphoneos-version-min=6.0"
+xcodebuild -project $XCODEPROJ -arch x86_64 -sdk iphonesimulator CONFIGURATION_BUILD_DIR=$BUILD_DIR/x86_64 OTHER_CFLAGS="-miphoneos-version-min=6.0"
+xcodebuild -project $XCODEPROJ -arch arm64 -sdk appletvos CONFIGURATION_BUILD_DIR=$BUILD_DIR/tvos-arm64 OTHER_CFLAGS="-fembed-bitcode -mtvos-version-min=9.0"
+xcodebuild -project $XCODEPROJ -arch x86_64 -sdk appletvsimulator CONFIGURATION_BUILD_DIR=$BUILD_DIR/tvos-x86_64 OTHER_CFLAGS="-mtvos-version-min=9.0"
+
+lipo $BUILD_DIR/armv7/libObjectAL.a \
+ $BUILD_DIR/arm64/libObjectAL.a \
+ $BUILD_DIR/i386/libObjectAL.a \
+ $BUILD_DIR/x86_64/libObjectAL.a \
+ -create \
+ -output $BUILD_DIR/libObjectAL.a
+
+cp $BUILD_DIR/libObjectAL.a $BASE/../../gdx/libs/ios32/
+
+lipo $BUILD_DIR/tvos-arm64/libObjectAL.a \
+ $BUILD_DIR/tvos-x86_64/libObjectAL.a \
+ -create \
+ -output $BUILD_DIR/libObjectAL.a.tvos
+
+cp $BUILD_DIR/libObjectAL.a.tvos $BASE/../../gdx/libs/ios32/
diff --git a/backends/gdx-backend-moe/libs/intel-moe-core.jar b/backends/gdx-backend-moe/libs/intel-moe-core.jar
new file mode 100755
index 000000000..b03907926
--- /dev/null
+++ b/backends/gdx-backend-moe/libs/intel-moe-core.jar
Binary files differ
diff --git a/backends/gdx-backend-moe/libs/intel-moe-ios.jar b/backends/gdx-backend-moe/libs/intel-moe-ios.jar
new file mode 100755
index 000000000..93059bed9
--- /dev/null
+++ b/backends/gdx-backend-moe/libs/intel-moe-ios.jar
Binary files differ
diff --git a/backends/gdx-backend-moe/pom.xml b/backends/gdx-backend-moe/pom.xml
new file mode 100644
index 000000000..cebc6e6da
--- /dev/null
+++ b/backends/gdx-backend-moe/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>com.badlogicgames.gdx</groupId>
+ <artifactId>gdx-parent</artifactId>
+ <version>1.9.3-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>gdx-backend-moe</artifactId>
+ <packaging>jar</packaging>
+ <name>libGDX iOS Multi-OS Engine Backend</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>gdx</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.intel.moe</groupId>
+ <artifactId>moe-core</artifactId>
+ <version>${moe.version}</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/libs/intel-moe-core.jar</systemPath>
+ <optional>true</optional>
+ </dependency>
+
+ <dependency>
+ <groupId>com.intel.moe</groupId>
+ <artifactId>moe-ios</artifactId>
+ <version>${moe.version}</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/libs/intel-moe-ios.jar</systemPath>
+ <optional>true</optional>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>jar-no-fork</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplication.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplication.java
new file mode 100755
index 000000000..3375d80e2
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplication.java
@@ -0,0 +1,458 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import android.util.Log;
+import com.badlogic.gdx.Application;
+import com.badlogic.gdx.ApplicationListener;
+import com.badlogic.gdx.Audio;
+import com.badlogic.gdx.Files;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Graphics;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.LifecycleListener;
+import com.badlogic.gdx.Net;
+import com.badlogic.gdx.Preferences;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALAudioSession;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALSimpleAudio;
+import com.badlogic.gdx.utils.Array;
+import com.badlogic.gdx.utils.Clipboard;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.objc.ann.Selector;
+import ios.NSObject;
+import ios.coregraphics.struct.CGPoint;
+import ios.coregraphics.struct.CGRect;
+import ios.coregraphics.struct.CGSize;
+import ios.foundation.NSDictionary;
+import ios.foundation.NSMutableDictionary;
+import ios.foundation.NSString;
+import ios.foundation.NSThread;
+import ios.uikit.UIApplication;
+import ios.uikit.UIDevice;
+import ios.uikit.UIPasteboard;
+import ios.uikit.UIScreen;
+import ios.uikit.UIViewController;
+import ios.uikit.UIWindow;
+import ios.uikit.enums.UIInterfaceOrientation;
+import ios.uikit.enums.UIUserInterfaceIdiom;
+import ios.uikit.protocol.UIApplicationDelegate;
+
+import java.io.File;
+
+public class IOSApplication implements Application {
+
+ public static abstract class Delegate extends NSObject implements UIApplicationDelegate {
+
+ private IOSApplication app;
+
+ protected Delegate (Pointer peer) {
+ super(peer);
+ }
+
+ @Selector("alloc")
+ public static native Delegate alloc();
+
+ protected abstract IOSApplication createApplication ();
+
+ @Override
+ public boolean applicationDidFinishLaunchingWithOptions (UIApplication application, NSDictionary<?, ?> launchOptions) {
+ this.app = createApplication();
+ return app.didFinishLaunching(application, launchOptions);
+ }
+
+ @Override
+ public void applicationDidBecomeActive (UIApplication application) {
+ app.didBecomeActive(application);
+ }
+
+
+ @Override
+ public void applicationWillEnterForeground (UIApplication application) {
+ app.willEnterForeground(application);
+ }
+
+ @Override
+ public void applicationWillResignActive (UIApplication application) {
+ app.willResignActive(application);
+ }
+
+ @Override
+ public void applicationWillTerminate (UIApplication application) {
+ app.willTerminate(application);
+ }
+ }
+
+ UIApplication uiApp;
+ UIWindow uiWindow;
+ ApplicationListener listener;
+ IOSViewControllerListener viewControllerListener;
+ IOSApplicationConfiguration config;
+ IOSGraphics graphics;
+ IOSAudio audio;
+ IOSFiles files;
+ IOSInput input;
+ IOSNet net;
+ int logLevel = Application.LOG_DEBUG;
+
+ /** The display scale factor (1.0f for normal; 2.0f to use retina coordinates/dimensions). */
+ float displayScaleFactor;
+
+ private CGRect lastScreenBounds = null;
+
+ Array<Runnable> runnables = new Array<Runnable>();
+ Array<Runnable> executedRunnables = new Array<Runnable>();
+ Array<LifecycleListener> lifecycleListeners = new Array<LifecycleListener>();
+
+ public IOSApplication (ApplicationListener listener, IOSApplicationConfiguration config) {
+ this.listener = listener;
+ this.config = config;
+ }
+
+ final boolean didFinishLaunching (UIApplication uiApp, NSDictionary<?, ?> launchOptions) {
+ Gdx.app = this;
+ this.uiApp = uiApp;
+
+ // enable or disable screen dimming
+ UIApplication.sharedApplication().setIdleTimerDisabled(config.preventScreenDimming);
+
+ Gdx.app.debug("IOSApplication", "iOS version: " + UIDevice.currentDevice().systemVersion());
+ // fix the scale factor if we have a retina device (NOTE: iOS screen sizes are in "points" not pixels by default!)
+
+ float scale = (float)(getIosVersion() >= 8 ? UIScreen.mainScreen().nativeScale() : UIScreen.mainScreen()
+ .nativeScale());
+ if (scale >= 2.0f) {
+ Gdx.app.debug("IOSApplication", "scale: " + scale);
+ if (UIDevice.currentDevice().userInterfaceIdiom() == UIUserInterfaceIdiom.Pad) {
+ // it's an iPad!
+ displayScaleFactor = config.displayScaleLargeScreenIfRetina * scale;
+ } else {
+ // it's an iPod or iPhone
+ displayScaleFactor = config.displayScaleSmallScreenIfRetina * scale;
+ }
+ } else {
+ // no retina screen: no scaling!
+ if (UIDevice.currentDevice().userInterfaceIdiom() == UIUserInterfaceIdiom.Pad) {
+ // it's an iPad!
+ displayScaleFactor = config.displayScaleLargeScreenIfNonRetina;
+ } else {
+ // it's an iPod or iPhone
+ displayScaleFactor = config.displayScaleSmallScreenIfNonRetina;
+ }
+ }
+
+ // setup libgdx
+ this.input = new IOSInput(this);
+ this.graphics = IOSGraphics.alloc().init(scale, this, config, input, config.useGL30);
+ Gdx.gl = Gdx.gl20 = graphics.gl20;
+ Gdx.gl30 = graphics.gl30;
+ this.files = new IOSFiles();
+ this.audio = new IOSAudio(config);
+ this.net = new IOSNet(this);
+
+ Gdx.files = this.files;
+ Gdx.graphics = this.graphics;
+ Gdx.audio = this.audio;
+ Gdx.input = this.input;
+ Gdx.net = this.net;
+
+ this.input.setupPeripherals();
+
+ this.uiWindow = UIWindow.alloc().initWithFrame(UIScreen.mainScreen().bounds());
+ this.uiWindow.setRootViewController(this.graphics.viewController);
+ this.uiWindow.makeKeyAndVisible();
+ Gdx.app.debug("IOSApplication", "created");
+ return true;
+ }
+
+ private int getIosVersion () {
+ String systemVersion = UIDevice.currentDevice().systemVersion();
+ int version = Integer.parseInt(systemVersion.split("\\.")[0]);
+ return version;
+ }
+
+ /** Return the UI view controller of IOSApplication
+ * @return the view controller of IOSApplication */
+ public UIViewController getUIViewController () {
+ return graphics.viewController;
+ }
+
+ /** Return the UI Window of IOSApplication
+ * @return the window */
+ public UIWindow getUIWindow () {
+ return uiWindow;
+ }
+
+ /** GL View spans whole screen, that is, even under the status bar. iOS can also rotate the screen, which is not handled
+ * consistently over iOS versions. This method returns, in pixels, rectangle in which libGDX draws.
+ *
+ * @return dimensions of space we draw to, adjusted for device orientation */
+ protected CGRect getBounds () {
+ final CGRect screenBounds = UIScreen.mainScreen().bounds();
+ final CGRect statusBarFrame = uiApp.statusBarFrame();
+ final long statusBarOrientation = uiApp.statusBarOrientation();
+
+ double statusBarHeight = Math.min(statusBarFrame.size().width(), statusBarFrame.size().height());
+
+ double screenWidth = screenBounds.size().width();
+ double screenHeight = screenBounds.size().height();
+
+ // Make sure that the orientation is consistent with ratios. Should be, but may not be on older iOS versions
+ if (statusBarOrientation == UIInterfaceOrientation.LandscapeLeft || statusBarOrientation == UIInterfaceOrientation.LandscapeRight) {
+ if (screenHeight > screenWidth) {
+ debug("IOSApplication", "Switching reported width and height (w=" + screenWidth + " h=" + screenHeight + ")");
+ double tmp = screenHeight;
+ // noinspection SuspiciousNameCombination
+ screenHeight = screenWidth;
+ screenWidth = tmp;
+ }
+ }
+
+ // update width/height depending on display scaling selected
+ screenWidth *= displayScaleFactor;
+ screenHeight *= displayScaleFactor;
+
+ if (statusBarHeight != 0.0) {
+ debug("IOSApplication", "Status bar is visible (height = " + statusBarHeight + ")");
+ statusBarHeight *= displayScaleFactor;
+ screenHeight -= statusBarHeight;
+ } else {
+ debug("IOSApplication", "Status bar is not visible");
+ }
+
+ debug("IOSApplication", "Total computed bounds are w=" + screenWidth + " h=" + screenHeight);
+
+ return lastScreenBounds = new CGRect(new CGPoint(0, statusBarHeight), new CGSize(screenWidth, screenHeight));
+ }
+
+ protected CGRect getCachedBounds () {
+ if (lastScreenBounds == null)
+ return getBounds();
+ else
+ return lastScreenBounds;
+ }
+
+ final void didBecomeActive (UIApplication uiApp) {
+ Gdx.app.debug("IOSApplication", "resumed");
+ // workaround for ObjectAL crash problem
+ // see: https://groups.google.com/forum/?fromgroups=#!topic/objectal-for-iphone/ubRWltp_i1Q
+ OALAudioSession.sharedInstance().forceEndInterruption();
+ if (config.allowIpod) {
+ OALSimpleAudio.sharedInstance().setUseHardwareIfAvailable(false);
+ }
+ graphics.makeCurrent();
+ graphics.resume();
+ }
+
+ final void willEnterForeground (UIApplication uiApp) {
+ // workaround for ObjectAL crash problem
+ // see: https://groups.google.com/forum/?fromgroups=#!topic/objectal-for-iphone/ubRWltp_i1Q
+ OALAudioSession.sharedInstance().forceEndInterruption();
+ }
+
+ final void willResignActive (UIApplication uiApp) {
+ Gdx.app.debug("IOSApplication", "paused");
+ graphics.makeCurrent();
+ graphics.pause();
+ Gdx.gl.glFlush();
+ }
+
+ final void willTerminate (UIApplication uiApp) {
+ Gdx.app.debug("IOSApplication", "disposed");
+ graphics.makeCurrent();
+ Array<LifecycleListener> listeners = lifecycleListeners;
+ synchronized (listeners) {
+ for (LifecycleListener listener : listeners) {
+ listener.pause();
+ }
+ }
+ listener.dispose();
+ Gdx.gl.glFlush();
+ }
+
+ @Override
+ public ApplicationListener getApplicationListener () {
+ return listener;
+ }
+
+ @Override
+ public Graphics getGraphics () {
+ return graphics;
+ }
+
+ @Override
+ public Audio getAudio () {
+ return audio;
+ }
+
+ @Override
+ public Input getInput () {
+ return input;
+ }
+
+ @Override
+ public Files getFiles () {
+ return files;
+ }
+
+ @Override
+ public Net getNet () {
+ return net;
+ }
+
+ @Override
+ public void debug (String tag, String message) {
+ if (logLevel >= LOG_DEBUG) {
+ Log.d(tag, message);
+ }
+ }
+
+ @Override
+ public void debug (String tag, String message, Throwable exception) {
+ if (logLevel >= LOG_DEBUG) {
+ Log.d(tag, message, exception);
+ }
+ }
+
+ @Override
+ public void log (String tag, String message) {
+ if (logLevel >= LOG_INFO) Log.i(tag, message);
+ }
+
+ @Override
+ public void log (String tag, String message, Throwable exception) {
+ if (logLevel >= LOG_INFO) Log.i(tag, message, exception);
+ }
+
+ @Override
+ public void error (String tag, String message) {
+ if (logLevel >= LOG_ERROR) Log.e(tag, message);
+ }
+
+ @Override
+ public void error (String tag, String message, Throwable exception) {
+ if (logLevel >= LOG_ERROR) Log.e(tag, message, exception);
+ }
+
+ @Override
+ public void setLogLevel (int logLevel) {
+ this.logLevel = logLevel;
+ }
+
+ @Override
+ public int getLogLevel () {
+ return logLevel;
+ }
+
+ @Override
+ public ApplicationType getType () {
+ return ApplicationType.iOS;
+ }
+
+ @Override
+ public int getVersion () {
+ return Integer.parseInt(UIDevice.currentDevice().systemVersion().split("\\.")[0]);
+ }
+
+ @Override
+ public long getJavaHeap () {
+ return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
+ }
+
+ @Override
+ public long getNativeHeap () {
+ return getJavaHeap();
+ }
+
+ @Override
+ public Preferences getPreferences (String name) {
+ File libraryPath = new File(System.getenv("HOME"), "Library");
+ File finalPath = new File(libraryPath, name + ".plist");
+ String path = libraryPath + "/" + name + ".plist";
+
+ NSMutableDictionary<NSString, NSObject> nsDictionary = NSMutableDictionary.dictionaryWithContentsOfFile(path);
+
+ // if it fails to get an existing dictionary, create a new one.
+ if (nsDictionary == null) {
+ nsDictionary = (NSMutableDictionary<NSString, NSObject>)NSMutableDictionary.alloc().init();
+ nsDictionary.writeToFileAtomically(path, false);
+ }
+ return new IOSPreferences(nsDictionary, finalPath.getAbsolutePath());
+ }
+
+ @Override
+ public void postRunnable (Runnable runnable) {
+ synchronized (runnables) {
+ runnables.add(runnable);
+ Gdx.graphics.requestRendering();
+ }
+ }
+
+ public void processRunnables () {
+ synchronized (runnables) {
+ executedRunnables.clear();
+ executedRunnables.addAll(runnables);
+ runnables.clear();
+ }
+ for (int i = 0; i < executedRunnables.size; i++) {
+ try {
+ executedRunnables.get(i).run();
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void exit () {
+ NSThread.exit();
+ }
+
+ @Override
+ public Clipboard getClipboard () {
+ return new Clipboard() {
+ @Override
+ public void setContents (String content) {
+ UIPasteboard.generalPasteboard().setString(content);
+ }
+
+ @Override
+ public String getContents () {
+ return UIPasteboard.generalPasteboard().string();
+ }
+ };
+ }
+
+ @Override
+ public void addLifecycleListener (LifecycleListener listener) {
+ synchronized (lifecycleListeners) {
+ lifecycleListeners.add(listener);
+ }
+ }
+
+ @Override
+ public void removeLifecycleListener (LifecycleListener listener) {
+ synchronized (lifecycleListeners) {
+ lifecycleListeners.removeValue(listener, true);
+ }
+ }
+
+ /** Add a listener to handle events from the libgdx root view controller
+ * @param listener The {#link IOSViewControllerListener} to add */
+ public void addViewControllerListener (IOSViewControllerListener listener) {
+ viewControllerListener = listener;
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplicationConfiguration.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplicationConfiguration.java
new file mode 100755
index 000000000..9f4d9cafe
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSApplicationConfiguration.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import ios.glkit.enums.GLKViewDrawableColorFormat;
+import ios.glkit.enums.GLKViewDrawableDepthFormat;
+import ios.glkit.enums.GLKViewDrawableMultisample;
+import ios.glkit.enums.GLKViewDrawableStencilFormat;
+
+public class IOSApplicationConfiguration {
+ /** whether to enable screen dimming. */
+ public boolean preventScreenDimming = true;
+ /** whether or not portrait orientation is supported. */
+ public boolean orientationPortrait = true;
+ /** whether or not landscape orientation is supported. */
+ public boolean orientationLandscape = true;
+
+ /** the color format, RGB565 is the default **/
+ public int colorFormat = GLKViewDrawableColorFormat.RGB565;
+
+ /** the depth buffer format, Format16 is default **/
+ public int depthFormat = GLKViewDrawableDepthFormat.Format16;
+
+ /** the stencil buffer format, None is default **/
+ public int stencilFormat = GLKViewDrawableStencilFormat.FormatNone;
+
+ /** the multisample format, None is default **/
+ public int multisample = GLKViewDrawableMultisample.MultisampleNone;
+
+ /** number of frames per second, 60 is default **/
+ public int preferredFramesPerSecond = 60;
+
+ /** Scale factor to use on large screens with retina display, i.e. iPad 3+ (has no effect on non-retina screens).
+ * <ul>
+ * <li>1.0 = no scaling (everything is in pixels)
+ * <li>0.5 = LibGDX will behave as you would only have half the pixels. I.e. instead of 2048x1536 you will work in 1024x768.
+ * This looks pixel perfect and will save you the trouble to create bigger graphics for the retina display.
+ * <li>any other value: scales the screens according to your scale factor. A scale factor oof 0.75, 0.8, 1.2, 1.5 etc. works
+ * very well without any artifacts!
+ * </ul> */
+ public float displayScaleLargeScreenIfRetina = 1.0f;
+ /** Scale factor to use on small screens with retina display, i.e. iPhone 4+, iPod 4+ (has no effect on non-retina screens).
+ * <ul>
+ * <li>1.0 = no scaling (everything is in pixels)
+ * <li>0.5 = LibGDX will behave as you would only have half the pixels. I.e. instead of 960x640 you will work in 480x320. This
+ * looks pixel perfect and will save you the trouble to create bigger graphics for the retina display.
+ * <li>any other value: scales the screens according to your scale factor. A scale factor of 0.75, 0.8, 1.2, 1.5 etc. works
+ * very well without any artifacts!
+ * </ul> */
+ public float displayScaleSmallScreenIfRetina = 1.0f;
+ /** Scale factor to use on large screens without retina display, i.e. iPad 1+2 (has no effect on retina screens).
+ * <ul>
+ * <li>1.0 = no scaling (everything is in pixels)
+ * <li>any other value: scales the screens according to your scale factor. A scale factor of 0.75, 0.8, 1.2, 1.5 etc. works
+ * very well without any artifacts!
+ * </ul> */
+ public float displayScaleLargeScreenIfNonRetina = 1.0f;
+ /** Scale factor to use on small screens without retina display, i.e. iPhone 1-3, iPod 1-3 (has no effect on retina screens).
+ * <ul>
+ * <li>1.0 = no scaling (everything is in pixels)
+ * <li>any other value: scales the screens according to your scale factor. A scale factor of 0.75, 0.8, 1.2, 1.5 etc. works
+ * very well without any artifacts!
+ * </ul> */
+ public float displayScaleSmallScreenIfNonRetina = 1.0f;
+
+ /** whether to use the accelerometer, default true **/
+ public boolean useAccelerometer = true;
+ /** the update interval to poll the accelerometer with, in seconds **/
+ public float accelerometerUpdate = 0.05f;
+ /** the update interval to poll the magnetometer with, in seconds **/
+ public float magnetometerUpdate = 0.05f;
+
+ /** whether to use the compass, default true **/
+ public boolean useCompass = true;
+
+ /** whether or not to allow background music from iPod **/
+ public boolean allowIpod = false;
+
+ /** whether or not the onScreenKeyboard should be closed on return key **/
+ public boolean keyboardCloseOnReturn = true;
+
+ /** Experimental, whether to enable OpenGL ES 3 if supported. If not supported it will fall-back to OpenGL ES 2.0.
+ * When GL ES 3 is enabled, {@link com.badlogic.gdx.Gdx#gl30} can be used to access it's functionality.
+ * @deprecated this option is currently experimental and not yet fully supported, expect issues. */
+ @Deprecated public boolean useGL30 = false;
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSAudio.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSAudio.java
new file mode 100755
index 000000000..e6f79bf15
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSAudio.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Audio;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.audio.AudioDevice;
+import com.badlogic.gdx.audio.AudioRecorder;
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.audio.Sound;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALAudioTrack;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALSimpleAudio;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.utils.GdxRuntimeException;
+
+public class IOSAudio implements Audio {
+
+ public IOSAudio (IOSApplicationConfiguration config) {
+ OALSimpleAudio audio = OALSimpleAudio.sharedInstance();
+ if (audio != null) {
+ audio.setAllowIpod(config.allowIpod);
+ audio.setHonorSilentSwitch(true);
+ } else
+ Gdx.app.error("IOSAudio", "No OALSimpleAudio instance available, audio will not be availabe");
+ }
+
+ @Override
+ public AudioDevice newAudioDevice (int samplingRate, boolean isMono) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public AudioRecorder newAudioRecorder (int samplingRate, boolean isMono) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Sound newSound (FileHandle fileHandle) {
+ return new IOSSound(fileHandle);
+ }
+
+ @Override
+ public Music newMusic (FileHandle fileHandle) {
+ String path = fileHandle.file().getPath().replace('\\', '/');
+ OALAudioTrack track = OALAudioTrack.alloc().init();
+ if (track != null) {
+ if (track.preloadFile(path)) {
+ return new IOSMusic(track);
+ }
+ }
+ throw new GdxRuntimeException("Error opening music file at " + path);
+ }
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSDevice.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSDevice.java
new file mode 100755
index 000000000..8f2e7be7e
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSDevice.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+public enum IOSDevice {
+
+ IPHONE_2G("iPhone1,1", 163),
+ IPHONE_3G("iPhone1,2", 163),
+ IPHONE_3GS("iPhone2,1", 163),
+ IPHONE_4("iPhone3,1", 326),
+ IPHONE_4V("iPhone3,2", 326),
+ IPHONE_4_CDMA("iPhone3,3", 326),
+ IPHONE_4S("iPhone4,1", 326),
+ IPHONE_5("iPhone5,1", 326),
+ IPHONE_5_CDMA_GSM("iPhone5,2", 326),
+ IPHONE_5C("iPhone5,3", 326),
+ IPHONE_5C_CDMA_GSM("iPhone5,4", 326),
+ IPHONE_5S("iPhone6,1", 326),
+ IPHONE_5S_CDMA_GSM("iPhone6,2", 326),
+ IPHONE_6_PLUS("iPhone7,1", 401),
+ IPHONE_6("iPhone7,2", 326),
+ IPHONE_6S("iPhone8,1", 326),
+ IPHONE_6S_PLUS("iPhone8,2", 401),
+
+ IPOD_TOUCH_1G("iPod1,1", 163),
+ IPOD_TOUCH_2G("iPod2,1", 163),
+ IPOD_TOUCH_3G("iPod3,1", 163),
+ IPOD_TOUCH_4G("iPod4,1", 326),
+ IPOD_TOUCH_5G("iPod5,1", 326),
+ IPOD_TOUCH_6G("iPod7,1", 326),
+
+ IPAD("iPad1,1", 132),
+ IPAD_3G("iPad1,2", 132),
+ IPAD_2_WIFI("iPad2,1", 132),
+ IPAD_2("iPad2,2", 132),
+ IPAD_2_CDMA("iPad2,3", 132),
+ IPAD_2V("iPad2,4", 132),
+ IPAD_MINI_WIFI("iPad2,5", 164),
+ IPAD_MINI("iPad2,6", 164),
+ IPAD_MINI_WIFI_CDMA("iPad2,7", 164),
+ IPAD_3_WIFI("iPad3,1", 264),
+ IPAD_3_WIFI_CDMA("iPad3,2", 264),
+ IPAD_3("iPad3,3", 264),
+ IPAD_4_WIFI("iPad3,4", 264),
+ IPAD_4("iPad3,5", 264),
+ IPAD_4_GSM_CDMA("iPad3,6", 264),
+ IPAD_AIR_WIFI("iPad4,1", 264),
+ IPAD_AIR_WIFI_GSM("iPad4,2", 264),
+ IPAD_AIR_WIFI_CDMA("iPad4,3", 264),
+ IPAD_MINI_RETINA_WIFI("iPad4,4", 326),
+ IPAD_MINI_RETINA_WIFI_CDMA("iPad4,5", 326),
+ IPAD_MINI_RETINA_WIFI_CELLULAR_CN("iPad4,6", 326),
+ IPAD_MINI_3_WIFI("iPad4,7", 326),
+ IPAD_MINI_3_WIFI_CELLULAR("iPad4,8", 326),
+ IPAD_MINI_3_WIFI_CELLULAR_CN("iPad4,9", 326),
+ IPAD_MINI_4_WIFI("iPad5,1", 326),
+ IPAD_MINI_4_WIFI_CELLULAR("iPad5,2", 326),
+ IPAD_MINI_AIR_2_WIFI("iPad5,3", 264),
+ IPAD_MINI_AIR_2_WIFI_CELLULAR("iPad5,4", 264),
+ IPAD_PRO_WIFI("iPad6,7", 264),
+ IPAD_PRO("iPad6,8", 264),
+
+ SIMULATOR_32("i386", 264),
+ SIMULATOR_64("x86_64", 264);
+
+ final String machineString;
+ final int ppi;
+
+ IOSDevice(String machineString, int ppi) {
+ this.machineString = machineString;
+ this.ppi = ppi;
+ }
+
+ public static IOSDevice getDevice (String machineString) {
+ for (IOSDevice device : values()) {
+ if (device.machineString.equalsIgnoreCase(machineString)) return device;
+ }
+ return null;
+ }
+
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFileHandle.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFileHandle.java
new file mode 100755
index 000000000..cb84b446a
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFileHandle.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Files.FileType;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.utils.GdxRuntimeException;
+
+import java.io.File;
+
+public class IOSFileHandle extends FileHandle {
+ protected IOSFileHandle (String fileName, FileType type) {
+ super(fileName, type);
+ }
+
+ protected IOSFileHandle (File file, FileType type) {
+ super(file, type);
+ }
+
+ @Override
+ public FileHandle child (String name) {
+ if (file.getPath().length() == 0) return new IOSFileHandle(new File(name), type);
+ return new IOSFileHandle(new File(file, name), type);
+ }
+
+ @Override
+ public FileHandle parent () {
+ File parent = file.getParentFile();
+ if (parent == null) {
+ if (type == FileType.Absolute)
+ parent = new File("/");
+ else
+ parent = new File("");
+ }
+ return new IOSFileHandle(parent, type);
+ }
+
+ @Override
+ public FileHandle sibling (String name) {
+ if (file.getPath().length() == 0) throw new GdxRuntimeException("Cannot get the sibling of the root.");
+ return new IOSFileHandle(new File(file.getParent(), name), type);
+ }
+
+ @Override
+ public File file () {
+ if (type == FileType.Internal) return new File(IOSFiles.internalPath, file.getPath());
+ if (type == FileType.External) return new File(IOSFiles.externalPath, file.getPath());
+ if (type == FileType.Local) return new File(IOSFiles.localPath, file.getPath());
+ return file;
+ }
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFiles.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFiles.java
new file mode 100755
index 000000000..6677d60e5
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSFiles.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Files;
+import com.badlogic.gdx.files.FileHandle;
+import ios.foundation.NSBundle;
+
+public class IOSFiles implements Files {
+ // TODO: Use NSSearchPathForDirectoriesInDomains instead?
+ // $HOME should point to the app root dir.
+ static final String appDir = System.getenv("HOME");
+ static final String externalPath = appDir + "/Documents/";
+ static final String localPath = appDir + "/Library/local/";
+ static final String internalPath = NSBundle.mainBundle().bundlePath() + "/assets/";
+
+ public IOSFiles () {
+ new FileHandle(externalPath).mkdirs();
+ new FileHandle(localPath).mkdirs();
+ }
+
+ @Override
+ public FileHandle getFileHandle (String fileName, FileType type) {
+ return new IOSFileHandle(fileName, type);
+ }
+
+ @Override
+ public FileHandle classpath (String path) {
+ return new IOSFileHandle(path, FileType.Classpath);
+ }
+
+ @Override
+ public FileHandle internal (String path) {
+ return new IOSFileHandle(path, FileType.Internal);
+ }
+
+ @Override
+ public FileHandle external (String path) {
+ return new IOSFileHandle(path, FileType.External);
+ }
+
+ @Override
+ public FileHandle absolute (String path) {
+ return new IOSFileHandle(path, FileType.Absolute);
+ }
+
+ @Override
+ public FileHandle local (String path) {
+ return new IOSFileHandle(path, FileType.Local);
+ }
+
+ @Override
+ public String getExternalStoragePath () {
+ return externalPath;
+ }
+
+ @Override
+ public boolean isExternalStorageAvailable () {
+ return true;
+ }
+
+ @Override
+ public String getLocalStoragePath () {
+ return localPath;
+ }
+
+ @Override
+ public boolean isLocalStorageAvailable () {
+ return true;
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGLKView.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGLKView.java
new file mode 100755
index 000000000..93779208c
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGLKView.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.objc.ann.Selector;
+import ios.coregraphics.struct.CGRect;
+import ios.foundation.NSSet;
+import ios.glkit.GLKView;
+import ios.opengles.EAGLContext;
+import ios.uikit.UIEvent;
+import ios.uikit.UITouch;
+
+public class IOSGLKView extends GLKView {
+
+ private IOSGraphics graphics;
+
+ static {
+ NatJ.register();
+ }
+
+ @Selector("alloc")
+ public static native IOSGLKView alloc ();
+
+ @Selector("init")
+ public native IOSGLKView init ();
+
+ protected IOSGLKView (Pointer peer) {
+ super(peer);
+ }
+
+ public IOSGLKView init (IOSGraphics graphics, CGRect bounds, EAGLContext context) {
+ initWithFrameContext(bounds, context);
+ this.graphics = graphics;
+ return this;
+ }
+
+ @Override
+ public void touchesBeganWithEvent (NSSet<? extends UITouch> nsSet, UIEvent uiEvent) {
+ graphics.input.onTouch(nsSet);
+ }
+
+ @Override
+ public void touchesCancelledWithEvent (NSSet<? extends UITouch> nsSet, UIEvent uiEvent) {
+ graphics.input.onTouch(nsSet);
+ }
+
+ @Override
+ public void touchesEndedWithEvent (NSSet<? extends UITouch> nsSet, UIEvent uiEvent) {
+ graphics.input.onTouch(nsSet);
+ }
+
+ @Override
+ public void touchesMovedWithEvent (NSSet<? extends UITouch> nsSet, UIEvent uiEvent) {
+ graphics.input.onTouch(nsSet);
+ }
+
+ @Override
+ public void drawRect (@ByValue CGRect cgRect) {
+ graphics.glkViewDrawInRect(this, cgRect);
+ }
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGraphics.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGraphics.java
new file mode 100755
index 000000000..d69b0d8e4
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSGraphics.java
@@ -0,0 +1,495 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Application;
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Graphics;
+import com.badlogic.gdx.LifecycleListener;
+import com.badlogic.gdx.backends.iosrobovm.IOSGLES20;
+import com.badlogic.gdx.backends.iosrobovm.IOSGLES30;
+import com.badlogic.gdx.graphics.Cursor;
+import com.badlogic.gdx.graphics.Cursor.SystemCursor;
+import com.badlogic.gdx.graphics.GL20;
+import com.badlogic.gdx.graphics.GL30;
+import com.badlogic.gdx.graphics.Pixmap;
+import com.badlogic.gdx.graphics.glutils.GLVersion;
+import com.badlogic.gdx.utils.Array;
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.objc.ann.Selector;
+import ios.NSObject;
+import ios.coregraphics.struct.CGPoint;
+import ios.coregraphics.struct.CGRect;
+import ios.coregraphics.struct.CGSize;
+import ios.glkit.GLKView;
+import ios.glkit.GLKViewController;
+import ios.glkit.enums.GLKViewDrawableColorFormat;
+import ios.glkit.enums.GLKViewDrawableDepthFormat;
+import ios.glkit.enums.GLKViewDrawableMultisample;
+import ios.glkit.enums.GLKViewDrawableStencilFormat;
+import ios.glkit.protocol.GLKViewControllerDelegate;
+import ios.glkit.protocol.GLKViewDelegate;
+import ios.opengles.EAGLContext;
+import ios.opengles.enums.EAGLRenderingAPI;
+
+public class IOSGraphics extends NSObject implements Graphics, GLKViewDelegate, GLKViewControllerDelegate {
+
+ private static final String tag = "IOSGraphics";
+
+ static {
+ NatJ.register();
+ }
+
+ IOSApplication app;
+ IOSInput input;
+ GL20 gl20;
+ GL30 gl30;
+ int width;
+ int height;
+ long lastFrameTime;
+ float deltaTime;
+ long framesStart;
+ int frames;
+ int fps;
+ BufferFormat bufferFormat;
+ String extensions;
+
+ private float ppiX = 0;
+ private float ppiY = 0;
+ private float ppcX = 0;
+ private float ppcY = 0;
+ private float density = 1;
+
+ volatile boolean appPaused;
+ private long frameId = -1;
+ private boolean isContinuous = true;
+ private boolean isFrameRequested = true;
+
+ IOSApplicationConfiguration config;
+ EAGLContext context;
+ GLVersion glVersion;
+ IOSGLKView view;
+ IOSUIViewController viewController;
+
+ @Selector("alloc")
+ public static native IOSGraphics alloc ();
+
+ @Selector("init")
+ public native IOSGraphics init ();
+
+ protected IOSGraphics (Pointer peer) {
+ super(peer);
+ }
+
+ public IOSGraphics init (float scale, IOSApplication app, IOSApplicationConfiguration config, IOSInput input, boolean useGLES30) {
+ init();
+ this.config = config;
+
+ final CGRect bounds = app.getBounds();
+ // setup view and OpenGL
+ width = (int)bounds.size().width();
+ height = (int)bounds.size().height();
+
+ if (useGLES30) {
+ context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES3);;
+ if (context != null)
+ gl20 = gl30 = new IOSGLES30();
+ else
+ Gdx.app.log("IOGraphics", "OpenGL ES 3.0 not supported, falling back on 2.0");
+ }
+ if (context == null) {
+ context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES2);
+ gl20 = new IOSGLES20();
+ gl30 = null;
+ }
+
+ view = IOSGLKView.alloc().init(this, new CGRect(new CGPoint(0, 0), new CGSize(bounds.size().width(), bounds.size().height())), context);
+
+ view.setDelegate(this);
+ view.setDrawableColorFormat(config.colorFormat);
+ view.setDrawableDepthFormat(config.depthFormat);
+ view.setDrawableStencilFormat(config.stencilFormat);
+ view.setDrawableMultisample(config.multisample);
+ view.setMultipleTouchEnabled(true);
+
+ viewController = IOSUIViewController.alloc().init(app, this);
+ viewController.setView(view);
+ viewController.setDelegate(this);
+ viewController.setPreferredFramesPerSecond(config.preferredFramesPerSecond);
+
+ this.app = app;
+ this.input = input;
+
+ int r = 0, g = 0, b = 0, a = 0, depth = 0, stencil = 0, samples = 0;
+ if (config.colorFormat == GLKViewDrawableColorFormat.RGB565) {
+ r = 5;
+ g = 6;
+ b = 5;
+ a = 0;
+ } else {
+ r = g = b = a = 8;
+ }
+ if (config.depthFormat == GLKViewDrawableDepthFormat.Format16) {
+ depth = 16;
+ } else if (config.depthFormat == GLKViewDrawableDepthFormat.Format24) {
+ depth = 24;
+ } else {
+ depth = 0;
+ }
+ if (config.stencilFormat == GLKViewDrawableStencilFormat.Format8) {
+ stencil = 8;
+ }
+ if (config.multisample == GLKViewDrawableMultisample.Multisample4X) {
+ samples = 4;
+ }
+ bufferFormat = new BufferFormat(r, g, b, a, depth, stencil, samples, false);
+
+ // String machineString = HWMachine.getMachineString();
+ IOSDevice device = null; // IOSDevice.getDevice(machineString);
+ // if (device == null)
+ // app.error(tag, "Machine ID: " + machineString + " not found, please report to LibGDX");
+ int ppi = device != null ? device.ppi : 163;
+ density = device != null ? device.ppi / 160f : scale;
+ ppiX = ppi;
+ ppiY = ppi;
+ ppcX = ppiX / 2.54f;
+ ppcY = ppiY / 2.54f;
+ app.debug(tag, "Display: ppi=" + ppi + ", density=" + density);
+
+ // time + FPS
+ lastFrameTime = System.nanoTime();
+ framesStart = lastFrameTime;
+
+ appPaused = false;
+ return this;
+ }
+
+ public void resume () {
+ if (!appPaused)
+ return;
+ appPaused = false;
+
+ Array<LifecycleListener> listeners = app.lifecycleListeners;
+ synchronized (listeners) {
+ for (LifecycleListener listener : listeners) {
+ listener.resume();
+ }
+ }
+ app.listener.resume();
+ }
+
+ public void pause () {
+ if (appPaused)
+ return;
+ appPaused = true;
+
+ Array<LifecycleListener> listeners = app.lifecycleListeners;
+ synchronized (listeners) {
+ for (LifecycleListener listener : listeners) {
+ listener.pause();
+ }
+ }
+ app.listener.pause();
+ }
+
+ boolean created = false;
+
+ @Override
+ public void glkViewDrawInRect (GLKView view, @ByValue CGRect rect) {
+ makeCurrent();
+ // massive hack, GLKView resets the viewport on each draw call, so IOSGLES20
+ // stores the last known viewport and we reset it here...
+ gl20.glViewport(IOSGLES20.x, IOSGLES20.y, IOSGLES20.width, IOSGLES20.height);
+
+ if (!created) {
+ gl20.glViewport(0, 0, width, height);
+
+ String versionString = gl20.glGetString(GL20.GL_VERSION);
+ String vendorString = gl20.glGetString(GL20.GL_VENDOR);
+ String rendererString = gl20.glGetString(GL20.GL_RENDERER);
+ glVersion = new GLVersion(Application.ApplicationType.iOS, versionString, vendorString, rendererString);
+
+ app.listener.create();
+ app.listener.resize(width, height);
+ created = true;
+ }
+ if (appPaused) {
+ return;
+ }
+
+ long time = System.nanoTime();
+ deltaTime = (time - lastFrameTime) / 1000000000.0f;
+ lastFrameTime = time;
+
+ frames++;
+ if (time - framesStart >= 1000000000l) {
+ framesStart = time;
+ fps = frames;
+ frames = 0;
+ }
+
+ input.processEvents();
+ frameId++;
+ app.listener.render();
+ }
+
+ void makeCurrent () {
+ EAGLContext.setCurrentContext(context);
+ }
+
+ @Override
+ public void glkViewControllerUpdate (GLKViewController glkViewController) {
+ makeCurrent();
+ app.processRunnables();
+ // pause the GLKViewController render loop if we are no longer continuous
+ // and if we haven't requested a frame in the last loop iteration
+ if (!isContinuous && !isFrameRequested) {
+ viewController.setPaused(true);
+ }
+ isFrameRequested = false;
+ }
+
+ @Override
+ public void glkViewControllerWillPause (GLKViewController controller, boolean pause) {
+
+ }
+
+ @Override
+ public GL20 getGL20 () {
+ return gl20;
+ }
+
+ @Override
+ public int getWidth () {
+ return width;
+ }
+
+ @Override
+ public int getHeight () {
+ return height;
+ }
+
+ @Override
+ public int getBackBufferWidth () {
+ return width;
+ }
+
+ @Override
+ public int getBackBufferHeight () {
+ return height;
+ }
+
+ @Override
+ public float getDeltaTime () {
+ return deltaTime;
+ }
+
+ @Override
+ public float getRawDeltaTime () {
+ return deltaTime;
+ }
+
+ @Override
+ public int getFramesPerSecond () {
+ return fps;
+ }
+
+ @Override
+ public GraphicsType getType () {
+ return GraphicsType.iOSGL;
+ }
+
+ @Override
+ public GLVersion getGLVersion () {
+ return glVersion;
+ }
+
+ @Override
+ public float getPpiX () {
+ return ppiX;
+ }
+
+ @Override
+ public float getPpiY () {
+ return ppiY;
+ }
+
+ @Override
+ public float getPpcX () {
+ return ppcX;
+ }
+
+ @Override
+ public float getPpcY () {
+ return ppcY;
+ }
+
+ @Override
+ public float getDensity () {
+ return density;
+ }
+
+ @Override
+ public boolean supportsDisplayModeChange () {
+ return false;
+ }
+
+ @Override
+ public DisplayMode[] getDisplayModes () {
+ return new DisplayMode[] {getDisplayMode()};
+ }
+
+ @Override
+ public DisplayMode getDisplayMode () {
+ return new IOSDisplayMode(getWidth(), getHeight(), config.preferredFramesPerSecond,
+ bufferFormat.r + bufferFormat.g + bufferFormat.b + bufferFormat.a);
+ }
+
+ @Override
+ public Monitor getPrimaryMonitor () {
+ return new IOSMonitor(0, 0, "Primary Monitor");
+ }
+
+ @Override
+ public Monitor getMonitor () {
+ return getPrimaryMonitor();
+ }
+
+ @Override
+ public Monitor[] getMonitors () {
+ return new Monitor[] {getPrimaryMonitor()};
+ }
+
+ @Override
+ public DisplayMode[] getDisplayModes (Monitor monitor) {
+ return getDisplayModes();
+ }
+
+ @Override
+ public DisplayMode getDisplayMode (Monitor monitor) {
+ return getDisplayMode();
+ }
+
+ @Override
+ public boolean setFullscreenMode (DisplayMode displayMode) {
+ return false;
+ }
+
+ @Override
+ public boolean setWindowedMode (int width, int height) {
+ return false;
+ }
+
+ @Override
+ public void setTitle (String title) {
+ }
+
+ @Override
+ public void setVSync (boolean vsync) {
+ }
+
+ @Override
+ public BufferFormat getBufferFormat () {
+ return bufferFormat;
+ }
+
+ @Override
+ public boolean supportsExtension (String extension) {
+ if (extensions == null)
+ extensions = Gdx.gl.glGetString(GL20.GL_EXTENSIONS);
+ return extensions.contains(extension);
+ }
+
+ @Override
+ public void setContinuousRendering (boolean isContinuous) {
+ if (isContinuous != this.isContinuous) {
+ this.isContinuous = isContinuous;
+ // start the GLKViewController if we go from non-continuous -> continuous
+ if (isContinuous)
+ viewController.setPaused(false);
+ }
+ }
+
+ @Override
+ public boolean isContinuousRendering () {
+ return isContinuous;
+ }
+
+ @Override
+ public void requestRendering () {
+ isFrameRequested = true;
+ // start the GLKViewController if we are in non-continuous mode
+ // (we should already be started in continuous mode)
+ if (!isContinuous)
+ viewController.setPaused(false);
+ }
+
+ @Override
+ public boolean isFullscreen () {
+ return true;
+ }
+
+ @Override
+ public boolean isGL30Available () {
+ return false;
+ }
+
+ @Override
+ public GL30 getGL30 () {
+ return null;
+ }
+
+ @Override
+ public long getFrameId () {
+ return frameId;
+ }
+
+ @Override
+ public Cursor newCursor (Pixmap pixmap, int xHotspot, int yHotspot) {
+ return null;
+ }
+
+ @Override
+ public void setCursor (Cursor cursor) {
+ }
+
+ @Override
+ public void setSystemCursor (SystemCursor systemCursor) {
+ }
+
+ @Override
+ public void setResizable(boolean resizable) {
+ }
+
+ @Override
+ public void setUndecorated(boolean undecorated) {
+ }
+
+ private class IOSDisplayMode extends DisplayMode {
+ protected IOSDisplayMode (int width, int height, int refreshRate, int bitsPerPixel) {
+ super(width, height, refreshRate, bitsPerPixel);
+ }
+ }
+
+ private class IOSMonitor extends Monitor {
+ protected IOSMonitor (int virtualX, int virtualY, String name) {
+ super(virtualX, virtualY, name);
+ }
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSInput.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSInput.java
new file mode 100755
index 000000000..e100b5f15
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSInput.java
@@ -0,0 +1,656 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Input;
+import com.badlogic.gdx.InputProcessor;
+import com.badlogic.gdx.math.MathUtils;
+import com.badlogic.gdx.utils.Array;
+import com.badlogic.gdx.utils.GdxRuntimeException;
+import com.badlogic.gdx.utils.Pool;
+import com.intel.moe.natj.general.ann.NInt;
+import ios.audiotoolbox.c.AudioToolbox;
+import ios.coregraphics.struct.CGPoint;
+import ios.coregraphics.struct.CGRect;
+import ios.coregraphics.struct.CGSize;
+import ios.coremotion.CMAccelerometerData;
+import ios.coremotion.CMMagnetometerData;
+import ios.coremotion.CMMotionManager;
+import ios.foundation.NSError;
+import ios.foundation.NSOperationQueue;
+import ios.foundation.NSSet;
+import ios.foundation.struct.NSRange;
+import ios.uikit.UIAlertView;
+import ios.uikit.UIDevice;
+import ios.uikit.UITextField;
+import ios.uikit.UITouch;
+import ios.uikit.enums.UIAlertViewStyle;
+import ios.uikit.enums.UIDeviceOrientation;
+import ios.uikit.enums.UIKeyboardType;
+import ios.uikit.enums.UIReturnKeyType;
+import ios.uikit.enums.UITextAutocapitalizationType;
+import ios.uikit.enums.UITextAutocorrectionType;
+import ios.uikit.enums.UITextSpellCheckingType;
+import ios.uikit.enums.UITouchPhase;
+import ios.uikit.protocol.UIAlertViewDelegate;
+import ios.uikit.protocol.UITextFieldDelegate;
+
+public class IOSInput implements Input {
+ static final int MAX_TOUCHES = 20;
+
+ IOSApplication app;
+ IOSApplicationConfiguration config;
+ int[] deltaX = new int[MAX_TOUCHES];
+ int[] deltaY = new int[MAX_TOUCHES];
+ int[] touchX = new int[MAX_TOUCHES];
+ int[] touchY = new int[MAX_TOUCHES];
+ // we store the pointer to the UITouch struct here, or 0
+ UITouch[] touchDown = new UITouch[MAX_TOUCHES];
+ int numTouched = 0;
+ boolean justTouched = false;
+ Pool<TouchEvent> touchEventPool = new Pool<TouchEvent>() {
+ @Override
+ protected TouchEvent newObject () {
+ return new TouchEvent();
+ }
+ };
+ Array<TouchEvent> touchEvents = new Array<TouchEvent>();
+ TouchEvent currentEvent = null;
+ float[] acceleration = new float[3];
+ float[] rotation = new float[3];
+ float[] R = new float[9];
+ InputProcessor inputProcessor = null;
+
+ boolean hasVibrator;
+ CMMotionManager motionManager;
+ boolean compassSupported;
+ boolean keyboardCloseOnReturn;
+
+ public IOSInput (IOSApplication app) {
+ this.app = app;
+ this.config = app.config;
+ this.keyboardCloseOnReturn = app.config.keyboardCloseOnReturn;
+ }
+
+ void setupPeripherals () {
+ motionManager = CMMotionManager.alloc().init();
+ setupAccelerometer();
+ setupCompass();
+ UIDevice device = UIDevice.currentDevice();
+ if (device.model().equalsIgnoreCase("iphone")) hasVibrator = true;
+ }
+
+ private void setupCompass () {
+ if (config.useCompass) {
+ setupMagnetometer();
+ }
+ }
+ private void setupAccelerometer () {
+ if (config.useAccelerometer) {
+ motionManager.setAccelerometerUpdateInterval(config.accelerometerUpdate);
+ CMMotionManager.Block_startAccelerometerUpdatesToQueueWithHandler handler = new CMMotionManager.Block_startAccelerometerUpdatesToQueueWithHandler() {
+ @Override
+ public void call_startAccelerometerUpdatesToQueueWithHandler (CMAccelerometerData cmAccelerometerData, NSError nsError) {
+ updateAccelerometer(cmAccelerometerData);
+ }
+ };
+ motionManager.startAccelerometerUpdatesToQueueWithHandler(NSOperationQueue.alloc().init(), handler);
+ }
+ }
+
+
+ private void setupMagnetometer () {
+ if (motionManager.isMagnetometerAvailable() && config.useCompass) compassSupported = true;
+ else return;
+ motionManager.setMagnetometerUpdateInterval(config.magnetometerUpdate);
+
+ CMMotionManager.Block_startMagnetometerUpdatesToQueueWithHandler handler = new CMMotionManager.Block_startMagnetometerUpdatesToQueueWithHandler() {
+ @Override
+ public void call_startMagnetometerUpdatesToQueueWithHandler (CMMagnetometerData cmMagnetometerData, NSError nsError) {
+ updateRotation(cmMagnetometerData);
+ }
+ };
+
+ motionManager.startMagnetometerUpdatesToQueueWithHandler(NSOperationQueue.alloc().init(), handler);
+ }
+
+ private void updateAccelerometer (CMAccelerometerData data) {
+ float x = (float) data.acceleration().x() * 10f;
+ float y = (float) data.acceleration().y() * 10f;
+ float z = (float) data.acceleration().z() * 10f;
+ acceleration[0] = -x;
+ acceleration[1] = -y;
+ acceleration[2] = -z;
+ }
+
+ private void updateRotation (CMMagnetometerData data) {
+ final float eX = (float) data.magneticField().x();
+ final float eY = (float) data.magneticField().y();
+ final float eZ = (float) data.magneticField().z();
+
+ float gX = acceleration[0];
+ float gY = acceleration[1];
+ float gZ = acceleration[2];
+
+ float cX = eY * gZ - eZ * gY;
+ float cY = eZ * gX - eX * gZ;
+ float cZ = eX * gY - eY * gX;
+
+ final float normal = (float) Math.sqrt(cX * cX + cY * cY + cZ * cZ);
+ final float invertC = 1.0f / normal;
+ cX *= invertC;
+ cY *= invertC;
+ cZ *= invertC;
+ final float invertG = 1.0f / (float) Math.sqrt(gX * gX + gY * gY + gZ * gZ);
+ gX *= invertG;
+ gY *= invertG;
+ gZ *= invertG;
+ final float mX = gY * cZ - gZ * cY;
+ final float mY = gZ * cX - gX * cZ;
+ final float mZ = gX * cY - gY * cX;
+
+ R[0] = cX; R[1] = cY; R[2] = cZ;
+ R[3] = mX; R[4] = mY; R[5] = mZ;
+ R[6] = gX; R[7] = gY; R[8] = gZ;
+
+ rotation[0] = (float) Math.atan2(R[1], R[4]) * MathUtils.radDeg;
+ rotation[1] = (float) Math.asin(-R[7]) * MathUtils.radDeg;
+ rotation[2] = (float) Math.atan2(-R[6], R[8]) * MathUtils.radDeg;
+ }
+
+ @Override
+ public float getAccelerometerX () {
+ return acceleration[0];
+ }
+
+ @Override
+ public float getAccelerometerY () {
+ return acceleration[1];
+ }
+
+ @Override
+ public float getAccelerometerZ () {
+ return acceleration[2];
+ }
+
+
+ @Override
+ public float getAzimuth () {
+ if (!compassSupported) return 0;
+ return rotation[0];
+ }
+
+ @Override
+ public float getPitch () {
+ if (!compassSupported) return 0;
+ return rotation[1];
+ }
+
+ @Override
+ public float getRoll () {
+ if (!compassSupported) return 0;
+ return rotation[2];
+ }
+
+ @Override
+ public void getRotationMatrix (float[] matrix) {
+ if (matrix.length != 9) return;
+ //TODO implement when azimuth is fixed
+ }
+
+ @Override
+ public int getX () {
+ return touchX[0];
+ }
+
+ @Override
+ public int getX (int pointer) {
+ return touchX[pointer];
+ }
+
+ @Override
+ public int getDeltaX () {
+ return deltaX[0];
+ }
+
+ @Override
+ public int getDeltaX (int pointer) {
+ return deltaX[pointer];
+ }
+
+ @Override
+ public int getY () {
+ return touchY[0];
+ }
+
+ @Override
+ public int getY (int pointer) {
+ return touchY[pointer];
+ }
+
+ @Override
+ public int getDeltaY () {
+ return deltaY[0];
+ }
+
+ @Override
+ public int getDeltaY (int pointer) {
+ return deltaY[pointer];
+ }
+
+ @Override
+ public boolean isTouched () {
+ for (int pointer = 0; pointer < MAX_TOUCHES; pointer++) {
+ if (touchDown[pointer] != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean justTouched () {
+ return justTouched;
+ }
+
+ @Override
+ public boolean isTouched (int pointer) {
+ return touchDown[pointer] != null;
+ }
+
+ @Override
+ public boolean isButtonPressed (int button) {
+ return button == Buttons.LEFT && numTouched > 0;
+ }
+
+ @Override
+ public boolean isKeyPressed (int key) {
+ return false;
+ }
+
+ @Override
+ public boolean isKeyJustPressed (int key) {
+ return false;
+ }
+
+ @Override
+ public void getTextInput(TextInputListener listener, String title, String text, String hint) {
+ buildUIAlertView(listener, title, text, hint).show();
+ }
+
+ // hack for software keyboard support
+ // uses a hidden textfield to capture input
+ // see: http://www.badlogicgames.com/forum/viewtopic.php?f=17&t=11788
+
+ private class HiddenTextField extends UITextField {
+ public HiddenTextField (CGRect frame) {
+ super(frame.getPeer());
+
+ setKeyboardType(UIKeyboardType.Default);
+ setReturnKeyType(UIReturnKeyType.Done);
+ setAutocapitalizationType(UITextAutocapitalizationType.None);
+ setAutocorrectionType(UITextAutocorrectionType.No);
+ setSpellCheckingType(UITextSpellCheckingType.No);
+ setHidden(true);
+ }
+
+ @Override
+ public void deleteBackward () {
+ app.input.inputProcessor.keyTyped((char)8);
+ super.deleteBackward();
+ Gdx.graphics.requestRendering();
+ }
+ }
+
+ private UITextField textfield = null;
+ private final UITextFieldDelegate textDelegate = new UITextFieldDelegate() {
+ @Override
+ public boolean textFieldShouldChangeCharactersInRangeReplacementString (UITextField textField, NSRange range, String string) {
+ for (int i = 0; i < range.length(); i++) {
+ app.input.inputProcessor.keyTyped((char)8);
+ }
+
+ if (string.isEmpty()) {
+ if (range.length() > 0) Gdx.graphics.requestRendering();
+ return false;
+ }
+
+ char[] chars = new char[string.length()];
+ string.getChars(0, string.length(), chars, 0);
+
+ for (int i = 0; i < chars.length; i++) {
+ app.input.inputProcessor.keyTyped(chars[i]);
+ }
+ Gdx.graphics.requestRendering();
+
+ return true;
+ }
+
+ @Override
+ public boolean textFieldShouldEndEditing (UITextField textField) {
+ // Text field needs to have at least one symbol - so we can use backspace
+ textField.setText("x");
+ Gdx.graphics.requestRendering();
+
+ return true;
+ }
+
+ @Override
+ public boolean textFieldShouldReturn (UITextField textField) {
+ if (keyboardCloseOnReturn) setOnscreenKeyboardVisible(false);
+ app.input.inputProcessor.keyDown(Keys.ENTER);
+ app.input.inputProcessor.keyTyped((char)13);
+ Gdx.graphics.requestRendering();
+ return false;
+ }
+ };
+
+ @Override
+ public void setOnscreenKeyboardVisible (boolean visible) {
+ if (textfield == null) createDefaultTextField();
+ if (visible) {
+ textfield.becomeFirstResponder();
+ textfield.setDelegate(textDelegate);
+ } else {
+ textfield.resignFirstResponder();
+ }
+ }
+
+ /**
+ * Set the keyboard to close when the UITextField return key is pressed
+ * @param shouldClose Whether or not the keyboard should clsoe on return key press
+ */
+ public void setKeyboardCloseOnReturnKey (boolean shouldClose) {
+ keyboardCloseOnReturn = shouldClose;
+ }
+
+ public UITextField getKeyboardTextField () {
+ if (textfield == null) createDefaultTextField();
+ return textfield;
+ }
+
+ private void createDefaultTextField () {
+ textfield = UITextField.alloc();
+ textfield.initWithFrame(new CGRect(new CGPoint(10, 10), new CGSize(100, 50)));
+ //Parameters
+ // Setting parameters
+ textfield.setKeyboardType(UIKeyboardType.Default);
+ textfield.setReturnKeyType(UIReturnKeyType.Done);
+ textfield.setAutocapitalizationType(UITextAutocapitalizationType.None);
+ textfield.setAutocorrectionType(UITextAutocorrectionType.No);
+ textfield.setSpellCheckingType(UITextSpellCheckingType.No);
+ textfield.setHidden(true);
+ // Text field needs to have at least one symbol - so we can use backspace
+ textfield.setText("x");
+ app.getUIViewController().view().addSubview(textfield);
+ }
+
+ // Issue 773 indicates this may solve a premature GC issue
+
+ /** Builds an {@link UIAlertView} with an added {@link UITextField} for inputting text.
+ * @param listener Text input listener
+ * @param title Dialog title
+ * @param text Text for text field
+ * @return UiAlertView */
+ private UIAlertView buildUIAlertView (final TextInputListener listener, String title, String text, String placeholder) {
+ UIAlertViewDelegate delegate = new UIAlertViewDelegate() {
+ @Override
+ public void alertViewClickedButtonAtIndex (UIAlertView alertView, @NInt long buttonIndex) {
+ if (buttonIndex == 0) {
+ // user clicked "Cancel" button
+ listener.canceled();
+ } else if (buttonIndex == 1) {
+ // user clicked "Ok" button
+ UITextField textField = alertView.textFieldAtIndex(0);
+ listener.input(textField.text());
+ }
+ }
+
+ @Override
+ public void alertViewCancel (UIAlertView alertView) {
+ listener.canceled();
+ }
+ };
+
+ // build the view
+ final UIAlertView uiAlertView = UIAlertView.alloc().init();
+ uiAlertView.setTitle(title);
+ uiAlertView.addButtonWithTitle("Cancel");
+ uiAlertView.addButtonWithTitle("Ok");
+ uiAlertView.setAlertViewStyle(UIAlertViewStyle.PlainTextInput);
+ uiAlertView.setDelegate(delegate);
+
+ UITextField textField = uiAlertView.textFieldAtIndex(0);
+ textField.setPlaceholder(placeholder);
+ textField.setText(text);
+
+ return uiAlertView;
+ }
+
+ @Override
+ public void vibrate (int milliseconds) {
+ AudioToolbox.AudioServicesPlaySystemSound(4095);
+ }
+
+ @Override
+ public void vibrate (long[] pattern, int repeat) {
+ // FIXME implement this
+ }
+
+ @Override
+ public void cancelVibrate () {
+ // FIXME implement this
+ }
+
+ @Override
+ public long getCurrentEventTime () {
+ return currentEvent.timestamp;
+ }
+
+ @Override
+ public void setCatchBackKey (boolean catchBack) {
+ }
+
+ @Override
+ public boolean isCatchBackKey () {
+ return false;
+ }
+
+ @Override
+ public void setCatchMenuKey (boolean catchMenu) {
+ }
+
+ @Override
+ public boolean isCatchMenuKey() {
+ return false;
+ }
+
+ @Override
+ public void setInputProcessor (InputProcessor processor) {
+ this.inputProcessor = processor;
+ }
+
+ @Override
+ public InputProcessor getInputProcessor () {
+ return inputProcessor;
+ }
+
+ @Override
+ public boolean isPeripheralAvailable (Peripheral peripheral) {
+ if (peripheral == Peripheral.Accelerometer && config.useAccelerometer) return true;
+ if (peripheral == Peripheral.MultitouchScreen) return true;
+ if (peripheral == Peripheral.Vibrator) return hasVibrator;
+ if (peripheral == Peripheral.Compass) return compassSupported;
+ // if(peripheral == Peripheral.OnscreenKeyboard) return true;
+ return false;
+ }
+
+ @Override
+ public int getRotation () {
+ // we measure orientation counter clockwise, just like on Android
+ if (app.uiApp.statusBarOrientation() == UIDeviceOrientation.LandscapeLeft) return 270;
+ if (app.uiApp.statusBarOrientation() == UIDeviceOrientation.PortraitUpsideDown) return 180;
+ if (app.uiApp.statusBarOrientation() == UIDeviceOrientation.LandscapeRight) return 90;
+ return 0;
+ }
+
+ @Override
+ public Orientation getNativeOrientation () {
+ if (app.uiApp.statusBarOrientation() == UIDeviceOrientation.LandscapeLeft || app.uiApp.statusBarOrientation() == UIDeviceOrientation.LandscapeRight) {
+ return Orientation.Landscape;
+ } else {
+ return Orientation.Portrait;
+ }
+ }
+
+ @Override
+ public void setCursorCatched (boolean catched) {
+ }
+
+ @Override
+ public boolean isCursorCatched () {
+ return false;
+ }
+
+ @Override
+ public void setCursorPosition (int x, int y) {
+ }
+
+ protected void onTouch (NSSet<? extends UITouch> touches) {
+ toTouchEvents(touches);
+ Gdx.graphics.requestRendering();
+ }
+
+ void processEvents () {
+ synchronized (touchEvents) {
+ justTouched = false;
+ for (TouchEvent event : touchEvents) {
+ currentEvent = event;
+ if (event.phase == UITouchPhase.Began) {
+ if (inputProcessor != null) inputProcessor.touchDown(event.x, event.y, event.pointer, Buttons.LEFT);
+ if (numTouched == 1) justTouched = true;
+ break;
+ }
+ if (event.phase == UITouchPhase.Cancelled || event.phase == UITouchPhase.Ended) {
+ if (inputProcessor != null) inputProcessor.touchUp(event.x, event.y, event.pointer, Buttons.LEFT);
+ break;
+ }
+ if (event.phase == UITouchPhase.Moved || event.phase == UITouchPhase.Stationary) {
+ if (inputProcessor != null) inputProcessor.touchDragged(event.x, event.y, event.pointer);
+ break;
+ }
+ }
+ touchEventPool.freeAll(touchEvents);
+ touchEvents.clear();
+ }
+ }
+
+ private int getFreePointer () {
+ for (int i = 0; i < touchDown.length; i++) {
+ if (touchDown[i] == null) return i;
+ }
+ throw new GdxRuntimeException("Couldn't find free pointer id!");
+ }
+
+ private int findPointer (UITouch touch) {
+ long ptr = 0;
+ for (int i = 0; i < touchDown.length; i++) {
+ if (touchDown[i] == touch) return i;
+ }
+ throw new GdxRuntimeException("Couldn't find pointer id for touch event!");
+ }
+
+ private void toTouchEvents (NSSet<? extends UITouch> touches) {
+ for (UITouch touch : touches.allObjects()) {
+ final int locX, locY;
+ // Get and map the location to our drawing space
+ {
+ CGPoint loc = touch.locationInView(touch.window());
+ final CGRect bounds = app.getCachedBounds();
+ locX = (int)(loc.x() * app.displayScaleFactor - bounds.origin().x());
+ locY = (int)(loc.y() * app.displayScaleFactor - bounds.origin().y());
+ // app.debug("IOSInput","pos= "+loc+" bounds= "+bounds+" x= "+locX+" locY= "+locY);
+ }
+
+ synchronized (touchEvents) {
+ long phase = touch.phase();
+ TouchEvent event = touchEventPool.obtain();
+ event.x = locX;
+ event.y = locY;
+ event.phase = phase;
+ event.timestamp = (long)(touch.timestamp() * 1000000000);
+ touchEvents.add(event);
+
+ if (phase == UITouchPhase.Began) {
+ event.pointer = getFreePointer();
+ touchDown[event.pointer] = touch;
+ touchX[event.pointer] = event.x;
+ touchY[event.pointer] = event.y;
+ deltaX[event.pointer] = 0;
+ deltaY[event.pointer] = 0;
+ numTouched++;
+ }
+
+ if (phase == UITouchPhase.Moved || phase == UITouchPhase.Stationary) {
+ event.pointer = findPointer(touch);
+ deltaX[event.pointer] = event.x - touchX[event.pointer];
+ deltaY[event.pointer] = event.y - touchY[event.pointer];
+ touchX[event.pointer] = event.x;
+ touchY[event.pointer] = event.y;
+ }
+
+ if (phase == UITouchPhase.Cancelled || phase == UITouchPhase.Ended) {
+ event.pointer = findPointer(touch);
+ touchDown[event.pointer] = null;
+ touchX[event.pointer] = event.x;
+ touchY[event.pointer] = event.y;
+ deltaX[event.pointer] = 0;
+ deltaY[event.pointer] = 0;
+ numTouched--;
+ }
+ }
+ }
+ }
+
+ static class TouchEvent {
+ long phase;
+ long timestamp;
+ int x, y;
+ int pointer;
+ }
+
+ @Override
+ public float getGyroscopeX() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public float getGyroscopeY() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public float getGyroscopeZ() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSMusic.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSMusic.java
new file mode 100755
index 000000000..ac2c0e963
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSMusic.java
@@ -0,0 +1,122 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALAudioTrack;
+import ios.avfoundation.AVAudioPlayer;
+import ios.avfoundation.protocol.AVAudioPlayerDelegate;
+
+public class IOSMusic implements Music {
+
+ private final OALAudioTrack track;
+ OnCompletionListener onCompletionListener;
+
+ public IOSMusic (OALAudioTrack track) {
+ this.track = track;
+ AVAudioPlayerDelegate delegate = new AVAudioPlayerDelegate() {
+ @Override
+ public void audioPlayerDidFinishPlayingSuccessfully (AVAudioPlayer player, boolean flag) {
+ final OnCompletionListener listener = onCompletionListener;
+ if (onCompletionListener != null) {
+ Gdx.app.postRunnable(new Runnable() {
+ @Override
+ public void run () {
+ listener.onCompletion(IOSMusic.this);
+ }
+ });
+ }
+ }
+ };
+ this.track.setDelegate(delegate);
+ }
+
+ @Override
+ public void play () {
+ if (track.paused()) {
+ track.setPaused(false);
+ } else if (!track.playing()) {
+ track.play();
+ }
+ }
+
+ @Override
+ public void pause () {
+ if (track.playing()) {
+ track.setPaused(true);
+ }
+ }
+
+ @Override
+ public void stop () {
+ track.stop();
+ }
+
+ @Override
+ public boolean isPlaying () {
+ return track.playing() && !track.paused();
+ }
+
+ @Override
+ public void setLooping (boolean isLooping) {
+ track.setNumberOfLoops(isLooping ? -1 : 0);
+ }
+
+ @Override
+ public boolean isLooping () {
+ return track.numberOfLoops() == -1;
+ }
+
+ @Override
+ public void setVolume (float volume) {
+ track.setVolume(volume);
+ }
+
+ @Override
+ public void setPosition (float position) {
+ track.setCurrentTime(position);
+ }
+
+ @Override
+ public float getPosition () {
+ return (float)(track.currentTime());
+ }
+
+ @Override
+ public void dispose () {
+ track.clear();
+ track.dealloc();
+ }
+
+ @Override
+ public float getVolume () {
+ return track.volume();
+ }
+
+ @Override
+ public void setPan (float pan, float volume) {
+ track.setPan(pan);
+ track.setVolume(volume);
+ }
+
+ @Override
+ public void setOnCompletionListener (OnCompletionListener listener) {
+ this.onCompletionListener = listener;
+ }
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSNet.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSNet.java
new file mode 100755
index 000000000..8e5bfe7f4
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSNet.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Net;
+import com.badlogic.gdx.net.NetJavaImpl;
+import com.badlogic.gdx.net.NetJavaServerSocketImpl;
+import com.badlogic.gdx.net.NetJavaSocketImpl;
+import com.badlogic.gdx.net.ServerSocket;
+import com.badlogic.gdx.net.ServerSocketHints;
+import com.badlogic.gdx.net.Socket;
+import com.badlogic.gdx.net.SocketHints;
+import ios.foundation.NSURL;
+import ios.uikit.UIApplication;
+
+public class IOSNet implements Net {
+
+ NetJavaImpl netJavaImpl = new NetJavaImpl();
+ final UIApplication uiApp;
+
+ public IOSNet (IOSApplication app) {
+ uiApp = app.uiApp;
+ }
+
+ @Override
+ public void sendHttpRequest (HttpRequest httpRequest, HttpResponseListener httpResponseListener) {
+ netJavaImpl.sendHttpRequest(httpRequest, httpResponseListener);
+ }
+
+ @Override
+ public void cancelHttpRequest (HttpRequest httpRequest) {
+ netJavaImpl.cancelHttpRequest(httpRequest);
+ }
+
+ @Override
+ public ServerSocket newServerSocket (Protocol protocol, String hostname, int port, ServerSocketHints hints) {
+ return new NetJavaServerSocketImpl(protocol, hostname, port, hints);
+ }
+
+ @Override
+ public ServerSocket newServerSocket (Protocol protocol, int port, ServerSocketHints hints) {
+ return new NetJavaServerSocketImpl(protocol, port, hints);
+ }
+
+ @Override
+ public Socket newClientSocket (Protocol protocol, String host, int port, SocketHints hints) {
+ return new NetJavaSocketImpl(protocol, host, port, hints);
+ }
+
+ @Override
+ public boolean openURI (String URI) {
+ return uiApp.openURL(NSURL.fileURLWithPath(URI));
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSPreferences.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSPreferences.java
new file mode 100755
index 000000000..e06531334
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSPreferences.java
@@ -0,0 +1,194 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.Preferences;
+import ios.NSObject;
+import ios.foundation.NSAutoreleasePool;
+import ios.foundation.NSMutableDictionary;
+import ios.foundation.NSNumber;
+import ios.foundation.NSString;
+
+import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class IOSPreferences implements Preferences {
+ NSMutableDictionary<NSString, NSObject> nsDictionary;
+ File file;
+
+ public IOSPreferences (NSMutableDictionary<NSString, NSObject> nsDictionary, String filePath) {
+ this.nsDictionary = nsDictionary;
+ this.file = new File(filePath);
+ }
+
+ @Override
+ public Preferences putBoolean (String key, boolean val) {
+ nsDictionary.put(convertKey(key), NSNumber.numberWithBool(val));
+ return this;
+ }
+
+ @Override
+ public Preferences putInteger (String key, int val) {
+ nsDictionary.put(convertKey(key), NSNumber.numberWithInt(val));
+ return this;
+ }
+
+ @Override
+ public Preferences putLong (String key, long val) {
+ nsDictionary.put(convertKey(key), NSNumber.numberWithLongLong(val));
+ return this;
+ }
+
+ @Override
+ public Preferences putFloat (String key, float val) {
+ nsDictionary.put(convertKey(key), NSNumber.numberWithFloat(val));
+ return this;
+ }
+
+ @Override
+ public Preferences putString (String key, String val) {
+ nsDictionary.put(convertKey(key), NSString.stringWithString(val));
+ return this;
+ }
+
+ @Override
+ public Preferences put (Map<String, ?> vals) {
+ Set<String> keySet = vals.keySet();
+ for (String key : keySet) {
+ Object value = vals.get(key);
+ if (value instanceof String) {
+ putString(key, (String)value);
+ } else if (value instanceof Boolean) {
+ putBoolean(key, (Boolean)value);
+ } else if (value instanceof Integer) {
+ putInteger(key, (Integer)value);
+ } else if (value instanceof Long) {
+ putLong(key, (Long)value);
+ } else if (value instanceof Float) {
+ putFloat(key, (Float)value);
+ }
+ }
+ return this;
+ }
+
+ @Override
+ public boolean getBoolean (String key) {
+ NSNumber value = (NSNumber)nsDictionary.get(convertKey(key));
+ if (value == null) return false;
+ return value.boolValue();
+ }
+
+ @Override
+ public int getInteger (String key) {
+ NSNumber value = (NSNumber)nsDictionary.get(convertKey(key));
+ if (value == null) return 0;
+ return value.intValue();
+ }
+
+ @Override
+ public long getLong (String key) {
+ NSNumber value = (NSNumber)nsDictionary.get(convertKey(key));
+ if (value == null) return 0L;
+ return value.longLongValue();
+ }
+
+ @Override
+ public float getFloat (String key) {
+ NSNumber value = (NSNumber)nsDictionary.get(convertKey(key));
+ if (value == null) return 0f;
+ return value.floatValue();
+ }
+
+ @Override
+ public String getString (String key) {
+ //Implicit mapping from NSString to String apparently?
+ Object value = nsDictionary.get(convertKey(key));
+ if (value == null) return "";
+ return value.toString();
+ }
+
+ @Override
+ public boolean getBoolean (String key, boolean defValue) {
+ if (!contains(key)) return defValue;
+ return getBoolean(key);
+ }
+
+ @Override
+ public int getInteger (String key, int defValue) {
+ if (!contains(key)) return defValue;
+ return getInteger(key);
+ }
+
+ @Override
+ public long getLong (String key, long defValue) {
+ if (!contains(key)) return defValue;
+ return getLong(key);
+ }
+
+ @Override
+ public float getFloat (String key, float defValue) {
+ if (!contains(key)) return defValue;
+ return getFloat(key);
+ }
+
+ @Override
+ public String getString (String key, String defValue) {
+ if (!contains(key)) return defValue;
+ return getString(key);
+ }
+
+ @Override
+ public Map<String, ?> get () {
+ Map<String, Object> map = new HashMap<String, Object>();
+ for (NSString key : nsDictionary.keySet()) {
+ NSObject value = nsDictionary.get(key);
+ map.put(key.toString(), value.toString());
+ }
+ return map;
+ }
+
+ @Override
+ public boolean contains (String key) {
+ return nsDictionary.containsKey(convertKey(key));
+ }
+
+ @Override
+ public void clear () {
+ nsDictionary.clear();
+ }
+
+ @Override
+ public void remove (String key) {
+ nsDictionary.remove(convertKey(key));
+ }
+
+ private NSString convertKey (String key) {
+ return NSString.alloc().initWithString(key);
+ }
+
+ @Override
+ public void flush () {
+ NSAutoreleasePool pool = NSAutoreleasePool.alloc().init();
+ if (!nsDictionary.writeToFileAtomically(file.getAbsolutePath(), false)) {
+ Gdx.app.debug("IOSPreferences", "Failed to write NSDictionary to file " + file);
+ }
+ pool.drain();
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSSound.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSSound.java
new file mode 100755
index 000000000..736a8e4ce
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSSound.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.badlogic.gdx.audio.Sound;
+import com.badlogic.gdx.backends.iosmoe.objectal.ALBuffer;
+import com.badlogic.gdx.backends.iosmoe.objectal.ALChannelSource;
+import com.badlogic.gdx.backends.iosmoe.objectal.ALSource;
+import com.badlogic.gdx.backends.iosmoe.objectal.OALSimpleAudio;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.utils.IntArray;
+import ios.foundation.NSArray;
+
+
+public class IOSSound implements Sound {
+
+ private ALBuffer soundBuffer;
+ private String soundPath;
+
+ private ALChannelSource channel;
+ private NSArray<ALSource> sourcePool;
+ private IntArray streamIds = new IntArray(8);
+
+ public IOSSound (FileHandle filePath) {
+ soundPath = filePath.file().getPath().replace('\\', '/');
+ soundBuffer = OALSimpleAudio.sharedInstance().preloadEffect(soundPath);
+ channel = OALSimpleAudio.sharedInstance().channel();
+ sourcePool = (NSArray<ALSource>)channel.sourcePool().sources();
+ }
+
+ @Override
+ public long play () {
+ return play(1, 1, 0, false);
+ }
+
+ @Override
+ public long play (float volume) {
+ return play(volume, 1, 0, false);
+ }
+
+ @Override
+ public long play (float volume, float pitch, float pan) {
+ return play(volume, pitch, pan, false);
+ }
+
+ public long play (float volume, float pitch, float pan, boolean loop) {
+ if (streamIds.size == 8) streamIds.pop();
+ ALSource soundSource = OALSimpleAudio.sharedInstance().playBufferVolumePitchPanLoop(soundBuffer, volume, pitch, pan, loop);
+ if (soundSource == null) return -1;
+ if (soundSource.sourceId() == -1) return -1;
+ streamIds.insert(0, soundSource.sourceId());
+ return soundSource.sourceId();
+ }
+
+ @Override
+ public long loop () {
+ return play(1, 1, 0, true);
+ }
+
+ @Override
+ public long loop (float volume) {
+ return play(volume, 1, 0, true);
+ }
+
+ @Override
+ public long loop (float volume, float pitch, float pan) {
+ return play(volume, pitch, pan, true);
+ }
+
+ @Override
+ public void stop () {
+ ALSource source;
+ for (int i = 0; i < streamIds.size; i++) {
+ if ((source = getSoundSource(streamIds.get(i))) != null) source.stop();
+ }
+ }
+
+ @Override
+ public void dispose () {
+ stop();
+ soundBuffer.dealloc();
+ }
+
+ @Override
+ public void stop (long soundId) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.stop();
+ }
+
+ @Override
+ public void setLooping (long soundId, boolean looping) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.setLooping(looping);
+ }
+
+ @Override
+ public void setPitch (long soundId, float pitch) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.setPitch(pitch);
+ }
+
+ @Override
+ public void setVolume (long soundId, float volume) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.setVolume(volume);
+ }
+
+ @Override
+ public void setPan (long soundId, float pan, float volume) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) {
+ source.setPan(pan);
+ source.setVolume(volume);
+ }
+ }
+
+ @Override
+ public void pause () {
+ ALSource source;
+ for (int i = 0; i < streamIds.size; i++) {
+ if ((source = getSoundSource(streamIds.get(i))) != null) source.setPaused(true);
+ }
+ }
+
+ @Override
+ public void resume () {
+ ALSource source;
+ for (int i = 0; i < streamIds.size; i++) {
+ if ((source = getSoundSource(streamIds.get(i))) != null) source.setPaused(false);
+ }
+ }
+
+ @Override
+ public void pause (long soundId) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.setPaused(true);
+ }
+
+ @Override
+ public void resume (long soundId) {
+ ALSource source;
+ if ((source = getSoundSource(soundId)) != null) source.setPaused(false);
+ }
+
+ private ALSource getSoundSource (long soundId) {
+ for (ALSource source : sourcePool) {
+ if (source.sourceId() == soundId) return source;
+ }
+ return null;
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSUIViewController.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSUIViewController.java
new file mode 100755
index 000000000..3cf2a6cac
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSUIViewController.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.objc.ann.Selector;
+import ios.coregraphics.struct.CGRect;
+import ios.glkit.GLKViewController;
+import ios.uikit.enums.UIInterfaceOrientation;
+
+
+class IOSUIViewController extends GLKViewController {
+
+ private IOSApplication app;
+ private IOSGraphics graphics;
+
+ static {
+ NatJ.register();
+ }
+
+ @Selector("alloc")
+ public static native IOSUIViewController alloc ();
+
+ @Selector("init")
+ public native IOSUIViewController init ();
+
+ protected IOSUIViewController (Pointer peer) {
+ super(peer);
+ }
+ public IOSUIViewController init (IOSApplication app, IOSGraphics graphics) {
+ init();
+ this.app = app;
+ this.graphics = graphics;
+ return this;
+ }
+
+ @Override
+ public void viewWillAppear (boolean arg0) {
+ super.viewWillAppear(arg0);
+ // start GLKViewController even though we may only draw a single frame
+ // (we may be in non-continuous mode)
+ setPaused(false);
+ }
+
+ @Override
+ public void viewDidAppear (boolean animated) {
+ if (app.viewControllerListener != null)
+ app.viewControllerListener.viewDidAppear(animated);
+ }
+
+ @Override
+ public long supportedInterfaceOrientations () {
+ long mask = 0;
+ if (app.config.orientationLandscape) {
+ mask |= ((1 << UIInterfaceOrientation.LandscapeLeft) | (1 << UIInterfaceOrientation.LandscapeRight));
+ }
+ if (app.config.orientationPortrait) {
+ mask |= ((1 << UIInterfaceOrientation.Portrait) | (1 << UIInterfaceOrientation.PortraitUpsideDown));
+ }
+ return mask;
+ }
+
+ @Override
+ public boolean shouldAutorotate () {
+ return true;
+ }
+
+ public boolean shouldAutorotateToInterfaceOrientation (long orientation) {
+ // we return "true" if we support the orientation
+ if (orientation == UIInterfaceOrientation.LandscapeLeft || orientation == UIInterfaceOrientation.LandscapeRight)
+ return app.config.orientationLandscape;
+ else
+ // assume portrait
+ return app.config.orientationPortrait;
+ }
+
+ @Override
+ public void viewDidLayoutSubviews () {
+ super.viewDidLayoutSubviews();
+ // get the view size and update graphics
+ CGRect bounds = app.getBounds();
+ graphics.width = (int)bounds.size().width();
+ graphics.height = (int)bounds.size().height();
+ graphics.makeCurrent();
+ if (app.graphics.created) {
+ app.listener.resize(graphics.width, graphics.height);
+ }
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSViewControllerListener.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSViewControllerListener.java
new file mode 100755
index 000000000..be41de075
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/IOSViewControllerListener.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe;
+
+/** An IOSViewControllerListener can be added to an {@link IOSApplication} via
+ * {@link IOSApplication#addViewControllerListener(IOSViewControllerListener)}. It will receive notification of view events.</p>
+ *
+ * The methods will be invoked on the UI thread.
+ *
+ * @author mzechner */
+public interface IOSViewControllerListener {
+
+ /** Called when the {@link IOSApplication} root ViewController has appeared */
+ public void viewDidAppear (boolean animated);
+
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/custom/HWMachine.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/custom/HWMachine.java
new file mode 100755
index 000000000..cb14738e9
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/custom/HWMachine.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.custom;
+
+import com.badlogic.gdx.utils.BufferUtils;
+import com.intel.moe.natj.c.CRuntime;
+import com.intel.moe.natj.c.ann.CFunction;
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.general.ann.UncertainArgument;
+import com.intel.moe.natj.general.ptr.BytePtr;
+import com.intel.moe.natj.general.ptr.IntPtr;
+import com.intel.moe.natj.general.ptr.impl.PtrFactory;
+import com.intel.moe.natj.general.ptr.VoidPtr;
+
+@Runtime(CRuntime.class)
+public class HWMachine {
+ static {
+ NatJ.register();
+ }
+
+ @CFunction
+ public static native int sysctlbyname(@UncertainArgument("Options: java.string, c.const-byte-ptr Fallback: java.string") String name,
+ VoidPtr oldp, IntPtr oldlenp, VoidPtr newp, int newlen);
+
+ public static String getMachineString () {
+ String name = "hw.machine";
+ IntPtr sizePtr = PtrFactory.newIntPtr(BufferUtils.newIntBuffer(1));
+ sysctlbyname(name, null, sizePtr, null, 0);
+ BytePtr machine = PtrFactory.newBytePtr(sizePtr.get(), true, true);
+ sysctlbyname(name, machine, sizePtr, null, 0);
+ return machine.toUTF8String();
+ }
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALBuffer.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALBuffer.java
new file mode 100755
index 000000000..a22e182bc
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALBuffer.java
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.general.ptr.VoidPtr;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import ios.NSObject;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALBuffer extends NSObject {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALBuffer(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALBuffer alloc();
+
+ @Generated
+ @Selector("bits")
+ public native int bits();
+
+ @Generated
+ @Selector("bufferId")
+ public native int bufferId();
+
+ @Generated
+ @Selector("bufferWithName:data:size:format:frequency:")
+ public static native ALBuffer bufferWithNameDataSizeFormatFrequency(
+ String name, VoidPtr data, int size, int format, int frequency);
+
+ @Generated
+ @Selector("channels")
+ public native int channels();
+
+ @Generated
+ @Selector("device")
+ public native ALDevice device();
+
+ @Generated
+ @Selector("duration")
+ public native float duration();
+
+ @Generated
+ @Selector("format")
+ public native int format();
+
+ @Generated
+ @Selector("freeDataOnDestroy")
+ public native boolean freeDataOnDestroy();
+
+ @Generated
+ @Selector("frequency")
+ public native int frequency();
+
+ @Generated
+ @Selector("init")
+ public native ALBuffer init();
+
+ @Generated
+ @Selector("initWithName:data:size:format:frequency:")
+ public native ALBuffer initWithNameDataSizeFormatFrequency(String name,
+ VoidPtr data, int size, int format, int frequency);
+
+ @Generated
+ @Selector("name")
+ public native String name();
+
+ @Generated
+ @Selector("parentBuffer")
+ public native ALBuffer parentBuffer();
+
+ @Generated
+ @Selector("setFreeDataOnDestroy:")
+ public native void setFreeDataOnDestroy(boolean value);
+
+ @Generated
+ @Selector("setName:")
+ public native void setName(String value);
+
+ @Generated
+ @Selector("setParentBuffer:")
+ public native void setParentBuffer(ALBuffer value);
+
+ @Generated
+ @Selector("size")
+ public native int size();
+
+ @Generated
+ @Selector("sliceWithName:offset:size:")
+ public native ALBuffer sliceWithNameOffsetSize(String sliceName,
+ int offset, int size);
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALChannelSource.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALChannelSource.java
new file mode 100755
index 000000000..8c3bcbe22
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALChannelSource.java
@@ -0,0 +1,372 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.SEL;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALChannelSource extends NSObject implements ALSoundSource {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALChannelSource(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addChannel:")
+ public native void addChannel(ALChannelSource channel);
+
+ @Generated
+ @Selector("addSource:")
+ public native void addSource(
+ @Mapped(ObjCObjectMapper.class) ALSoundSource source);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALChannelSource alloc();
+
+ @Generated
+ @Selector("channelWithSources:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public static native Object channelWithSources(int reservedSources);
+
+ @Generated
+ @Selector("clear")
+ public native void clear();
+
+ @Generated
+ @Selector("clearUnusedBuffers")
+ public native NSArray<?> clearUnusedBuffers();
+
+ @Generated
+ @Selector("coneInnerAngle")
+ public native float coneInnerAngle();
+
+ @Generated
+ @Selector("coneOuterAngle")
+ public native float coneOuterAngle();
+
+ @Generated
+ @Selector("coneOuterGain")
+ public native float coneOuterGain();
+
+ @Generated
+ @Selector("context")
+ public native ALContext context();
+
+ @Generated
+ @Selector("direction")
+ @ByValue
+ public native ALVector direction();
+
+ @Generated
+ @Selector("fadeTo:duration:target:selector:")
+ public native void fadeToDurationTargetSelector(float gain, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("gain")
+ public native float gain();
+
+ @Generated
+ @Selector("init")
+ public native ALChannelSource init();
+
+ @Generated
+ @Selector("initWithSources:")
+ public native ALChannelSource initWithSources(int reservedSources);
+
+ @Generated
+ @Selector("interruptible")
+ public native boolean interruptible();
+
+ @Generated
+ @Selector("looping")
+ public native boolean looping();
+
+ @Generated
+ @Selector("maxDistance")
+ public native float maxDistance();
+
+ @Generated
+ @Selector("maxGain")
+ public native float maxGain();
+
+ @Generated
+ @Selector("minGain")
+ public native float minGain();
+
+ @Generated
+ @Selector("muted")
+ public native boolean muted();
+
+ @Generated
+ @Selector("pan")
+ public native float pan();
+
+ @Generated
+ @Selector("panTo:duration:target:selector:")
+ public native void panToDurationTargetSelector(float pan, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("paused")
+ public native boolean paused();
+
+ @Generated
+ @Selector("pitch")
+ public native float pitch();
+
+ @Generated
+ @Selector("pitchTo:duration:target:selector:")
+ public native void pitchToDurationTargetSelector(float pitch,
+ float duration, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("play:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource play(ALBuffer buffer);
+
+ @Generated
+ @Selector("play:gain:pitch:pan:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource playGainPitchPanLoop(ALBuffer buffer, float gain,
+ float pitch, float pan, boolean loop);
+
+ @Generated
+ @Selector("play:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource playLoop(ALBuffer buffer, boolean loop);
+
+ @Generated
+ @Selector("playing")
+ public native boolean playing();
+
+ @Generated
+ @Selector("position")
+ @ByValue
+ public native ALPoint position();
+
+ @Generated
+ @Selector("referenceDistance")
+ public native float referenceDistance();
+
+ @Generated
+ @Selector("removeBuffersNamed:")
+ public native boolean removeBuffersNamed(String name);
+
+ @Generated
+ @Selector("removeSource:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource removeSource(
+ @Mapped(ObjCObjectMapper.class) ALSoundSource source);
+
+ @Generated
+ @Selector("reservedSources")
+ public native int reservedSources();
+
+ @Generated
+ @Selector("resetToDefault")
+ public native void resetToDefault();
+
+ @Generated
+ @Selector("reverbObstruction")
+ public native float reverbObstruction();
+
+ @Generated
+ @Selector("reverbOcclusion")
+ public native float reverbOcclusion();
+
+ @Generated
+ @Selector("reverbSendLevel")
+ public native float reverbSendLevel();
+
+ @Generated
+ @Selector("rewind")
+ public native void rewind();
+
+ @Generated
+ @Selector("rolloffFactor")
+ public native float rolloffFactor();
+
+ @Generated
+ @Selector("setConeInnerAngle:")
+ public native void setConeInnerAngle(float value);
+
+ @Generated
+ @Selector("setConeOuterAngle:")
+ public native void setConeOuterAngle(float value);
+
+ @Generated
+ @Selector("setConeOuterGain:")
+ public native void setConeOuterGain(float value);
+
+ @Generated
+ @Selector("setDefaultsFromSource:")
+ public native void setDefaultsFromSource(
+ @Mapped(ObjCObjectMapper.class) ALSoundSource source);
+
+ @Generated
+ @Selector("setDirection:")
+ public native void setDirection(@ByValue ALVector value);
+
+ @Generated
+ @Selector("setGain:")
+ public native void setGain(float value);
+
+ @Generated
+ @Selector("setInterruptible:")
+ public native void setInterruptible(boolean value);
+
+ @Generated
+ @Selector("setLooping:")
+ public native void setLooping(boolean value);
+
+ @Generated
+ @Selector("setMaxDistance:")
+ public native void setMaxDistance(float value);
+
+ @Generated
+ @Selector("setMaxGain:")
+ public native void setMaxGain(float value);
+
+ @Generated
+ @Selector("setMinGain:")
+ public native void setMinGain(float value);
+
+ @Generated
+ @Selector("setMuted:")
+ public native void setMuted(boolean value);
+
+ @Generated
+ @Selector("setPan:")
+ public native void setPan(float value);
+
+ @Generated
+ @Selector("setPaused:")
+ public native void setPaused(boolean value);
+
+ @Generated
+ @Selector("setPitch:")
+ public native void setPitch(float value);
+
+ @Generated
+ @Selector("setPosition:")
+ public native void setPosition(@ByValue ALPoint value);
+
+ @Generated
+ @Selector("setReferenceDistance:")
+ public native void setReferenceDistance(float value);
+
+ @Generated
+ @Selector("setReservedSources:")
+ public native void setReservedSources(int value);
+
+ @Generated
+ @Selector("setReverbObstruction:")
+ public native void setReverbObstruction(float value);
+
+ @Generated
+ @Selector("setReverbOcclusion:")
+ public native void setReverbOcclusion(float value);
+
+ @Generated
+ @Selector("setReverbSendLevel:")
+ public native void setReverbSendLevel(float value);
+
+ @Generated
+ @Selector("setRolloffFactor:")
+ public native void setRolloffFactor(float value);
+
+ @Generated
+ @Selector("setSourceRelative:")
+ public native void setSourceRelative(int value);
+
+ @Generated
+ @Selector("setVelocity:")
+ public native void setVelocity(@ByValue ALVector value);
+
+ @Generated
+ @Selector("setVolume:")
+ public native void setVolume(float value);
+
+ @Generated
+ @Selector("sourcePool")
+ public native ALSoundSourcePool sourcePool();
+
+ @Generated
+ @Selector("sourceRelative")
+ public native int sourceRelative();
+
+ @Generated
+ @Selector("sourceType")
+ public native int sourceType();
+
+ @Generated
+ @Selector("splitChannelWithSources:")
+ public native ALChannelSource splitChannelWithSources(int numSources);
+
+ @Generated
+ @Selector("stop")
+ public native void stop();
+
+ @Generated
+ @Selector("stopActions")
+ public native void stopActions();
+
+ @Generated
+ @Selector("stopFade")
+ public native void stopFade();
+
+ @Generated
+ @Selector("stopPan")
+ public native void stopPan();
+
+ @Generated
+ @Selector("stopPitch")
+ public native void stopPitch();
+
+ @Generated
+ @Selector("velocity")
+ @ByValue
+ public native ALVector velocity();
+
+ @Generated
+ @Selector("volume")
+ public native float volume();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALContext.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALContext.java
new file mode 100755
index 000000000..1b9152ca7
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALContext.java
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.general.ptr.VoidPtr;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALContext extends NSObject implements OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALContext(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("alVersion")
+ public native String alVersion();
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALContext alloc();
+
+ @Generated
+ @Selector("attributes")
+ public native NSArray<?> attributes();
+
+ @Generated
+ @Selector("clearBuffers")
+ public native void clearBuffers();
+
+ @Generated
+ @Selector("context")
+ public native VoidPtr context();
+
+ @Generated
+ @Selector("contextOnDevice:attributes:")
+ public static native ALContext contextOnDeviceAttributes(ALDevice device,
+ NSArray<?> attributes);
+
+ @Generated
+ @Selector("contextOnDevice:outputFrequency:refreshIntervals:synchronousContext:monoSources:stereoSources:")
+ public static native ALContext contextOnDeviceOutputFrequencyRefreshIntervalsSynchronousContextMonoSourcesStereoSources(
+ ALDevice device, int outputFrequency, int refreshIntervals,
+ boolean synchronousContext, int monoSources, int stereoSources);
+
+ @Generated
+ @Selector("device")
+ public native ALDevice device();
+
+ @Generated
+ @Selector("distanceModel")
+ public native int distanceModel();
+
+ @Generated
+ @Selector("dopplerFactor")
+ public native float dopplerFactor();
+
+ @Generated
+ @Selector("ensureContextIsCurrent")
+ public native void ensureContextIsCurrent();
+
+ @Generated
+ @Selector("extensions")
+ public native NSArray<?> extensions();
+
+ @Generated
+ @Selector("getProcAddress:")
+ public native VoidPtr getProcAddress(String functionName);
+
+ @Generated
+ @Selector("init")
+ public native ALContext init();
+
+ @Generated
+ @Selector("initOnDevice:attributes:")
+ public native ALContext initOnDeviceAttributes(ALDevice device,
+ NSArray<?> attributes);
+
+ @Generated
+ @Selector("initOnDevice:outputFrequency:refreshIntervals:synchronousContext:monoSources:stereoSources:")
+ public native ALContext initOnDeviceOutputFrequencyRefreshIntervalsSynchronousContextMonoSourcesStereoSources(
+ ALDevice device, int outputFrequency, int refreshIntervals,
+ boolean synchronousContext, int monoSources, int stereoSources);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("isExtensionPresent:")
+ public native boolean isExtensionPresent(String name);
+
+ @Generated
+ @Selector("listener")
+ public native ALListener listener();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("notifySourceDeallocating:")
+ public native void notifySourceDeallocating(ALSource source);
+
+ @Generated
+ @Selector("notifySourceInitializing:")
+ public native void notifySourceInitializing(ALSource source);
+
+ @Generated
+ @Selector("process")
+ public native void process();
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("renderer")
+ public native String renderer();
+
+ @Generated
+ @Selector("setDistanceModel:")
+ public native void setDistanceModel(int value);
+
+ @Generated
+ @Selector("setDopplerFactor:")
+ public native void setDopplerFactor(float value);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("setSpeedOfSound:")
+ public native void setSpeedOfSound(float value);
+
+ @Generated
+ @Selector("sources")
+ public native NSArray<?> sources();
+
+ @Generated
+ @Selector("speedOfSound")
+ public native float speedOfSound();
+
+ @Generated
+ @Selector("stopAllSounds")
+ public native void stopAllSounds();
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("vendor")
+ public native String vendor();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALDevice.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALDevice.java
new file mode 100755
index 000000000..193c95144
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALDevice.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.general.ptr.VoidPtr;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALDevice extends NSObject implements OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALDevice(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALDevice alloc();
+
+ @Generated
+ @Selector("clearBuffers")
+ public native void clearBuffers();
+
+ @Generated
+ @Selector("contexts")
+ public native NSArray<?> contexts();
+
+ @Generated
+ @Selector("device")
+ public native VoidPtr device();
+
+ @Generated
+ @Selector("deviceWithDeviceSpecifier:")
+ public static native ALDevice deviceWithDeviceSpecifier(
+ String deviceSpecifier);
+
+ @Generated
+ @Selector("extensions")
+ public native NSArray<?> extensions();
+
+ @Generated
+ @Selector("getProcAddress:")
+ public native VoidPtr getProcAddress(String functionName);
+
+ @Generated
+ @Selector("init")
+ public native ALDevice init();
+
+ @Generated
+ @Selector("initWithDeviceSpecifier:")
+ public native ALDevice initWithDeviceSpecifier(String deviceSpecifier);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("isExtensionPresent:")
+ public native boolean isExtensionPresent(String name);
+
+ @Generated
+ @Selector("majorVersion")
+ public native int majorVersion();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("minorVersion")
+ public native int minorVersion();
+
+ @Generated
+ @Selector("notifyContextDeallocating:")
+ public native void notifyContextDeallocating(ALContext context);
+
+ @Generated
+ @Selector("notifyContextInitializing:")
+ public native void notifyContextInitializing(ALContext context);
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALListener.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALListener.java
new file mode 100755
index 000000000..2b5994a87
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALListener.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALListener extends NSObject implements OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALListener(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALListener alloc();
+
+ @Generated
+ @Selector("context")
+ public native ALContext context();
+
+ @Generated
+ @Selector("gain")
+ public native float gain();
+
+ @Generated
+ @Selector("globalReverbLevel")
+ public native float globalReverbLevel();
+
+ @Generated
+ @Selector("init")
+ public native ALListener init();
+
+ @Generated
+ @Selector("initWithContext:")
+ public native ALListener initWithContext(ALContext context);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("listenerForContext:")
+ public static native ALListener listenerForContext(ALContext context);
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("muted")
+ public native boolean muted();
+
+ @Generated
+ @Selector("orientation")
+ @ByValue
+ public native ALOrientation orientation();
+
+ @Generated
+ @Selector("position")
+ @ByValue
+ public native ALPoint position();
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("reverbEQBandwidth")
+ public native float reverbEQBandwidth();
+
+ @Generated
+ @Selector("reverbEQFrequency")
+ public native float reverbEQFrequency();
+
+ @Generated
+ @Selector("reverbEQGain")
+ public native float reverbEQGain();
+
+ @Generated
+ @Selector("reverbOn")
+ public native boolean reverbOn();
+
+ @Generated
+ @Selector("reverbRoomType")
+ public native int reverbRoomType();
+
+ @Generated
+ @Selector("setGain:")
+ public native void setGain(float value);
+
+ @Generated
+ @Selector("setGlobalReverbLevel:")
+ public native void setGlobalReverbLevel(float value);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("setMuted:")
+ public native void setMuted(boolean value);
+
+ @Generated
+ @Selector("setOrientation:")
+ public native void setOrientation(@ByValue ALOrientation value);
+
+ @Generated
+ @Selector("setPosition:")
+ public native void setPosition(@ByValue ALPoint value);
+
+ @Generated
+ @Selector("setReverbEQBandwidth:")
+ public native void setReverbEQBandwidth(float value);
+
+ @Generated
+ @Selector("setReverbEQFrequency:")
+ public native void setReverbEQFrequency(float value);
+
+ @Generated
+ @Selector("setReverbEQGain:")
+ public native void setReverbEQGain(float value);
+
+ @Generated
+ @Selector("setReverbOn:")
+ public native void setReverbOn(boolean value);
+
+ @Generated
+ @Selector("setReverbRoomType:")
+ public native void setReverbRoomType(int value);
+
+ @Generated
+ @Selector("setVelocity:")
+ public native void setVelocity(@ByValue ALVector value);
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("velocity")
+ @ByValue
+ public native ALVector velocity();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALOrientation.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALOrientation.java
new file mode 100755
index 000000000..78d4be2d1
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALOrientation.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.c.StructObject;
+import com.intel.moe.natj.c.ann.Structure;
+import com.intel.moe.natj.c.ann.StructureField;
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.general.ann.Generated;
+
+@Generated
+@Structure()
+public final class ALOrientation extends StructObject {
+ static {
+ NatJ.register();
+ }
+ private static long __natjCache;
+
+ @Generated
+ public ALOrientation() {
+ super(ALOrientation.class);
+ }
+
+ @Generated
+ protected ALOrientation(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ public ALOrientation(@ByValue ALVector at, @ByValue ALVector up) {
+ super(ALOrientation.class);
+ setAt(at);
+ setUp(up);
+ }
+
+ @Generated
+ @StructureField(order = 0, isGetter = true)
+ @ByValue
+ public native ALVector at();
+
+ @Generated
+ @StructureField(order = 0, isGetter = false)
+ public native void setAt(@ByValue ALVector value);
+
+ @Generated
+ @StructureField(order = 1, isGetter = true)
+ @ByValue
+ public native ALVector up();
+
+ @Generated
+ @StructureField(order = 1, isGetter = false)
+ public native void setUp(@ByValue ALVector value);
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALPoint.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALPoint.java
new file mode 100755
index 000000000..8b8c0acf1
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALPoint.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.c.StructObject;
+import com.intel.moe.natj.c.ann.Structure;
+import com.intel.moe.natj.c.ann.StructureField;
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+
+@Generated
+@Structure()
+public final class ALPoint extends StructObject {
+ static {
+ NatJ.register();
+ }
+ private static long __natjCache;
+
+ @Generated
+ public ALPoint() {
+ super(ALPoint.class);
+ }
+
+ @Generated
+ protected ALPoint(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ public ALPoint(float x, float y, float z) {
+ super(ALPoint.class);
+ setX(x);
+ setY(y);
+ setZ(z);
+ }
+
+ @Generated
+ @StructureField(order = 0, isGetter = true)
+ public native float x();
+
+ @Generated
+ @StructureField(order = 0, isGetter = false)
+ public native void setX(float value);
+
+ @Generated
+ @StructureField(order = 1, isGetter = true)
+ public native float y();
+
+ @Generated
+ @StructureField(order = 1, isGetter = false)
+ public native void setY(float value);
+
+ @Generated
+ @StructureField(order = 2, isGetter = true)
+ public native float z();
+
+ @Generated
+ @StructureField(order = 2, isGetter = false)
+ public native void setZ(float value);
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSource.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSource.java
new file mode 100755
index 000000000..58b47178a
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSource.java
@@ -0,0 +1,284 @@
+
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.SEL;
+import com.intel.moe.natj.objc.ann.ObjCProtocolName;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCProtocolName("ALSoundSource")
+public interface ALSoundSource {
+ @Generated
+ @Selector("clear")
+ void clear ();
+
+ @Generated
+ @Selector("coneInnerAngle")
+ float coneInnerAngle ();
+
+ @Generated
+ @Selector("coneOuterAngle")
+ float coneOuterAngle ();
+
+ @Generated
+ @Selector("coneOuterGain")
+ float coneOuterGain ();
+
+ @Generated
+ @Selector("direction")
+ @ByValue
+ ALVector direction ();
+
+ @Generated
+ @Selector("fadeTo:duration:target:selector:")
+ void fadeToDurationTargetSelector (float gain, float duration, @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("gain")
+ float gain ();
+
+ @Generated
+ @Selector("interruptible")
+ boolean interruptible ();
+
+ @Generated
+ @Selector("looping")
+ boolean looping ();
+
+ @Generated
+ @Selector("maxDistance")
+ float maxDistance ();
+
+ @Generated
+ @Selector("maxGain")
+ float maxGain ();
+
+ @Generated
+ @Selector("minGain")
+ float minGain ();
+
+ @Generated
+ @Selector("muted")
+ boolean muted ();
+
+ @Generated
+ @Selector("pan")
+ float pan ();
+
+ @Generated
+ @Selector("panTo:duration:target:selector:")
+ void panToDurationTargetSelector (float pan, float duration, @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("paused")
+ boolean paused ();
+
+ @Generated
+ @Selector("pitch")
+ float pitch ();
+
+ @Generated
+ @Selector("pitchTo:duration:target:selector:")
+ void pitchToDurationTargetSelector (float pitch, float duration, @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("play:")
+ @MappedReturn(ObjCObjectMapper.class)
+ ALSoundSource play (ALBuffer buffer);
+
+ @Generated
+ @Selector("play:gain:pitch:pan:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ ALSoundSource playGainPitchPanLoop (ALBuffer buffer, float gain, float pitch, float pan, boolean loop);
+
+ @Generated
+ @Selector("play:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ ALSoundSource playLoop (ALBuffer buffer, boolean loop);
+
+ @Generated
+ @Selector("playing")
+ boolean playing ();
+
+ @Generated
+ @Selector("position")
+ @ByValue
+ ALPoint position ();
+
+ @Generated
+ @Selector("referenceDistance")
+ float referenceDistance ();
+
+ @Generated
+ @Selector("reverbObstruction")
+ float reverbObstruction ();
+
+ @Generated
+ @Selector("reverbOcclusion")
+ float reverbOcclusion ();
+
+ @Generated
+ @Selector("reverbSendLevel")
+ float reverbSendLevel ();
+
+ @Generated
+ @Selector("rewind")
+ void rewind ();
+
+ @Generated
+ @Selector("rolloffFactor")
+ float rolloffFactor ();
+
+ @Generated
+ @Selector("setConeInnerAngle:")
+ void setConeInnerAngle (float value);
+
+ @Generated
+ @Selector("setConeOuterAngle:")
+ void setConeOuterAngle (float value);
+
+ @Generated
+ @Selector("setConeOuterGain:")
+ void setConeOuterGain (float value);
+
+ @Generated
+ @Selector("setDirection:")
+ void setDirection (@ByValue ALVector value);
+
+ @Generated
+ @Selector("setGain:")
+ void setGain (float value);
+
+ @Generated
+ @Selector("setInterruptible:")
+ void setInterruptible (boolean value);
+
+ @Generated
+ @Selector("setLooping:")
+ void setLooping (boolean value);
+
+ @Generated
+ @Selector("setMaxDistance:")
+ void setMaxDistance (float value);
+
+ @Generated
+ @Selector("setMaxGain:")
+ void setMaxGain (float value);
+
+ @Generated
+ @Selector("setMinGain:")
+ void setMinGain (float value);
+
+ @Generated
+ @Selector("setMuted:")
+ void setMuted (boolean value);
+
+ @Generated
+ @Selector("setPan:")
+ void setPan (float value);
+
+ @Generated
+ @Selector("setPaused:")
+ void setPaused (boolean value);
+
+ @Generated
+ @Selector("setPitch:")
+ void setPitch (float value);
+
+ @Generated
+ @Selector("setPosition:")
+ void setPosition (@ByValue ALPoint value);
+
+ @Generated
+ @Selector("setReferenceDistance:")
+ void setReferenceDistance (float value);
+
+ @Generated
+ @Selector("setReverbObstruction:")
+ void setReverbObstruction (float value);
+
+ @Generated
+ @Selector("setReverbOcclusion:")
+ void setReverbOcclusion (float value);
+
+ @Generated
+ @Selector("setReverbSendLevel:")
+ void setReverbSendLevel (float value);
+
+ @Generated
+ @Selector("setRolloffFactor:")
+ void setRolloffFactor (float value);
+
+ @Generated
+ @Selector("setSourceRelative:")
+ void setSourceRelative (int value);
+
+ @Generated
+ @Selector("setVelocity:")
+ void setVelocity (@ByValue ALVector value);
+
+ @Generated
+ @Selector("setVolume:")
+ void setVolume (float value);
+
+ @Generated
+ @Selector("sourceRelative")
+ int sourceRelative ();
+
+ @Generated
+ @Selector("sourceType")
+ int sourceType ();
+
+ @Generated
+ @Selector("stop")
+ void stop ();
+
+ @Generated
+ @Selector("stopActions")
+ void stopActions ();
+
+ @Generated
+ @Selector("stopFade")
+ void stopFade ();
+
+ @Generated
+ @Selector("stopPan")
+ void stopPan ();
+
+ @Generated
+ @Selector("stopPitch")
+ void stopPitch ();
+
+ @Generated
+ @Selector("velocity")
+ @ByValue
+ ALVector velocity ();
+
+ @Generated
+ @Selector("volume")
+ float volume ();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSourcePool.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSourcePool.java
new file mode 100755
index 000000000..6f58a950d
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSoundSourcePool.java
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALSoundSourcePool extends NSObject {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALSoundSourcePool(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSource:")
+ public native void addSource(
+ @Mapped(ObjCObjectMapper.class) ALSoundSource source);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALSoundSourcePool alloc();
+
+ @Generated
+ @Selector("getFreeSource:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource getFreeSource(boolean attemptToInterrupt);
+
+ @Generated
+ @Selector("init")
+ public native ALSoundSourcePool init();
+
+ @Generated
+ @Selector("pool")
+ public static native ALSoundSourcePool pool();
+
+ @Generated
+ @Selector("removeSource:")
+ public native void removeSource(
+ @Mapped(ObjCObjectMapper.class) ALSoundSource source);
+
+ @Generated
+ @Selector("sources")
+ public native NSArray<?> sources();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSource.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSource.java
new file mode 100755
index 000000000..c51129c71
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALSource.java
@@ -0,0 +1,466 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.ByValue;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.NUInt;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.general.ptr.VoidPtr;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.SEL;
+import com.intel.moe.natj.objc.ann.ObjCBlock;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class ALSource extends NSObject implements ALSoundSource,
+ OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected ALSource(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native ALSource alloc();
+
+ @Generated
+ @Selector("buffer")
+ public native ALBuffer buffer();
+
+ @Generated
+ @Selector("buffersProcessed")
+ public native int buffersProcessed();
+
+ @Generated
+ @Selector("buffersQueued")
+ public native int buffersQueued();
+
+ @Generated
+ @Selector("clear")
+ public native void clear();
+
+ @Generated
+ @Selector("coneInnerAngle")
+ public native float coneInnerAngle();
+
+ @Generated
+ @Selector("coneOuterAngle")
+ public native float coneOuterAngle();
+
+ @Generated
+ @Selector("coneOuterGain")
+ public native float coneOuterGain();
+
+ @Generated
+ @Selector("context")
+ public native ALContext context();
+
+ @Generated
+ @Selector("direction")
+ @ByValue
+ public native ALVector direction();
+
+ @Generated
+ @Selector("fadeTo:duration:target:selector:")
+ public native void fadeToDurationTargetSelector(float gain, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("gain")
+ public native float gain();
+
+ @Generated
+ @Selector("init")
+ public native ALSource init();
+
+ @Generated
+ @Selector("initOnContext:")
+ public native ALSource initOnContext(ALContext context);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("interruptible")
+ public native boolean interruptible();
+
+ @Generated
+ @Selector("looping")
+ public native boolean looping();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("maxDistance")
+ public native float maxDistance();
+
+ @Generated
+ @Selector("maxGain")
+ public native float maxGain();
+
+ @Generated
+ @Selector("minGain")
+ public native float minGain();
+
+ @Generated
+ @Selector("muted")
+ public native boolean muted();
+
+ @Generated
+ @Selector("offsetInBytes")
+ public native float offsetInBytes();
+
+ @Generated
+ @Selector("offsetInSamples")
+ public native float offsetInSamples();
+
+ @Generated
+ @Selector("offsetInSeconds")
+ public native float offsetInSeconds();
+
+ @Generated
+ @Selector("pan")
+ public native float pan();
+
+ @Generated
+ @Selector("panTo:duration:target:selector:")
+ public native void panToDurationTargetSelector(float pan, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("paused")
+ public native boolean paused();
+
+ @Generated
+ @Selector("pitch")
+ public native float pitch();
+
+ @Generated
+ @Selector("pitchTo:duration:target:selector:")
+ public native void pitchToDurationTargetSelector(float pitch,
+ float duration, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("play")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource play();
+
+ @Generated
+ @Selector("play:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource play(ALBuffer buffer);
+
+ @Generated
+ @Selector("play:gain:pitch:pan:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource playGainPitchPanLoop(ALBuffer buffer, float gain,
+ float pitch, float pan, boolean loop);
+
+ @Generated
+ @Selector("play:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSoundSource playLoop(ALBuffer buffer, boolean loop);
+
+ @Generated
+ @Selector("playing")
+ public native boolean playing();
+
+ @Generated
+ @Selector("position")
+ @ByValue
+ public native ALPoint position();
+
+ @Generated
+ @Selector("queueBuffer:")
+ public native boolean queueBuffer(ALBuffer buffer);
+
+ @Generated
+ @Selector("queueBuffer:repeats:")
+ public native boolean queueBufferRepeats(ALBuffer buffer,
+ @NUInt long repeats);
+
+ @Generated
+ @Selector("queueBuffers:")
+ public native boolean queueBuffers(NSArray<?> buffers);
+
+ @Generated
+ @Selector("queueBuffers:repeats:")
+ public native boolean queueBuffersRepeats(NSArray<?> buffers,
+ @NUInt long repeats);
+
+ @Generated
+ @Selector("referenceDistance")
+ public native float referenceDistance();
+
+ @Generated
+ @Selector("registerNotification:callback:userData:")
+ public native void registerNotificationCallbackUserData(
+ int notificationID,
+ @ObjCBlock(name = "call_registerNotificationCallbackUserData") Block_registerNotificationCallbackUserData callback,
+ VoidPtr userData);
+
+ @Runtime(ObjCRuntime.class)
+ @Generated
+ public interface Block_registerNotificationCallbackUserData {
+ @Generated
+ void call_registerNotificationCallbackUserData (ALSource arg0, int arg1, VoidPtr arg2);
+ }
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("reverbObstruction")
+ public native float reverbObstruction();
+
+ @Generated
+ @Selector("reverbOcclusion")
+ public native float reverbOcclusion();
+
+ @Generated
+ @Selector("reverbSendLevel")
+ public native float reverbSendLevel();
+
+ @Generated
+ @Selector("rewind")
+ public native void rewind();
+
+ @Generated
+ @Selector("rolloffFactor")
+ public native float rolloffFactor();
+
+ @Generated
+ @Selector("setBuffer:")
+ public native void setBuffer(ALBuffer value);
+
+ @Generated
+ @Selector("setConeInnerAngle:")
+ public native void setConeInnerAngle(float value);
+
+ @Generated
+ @Selector("setConeOuterAngle:")
+ public native void setConeOuterAngle(float value);
+
+ @Generated
+ @Selector("setConeOuterGain:")
+ public native void setConeOuterGain(float value);
+
+ @Generated
+ @Selector("setDirection:")
+ public native void setDirection(@ByValue ALVector value);
+
+ @Generated
+ @Selector("setGain:")
+ public native void setGain(float value);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setInterruptible:")
+ public native void setInterruptible(boolean value);
+
+ @Generated
+ @Selector("setLooping:")
+ public native void setLooping(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("setMaxDistance:")
+ public native void setMaxDistance(float value);
+
+ @Generated
+ @Selector("setMaxGain:")
+ public native void setMaxGain(float value);
+
+ @Generated
+ @Selector("setMinGain:")
+ public native void setMinGain(float value);
+
+ @Generated
+ @Selector("setMuted:")
+ public native void setMuted(boolean value);
+
+ @Generated
+ @Selector("setOffsetInBytes:")
+ public native void setOffsetInBytes(float value);
+
+ @Generated
+ @Selector("setOffsetInSamples:")
+ public native void setOffsetInSamples(float value);
+
+ @Generated
+ @Selector("setOffsetInSeconds:")
+ public native void setOffsetInSeconds(float value);
+
+ @Generated
+ @Selector("setPan:")
+ public native void setPan(float value);
+
+ @Generated
+ @Selector("setPaused:")
+ public native void setPaused(boolean value);
+
+ @Generated
+ @Selector("setPitch:")
+ public native void setPitch(float value);
+
+ @Generated
+ @Selector("setPosition:")
+ public native void setPosition(@ByValue ALPoint value);
+
+ @Generated
+ @Selector("setReferenceDistance:")
+ public native void setReferenceDistance(float value);
+
+ @Generated
+ @Selector("setReverbObstruction:")
+ public native void setReverbObstruction(float value);
+
+ @Generated
+ @Selector("setReverbOcclusion:")
+ public native void setReverbOcclusion(float value);
+
+ @Generated
+ @Selector("setReverbSendLevel:")
+ public native void setReverbSendLevel(float value);
+
+ @Generated
+ @Selector("setRolloffFactor:")
+ public native void setRolloffFactor(float value);
+
+ @Generated
+ @Selector("setSourceRelative:")
+ public native void setSourceRelative(int value);
+
+ @Generated
+ @Selector("setState:")
+ public native void setState(int value);
+
+ @Generated
+ @Selector("setVelocity:")
+ public native void setVelocity(@ByValue ALVector value);
+
+ @Generated
+ @Selector("setVolume:")
+ public native void setVolume(float value);
+
+ @Generated
+ @Selector("source")
+ public static native ALSource source();
+
+ @Generated
+ @Selector("sourceId")
+ public native int sourceId();
+
+ @Generated
+ @Selector("sourceOnContext:")
+ public static native ALSource sourceOnContext(ALContext context);
+
+ @Generated
+ @Selector("sourceRelative")
+ public native int sourceRelative();
+
+ @Generated
+ @Selector("sourceType")
+ public native int sourceType();
+
+ @Generated
+ @Selector("state")
+ public native int state();
+
+ @Generated
+ @Selector("stop")
+ public native void stop();
+
+ @Generated
+ @Selector("stopActions")
+ public native void stopActions();
+
+ @Generated
+ @Selector("stopFade")
+ public native void stopFade();
+
+ @Generated
+ @Selector("stopPan")
+ public native void stopPan();
+
+ @Generated
+ @Selector("stopPitch")
+ public native void stopPitch();
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("unqueueBuffer:")
+ public native boolean unqueueBuffer(ALBuffer buffer);
+
+ @Generated
+ @Selector("unqueueBuffers:")
+ public native boolean unqueueBuffers(NSArray<?> buffers);
+
+ @Generated
+ @Selector("unregisterAllNotifications")
+ public native void unregisterAllNotifications();
+
+ @Generated
+ @Selector("unregisterNotification:")
+ public native void unregisterNotification(int notificationID);
+
+ @Generated
+ @Selector("velocity")
+ @ByValue
+ public native ALVector velocity();
+
+ @Generated
+ @Selector("volume")
+ public native float volume();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALVector.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALVector.java
new file mode 100755
index 000000000..e95c1517b
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/ALVector.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.c.StructObject;
+import com.intel.moe.natj.c.ann.Structure;
+import com.intel.moe.natj.c.ann.StructureField;
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+
+@Generated
+@Structure()
+public final class ALVector extends StructObject {
+ static {
+ NatJ.register();
+ }
+ private static long __natjCache;
+
+ @Generated
+ public ALVector() {
+ super(ALVector.class);
+ }
+
+ @Generated
+ protected ALVector(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ public ALVector(float x, float y, float z) {
+ super(ALVector.class);
+ setX(x);
+ setY(y);
+ setZ(z);
+ }
+
+ @Generated
+ @StructureField(order = 0, isGetter = true)
+ public native float x();
+
+ @Generated
+ @StructureField(order = 0, isGetter = false)
+ public native void setX(float value);
+
+ @Generated
+ @StructureField(order = 1, isGetter = true)
+ public native float y();
+
+ @Generated
+ @StructureField(order = 1, isGetter = false)
+ public native void setY(float value);
+
+ @Generated
+ @StructureField(order = 2, isGetter = true)
+ public native float z();
+
+ @Generated
+ @StructureField(order = 2, isGetter = false)
+ public native void setZ(float value);
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioSession.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioSession.java
new file mode 100755
index 000000000..dc86c060e
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioSession.java
@@ -0,0 +1,230 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.NUInt;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.IsOptional;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.avfoundation.protocol.AVAudioSessionDelegate;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class OALAudioSession extends NSObject implements
+ AVAudioSessionDelegate, OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected OALAudioSession(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native OALAudioSession alloc();
+
+ @Generated
+ @Selector("allowIpod")
+ public native boolean allowIpod();
+
+ @Generated
+ @Deprecated
+ @Selector("audioRoute")
+ public native String audioRoute();
+
+ @Generated
+ @Selector("audioSessionActive")
+ public native boolean audioSessionActive();
+
+ @Generated
+ @Selector("audioSessionCategory")
+ public native String audioSessionCategory();
+
+ @Generated
+ @Selector("audioSessionDelegate")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native AVAudioSessionDelegate audioSessionDelegate();
+
+ @Generated
+ @IsOptional
+ @Selector("beginInterruption")
+ public native void beginInterruption();
+
+ @Generated
+ @IsOptional
+ @Selector("endInterruption")
+ public native void endInterruption();
+
+ @Generated
+ @IsOptional
+ @Selector("endInterruptionWithFlags:")
+ public native void endInterruptionWithFlags(@NUInt long flags);
+
+ @Generated
+ @Selector("forceEndInterruption")
+ public native void forceEndInterruption();
+
+ @Generated
+ @Selector("handleInterruptions")
+ public native boolean handleInterruptions();
+
+ @Generated
+ @Deprecated
+ @Selector("hardwareMuted")
+ public native boolean hardwareMuted();
+
+ @Generated
+ @Deprecated
+ @Selector("hardwareVolume")
+ public native float hardwareVolume();
+
+ @Generated
+ @Selector("honorSilentSwitch")
+ public native boolean honorSilentSwitch();
+
+ @Generated
+ @Selector("init")
+ public native OALAudioSession init();
+
+ @Generated
+ @IsOptional
+ @Selector("inputIsAvailableChanged:")
+ public native void inputIsAvailableChanged(boolean isInputAvailable);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("ipodDucking")
+ public native boolean ipodDucking();
+
+ @Generated
+ @Deprecated
+ @Selector("ipodPlaying")
+ public native boolean ipodPlaying();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Deprecated
+ @Selector("preferredIOBufferDuration")
+ public native float preferredIOBufferDuration();
+
+ @Generated
+ @Selector("purgeSharedInstance")
+ public static native void purgeSharedInstance();
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("setAllowIpod:")
+ public native void setAllowIpod(boolean value);
+
+ @Generated
+ @Selector("setAudioSessionActive:")
+ public native void setAudioSessionActive(boolean value);
+
+ @Generated
+ @Selector("setAudioSessionCategory:")
+ public native void setAudioSessionCategory(String value);
+
+ @Generated
+ @Selector("setAudioSessionDelegate:")
+ public native void setAudioSessionDelegate_unsafe(
+ @Mapped(ObjCObjectMapper.class) AVAudioSessionDelegate value);
+
+ @Generated
+ public void setAudioSessionDelegate(
+ @Mapped(ObjCObjectMapper.class) AVAudioSessionDelegate value) {
+ Object __old = audioSessionDelegate();
+ if (value != null) {
+ ObjCRuntime.associateObjCObject(this,
+ value);
+ }
+ setAudioSessionDelegate_unsafe(value);
+ if (__old != null) {
+ ObjCRuntime.dissociateObjCObject(this,
+ __old);
+ }
+ }
+
+ @Generated
+ @Selector("setHandleInterruptions:")
+ public native void setHandleInterruptions(boolean value);
+
+ @Generated
+ @Selector("setHonorSilentSwitch:")
+ public native void setHonorSilentSwitch(boolean value);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setIpodDucking:")
+ public native void setIpodDucking(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Deprecated
+ @Selector("setPreferredIOBufferDuration:")
+ public native void setPreferredIOBufferDuration(float value);
+
+ @Generated
+ @Selector("setUseHardwareIfAvailable:")
+ public native void setUseHardwareIfAvailable(boolean value);
+
+ @Generated
+ @Selector("sharedInstance")
+ public static native OALAudioSession sharedInstance();
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("useHardwareIfAvailable")
+ public native boolean useHardwareIfAvailable();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioTrack.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioTrack.java
new file mode 100755
index 000000000..a79c5aa3b
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALAudioTrack.java
@@ -0,0 +1,396 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.NInt;
+import com.intel.moe.natj.general.ann.NUInt;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.SEL;
+import com.intel.moe.natj.objc.ann.IsOptional;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.avfoundation.AVAudioPlayer;
+import ios.avfoundation.protocol.AVAudioPlayerDelegate;
+import ios.foundation.NSError;
+import ios.foundation.NSURL;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class OALAudioTrack extends NSObject implements AVAudioPlayerDelegate,
+ OALSuspendManager {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected OALAudioTrack(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Selector("addSuspendListener:")
+ public native void addSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native OALAudioTrack alloc();
+
+ @Generated
+ @IsOptional
+ @Deprecated
+ @Selector("audioPlayerBeginInterruption:")
+ public native void audioPlayerBeginInterruption(AVAudioPlayer player);
+
+ @Generated
+ @IsOptional
+ @Selector("audioPlayerDecodeErrorDidOccur:error:")
+ public native void audioPlayerDecodeErrorDidOccurError(
+ AVAudioPlayer player, NSError error);
+
+ @Generated
+ @IsOptional
+ @Selector("audioPlayerDidFinishPlaying:successfully:")
+ public native void audioPlayerDidFinishPlayingSuccessfully(
+ AVAudioPlayer player, boolean flag);
+
+ @Generated
+ @IsOptional
+ @Deprecated
+ @Selector("audioPlayerEndInterruption:")
+ public native void audioPlayerEndInterruption(AVAudioPlayer player);
+
+ @Generated
+ @IsOptional
+ @Deprecated
+ @Selector("audioPlayerEndInterruption:withFlags:")
+ public native void audioPlayerEndInterruptionWithFlags(
+ AVAudioPlayer player, @NUInt long flags);
+
+ @Generated
+ @IsOptional
+ @Deprecated
+ @Selector("audioPlayerEndInterruption:withOptions:")
+ public native void audioPlayerEndInterruptionWithOptions(
+ AVAudioPlayer player, @NUInt long flags);
+
+ @Generated
+ @Selector("autoPreload")
+ public native boolean autoPreload();
+
+ @Generated
+ @Selector("averagePowerForChannel:")
+ public native float averagePowerForChannel(@NUInt long channelNumber);
+
+ @Generated
+ @Selector("clear")
+ public native void clear();
+
+ @Generated
+ @Selector("currentTime")
+ public native double currentTime();
+
+ @Generated
+ @Selector("currentlyLoadedUrl")
+ public native NSURL currentlyLoadedUrl();
+
+ @Generated
+ @Selector("delegate")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native AVAudioPlayerDelegate delegate();
+
+ @Generated
+ @Selector("deviceCurrentTime")
+ public native double deviceCurrentTime();
+
+ @Generated
+ @Selector("duration")
+ public native double duration();
+
+ @Generated
+ @Selector("fadeTo:duration:target:selector:")
+ public native void fadeToDurationTargetSelector(float gain, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("gain")
+ public native float gain();
+
+ @Generated
+ @Selector("init")
+ public native OALAudioTrack init();
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("meteringEnabled")
+ public native boolean meteringEnabled();
+
+ @Generated
+ @Selector("muted")
+ public native boolean muted();
+
+ @Generated
+ @Selector("numberOfChannels")
+ @NUInt
+ public native long numberOfChannels();
+
+ @Generated
+ @Selector("numberOfLoops")
+ @NInt
+ public native long numberOfLoops();
+
+ @Generated
+ @Selector("pan")
+ public native float pan();
+
+ @Generated
+ @Selector("panTo:duration:target:selector:")
+ public native void panToDurationTargetSelector(float pan, float duration,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("paused")
+ public native boolean paused();
+
+ @Generated
+ @Selector("peakPowerForChannel:")
+ public native float peakPowerForChannel(@NUInt long channelNumber);
+
+ @Generated
+ @Selector("play")
+ public native boolean play();
+
+ @Generated
+ @Selector("playAfterTrack:")
+ public native boolean playAfterTrack(OALAudioTrack track);
+
+ @Generated
+ @Selector("playAfterTrack:timeAdjust:")
+ public native boolean playAfterTrackTimeAdjust(OALAudioTrack track,
+ double timeAdjust);
+
+ @Generated
+ @Selector("playAtTime:")
+ public native boolean playAtTime(double time);
+
+ @Generated
+ @Selector("playFile:")
+ public native boolean playFile(String path);
+
+ @Generated
+ @Selector("playFile:loops:")
+ public native boolean playFileLoops(String path, @NInt long loops);
+
+ @Generated
+ @Selector("playFileAsync:loops:target:selector:")
+ public native void playFileAsyncLoopsTargetSelector(String path,
+ @NInt long loops, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("playFileAsync:target:selector:")
+ public native void playFileAsyncTargetSelector(String path,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("playUrl:")
+ public native boolean playUrl(NSURL url);
+
+ @Generated
+ @Selector("playUrl:loops:")
+ public native boolean playUrlLoops(NSURL url, @NInt long loops);
+
+ @Generated
+ @Selector("playUrlAsync:loops:target:selector:")
+ public native void playUrlAsyncLoopsTargetSelector(NSURL url,
+ @NInt long loops, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("playUrlAsync:target:selector:")
+ public native void playUrlAsyncTargetSelector(NSURL url,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("player")
+ public native AVAudioPlayer player();
+
+ @Generated
+ @Selector("playing")
+ public native boolean playing();
+
+ @Generated
+ @Selector("preloadFile:")
+ public native boolean preloadFile(String path);
+
+ @Generated
+ @Selector("preloadFile:seekTime:")
+ public native boolean preloadFileSeekTime(String path, double seekTime);
+
+ @Generated
+ @Selector("preloadFileAsync:seekTime:target:selector:")
+ public native boolean preloadFileAsyncSeekTimeTargetSelector(String path,
+ double seekTime, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("preloadFileAsync:target:selector:")
+ public native boolean preloadFileAsyncTargetSelector(String path,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("preloadUrl:")
+ public native boolean preloadUrl(NSURL url);
+
+ @Generated
+ @Selector("preloadUrl:seekTime:")
+ public native boolean preloadUrlSeekTime(NSURL url, double seekTime);
+
+ @Generated
+ @Selector("preloadUrlAsync:seekTime:target:selector:")
+ public native boolean preloadUrlAsyncSeekTimeTargetSelector(NSURL url,
+ double seekTime, @Mapped(ObjCObjectMapper.class) Object target,
+ SEL selector);
+
+ @Generated
+ @Selector("preloadUrlAsync:target:selector:")
+ public native boolean preloadUrlAsyncTargetSelector(NSURL url,
+ @Mapped(ObjCObjectMapper.class) Object target, SEL selector);
+
+ @Generated
+ @Selector("preloaded")
+ public native boolean preloaded();
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ public native void removeSuspendListener(
+ @Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("setAutoPreload:")
+ public native void setAutoPreload(boolean value);
+
+ @Generated
+ @Selector("setCurrentTime:")
+ public native void setCurrentTime(double value);
+
+ @Generated
+ @Selector("setDelegate:")
+ public native void setDelegate_unsafe(
+ @Mapped(ObjCObjectMapper.class) AVAudioPlayerDelegate value);
+
+ @Generated
+ public void setDelegate(
+ @Mapped(ObjCObjectMapper.class) AVAudioPlayerDelegate value) {
+ Object __old = delegate();
+ if (value != null) {
+ ObjCRuntime.associateObjCObject(this,
+ value);
+ }
+ setDelegate_unsafe(value);
+ if (__old != null) {
+ ObjCRuntime.dissociateObjCObject(this,
+ __old);
+ }
+ }
+
+ @Generated
+ @Selector("setGain:")
+ public native void setGain(float value);
+
+ @Generated
+ @Selector("setInterrupted:")
+ public native void setInterrupted(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("setMeteringEnabled:")
+ public native void setMeteringEnabled(boolean value);
+
+ @Generated
+ @Selector("setMuted:")
+ public native void setMuted(boolean value);
+
+ @Generated
+ @Selector("setNumberOfLoops:")
+ public native void setNumberOfLoops(@NInt long value);
+
+ @Generated
+ @Selector("setPan:")
+ public native void setPan(float value);
+
+ @Generated
+ @Selector("setPaused:")
+ public native void setPaused(boolean value);
+
+ @Generated
+ @Selector("setVolume:")
+ public native void setVolume(float value);
+
+ @Generated
+ @Selector("stop")
+ public native void stop();
+
+ @Generated
+ @Selector("stopActions")
+ public native void stopActions();
+
+ @Generated
+ @Selector("stopFade")
+ public native void stopFade();
+
+ @Generated
+ @Selector("stopPan")
+ public native void stopPan();
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("track")
+ public static native OALAudioTrack track();
+
+ @Generated
+ @Selector("updateMeters")
+ public native void updateMeters();
+
+ @Generated
+ @Selector("volume")
+ public native float volume();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSimpleAudio.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSimpleAudio.java
new file mode 100755
index 000000000..92dc33e02
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSimpleAudio.java
@@ -0,0 +1,343 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.NatJ;
+import com.intel.moe.natj.general.Pointer;
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.MappedReturn;
+import com.intel.moe.natj.general.ann.NUInt;
+import com.intel.moe.natj.general.ann.Owned;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCBlock;
+import com.intel.moe.natj.objc.ann.ObjCClassBinding;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+import ios.NSObject;
+import ios.foundation.NSArray;
+import ios.foundation.NSURL;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCClassBinding
+public class OALSimpleAudio extends NSObject {
+ static {
+ NatJ.register();
+ }
+
+ @Generated
+ protected OALSimpleAudio(Pointer peer) {
+ super(peer);
+ }
+
+ @Generated
+ @Owned
+ @Selector("alloc")
+ public static native OALSimpleAudio alloc();
+
+ @Generated
+ @Selector("allowIpod")
+ public native boolean allowIpod();
+
+ @Generated
+ @Selector("backgroundTrack")
+ public native OALAudioTrack backgroundTrack();
+
+ @Generated
+ @Selector("backgroundTrackURL")
+ public native NSURL backgroundTrackURL();
+
+ @Generated
+ @Selector("bgMuted")
+ public native boolean bgMuted();
+
+ @Generated
+ @Selector("bgPaused")
+ public native boolean bgPaused();
+
+ @Generated
+ @Selector("bgPlaying")
+ public native boolean bgPlaying();
+
+ @Generated
+ @Selector("bgVolume")
+ public native float bgVolume();
+
+ @Generated
+ @Selector("channel")
+ public native ALChannelSource channel();
+
+ @Generated
+ @Selector("context")
+ public native ALContext context();
+
+ @Generated
+ @Selector("device")
+ public native ALDevice device();
+
+ @Generated
+ @Selector("effectsMuted")
+ public native boolean effectsMuted();
+
+ @Generated
+ @Selector("effectsPaused")
+ public native boolean effectsPaused();
+
+ @Generated
+ @Selector("effectsVolume")
+ public native float effectsVolume();
+
+ @Generated
+ @Selector("honorSilentSwitch")
+ public native boolean honorSilentSwitch();
+
+ @Generated
+ @Selector("init")
+ public native OALSimpleAudio init();
+
+ @Generated
+ @Selector("initWithReservedSources:monoSources:stereoSources:")
+ public native OALSimpleAudio initWithReservedSourcesMonoSourcesStereoSources(
+ int reservedSources, int monoSources, int stereoSources);
+
+ @Generated
+ @Selector("initWithSources:")
+ public native OALSimpleAudio initWithSources(int reservedSources);
+
+ @Generated
+ @Selector("interrupted")
+ public native boolean interrupted();
+
+ @Generated
+ @Selector("manuallySuspended")
+ public native boolean manuallySuspended();
+
+ @Generated
+ @Selector("muted")
+ public native boolean muted();
+
+ @Generated
+ @Selector("paused")
+ public native boolean paused();
+
+ @Generated
+ @Selector("playBg")
+ public native boolean playBg();
+
+ @Generated
+ @Selector("playBg:")
+ public native boolean playBg(String path);
+
+ @Generated
+ @Selector("playBg:loop:")
+ public native boolean playBgLoop(String path, boolean loop);
+
+ @Generated
+ @Selector("playBg:volume:pan:loop:")
+ public native boolean playBgVolumePanLoop(String filePath, float volume,
+ float pan, boolean loop);
+
+ @Generated
+ @Selector("playBgWithLoop:")
+ public native boolean playBgWithLoop(boolean loop);
+
+ @Generated
+ @Selector("playBuffer:volume:pitch:pan:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSource playBufferVolumePitchPanLoop(ALBuffer buffer,
+ float volume, float pitch, float pan, boolean loop);
+
+ @Generated
+ @Selector("playEffect:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSource playEffect(String filePath);
+
+ @Generated
+ @Selector("playEffect:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSource playEffectLoop(String filePath, boolean loop);
+
+ @Generated
+ @Selector("playEffect:volume:pitch:pan:loop:")
+ @MappedReturn(ObjCObjectMapper.class)
+ public native ALSource playEffectVolumePitchPanLoop(String filePath,
+ float volume, float pitch, float pan, boolean loop);
+
+ @Generated
+ @Selector("preloadBg:")
+ public native boolean preloadBg(String path);
+
+ @Generated
+ @Selector("preloadBg:seekTime:")
+ public native boolean preloadBgSeekTime(String path, double seekTime);
+
+ @Generated
+ @Selector("preloadCacheCount")
+ @NUInt
+ public native long preloadCacheCount();
+
+ @Generated
+ @Selector("preloadCacheEnabled")
+ public native boolean preloadCacheEnabled();
+
+ @Generated
+ @Selector("preloadEffect:")
+ public native ALBuffer preloadEffect(String filePath);
+
+ @Generated
+ @Selector("preloadEffect:reduceToMono:")
+ public native ALBuffer preloadEffectReduceToMono(String filePath,
+ boolean reduceToMono);
+
+ @Generated
+ @Selector("preloadEffect:reduceToMono:completionBlock:")
+ public native boolean preloadEffectReduceToMonoCompletionBlock(
+ String filePath,
+ boolean reduceToMono,
+ @ObjCBlock(name = "call_preloadEffectReduceToMonoCompletionBlock") Block_preloadEffectReduceToMonoCompletionBlock completionBlock);
+
+ @Runtime(ObjCRuntime.class)
+ @Generated
+ public interface Block_preloadEffectReduceToMonoCompletionBlock {
+ @Generated
+ void call_preloadEffectReduceToMonoCompletionBlock (ALBuffer arg0);
+ }
+
+ @Generated
+ @Selector("preloadEffects:reduceToMono:progressBlock:")
+ public native void preloadEffectsReduceToMonoProgressBlock(
+ NSArray<?> filePaths,
+ boolean reduceToMono,
+ @ObjCBlock(name = "call_preloadEffectsReduceToMonoProgressBlock") Block_preloadEffectsReduceToMonoProgressBlock progressBlock);
+
+ @Runtime(ObjCRuntime.class)
+ @Generated
+ public interface Block_preloadEffectsReduceToMonoProgressBlock {
+ @Generated
+ void call_preloadEffectsReduceToMonoProgressBlock (@NUInt long arg0, @NUInt long arg1, @NUInt long arg2);
+ }
+
+ @Generated
+ @Selector("purgeSharedInstance")
+ public static native void purgeSharedInstance();
+
+ @Generated
+ @Selector("reservedSources")
+ public native int reservedSources();
+
+ @Generated
+ @Selector("resetToDefault")
+ public native void resetToDefault();
+
+ @Generated
+ @Selector("setAllowIpod:")
+ public native void setAllowIpod(boolean value);
+
+ @Generated
+ @Selector("setBgMuted:")
+ public native void setBgMuted(boolean value);
+
+ @Generated
+ @Selector("setBgPaused:")
+ public native void setBgPaused(boolean value);
+
+ @Generated
+ @Selector("setBgVolume:")
+ public native void setBgVolume(float value);
+
+ @Generated
+ @Selector("setEffectsMuted:")
+ public native void setEffectsMuted(boolean value);
+
+ @Generated
+ @Selector("setEffectsPaused:")
+ public native void setEffectsPaused(boolean value);
+
+ @Generated
+ @Selector("setEffectsVolume:")
+ public native void setEffectsVolume(float value);
+
+ @Generated
+ @Selector("setHonorSilentSwitch:")
+ public native void setHonorSilentSwitch(boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ public native void setManuallySuspended(boolean value);
+
+ @Generated
+ @Selector("setMuted:")
+ public native void setMuted(boolean value);
+
+ @Generated
+ @Selector("setPaused:")
+ public native void setPaused(boolean value);
+
+ @Generated
+ @Selector("setPreloadCacheEnabled:")
+ public native void setPreloadCacheEnabled(boolean value);
+
+ @Generated
+ @Selector("setReservedSources:")
+ public native void setReservedSources(int value);
+
+ @Generated
+ @Selector("setUseHardwareIfAvailable:")
+ public native void setUseHardwareIfAvailable(boolean value);
+
+ @Generated
+ @Selector("sharedInstance")
+ public static native OALSimpleAudio sharedInstance();
+
+ @Generated
+ @Selector("sharedInstanceWithReservedSources:monoSources:stereoSources:")
+ public static native OALSimpleAudio sharedInstanceWithReservedSourcesMonoSourcesStereoSources(
+ int reservedSources, int monoSources, int stereoSources);
+
+ @Generated
+ @Selector("sharedInstanceWithSources:")
+ public static native OALSimpleAudio sharedInstanceWithSources(int sources);
+
+ @Generated
+ @Selector("stopAllEffects")
+ public native void stopAllEffects();
+
+ @Generated
+ @Selector("stopBg")
+ public native void stopBg();
+
+ @Generated
+ @Selector("stopEverything")
+ public native void stopEverything();
+
+ @Generated
+ @Selector("suspended")
+ public native boolean suspended();
+
+ @Generated
+ @Selector("unloadAllEffects")
+ public native void unloadAllEffects();
+
+ @Generated
+ @Selector("unloadEffect:")
+ public native boolean unloadEffect(String filePath);
+
+ @Generated
+ @Selector("useHardwareIfAvailable")
+ public native boolean useHardwareIfAvailable();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendListener.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendListener.java
new file mode 100755
index 000000000..2293c4d27
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendListener.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCProtocolName;
+import com.intel.moe.natj.objc.ann.Selector;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCProtocolName("OALSuspendListener")
+public interface OALSuspendListener {
+ @Generated
+ @Selector("interrupted")
+ boolean interrupted ();
+
+ @Generated
+ @Selector("manuallySuspended")
+ boolean manuallySuspended ();
+
+ @Generated
+ @Selector("setInterrupted:")
+ void setInterrupted (boolean value);
+
+ @Generated
+ @Selector("setManuallySuspended:")
+ void setManuallySuspended (boolean value);
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendManager.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendManager.java
new file mode 100755
index 000000000..907588275
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosmoe/objectal/OALSuspendManager.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosmoe.objectal;
+
+import com.intel.moe.natj.general.ann.Generated;
+import com.intel.moe.natj.general.ann.Mapped;
+import com.intel.moe.natj.general.ann.Runtime;
+import com.intel.moe.natj.objc.ObjCRuntime;
+import com.intel.moe.natj.objc.ann.ObjCProtocolName;
+import com.intel.moe.natj.objc.ann.Selector;
+import com.intel.moe.natj.objc.map.ObjCObjectMapper;
+
+@Generated
+@Runtime(ObjCRuntime.class)
+@ObjCProtocolName("OALSuspendManager")
+public interface OALSuspendManager extends OALSuspendListener {
+ @Generated
+ @Selector("addSuspendListener:")
+ void addSuspendListener (@Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("removeSuspendListener:")
+ void removeSuspendListener (@Mapped(ObjCObjectMapper.class) Object listener);
+
+ @Generated
+ @Selector("suspended")
+ boolean suspended ();
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES20.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES20.java
new file mode 100755
index 000000000..509e0a90b
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES20.java
@@ -0,0 +1,369 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosrobovm;
+
+import com.badlogic.gdx.graphics.GL20;
+
+import java.nio.Buffer;
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+
+public class IOSGLES20 implements GL20
+{
+ public IOSGLES20() {
+ init();
+ }
+
+ /** last viewport set, needed because GLKView resets the viewport on each call to render... amazing **/
+ public static int x, y, width, height;
+
+ private static native void init( );
+
+ public native void glActiveTexture ( int texture );
+
+ public native void glAttachShader ( int program, int shader );
+
+ public native void glBindAttribLocation ( int program, int index, String name );
+
+ public native void glBindBuffer ( int target, int buffer );
+
+ public native void glBindFramebuffer ( int target, int framebuffer );
+
+ public native void glBindRenderbuffer ( int target, int renderbuffer );
+
+ public native void glBindTexture ( int target, int texture );
+
+ public native void glBlendColor ( float red, float green, float blue, float alpha );
+
+ public native void glBlendEquation ( int mode );
+
+ public native void glBlendEquationSeparate ( int modeRGB, int modeAlpha );
+
+ public native void glBlendFunc ( int sfactor, int dfactor );
+
+ public native void glBlendFuncSeparate ( int srcRGB, int dstRGB, int srcAlpha, int dstAlpha );
+
+ public native void glBufferData ( int target, int size, Buffer data, int usage );
+
+ public native void glBufferSubData ( int target, int offset, int size, Buffer data );
+
+ public native int glCheckFramebufferStatus ( int target );
+
+ public native void glClear ( int mask );
+
+ public native void glClearColor ( float red, float green, float blue, float alpha );
+
+ public native void glClearDepthf ( float depth );
+
+ public native void glClearStencil ( int s );
+
+ public native void glColorMask ( boolean red, boolean green, boolean blue, boolean alpha );
+
+ public native void glCompileShader ( int shader );
+
+ public native void glCompressedTexImage2D ( int target, int level, int internalformat, int width, int height, int border, int imageSize, Buffer data );
+
+ public native void glCompressedTexSubImage2D ( int target, int level, int xoffset, int yoffset, int width, int height, int format, int imageSize, Buffer data );
+
+ public native void glCopyTexImage2D ( int target, int level, int internalformat, int x, int y, int width, int height, int border );
+
+ public native void glCopyTexSubImage2D ( int target, int level, int xoffset, int yoffset, int x, int y, int width, int height );
+
+ public native int glCreateProgram ( );
+
+ public native int glCreateShader ( int type );
+
+ public native void glCullFace ( int mode );
+
+ public native void glDeleteBuffers ( int n, IntBuffer buffers );
+
+ public native void glDeleteBuffer(int buffer);
+
+ public native void glDeleteFramebuffers ( int n, IntBuffer framebuffers );
+
+ public native void glDeleteFramebuffer(int framebuffer);
+
+ public native void glDeleteProgram ( int program );
+
+ public native void glDeleteRenderbuffers ( int n, IntBuffer renderbuffers );
+
+ public native void glDeleteRenderbuffer(int renderbuffer);
+
+ public native void glDeleteShader ( int shader );
+
+ public native void glDeleteTextures ( int n, IntBuffer textures );
+
+ public native void glDeleteTexture(int texture);
+
+ public native void glDepthFunc ( int func );
+
+ public native void glDepthMask ( boolean flag );
+
+ public native void glDepthRangef ( float zNear, float zFar );
+
+ public native void glDetachShader ( int program, int shader );
+
+ public native void glDisable ( int cap );
+
+ public native void glDisableVertexAttribArray ( int index );
+
+ public native void glDrawArrays ( int mode, int first, int count );
+
+ public native void glDrawElements ( int mode, int count, int type, Buffer indices );
+
+ public native void glDrawElements ( int mode, int count, int type, int indices );
+
+ public native void glEnable ( int cap );
+
+ public native void glEnableVertexAttribArray ( int index );
+
+ public native void glFinish ( );
+
+ public native void glFlush ( );
+
+ public native void glFramebufferRenderbuffer ( int target, int attachment, int renderbuffertarget, int renderbuffer );
+
+ public native void glFramebufferTexture2D ( int target, int attachment, int textarget, int texture, int level );
+
+ public native void glFrontFace ( int mode );
+
+ public native void glGenBuffers ( int n, IntBuffer buffers );
+
+ public native int glGenBuffer();
+
+ public native void glGenerateMipmap ( int target );
+
+ public native void glGenFramebuffers ( int n, IntBuffer framebuffers );
+
+ public native int glGenFramebuffer();
+
+ public native void glGenRenderbuffers ( int n, IntBuffer renderbuffers );
+
+ public native int glGenRenderbuffer();
+
+ public native void glGenTextures ( int n, IntBuffer textures );
+
+ public native int glGenTexture();
+
+ public native String glGetActiveAttrib ( int program, int index, IntBuffer size, Buffer type );
+
+ public native String glGetActiveUniform ( int program, int index, IntBuffer size, Buffer type );
+
+ public native void glGetAttachedShaders ( int program, int maxcount, Buffer count, IntBuffer shaders );
+
+ public native int glGetAttribLocation ( int program, String name );
+
+ public native void glGetBooleanv ( int pname, Buffer params );
+
+ public native void glGetBufferParameteriv ( int target, int pname, IntBuffer params );
+
+ public native int glGetError ( );
+
+ public native void glGetFloatv ( int pname, FloatBuffer params );
+
+ public native void glGetFramebufferAttachmentParameteriv ( int target, int attachment, int pname, IntBuffer params );
+
+ public native void glGetIntegerv ( int pname, IntBuffer params );
+
+ public native void glGetProgramiv ( int program, int pname, IntBuffer params );
+
+ public native String glGetProgramInfoLog ( int program );
+
+ public native void glGetRenderbufferParameteriv ( int target, int pname, IntBuffer params );
+
+ public native void glGetShaderiv ( int shader, int pname, IntBuffer params );
+
+ public native String glGetShaderInfoLog ( int shader );
+
+ public native void glGetShaderPrecisionFormat ( int shadertype, int precisiontype, IntBuffer range, IntBuffer precision );
+
+ public native void glGetShaderSource ( int shader, int bufsize, Buffer length, String source );
+
+ public native String glGetString ( int name );
+
+ public native void glGetTexParameterfv ( int target, int pname, FloatBuffer params );
+
+ public native void glGetTexParameteriv ( int target, int pname, IntBuffer params );
+
+ public native void glGetUniformfv ( int program, int location, FloatBuffer params );
+
+ public native void glGetUniformiv ( int program, int location, IntBuffer params );
+
+ public native int glGetUniformLocation ( int program, String name );
+
+ public native void glGetVertexAttribfv ( int index, int pname, FloatBuffer params );
+
+ public native void glGetVertexAttribiv ( int index, int pname, IntBuffer params );
+
+ public native void glGetVertexAttribPointerv ( int index, int pname, Buffer pointer );
+
+ public native void glHint ( int target, int mode );
+
+ public native boolean glIsBuffer ( int buffer );
+
+ public native boolean glIsEnabled ( int cap );
+
+ public native boolean glIsFramebuffer ( int framebuffer );
+
+ public native boolean glIsProgram ( int program );
+
+ public native boolean glIsRenderbuffer ( int renderbuffer );
+
+ public native boolean glIsShader ( int shader );
+
+ public native boolean glIsTexture ( int texture );
+
+ public native void glLineWidth ( float width );
+
+ public native void glLinkProgram ( int program );
+
+ public native void glPixelStorei ( int pname, int param );
+
+ public native void glPolygonOffset ( float factor, float units );
+
+ public native void glReadPixels ( int x, int y, int width, int height, int format, int type, Buffer pixels );
+
+ public native void glReleaseShaderCompiler ( );
+
+ public native void glRenderbufferStorage ( int target, int internalformat, int width, int height );
+
+ public native void glSampleCoverage ( float value, boolean invert );
+
+ public native void glScissor ( int x, int y, int width, int height );
+
+ public native void glShaderBinary ( int n, IntBuffer shaders, int binaryformat, Buffer binary, int length );
+
+ public native void glShaderSource ( int shader, String string );
+
+ public native void glStencilFunc ( int func, int ref, int mask );
+
+ public native void glStencilFuncSeparate ( int face, int func, int ref, int mask );
+
+ public native void glStencilMask ( int mask );
+
+ public native void glStencilMaskSeparate ( int face, int mask );
+
+ public native void glStencilOp ( int fail, int zfail, int zpass );
+
+ public native void glStencilOpSeparate ( int face, int fail, int zfail, int zpass );
+
+ public native void glTexImage2D ( int target, int level, int internalformat, int width, int height, int border, int format, int type, Buffer pixels );
+
+ public native void glTexParameterf ( int target, int pname, float param );
+
+ public native void glTexParameterfv ( int target, int pname, FloatBuffer params );
+
+ public native void glTexParameteri ( int target, int pname, int param );
+
+ public native void glTexParameteriv ( int target, int pname, IntBuffer params );
+
+ public native void glTexSubImage2D ( int target, int level, int xoffset, int yoffset, int width, int height, int format, int type, Buffer pixels );
+
+ public native void glUniform1f ( int location, float x );
+
+ public native void glUniform1fv ( int location, int count, FloatBuffer v );
+
+ public native void glUniform1fv(int location, int count, float[] v, int offset);
+
+ public native void glUniform1i ( int location, int x );
+
+ public native void glUniform1iv ( int location, int count, IntBuffer v );
+
+ public native void glUniform1iv(int location, int count, int[] v, int offset);
+
+ public native void glUniform2f ( int location, float x, float y );
+
+ public native void glUniform2fv ( int location, int count, FloatBuffer v );
+
+ public native void glUniform2fv(int location, int count, float[] v, int offset);
+
+ public native void glUniform2i ( int location, int x, int y );
+
+ public native void glUniform2iv ( int location, int count, IntBuffer v );
+
+ public native void glUniform2iv(int location, int count, int[] v, int offset);
+
+ public native void glUniform3f ( int location, float x, float y, float z );
+
+ public native void glUniform3fv ( int location, int count, FloatBuffer v );
+
+ public native void glUniform3fv(int location, int count, float[] v, int offset);
+
+ public native void glUniform3i ( int location, int x, int y, int z );
+
+ public native void glUniform3iv ( int location, int count, IntBuffer v );
+
+ public native void glUniform3iv(int location, int count, int[] v, int offset);
+
+ public native void glUniform4f ( int location, float x, float y, float z, float w );
+
+ public native void glUniform4fv ( int location, int count, FloatBuffer v );
+
+ public native void glUniform4fv(int location, int count, float[] v, int offset);
+
+ public native void glUniform4i ( int location, int x, int y, int z, int w );
+
+ public native void glUniform4iv ( int location, int count, IntBuffer v );
+
+ public native void glUniform4iv(int location, int count, int[] v, int offset);
+
+ public native void glUniformMatrix2fv ( int location, int count, boolean transpose, FloatBuffer value );
+
+ public native void glUniformMatrix2fv(int location, int count, boolean transpose, float[] value, int offset);
+
+ public native void glUniformMatrix3fv ( int location, int count, boolean transpose, FloatBuffer value );
+
+ public native void glUniformMatrix3fv(int location, int count, boolean transpose, float[] value, int offset);
+
+ public native void glUniformMatrix4fv ( int location, int count, boolean transpose, FloatBuffer value );
+
+ public native void glUniformMatrix4fv(int location, int count, boolean transpose, float[] value, int offset);
+
+ public native void glUseProgram ( int program );
+
+ public native void glValidateProgram ( int program );
+
+ public native void glVertexAttrib1f ( int indx, float x );
+
+ public native void glVertexAttrib1fv ( int indx, FloatBuffer values );
+
+ public native void glVertexAttrib2f ( int indx, float x, float y );
+
+ public native void glVertexAttrib2fv ( int indx, FloatBuffer values );
+
+ public native void glVertexAttrib3f ( int indx, float x, float y, float z );
+
+ public native void glVertexAttrib3fv ( int indx, FloatBuffer values );
+
+ public native void glVertexAttrib4f ( int indx, float x, float y, float z, float w );
+
+ public native void glVertexAttrib4fv ( int indx, FloatBuffer values );
+
+ public native void glVertexAttribPointer ( int indx, int size, int type, boolean normalized, int stride, Buffer ptr );
+
+ public native void glVertexAttribPointer ( int indx, int size, int type, boolean normalized, int stride, int ptr );
+
+ public void glViewport(int x, int y, int width, int height) {
+ IOSGLES20.x = x;
+ IOSGLES20.y = y;
+ IOSGLES20.width = width;
+ IOSGLES20.height = height;
+ glViewportJni(x, y, width, height);
+ }
+
+ public native void glViewportJni ( int x, int y, int width, int height );
+}
diff --git a/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES30.java b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES30.java
new file mode 100755
index 000000000..0b7395ae5
--- /dev/null
+++ b/backends/gdx-backend-moe/src/com/badlogic/gdx/backends/iosrobovm/IOSGLES30.java
@@ -0,0 +1,217 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogic.gdx.backends.iosrobovm;
+
+import com.badlogic.gdx.graphics.GL30;
+
+import java.nio.Buffer;
+import java.nio.FloatBuffer;
+import java.nio.IntBuffer;
+import java.nio.LongBuffer;
+
+public class IOSGLES30 extends IOSGLES20 implements GL30 {
+
+ public IOSGLES30() {
+ init();
+ }
+
+ private static native void init( );
+
+ public native void glReadBuffer(int mode);
+
+ public native void glDrawRangeElements(int mode, int start, int end, int count, int type, Buffer indices);
+
+ public native void glDrawRangeElements(int mode, int start, int end, int count, int type, int offset);
+
+ public native void glTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, Buffer pixels);
+
+ public native void glTexImage3D(int target, int level, int internalformat, int width, int height, int depth, int border, int format, int type, int offset);
+
+ public native void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, Buffer pixels);
+
+ public native void glTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, int format, int type, int offset);
+
+ public native void glCopyTexSubImage3D(int target, int level, int xoffset, int yoffset, int zoffset, int x, int y, int width, int height);
+
+ public native void glGenQueries(int n, int[] ids, int offset);
+
+ public native void glGenQueries(int n, IntBuffer ids);
+
+ public native void glDeleteQueries(int n, int[] ids, int offset);
+
+ public native void glDeleteQueries(int n, IntBuffer ids);
+
+ public native boolean glIsQuery(int id);
+
+ public native void glBeginQuery(int target, int id);
+
+ public native void glEndQuery(int target);
+
+ public native void glGetQueryiv(int target, int pname, IntBuffer params);
+
+ public native void glGetQueryObjectuiv(int id, int pname, IntBuffer params);
+
+ public native boolean glUnmapBuffer(int target);
+
+ public native Buffer glGetBufferPointerv(int target, int pname);
+
+ public native void glDrawBuffers(int n, IntBuffer bufs);
+
+ public native void glUniformMatrix2x3fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glUniformMatrix3x2fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glUniformMatrix2x4fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glUniformMatrix4x2fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glUniformMatrix3x4fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glUniformMatrix4x3fv(int location, int count, boolean transpose, FloatBuffer value);
+
+ public native void glBlitFramebuffer(int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter);
+
+ public native void glRenderbufferStorageMultisample(int target, int samples, int internalformat, int width, int height);
+
+ public native void glFramebufferTextureLayer(int target, int attachment, int texture, int level, int layer);
+
+ public native void glFlushMappedBufferRange(int target, int offset, int length);
+
+ public native void glBindVertexArray(int array);
+
+ public native void glDeleteVertexArrays(int n, int[] arrays, int offset);
+
+ public native void glDeleteVertexArrays(int n, IntBuffer arrays);
+
+ public native void glGenVertexArrays(int n, int[] arrays, int offset);
+
+ public native void glGenVertexArrays(int n, IntBuffer arrays);
+
+ public native boolean glIsVertexArray(int array);
+
+ public native void glBeginTransformFeedback(int primitiveMode);
+
+ public native void glEndTransformFeedback();
+
+ public native void glBindBufferRange(int target, int index, int buffer, int offset, int size);
+
+ public native void glBindBufferBase(int target, int index, int buffer);
+
+ public native void glTransformFeedbackVaryings(int program, String[] varyings, int bufferMode);
+
+ public native void glVertexAttribIPointer(int index, int size, int type, int stride, int offset);
+
+ public native void glGetVertexAttribIiv(int index, int pname, IntBuffer params);
+
+ public native void glGetVertexAttribIuiv(int index, int pname, IntBuffer params);
+
+ public native void glVertexAttribI4i(int index, int x, int y, int z, int w);
+
+ public native void glVertexAttribI4ui(int index, int x, int y, int z, int w);
+
+ public native void glGetUniformuiv(int program, int location, IntBuffer params);
+
+ public native int glGetFragDataLocation(int program, String name);
+
+ public native void glUniform1uiv(int location, int count, IntBuffer value);
+
+ public native void glUniform3uiv(int location, int count, IntBuffer value);
+
+ public native void glUniform4uiv(int location, int count, IntBuffer value);
+
+ public native void glClearBufferiv(int buffer, int drawbuffer, IntBuffer value);
+
+ public native void glClearBufferuiv(int buffer, int drawbuffer, IntBuffer value);
+
+ public native void glClearBufferfv(int buffer, int drawbuffer, FloatBuffer value);
+
+ public native void glClearBufferfi(int buffer, int drawbuffer, float depth, int stencil);
+
+ public native String glGetStringi(int name, int index);
+
+ public native void glCopyBufferSubData(int readTarget, int writeTarget, int readOffset, int writeOffset, int size);
+
+ public native void glGetUniformIndices(int program, String[] uniformNames, IntBuffer uniformIndices);
+
+ public native void glGetActiveUniformsiv(int program, int uniformCount, IntBuffer uniformIndices, int pname, IntBuffer params);
+
+ public native int glGetUniformBlockIndex(int program, String uniformBlockName);
+
+ public native void glGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, IntBuffer params);
+
+ public native void glGetActiveUniformBlockName(int program, int uniformBlockIndex, Buffer length, Buffer uniformBlockName);
+
+ public native String glGetActiveUniformBlockName(int program, int uniformBlockIndex);
+
+ public native void glUniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding);
+
+ public native void glDrawArraysInstanced(int mode, int first, int count, int instanceCount);
+
+ public native void glDrawElementsInstanced(int mode, int count, int type, int indicesOffset, int instanceCount);
+
+ public native void glGetInteger64v(int pname, LongBuffer params);
+
+ public native void glGetBufferParameteri64v(int target, int pname, LongBuffer params);
+
+ public native void glGenSamplers(int count, int[] samplers, int offset);
+
+ public native void glGenSamplers(int count, IntBuffer samplers);
+
+ public native void glDeleteSamplers(int count, int[] samplers, int offset);
+
+ public native void glDeleteSamplers(int count, IntBuffer samplers);
+
+ public native boolean glIsSampler(int sampler);
+
+ public native void glBindSampler(int unit, int sampler);
+
+ public native void glSamplerParameteri(int sampler, int pname, int param);
+
+ public native void glSamplerParameteriv(int sampler, int pname, IntBuffer param);
+
+ public native void glSamplerParameterf(int sampler, int pname, float param);
+
+ public native void glSamplerParameterfv(int sampler, int pname, FloatBuffer param);
+
+ public native void glGetSamplerParameteriv(int sampler, int pname, IntBuffer params);
+
+ public native void glGetSamplerParameterfv(int sampler, int pname, FloatBuffer params);
+
+ public native void glVertexAttribDivisor(int index, int divisor);
+
+ public native void glBindTransformFeedback(int target, int id);
+
+ public native void glDeleteTransformFeedbacks(int n, int[] ids, int offset);
+
+ public native void glDeleteTransformFeedbacks(int n, IntBuffer ids);
+
+ public native void glGenTransformFeedbacks(int n, int[] ids, int offset);
+
+ public native void glGenTransformFeedbacks(int n, IntBuffer ids);
+
+ public native boolean glIsTransformFeedback(int id);
+
+ public native void glPauseTransformFeedback();
+
+ public native void glResumeTransformFeedback();
+
+ public native void glProgramParameteri(int program, int pname, int value);
+
+ public native void glInvalidateFramebuffer(int target, int numAttachments, IntBuffer attachments);
+
+ public native void glInvalidateSubFramebuffer(int target, int numAttachments, IntBuffer attachments, int x, int y, int width, int height);
+}
diff --git a/build.gradle b/build.gradle
index c1631a855..7166a93b6 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,7 +1,9 @@
ext {
GROUPID = "com.badlogicgames.gdx"
- VERSION = "1.7.2-SNAPSHOT"
+ VERSION = "1.9.3-SNAPSHOT"
+ gdxVersion = VERSION
robovmVersion = "1.9.0"
+ moeVersion = "1.0.0"
androidVersion = "4.4"
gwtVersion = "2.6.0"
jglfwVersion = "1.1"
@@ -37,6 +39,7 @@ configure(allprojects - project(':tests:gdx-tests-android')) {
compileJava.options.encoding = 'UTF-8';
repositories {
+ mavenLocal()
mavenCentral()
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
}
@@ -118,6 +121,13 @@ project(":backends:gdx-backend-robovm") {
}
}
+project(":backends:gdx-backend-moe") {
+ dependencies {
+ compile project(":gdx")
+ optional fileTree(dir: 'libs', include: ['*.jar'])
+ }
+}
+
project(":backends:gdx-backends-gwt") {
sourceSets.main.java.exclude "**/System.java"
@@ -286,6 +296,19 @@ project(":tests:gdx-tests-iosrobovm") {
}
}
+project("tests:gdx-tests-ios-intel") {
+ dependencies {
+ compile project(":tests:gdx-tests")
+ //compile project(":backends:gdx-backend-moe")
+ compile "com.badlogicgames.gdx:gdx-backend-moe:$gdxVersion"
+ //natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
+ }
+
+ eclipse.project {
+ natures 'org.robovm.eclipse.RoboVMNature'
+ }
+}
+
project(":tests:gdx-tests-jglfw") {
dependencies {
compile project(":tests:gdx-tests")
diff --git a/extensions/gdx-bullet/jni/maven/pom.xml b/extensions/gdx-bullet/jni/maven/pom.xml
index d8374f4bf..c08c7c95c 100644
--- a/extensions/gdx-bullet/jni/maven/pom.xml
+++ b/extensions/gdx-bullet/jni/maven/pom.xml
@@ -16,14 +16,6 @@
<base.url>http://libgdx.badlogicgames.com/nightlies/dist/extensions/gdx-bullet/</base.url>
</properties>
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>gdx-bullet</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
<build>
<sourceDirectory>src</sourceDirectory>
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/BuildScriptHelper.java b/extensions/gdx-setup/src/com/badlogic/gdx/setup/BuildScriptHelper.java
index 94126146e..e7407f651 100644
--- a/extensions/gdx-setup/src/com/badlogic/gdx/setup/BuildScriptHelper.java
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/BuildScriptHelper.java
@@ -31,11 +31,15 @@ public class BuildScriptHelper {
write(wr, "buildscript {");
//repos
write(wr, "repositories {");
+ write(wr, DependencyBank.mavenLocal);
write(wr, DependencyBank.mavenCentral);
write(wr, "maven { url \"" + DependencyBank.libGDXSnapshotsUrl + "\" }");
if (projects.contains(ProjectType.HTML)) {
write(wr, DependencyBank.jCenter);
}
+ if (projects.contains(ProjectType.IOSMOE)) {
+ write(wr, "maven { url " + DependencyBank.moeLocalUrl + " }");
+ }
write(wr, "}");
//dependencies
write(wr, "dependencies {");
@@ -48,6 +52,9 @@ public class BuildScriptHelper {
if (projects.contains(ProjectType.IOS)) {
write(wr, "classpath '" + DependencyBank.roboVMPluginImport + "'");
}
+ if (projects.contains(ProjectType.IOSMOE)) {
+ write(wr, "classpath '" + DependencyBank.moePluginImport + "'");
+ }
write(wr, "}");
write(wr, "}");
space(wr);
@@ -69,6 +76,7 @@ public class BuildScriptHelper {
write(wr, "}");
space(wr);
write(wr, "repositories {");
+ write(wr, DependencyBank.mavenLocal);
write(wr, DependencyBank.mavenCentral);
write(wr, "maven { url \"" + DependencyBank.libGDXSnapshotsUrl + "\" }");
write(wr, "maven { url \"" + DependencyBank.libGDXReleaseUrl + "\" }");
@@ -98,7 +106,7 @@ public class BuildScriptHelper {
if (dep.getDependencies(project) == null) continue;
for (String moduleDependency : dep.getDependencies(project)) {
if (moduleDependency == null) continue;
- if (project.equals(ProjectType.ANDROID) && moduleDependency.contains("native")) {
+ if ((project.equals(ProjectType.ANDROID) || project.equals(ProjectType.IOSMOE)) && moduleDependency.contains("native")) {
write(wr, "natives \"" + moduleDependency + "\"");
} else {
write(wr, "compile \"" + moduleDependency + "\"");
@@ -109,7 +117,7 @@ public class BuildScriptHelper {
}
private static void addConfigurations(ProjectType project, BufferedWriter wr) throws IOException {
- if (project.equals(ProjectType.ANDROID)) {
+ if (project.equals(ProjectType.ANDROID) || project.equals(ProjectType.IOSMOE)) {
write(wr, "configurations { natives }");
}
}
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java b/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java
index 768645e9e..7de9d8000 100644
--- a/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/DependencyBank.java
@@ -26,25 +26,29 @@ public class DependencyBank {
//Temporary snapshot version, we need a more dynamic solution for pointing to the latest nightly
static String libgdxNightlyVersion = "1.9.3-SNAPSHOT";
static String roboVMVersion = "1.12.0";
+ static String moeVersion = "1.1.0.final-1";
static String buildToolsVersion = "23.0.1";
static String androidAPILevel = "20";
static String gwtVersion = "2.6.0";
//Repositories
+ static String mavenLocal = "mavenLocal()";
static String mavenCentral = "mavenCentral()";
static String jCenter = "jcenter()";
static String libGDXSnapshotsUrl = "https://oss.sonatype.org/content/repositories/snapshots/";
static String libGDXReleaseUrl = "https://oss.sonatype.org/content/repositories/releases/";
+ static String moeLocalUrl = "uri(System.getenv(\"INTEL_MULTI_OS_ENGINE_HOME\") + \"/gradle\")";
//Project plugins
static String gwtPluginImport = "de.richsource.gradle.plugins:gwt-gradle-plugin:0.6";
static String androidPluginImport = "com.android.tools.build:gradle:1.5.0";
static String roboVMPluginImport = "org.robovm:robovm-gradle-plugin:" + roboVMVersion;
+ static String moePluginImport = "com.intel.gradle:moeGradlePlugin:" + moeVersion;
//Extension versions
static String box2DLightsVersion = "1.4";
static String ashleyVersion = "1.7.0";
- static String aiVersion = "1.8.0";
+ static String aiVersion = "1.8.0";
HashMap<ProjectDependency, Dependency> gdxDependencies = new HashMap<ProjectDependency, Dependency>();
@@ -56,6 +60,7 @@ public class DependencyBank {
projectDep.getDependencies(ProjectType.DESKTOP),
projectDep.getDependencies(ProjectType.ANDROID),
projectDep.getDependencies(ProjectType.IOS),
+ projectDep.getDependencies(ProjectType.IOSMOE),
projectDep.getDependencies(ProjectType.HTML));
gdxDependencies.put(projectDep, dependency);
}
@@ -81,6 +86,7 @@ public class DependencyBank {
new String[]{"com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-backend-android:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"},
new String[]{"org.robovm:robovm-rt:$roboVMVersion", "org.robovm:robovm-cocoatouch:$roboVMVersion", "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"},
+ new String[]{"com.badlogicgames.gdx:gdx-backend-moe:$gdxVersion", "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion", "com.badlogicgames.gdx:gdx:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.backends.gdx_backends_gwt"},
@@ -91,6 +97,7 @@ public class DependencyBank {
new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-bullet:$gdxVersion", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"},
+ new String[]{"com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"},
null,
null,
@@ -101,6 +108,7 @@ public class DependencyBank {
new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-freetype:$gdxVersion", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"},
+ new String[]{"com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-ios"},
null,
null,
@@ -113,6 +121,7 @@ public class DependencyBank {
new String[]{},
new String[]{},
new String[]{},
+ new String[]{},
"Collection of tools, including 2D/3D particle editors, texture packers, and file processors"
),
@@ -121,6 +130,7 @@ public class DependencyBank {
new String[]{"com.badlogicgames.gdx:gdx-controllers-desktop:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-controllers:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-android:$gdxVersion"},
new String[]{}, // works on iOS but never reports any controllers :)
+ new String[]{}, // works on iOS but never reports any controllers :)
new String[]{"com.badlogicgames.gdx:gdx-controllers:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion", "com.badlogicgames.gdx:gdx-controllers-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.controllers.controllers-gwt"},
@@ -131,6 +141,7 @@ public class DependencyBank {
new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"},
new String[]{"com.badlogicgames.gdx:gdx-box2d:$gdxVersion", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86", "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"},
new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"},
+ new String[]{"com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"},
new String[]{"com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources", "com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources"},
new String[]{"com.badlogic.gdx.physics.box2d.box2d-gwt"},
@@ -141,6 +152,7 @@ public class DependencyBank {
new String[]{},
new String[]{"com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"},
new String[]{},
+ new String[]{},
new String[]{"com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion:sources"},
new String[]{"Box2DLights"},
@@ -151,6 +163,7 @@ public class DependencyBank {
new String[]{},
new String[]{"com.badlogicgames.ashley:ashley:$ashleyVersion"},
new String[]{},
+ new String[]{},
new String[]{"com.badlogicgames.ashley:ashley:$ashleyVersion:sources"},
new String[]{"com.badlogic.ashley_gwt"},
@@ -161,6 +174,7 @@ public class DependencyBank {
new String[]{},
new String[]{"com.badlogicgames.gdx:gdx-ai:$aiVersion"},
new String[]{},
+ new String[]{},
new String[]{"com.badlogicgames.gdx:gdx-ai:$aiVersion:sources"},
new String[]{"com.badlogic.gdx.ai"},
@@ -171,15 +185,17 @@ public class DependencyBank {
private String[] desktopDependencies;
private String[] androidDependencies;
private String[] iosDependencies;
+ private String[] iosMoeDependencies;
private String[] gwtDependencies;
private String[] gwtInherits;
private String description;
- ProjectDependency(String[] coreDeps, String[] desktopDeps, String[] androidDeps, String[] iosDeps, String[] gwtDeps, String[] gwtInhertis, String description) {
+ ProjectDependency(String[] coreDeps, String[] desktopDeps, String[] androidDeps, String[] iosDeps, String[] iosMoeDeps, String[] gwtDeps, String[] gwtInhertis, String description) {
this.coreDependencies = coreDeps;
this.desktopDependencies = desktopDeps;
this.androidDependencies = androidDeps;
this.iosDependencies = iosDeps;
+ this.iosMoeDependencies = iosMoeDeps;
this.gwtDependencies = gwtDeps;
this.gwtInherits = gwtInhertis;
this.description = description;
@@ -195,6 +211,8 @@ public class DependencyBank {
return androidDependencies;
case IOS:
return iosDependencies;
+ case IOSMOE:
+ return iosMoeDependencies;
case HTML:
return gwtDependencies;
}
@@ -216,6 +234,7 @@ public class DependencyBank {
DESKTOP("desktop", new String[]{"java"}),
ANDROID("android", new String[]{"android"}),
IOS("ios", new String[]{"java", "robovm"}),
+ IOSMOE("ios-moe", new String[] {"moe"}),
HTML("html", new String[]{"gwt", "war"});
private final String name;
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetup.java b/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetup.java
index cfe5a7a25..a6183f731 100644
--- a/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetup.java
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetup.java
@@ -321,6 +321,29 @@ public class GdxSetup {
project.files.add(new ProjectFile("ios/robovm.xml", true));
}
+ if(builder.modules.contains(ProjectType.IOSMOE)) {
+ project.files.add(new ProjectFile("ios-moe/resources/Default.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default@2x.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default@2x~ipad.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default-568h@2x.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default~ipad.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default-375w-667h@2x.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Default-414w-736h@3x.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Icon.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Icon@2x.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Icon-72.png", false));
+ project.files.add(new ProjectFile("ios-moe/resources/Icon-72@2x.png", false));
+ project.files.add(new ProjectFile("ios-moe/src/IOSMoeLauncher", "ios-moe/src/" + packageDir + "/IOSMoeLauncher.java", true));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe/build.xcconfig", false));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe/custom.xcconfig", false));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe-Test/build.xcconfig", false));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe-Test/Info-Test.plist", false));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe/Info.plist", true));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe/main.cpp", false));
+ project.files.add(new ProjectFile("ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj", true));
+ project.files.add(new ProjectFile("ios-moe/build.gradle", true));
+ }
+
Map<String, String> values = new HashMap<String, String>();
values.put("%APP_NAME%", appName);
values.put("%APP_NAME_ESCAPED%", appName.replace("'", "\\'"));
@@ -606,6 +629,7 @@ public class GdxSetup {
projects.add(ProjectType.DESKTOP);
projects.add(ProjectType.ANDROID);
projects.add(ProjectType.IOS);
+ projects.add(ProjectType.IOSMOE);
projects.add(ProjectType.HTML);
} else {
if (!excludedModules.contains("desktop"))
@@ -614,6 +638,8 @@ public class GdxSetup {
projects.add(ProjectType.ANDROID);
if (!excludedModules.contains("ios"))
projects.add(ProjectType.IOS);
+ if (!excludedModules.contains("iosmoe"))
+ projects.add(ProjectType.IOSMOE);
if (!excludedModules.contains("html"))
projects.add(ProjectType.HTML);
}
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetupUI.java b/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetupUI.java
index afc84549c..fa01e93d0 100644
--- a/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetupUI.java
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/GdxSetupUI.java
@@ -186,6 +186,13 @@ public class GdxSetupUI extends JFrame {
}
}
+ if (modules.contains(ProjectType.IOSMOE)) {
+ if (System.getenv("INTEL_MULTI_OS_ENGINE_HOME") == null) {
+ JOptionPane.showMessageDialog(this, "Please install Intel Multi OS engine to use the ios-moe backend.");
+ return;
+ }
+ }
+
if (!GdxSetup.isEmptyDirectory(destination)) {
int value = JOptionPane.showConfirmDialog(this, "The destination is not empty, do you want to overwrite?", "Warning!", JOptionPane.YES_NO_OPTION);
if (value != 0) {
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/gradle.properties b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/gradle.properties
index fa55fd1e1..f3ac04b3c 100644
--- a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/gradle.properties
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/gradle.properties
@@ -1,3 +1,3 @@
-org.gradle.daemon=true
+org.gradle.daemon=false
org.gradle.jvmargs=-Xms128m -Xmx512m
-org.gradle.configureondemand=true \ No newline at end of file
+org.gradle.configureondemand=true
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/build.gradle b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/build.gradle
new file mode 100644
index 000000000..e49ce129a
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/build.gradle
@@ -0,0 +1,56 @@
+task copyNatives << {
+ file("xcode/native/ios/").mkdirs();
+ def LD_FLAGS = "LIBGDX_NATIVES = "
+ configurations.natives.files.each { jar->
+ def outputDir = null
+ if (jar.name.endsWith("natives-ios.jar")) outputDir = file("xcode/native/ios")
+ if (outputDir != null) {
+ FileCollection fileCollection = zipTree(jar)
+ for (File libFile : fileCollection) {
+ if (libFile.getAbsolutePath().endsWith(".a") && !libFile.getAbsolutePath().contains("/tvos/")) {
+ copy {
+ from libFile.getAbsolutePath()
+ into outputDir
+ }
+ LD_FLAGS += " -force_load \${SRCROOT}/native/ios/" + libFile.getName()
+ }
+ }
+ }
+ }
+ def outFlags = file("xcode/ios-moe/custom.xcconfig");
+ outFlags.write LD_FLAGS
+
+ def proguard = file("/Applications/Intel/multi_os_engine/tools/proguard.cfg")
+ if (proguard.exists()) {
+ if (!proguard.text.contains("-keep class com.badlogic.**")) {
+ proguard << "\n-keep class com.badlogic.** { *; }\n"
+ proguard << "-keep enum com.badlogic.** { *; }\n"
+ }
+ }
+}
+
+task createBuildDir {
+ def file = new File('build/xcode/ios-moe.xcodeproj')
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+}
+
+sourceSets.main.java.srcDirs = [ "src/" ]
+
+
+moe {
+ mainClassName 'IOSMoeLauncher'
+ xcode {
+ mainTarget 'ios-moe'
+ packageName '%PACKAGE%'
+ deploymentTarget = '9.0'
+ xcodeProjectDirPath 'xcode'
+ generateProject false
+ }
+}
+
+moeMainReleaseIphoneosXcodeBuild.dependsOn copyNatives
+moeMainDebugIphoneosXcodeBuild.dependsOn copyNatives
+moeMainReleaseIphonesimulatorXcodeBuild.dependsOn copyNatives
+moeMainDebugIphonesimulatorXcodeBuild.dependsOn copyNatives \ No newline at end of file
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-375w-667h@2x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-375w-667h@2x.png
new file mode 100644
index 000000000..f213ce60d
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-375w-667h@2x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-414w-736h@3x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-414w-736h@3x.png
new file mode 100644
index 000000000..685ba51fc
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-414w-736h@3x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-568h@2x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-568h@2x.png
new file mode 100644
index 000000000..101752fe7
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default-568h@2x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default.png
new file mode 100644
index 000000000..f1a5582a0
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x.png
new file mode 100644
index 000000000..ca32f62fc
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x~ipad.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x~ipad.png
new file mode 100644
index 000000000..bb77ef073
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default@2x~ipad.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default~ipad.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default~ipad.png
new file mode 100644
index 000000000..855e4f2ad
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Default~ipad.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72.png
new file mode 100644
index 000000000..8cc575912
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72@2x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72@2x.png
new file mode 100644
index 000000000..ec5e3803f
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon-72@2x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon.png
new file mode 100644
index 000000000..7f4bf3635
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon@2x.png b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon@2x.png
new file mode 100644
index 000000000..eddc17c57
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/resources/Icon@2x.png
Binary files differ
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/src/IOSMoeLauncher b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/src/IOSMoeLauncher
new file mode 100644
index 000000000..a48e574eb
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/src/IOSMoeLauncher
@@ -0,0 +1,29 @@
+package %PACKAGE%;
+
+import com.badlogic.gdx.backends.iosmoe.IOSApplication;
+import com.badlogic.gdx.backends.iosmoe.IOSApplicationConfiguration;
+import com.intel.moe.natj.general.Pointer;
+import %PACKAGE%.%MAIN_CLASS%;
+
+import ios.foundation.NSAutoreleasePool;
+import ios.uikit.c.UIKit;
+
+public class IOSMoeLauncher extends IOSApplication.Delegate {
+
+ protected IOSMoeLauncher(Pointer peer) {
+ super(peer);
+ }
+
+ @Override
+ protected IOSApplication createApplication() {
+ IOSApplicationConfiguration config = new IOSApplicationConfiguration();
+ config.useAccelerometer = false;
+ return new IOSApplication(new %MAIN_CLASS%(), config);
+ }
+
+ public static void main(String[] argv) {
+ NSAutoreleasePool pool = NSAutoreleasePool.alloc();
+ UIKit.UIApplicationMain(0, null, null, IOSMoeLauncher.class.getName());
+ pool.dealloc();
+ }
+} \ No newline at end of file
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/Info-Test.plist b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/Info-Test.plist
new file mode 100644
index 000000000..5eab11c75
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/Info-Test.plist
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>ios-moe</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string></string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string></string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIRequiresFullScreen</key>
+ <true/>
+ <key>Intel.MOE.Main.Class</key>
+ <string>com.intel.moe.mdt.junit.MoeRemoteTestRunner</string>
+ <key>UIApplicationExitsOnSuspend</key>
+ <false/>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+</dict>
+</plist>
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/build.xcconfig b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/build.xcconfig
new file mode 100644
index 000000000..b80ae8282
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe-Test/build.xcconfig
@@ -0,0 +1,30 @@
+// Create sections from the art and oat files.
+MOE_SECT_OAT = -sectcreate __OATDATA __oatdata "${SRCROOT}/../build/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat"
+MOE_SECT_ART = -sectcreate __ARTDATA __artdata "${SRCROOT}/../build/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art"
+
+// Set the maximum and initial virtual memory protection for the segments.
+
+MOE_SEGPROT[sdk=iphoneos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=iphonesimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+MOE_SEGPROT[sdk=appletvos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=appletvsimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+
+// Set the __PAGEZERO segment size.
+MOE_PAGEZERO[sdk=iphoneos*] =
+MOE_PAGEZERO[sdk=iphonesimulator*] = -pagezero_size 4096
+MOE_PAGEZERO[sdk=appletvos*] =
+MOE_PAGEZERO[sdk=appletvsimulator*] = -pagezero_size 4096
+
+// Set frameworks paths.
+MOE_FRAMEWORK_PATH = ${INTEL_MULTI_OS_ENGINE_HOME}/sdk/${PLATFORM_NAME}
+
+MOE_CUSTOM_STATIC_FRAMEWORK_PATH = ../build/libs/static/${PLATFORM_NAME}
+MOE_CUSTOM_DYNAMIC_FRAMEWORK_PATH = ../build/libs/dynamic/${PLATFORM_NAME}
+
+// Collect all MOE linker flags.
+MOE_CUSTOM_OTHER_LDFLAGS = -framework Foundation -framework UIKit -L../build/libs/static -L../build/libs/static/${PLATFORM_NAME} -F../build/libs/static -F../build/libs/static/${PLATFORM_NAME} -F../build/libs/dynamic -F../build/libs/dynamic/${PLATFORM_NAME}
+
+MOE_OTHER_LDFLAGS = ${MOE_SECT_OAT} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lstdc++
+
+// Disable BitCode.
+ENABLE_BITCODE = NO
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..2edba54f7
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj
@@ -0,0 +1,550 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 03ACC9CF1CDFA73500656F5D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9CE1CDFA73500656F5D /* UIKit.framework */; };
+ 03ACC9D61CDFA75800656F5D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D01CDFA75700656F5D /* AudioToolbox.framework */; };
+ 03ACC9D71CDFA75800656F5D /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D11CDFA75800656F5D /* AVFoundation.framework */; };
+ 03ACC9D81CDFA75800656F5D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D21CDFA75800656F5D /* CoreGraphics.framework */; };
+ 03ACC9D91CDFA75800656F5D /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D31CDFA75800656F5D /* CoreMotion.framework */; };
+ 03ACC9DA1CDFA75800656F5D /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D41CDFA75800656F5D /* OpenAL.framework */; };
+ 03ACC9DB1CDFA75800656F5D /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9D51CDFA75800656F5D /* OpenGLES.framework */; };
+ 03ACC9DD1CDFA76400656F5D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03ACC9DC1CDFA76400656F5D /* QuartzCore.framework */; };
+ 03E2841C1CDFA83B005BA4F0 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 03E2841B1CDFA83B005BA4F0 /* assets */; };
+ 03E2842A1CDFAB6C005BA4F0 /* Default-375w-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E2841F1CDFAB6C005BA4F0 /* Default-375w-667h@2x.png */; };
+ 03E2842B1CDFAB6C005BA4F0 /* Default-414w-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284201CDFAB6C005BA4F0 /* Default-414w-736h@3x.png */; };
+ 03E2842C1CDFAB6C005BA4F0 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284211CDFAB6C005BA4F0 /* Default-568h@2x.png */; };
+ 03E2842D1CDFAB6C005BA4F0 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284221CDFAB6C005BA4F0 /* Default.png */; };
+ 03E2842E1CDFAB6C005BA4F0 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284231CDFAB6C005BA4F0 /* Default@2x.png */; };
+ 03E2842F1CDFAB6C005BA4F0 /* Default@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284241CDFAB6C005BA4F0 /* Default@2x~ipad.png */; };
+ 03E284301CDFAB6C005BA4F0 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284251CDFAB6C005BA4F0 /* Default~ipad.png */; };
+ 03E284311CDFAB6C005BA4F0 /* Icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284261CDFAB6C005BA4F0 /* Icon-72.png */; };
+ 03E284321CDFAB6C005BA4F0 /* Icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284271CDFAB6C005BA4F0 /* Icon-72@2x.png */; };
+ 03E284331CDFAB6C005BA4F0 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284281CDFAB6C005BA4F0 /* Icon.png */; };
+ 03E284341CDFAB6C005BA4F0 /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 03E284291CDFAB6C005BA4F0 /* Icon@2x.png */; };
+ 0C1BAA8C7E83493FC22B03BF /* MOE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69A4873AD453213FB9FC82C /* MOE.framework */; };
+ 3CE6F44CC68F58F172F95F17 /* MOE.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B69A4873AD453213FB9FC82C /* MOE.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 56E36A8BE759DE64A317E3BB /* preregister.txt in Resources */ = {isa = PBXBuildFile; fileRef = F06A5645587B524FEAAB4FF4 /* preregister.txt */; };
+ 58CC9A2221B6D58243831227 /* MOE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B69A4873AD453213FB9FC82C /* MOE.framework */; };
+ 7BDED603662F8D6E54531A9A /* application.jar in Resources */ = {isa = PBXBuildFile; fileRef = EA29F3AB9D4D3E916902DF5B /* application.jar */; };
+ 90295D2AF919CC851D72E450 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FF7C331588944C9129B593B /* main.cpp */; };
+ 95309959414FD1D25655CF4F /* preregister.txt in Resources */ = {isa = PBXBuildFile; fileRef = 6D75C11E2EB7C8366CBE7DD4 /* preregister.txt */; };
+ 960FC30B876E2B7F65EBD965 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3FF7C331588944C9129B593B /* main.cpp */; };
+ C1440F3EB845787ADEB6104E /* application.jar in Resources */ = {isa = PBXBuildFile; fileRef = 536B49D6B8966BB83CB06F44 /* application.jar */; };
+ D54D78ADDFD09C6CB7AFE5CF /* MOE.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B69A4873AD453213FB9FC82C /* MOE.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ F7E807EAC4115DB507780A52 /* classlist.txt in Resources */ = {isa = PBXBuildFile; fileRef = 79117275A2411FC95F9197E6 /* classlist.txt */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 2DE5B6108342B5C22A1BA87A /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ D54D78ADDFD09C6CB7AFE5CF /* MOE.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6A9F369CA2C2AA875B2749F0 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 3CE6F44CC68F58F172F95F17 /* MOE.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 00DD63AEFEB3A727B7EE0C4C /* Info-Test.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-Test.plist"; path = "ios-moe-Test/Info-Test.plist"; sourceTree = "<group>"; };
+ 03ACC9CE1CDFA73500656F5D /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 03ACC9D01CDFA75700656F5D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ 03ACC9D11CDFA75800656F5D /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+ 03ACC9D21CDFA75800656F5D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 03ACC9D31CDFA75800656F5D /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+ 03ACC9D41CDFA75800656F5D /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+ 03ACC9D51CDFA75800656F5D /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ 03ACC9DC1CDFA76400656F5D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 03E2841B1CDFA83B005BA4F0 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = assets; path = ../../../%ASSET_PATH%; sourceTree = "<group>"; };
+ 03E2841F1CDFAB6C005BA4F0 /* Default-375w-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-375w-667h@2x.png"; path = "../../resources/Default-375w-667h@2x.png"; sourceTree = "<group>"; };
+ 03E284201CDFAB6C005BA4F0 /* Default-414w-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-414w-736h@3x.png"; path = "../../resources/Default-414w-736h@3x.png"; sourceTree = "<group>"; };
+ 03E284211CDFAB6C005BA4F0 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-568h@2x.png"; path = "../../resources/Default-568h@2x.png"; sourceTree = "<group>"; };
+ 03E284221CDFAB6C005BA4F0 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = ../../resources/Default.png; sourceTree = "<group>"; };
+ 03E284231CDFAB6C005BA4F0 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "../../resources/Default@2x.png"; sourceTree = "<group>"; };
+ 03E284241CDFAB6C005BA4F0 /* Default@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x~ipad.png"; path = "../../resources/Default@2x~ipad.png"; sourceTree = "<group>"; };
+ 03E284251CDFAB6C005BA4F0 /* Default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default~ipad.png"; path = "../../resources/Default~ipad.png"; sourceTree = "<group>"; };
+ 03E284261CDFAB6C005BA4F0 /* Icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72.png"; path = "../../resources/Icon-72.png"; sourceTree = "<group>"; };
+ 03E284271CDFAB6C005BA4F0 /* Icon-72@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon-72@2x.png"; path = "../../resources/Icon-72@2x.png"; sourceTree = "<group>"; };
+ 03E284281CDFAB6C005BA4F0 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Icon.png; path = ../../resources/Icon.png; sourceTree = "<group>"; };
+ 03E284291CDFAB6C005BA4F0 /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Icon@2x.png"; path = "../../resources/Icon@2x.png"; sourceTree = "<group>"; };
+ 1ED204BD74E9D5EA07497539 /* build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = build.xcconfig; sourceTree = "<group>"; };
+ 24EA85BD4FD711B4AB05E16A /* build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = build.xcconfig; sourceTree = "<group>"; };
+ 36C285E0AB4EC84EF958EE2A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../Info.plist; sourceTree = "<group>"; };
+ 3FF7C331588944C9129B593B /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
+ 536B49D6B8966BB83CB06F44 /* application.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = application.jar; path = ../build/moe/test/application.jar; sourceTree = SOURCE_ROOT; };
+ 53ADB2FAAB1A5F2165A74CF8 /* ios-moe-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 6D75C11E2EB7C8366CBE7DD4 /* preregister.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = preregister.txt; path = ../build/moe/test/preregister.txt; sourceTree = SOURCE_ROOT; };
+ 79117275A2411FC95F9197E6 /* classlist.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = classlist.txt; path = ../build/moe/test/classlist.txt; sourceTree = SOURCE_ROOT; };
+ 9103A8B09D850A82D3B79162 /* ios-moe.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ B69A4873AD453213FB9FC82C /* MOE.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MOE.framework; sourceTree = MOE_FRAMEWORK_PATH; };
+ EA29F3AB9D4D3E916902DF5B /* application.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = application.jar; path = ../build/moe/main/application.jar; sourceTree = SOURCE_ROOT; };
+ F06A5645587B524FEAAB4FF4 /* preregister.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = preregister.txt; path = ../build/moe/main/preregister.txt; sourceTree = SOURCE_ROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 5F361FCF5051FEEBA1525BEF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 03ACC9DD1CDFA76400656F5D /* QuartzCore.framework in Frameworks */,
+ 03ACC9D61CDFA75800656F5D /* AudioToolbox.framework in Frameworks */,
+ 03ACC9D71CDFA75800656F5D /* AVFoundation.framework in Frameworks */,
+ 03ACC9D81CDFA75800656F5D /* CoreGraphics.framework in Frameworks */,
+ 03ACC9D91CDFA75800656F5D /* CoreMotion.framework in Frameworks */,
+ 03ACC9DA1CDFA75800656F5D /* OpenAL.framework in Frameworks */,
+ 03ACC9DB1CDFA75800656F5D /* OpenGLES.framework in Frameworks */,
+ 03ACC9CF1CDFA73500656F5D /* UIKit.framework in Frameworks */,
+ 58CC9A2221B6D58243831227 /* MOE.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ E7E24EB27AB7F85FFBF64DFC /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0C1BAA8C7E83493FC22B03BF /* MOE.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 11DFED721E7C0183D04B5B52 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 9103A8B09D850A82D3B79162 /* ios-moe.app */,
+ 53ADB2FAAB1A5F2165A74CF8 /* ios-moe-Test.app */,
+ );
+ path = Products;
+ sourceTree = "<group>";
+ };
+ 446457971163AC6B44192DC7 /* ios-moe */ = {
+ isa = PBXGroup;
+ children = (
+ 475E31962D6DD39FE2334036 /* Supporting Files */,
+ );
+ path = "ios-moe";
+ sourceTree = "<group>";
+ };
+ 475E31962D6DD39FE2334036 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 03E2841F1CDFAB6C005BA4F0 /* Default-375w-667h@2x.png */,
+ 03E284201CDFAB6C005BA4F0 /* Default-414w-736h@3x.png */,
+ 03E284211CDFAB6C005BA4F0 /* Default-568h@2x.png */,
+ 03E284221CDFAB6C005BA4F0 /* Default.png */,
+ 03E284231CDFAB6C005BA4F0 /* Default@2x.png */,
+ 03E284241CDFAB6C005BA4F0 /* Default@2x~ipad.png */,
+ 03E284251CDFAB6C005BA4F0 /* Default~ipad.png */,
+ 03E284261CDFAB6C005BA4F0 /* Icon-72.png */,
+ 03E284271CDFAB6C005BA4F0 /* Icon-72@2x.png */,
+ 03E284281CDFAB6C005BA4F0 /* Icon.png */,
+ 03E284291CDFAB6C005BA4F0 /* Icon@2x.png */,
+ 03E2841B1CDFA83B005BA4F0 /* assets */,
+ 3FF7C331588944C9129B593B /* main.cpp */,
+ 1ED204BD74E9D5EA07497539 /* build.xcconfig */,
+ 36C285E0AB4EC84EF958EE2A /* Info.plist */,
+ F06A5645587B524FEAAB4FF4 /* preregister.txt */,
+ EA29F3AB9D4D3E916902DF5B /* application.jar */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 4BAC591E4FA8CB2EB817C961 /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 24EA85BD4FD711B4AB05E16A /* build.xcconfig */,
+ 00DD63AEFEB3A727B7EE0C4C /* Info-Test.plist */,
+ 6D75C11E2EB7C8366CBE7DD4 /* preregister.txt */,
+ 536B49D6B8966BB83CB06F44 /* application.jar */,
+ 79117275A2411FC95F9197E6 /* classlist.txt */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 8B096E14E5628AB34171BB72 = {
+ isa = PBXGroup;
+ children = (
+ 446457971163AC6B44192DC7 /* ios-moe */,
+ A7284AF2E3E68F693F900A0A /* ios-moe-Test */,
+ D23FFB4E57C7ECB40006115B /* Frameworks */,
+ 11DFED721E7C0183D04B5B52 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ A7284AF2E3E68F693F900A0A /* ios-moe-Test */ = {
+ isa = PBXGroup;
+ children = (
+ 4BAC591E4FA8CB2EB817C961 /* Supporting Files */,
+ );
+ path = "ios-moe-Test";
+ sourceTree = "<group>";
+ };
+ D23FFB4E57C7ECB40006115B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 03ACC9DC1CDFA76400656F5D /* QuartzCore.framework */,
+ 03ACC9D01CDFA75700656F5D /* AudioToolbox.framework */,
+ 03ACC9D11CDFA75800656F5D /* AVFoundation.framework */,
+ 03ACC9D21CDFA75800656F5D /* CoreGraphics.framework */,
+ 03ACC9D31CDFA75800656F5D /* CoreMotion.framework */,
+ 03ACC9D41CDFA75800656F5D /* OpenAL.framework */,
+ 03ACC9D51CDFA75800656F5D /* OpenGLES.framework */,
+ 03ACC9CE1CDFA73500656F5D /* UIKit.framework */,
+ B69A4873AD453213FB9FC82C /* MOE.framework */,
+ );
+ path = Frameworks;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 0E9154217F235BB5B2BFC4BE /* ios-moe */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 9F8504C071F5D00F3451B1D3 /* Build configuration list for PBXNativeTarget "ios-moe" */;
+ buildPhases = (
+ 500AD4BF3AAD5E5D6382F974 /* Compile Sources (MOE) */,
+ 5F361FCF5051FEEBA1525BEF /* Frameworks */,
+ 10C312B5F96D82EA21671714 /* Resources */,
+ 245921367BF4CB27ECA67B6F /* Sources */,
+ 2DE5B6108342B5C22A1BA87A /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ name = "ios-moe";
+ productName = "ios-moe";
+ productReference = 9103A8B09D850A82D3B79162 /* ios-moe.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 95CBC8E4024D3F9F3C555DAB /* ios-moe-Test */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = F36674DD4A611CA808853DDA /* Build configuration list for PBXNativeTarget "ios-moe-Test" */;
+ buildPhases = (
+ 427461353A4BBC96FCF17C82 /* Compile Sources (MOE) */,
+ E7E24EB27AB7F85FFBF64DFC /* Frameworks */,
+ 45E014C3162575659AD0D6A1 /* Resources */,
+ 6DE67773C5E46D1D0892EF3A /* Sources */,
+ 6A9F369CA2C2AA875B2749F0 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ name = "ios-moe-Test";
+ productName = "ios-moe-Test";
+ productReference = 53ADB2FAAB1A5F2165A74CF8 /* ios-moe-Test.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0660C5D19255BDDA0452A92 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ ORGANIZATIONNAME = "";
+ };
+ buildConfigurationList = C55142AA649A48403E0908DF /* Build configuration list for PBXProject "ios-moe" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 8B096E14E5628AB34171BB72;
+ productRefGroup = 11DFED721E7C0183D04B5B52 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 0E9154217F235BB5B2BFC4BE /* ios-moe */,
+ 95CBC8E4024D3F9F3C555DAB /* ios-moe-Test */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 10C312B5F96D82EA21671714 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 03E2842F1CDFAB6C005BA4F0 /* Default@2x~ipad.png in Resources */,
+ 03E2842E1CDFAB6C005BA4F0 /* Default@2x.png in Resources */,
+ 03E284321CDFAB6C005BA4F0 /* Icon-72@2x.png in Resources */,
+ 03E2842B1CDFAB6C005BA4F0 /* Default-414w-736h@3x.png in Resources */,
+ 03E284311CDFAB6C005BA4F0 /* Icon-72.png in Resources */,
+ 03E2841C1CDFA83B005BA4F0 /* assets in Resources */,
+ 03E2842A1CDFAB6C005BA4F0 /* Default-375w-667h@2x.png in Resources */,
+ 03E284331CDFAB6C005BA4F0 /* Icon.png in Resources */,
+ 56E36A8BE759DE64A317E3BB /* preregister.txt in Resources */,
+ 03E284341CDFAB6C005BA4F0 /* Icon@2x.png in Resources */,
+ 03E284301CDFAB6C005BA4F0 /* Default~ipad.png in Resources */,
+ 03E2842D1CDFAB6C005BA4F0 /* Default.png in Resources */,
+ 7BDED603662F8D6E54531A9A /* application.jar in Resources */,
+ 03E2842C1CDFAB6C005BA4F0 /* Default-568h@2x.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 45E014C3162575659AD0D6A1 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 95309959414FD1D25655CF4F /* preregister.txt in Resources */,
+ C1440F3EB845787ADEB6104E /* application.jar in Resources */,
+ F7E807EAC4115DB507780A52 /* classlist.txt in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 427461353A4BBC96FCF17C82 /* Compile Sources (MOE) */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Compile Sources (MOE)";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/bash;
+ shellScript = "cd \"${SRCROOT}/..\"\n\nexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)\njava -version\n\n########################\n# Find Gradle\n########################\nfunction findGradle {\n\tCD=\"$PWD\"\n\twhile [ \"$CD\" != \"\" ]; do\n\t\techo \"Looking for gradlew in $CD\"\n\t\tif [ -x \"$CD/gradlew\" ]; then\n\t\t\tGRADLE_EXEC=$CD/gradlew\n\t\t\treturn 0\n\t\tfi\n\t\tCD=\"${CD%/*}\"\n\tdone\n\n\tDEFAULT_PATH=$(echo $PATH)\n\tsource ~/.bash_profile\n\texport PATH=$PATH:DEFAULT_PATH\n\n\techo \"Checking with 'which'\"\n\tGRADLE_EXEC=$(which 'gradle')\n\n\tif [ \"$GRADLE_EXEC\" = \"\" ]; then\n\t\techo \"Falling back to '/usr/local/bin/gradle'\"\n\t\tGRADLE_EXEC=/usr/local/bin/gradle\n\tfi\n}\n########################\n# Execute Gradle build\n########################\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n\n export MOE_BUILD_SOURCE_SET=test\n \"$GRADLE_EXEC\" --daemon moeXcodeInternal\nfi\n";
+ };
+ 500AD4BF3AAD5E5D6382F974 /* Compile Sources (MOE) */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Compile Sources (MOE)";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/bash;
+ shellScript = "cd \"${SRCROOT}/..\"\n\nexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)\njava -version\n\n########################\n# Find Gradle\n########################\nfunction findGradle {\n\tCD=\"$PWD\"\n\twhile [ \"$CD\" != \"\" ]; do\n\t\techo \"Looking for gradlew in $CD\"\n\t\tif [ -x \"$CD/gradlew\" ]; then\n\t\t\tGRADLE_EXEC=$CD/gradlew\n\t\t\treturn 0\n\t\tfi\n\t\tCD=\"${CD%/*}\"\n\tdone\n\n\tDEFAULT_PATH=$(echo $PATH)\n\tsource ~/.bash_profile\n\texport PATH=$PATH:DEFAULT_PATH\n\n\techo \"Checking with 'which'\"\n\tGRADLE_EXEC=$(which 'gradle')\n\n\tif [ \"$GRADLE_EXEC\" = \"\" ]; then\n\t\techo \"Falling back to '/usr/local/bin/gradle'\"\n\t\tGRADLE_EXEC=/usr/local/bin/gradle\n\tfi\n}\n########################\n# Execute Gradle build\n########################\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n\n \"$GRADLE_EXEC\" --daemon moeXcodeInternal\nfi\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 245921367BF4CB27ECA67B6F /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 90295D2AF919CC851D72E450 /* main.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 6DE67773C5E46D1D0892EF3A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 960FC30B876E2B7F65EBD965 /* main.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 2267C903FAF96511A9A886F3 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "${MOE_FRAMEWORK_PATH}",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SYMROOT = ../build/moe/xcodebuild/sym;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 4E5BEAA7CA2250C7D9E12D78 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 24EA85BD4FD711B4AB05E16A /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "Info-Test.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "ios-moe-Test";
+ STRIP_STYLE = "non-global";
+ };
+ name = Release;
+ };
+ 541E8AA924992CC70502ACAD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1ED204BD74E9D5EA07497539 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "ios-moe/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "ios-moe";
+ STRIP_STYLE = "non-global";
+ };
+ name = Debug;
+ };
+ 7E761E6D43DBA5AA0D92A3B7 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 24EA85BD4FD711B4AB05E16A /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "Info-Test.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "ios-moe-Test";
+ STRIP_STYLE = "non-global";
+ };
+ name = Debug;
+ };
+ 8637936F717132B8B36A8A3D /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 1ED204BD74E9D5EA07497539 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "ios-moe/Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "ios-moe";
+ STRIP_STYLE = "non-global";
+ };
+ name = Release;
+ };
+ C7D9B5B039CBC05121BCD7AD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "${MOE_FRAMEWORK_PATH}",
+ );
+ 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_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ SDKROOT = iphoneos;
+ SYMROOT = ../build/moe/xcodebuild/sym;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 9F8504C071F5D00F3451B1D3 /* Build configuration list for PBXNativeTarget "ios-moe" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 541E8AA924992CC70502ACAD /* Debug */,
+ 8637936F717132B8B36A8A3D /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ C55142AA649A48403E0908DF /* Build configuration list for PBXProject "ios-moe" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ C7D9B5B039CBC05121BCD7AD /* Debug */,
+ 2267C903FAF96511A9A886F3 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ F36674DD4A611CA808853DDA /* Build configuration list for PBXNativeTarget "ios-moe-Test" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 7E761E6D43DBA5AA0D92A3B7 /* Debug */,
+ 4E5BEAA7CA2250C7D9E12D78 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0660C5D19255BDDA0452A92 /* Project object */;
+}
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/Info.plist b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/Info.plist
new file mode 100644
index 000000000..599f91370
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/Info.plist
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>%PACKAGE%</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>%APP_NAME%</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string></string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string></string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIRequiresFullScreen</key>
+ <true/>
+ <key>Intel.MOE.Main.Class</key>
+ <string>%PACKAGE%.IOSMoeLauncher</string>
+ <key>UIApplicationExitsOnSuspend</key>
+ <false/>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/build.xcconfig b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/build.xcconfig
new file mode 100644
index 000000000..d5f569dc5
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/build.xcconfig
@@ -0,0 +1,32 @@
+#include "custom.xcconfig"
+
+// Create sections from the art and oat files.
+MOE_SECT_OAT = -sectcreate __OATDATA __oatdata "${SRCROOT}/../build/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat"
+MOE_SECT_ART = -sectcreate __ARTDATA __artdata "${SRCROOT}/../build/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art"
+
+// Set the maximum and initial virtual memory protection for the segments.
+
+MOE_SEGPROT[sdk=iphoneos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=iphonesimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+MOE_SEGPROT[sdk=appletvos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=appletvsimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+
+// Set the __PAGEZERO segment size.
+MOE_PAGEZERO[sdk=iphoneos*] =
+MOE_PAGEZERO[sdk=iphonesimulator*] = -pagezero_size 4096
+MOE_PAGEZERO[sdk=appletvos*] =
+MOE_PAGEZERO[sdk=appletvsimulator*] = -pagezero_size 4096
+
+// Set frameworks paths.
+MOE_FRAMEWORK_PATH = ${INTEL_MULTI_OS_ENGINE_HOME}/sdk/${PLATFORM_NAME}
+
+MOE_CUSTOM_STATIC_FRAMEWORK_PATH = ../build/libs/static/${PLATFORM_NAME}
+MOE_CUSTOM_DYNAMIC_FRAMEWORK_PATH = ../build/libs/dynamic/${PLATFORM_NAME}
+
+// Collect all MOE linker flags.
+MOE_CUSTOM_OTHER_LDFLAGS = ${LIBGDX_NATIVES} -framework Foundation -framework UIKit -L../build/libs/static -L../build/libs/static/${PLATFORM_NAME} -F../build/libs/static -F../build/libs/static/${PLATFORM_NAME} -F../build/libs/dynamic -F../build/libs/dynamic/${PLATFORM_NAME}
+
+MOE_OTHER_LDFLAGS = ${MOE_SECT_OAT} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lstdc++
+
+// Disable BitCode.
+ENABLE_BITCODE = NO
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/custom.xcconfig b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/custom.xcconfig
new file mode 100644
index 000000000..389f5f52a
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/custom.xcconfig
@@ -0,0 +1 @@
+LIBGDX_NATIVES = -force_load ${SRCROOT}/native/ios/libObjectAL.a -force_load ${SRCROOT}/native/ios/libgdx.a -force_load ${SRCROOT}/native/ios/libgdx-box2d.a \ No newline at end of file
diff --git a/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/main.cpp b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/main.cpp
new file mode 100644
index 000000000..763c55044
--- /dev/null
+++ b/extensions/gdx-setup/src/com/badlogic/gdx/setup/resources/ios-moe/xcode/ios-moe/main.cpp
@@ -0,0 +1,35 @@
+// Copyright (c) 2015, Intel Corporation
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <MOE/MOE.h>
+
+
+int main(int argc, char *argv[]) {
+ return moevm(argc, argv);
+}
diff --git a/pom.xml b/pom.xml
index 3f0aaf796..1cb8a52c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,7 @@
<lwjgl3.version>3.0.0b</lwjgl3.version>
<jglfw.version>1.1</jglfw.version>
<robovm.version>1.9.0</robovm.version>
+ <moe.version>1.0.0</moe.version>
</properties>
<modules>
@@ -61,6 +62,7 @@
<module>backends/gdx-backend-jglfw</module>
<module>backends/gdx-backends-gwt</module>
<module>backends/gdx-backend-headless</module>
+ <module>backends/gdx-backend-moe</module>
<module>extensions/gdx-tools</module>
<module>extensions/gdx-box2d</module>
<module>extensions/gdx-bullet</module>
diff --git a/settings.gradle b/settings.gradle
index bad78a274..5cd0d3114 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -5,6 +5,7 @@ include ":backends:gdx-backend-jglfw"
include ":backends:gdx-backend-lwjgl"
include ":backends:gdx-backend-lwjgl3"
include ":backends:gdx-backend-robovm"
+include ":backends:gdx-backend-moe"
include ":backends:gdx-backends-gwt"
include ":extensions:gdx-box2d:gdx-box2d"
include ":extensions:gdx-box2d:gdx-box2d-gwt"
@@ -22,6 +23,7 @@ include ":tests:gdx-tests"
include ":tests:gdx-tests-android"
include ":tests:gdx-tests-gwt"
include ":tests:gdx-tests-iosrobovm"
+include ':tests:gdx-tests-ios-intel'
include ":tests:gdx-tests-jglfw"
include ":tests:gdx-tests-lwjgl"
include ":tests:gdx-tests-lwjgl3"
diff --git a/test/core/assets/badlogic.jpg b/test/core/assets/badlogic.jpg
new file mode 100644
index 000000000..4390da6e0
--- /dev/null
+++ b/test/core/assets/badlogic.jpg
Binary files differ
diff --git a/test/ios-moe/resources/Default-375w-667h@2x.png b/test/ios-moe/resources/Default-375w-667h@2x.png
new file mode 100644
index 000000000..f213ce60d
--- /dev/null
+++ b/test/ios-moe/resources/Default-375w-667h@2x.png
Binary files differ
diff --git a/test/ios-moe/resources/Default-414w-736h@3x.png b/test/ios-moe/resources/Default-414w-736h@3x.png
new file mode 100644
index 000000000..685ba51fc
--- /dev/null
+++ b/test/ios-moe/resources/Default-414w-736h@3x.png
Binary files differ
diff --git a/test/ios-moe/resources/Default-568h@2x.png b/test/ios-moe/resources/Default-568h@2x.png
new file mode 100644
index 000000000..101752fe7
--- /dev/null
+++ b/test/ios-moe/resources/Default-568h@2x.png
Binary files differ
diff --git a/test/ios-moe/resources/Default.png b/test/ios-moe/resources/Default.png
new file mode 100644
index 000000000..f1a5582a0
--- /dev/null
+++ b/test/ios-moe/resources/Default.png
Binary files differ
diff --git a/test/ios-moe/resources/Default@2x.png b/test/ios-moe/resources/Default@2x.png
new file mode 100644
index 000000000..ca32f62fc
--- /dev/null
+++ b/test/ios-moe/resources/Default@2x.png
Binary files differ
diff --git a/test/ios-moe/resources/Default@2x~ipad.png b/test/ios-moe/resources/Default@2x~ipad.png
new file mode 100644
index 000000000..bb77ef073
--- /dev/null
+++ b/test/ios-moe/resources/Default@2x~ipad.png
Binary files differ
diff --git a/test/ios-moe/resources/Default~ipad.png b/test/ios-moe/resources/Default~ipad.png
new file mode 100644
index 000000000..855e4f2ad
--- /dev/null
+++ b/test/ios-moe/resources/Default~ipad.png
Binary files differ
diff --git a/test/ios-moe/resources/Icon-72.png b/test/ios-moe/resources/Icon-72.png
new file mode 100644
index 000000000..8cc575912
--- /dev/null
+++ b/test/ios-moe/resources/Icon-72.png
Binary files differ
diff --git a/test/ios-moe/resources/Icon-72@2x.png b/test/ios-moe/resources/Icon-72@2x.png
new file mode 100644
index 000000000..ec5e3803f
--- /dev/null
+++ b/test/ios-moe/resources/Icon-72@2x.png
Binary files differ
diff --git a/test/ios-moe/resources/Icon.png b/test/ios-moe/resources/Icon.png
new file mode 100644
index 000000000..7f4bf3635
--- /dev/null
+++ b/test/ios-moe/resources/Icon.png
Binary files differ
diff --git a/test/ios-moe/resources/Icon@2x.png b/test/ios-moe/resources/Icon@2x.png
new file mode 100644
index 000000000..eddc17c57
--- /dev/null
+++ b/test/ios-moe/resources/Icon@2x.png
Binary files differ
diff --git a/tests/gdx-tests-ios-intel/build.gradle b/tests/gdx-tests-ios-intel/build.gradle
new file mode 100644
index 000000000..652a55253
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/build.gradle
@@ -0,0 +1,79 @@
+buildscript {
+ repositories {
+ mavenCentral()
+
+ maven {
+ url uri(System.getenv("INTEL_MULTI_OS_ENGINE_HOME") + "/gradle")
+ }
+ }
+ dependencies {
+ classpath 'com.intel.gradle:moeGradlePlugin:1.1.0.final-1'
+ }
+}
+
+apply plugin: 'moe'
+
+configurations { natives }
+
+task copyNatives << {
+ file("xcode/native/ios/").mkdirs();
+ def LD_FLAGS = "LIBGDX_NATIVES = "
+ configurations.natives.files.each { jar->
+ def outputDir = null
+ if (jar.name.endsWith("natives-ios.jar")) outputDir = file("xcode/native/ios")
+ if (outputDir != null) {
+ FileCollection fileCollection = zipTree(jar)
+ for (File libFile : fileCollection) {
+ if (libFile.getAbsolutePath().endsWith(".a") && !libFile.getAbsolutePath().contains("/tvos/")) {
+ copy {
+ from libFile.getAbsolutePath()
+ into outputDir
+ }
+ LD_FLAGS += " -force_load \${SRCROOT}/native/ios/" + libFile.getName()
+ }
+ }
+ }
+ }
+ def outFlags = file("xcode/IOSTests/custom.xcconfig");
+ outFlags.write LD_FLAGS
+
+ def proguard = file("/Applications/Intel/multi_os_engine/tools/proguard.cfg")
+ if (proguard.exists()) {
+ if (!proguard.text.contains("-keep class com.badlogic.**")) {
+ proguard << "-keep class com.badlogic.** { *; }\n"
+ proguard << "-keep enum com.badlogic.** { *; }\n"
+ }
+ }
+}
+
+repositories {
+ mavenLocal()
+ mavenCentral()
+ jcenter()
+}
+
+sourceSets.main.java.srcDirs = ["src/main/java"]
+sourceSets.main.resources.srcDirs = ["src/main/resources"]
+
+dependencies {
+ natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-ios"
+ natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-ios"
+ natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-ios"
+ natives "com.badlogicgames.gdx:gdx-freetype-platform:1.9.2:natives-ios"
+}
+
+moe {
+ mainClassName 'IOSTests'
+ xcode {
+ mainTarget 'IOSTests'
+ packageName 'com.badlogicgames.gdx.tests'
+ deploymentTarget = '9.0'
+ xcodeProjectDirPath 'xcode'
+ generateProject false
+ }
+}
+
+moeMainReleaseIphoneosXcodeBuild.dependsOn copyNatives
+moeMainDebugIphoneosXcodeBuild.dependsOn copyNatives
+moeMainReleaseIphonesimulatorXcodeBuild.dependsOn copyNatives
+moeMainDebugIphonesimulatorXcodeBuild.dependsOn copyNatives \ No newline at end of file
diff --git a/tests/gdx-tests-ios-intel/src/main/java/com/badlogicgames/gdx/tests/IOSTests.java b/tests/gdx-tests-ios-intel/src/main/java/com/badlogicgames/gdx/tests/IOSTests.java
new file mode 100644
index 000000000..ecabbe1ad
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/src/main/java/com/badlogicgames/gdx/tests/IOSTests.java
@@ -0,0 +1,45 @@
+/*******************************************************************************
+ * Copyright 2011 See AUTHORS file.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+package com.badlogicgames.gdx.tests;
+
+import com.badlogic.gdx.backends.iosmoe.IOSApplication;
+import com.badlogic.gdx.backends.iosmoe.IOSApplicationConfiguration;
+import com.badlogic.gdx.tests.*;
+import com.intel.moe.natj.general.Pointer;
+
+import ios.uikit.c.UIKit;
+
+public class IOSTests extends IOSApplication.Delegate {
+
+ protected IOSTests(Pointer peer) {
+ super(peer);
+ }
+
+ @Override
+ protected IOSApplication createApplication() {
+ IOSApplicationConfiguration config = new IOSApplicationConfiguration();
+ config.useAccelerometer = false;
+ config.useGL30 = false;
+ return new IOSApplication(new SpriteBatchTest(), config);
+ }
+
+ public static void main(String[] argv) {
+ //NSAutoreleasePool pool = NSAutoreleasePool.alloc();
+ UIKit.UIApplicationMain(0, null, null, IOSTests.class.getName());
+ //pool.dealloc();
+ }
+} \ No newline at end of file
diff --git a/tests/gdx-tests-ios-intel/src/main/resources/LaunchScreen.xib b/tests/gdx-tests-ios-intel/src/main/resources/LaunchScreen.xib
new file mode 100644
index 000000000..a65cf373f
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/src/main/resources/LaunchScreen.xib
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="9532" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
+ <dependencies>
+ <deployment identifier="iOS"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
+ </dependencies>
+ <objects>
+ <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+ <view contentMode="scaleToFill" id="iN0-l3-epB">
+ <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" misplaced="YES" image="intel_logo.png" highlightedImage="Intel_logo.png" translatesAutoresizingMaskIntoConstraints="NO" id="cXf-3N-st0">
+ <rect key="frame" x="86" y="83" width="309" height="314"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="157" id="Umo-0r-g0n"/>
+ <constraint firstAttribute="width" constant="155" id="fae-v6-lTY"/>
+ </constraints>
+ </imageView>
+ </subviews>
+ <color key="backgroundColor" red="0.0" green="0.23529411764705882" blue="0.44313725490196076" alpha="1" colorSpace="calibratedRGB"/>
+ <constraints>
+ <constraint firstAttribute="centerY" secondItem="cXf-3N-st0" secondAttribute="centerY" id="GjL-As-Mev"/>
+ <constraint firstAttribute="centerX" secondItem="cXf-3N-st0" secondAttribute="centerX" id="Xrk-r2-SGt"/>
+ </constraints>
+ <nil key="simulatedStatusBarMetrics"/>
+ <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+ <point key="canvasLocation" x="548" y="455"/>
+ </view>
+ </objects>
+ <resources>
+ <image name="Intel_logo.png" width="16" height="16"/>
+ <image name="intel_logo.png" width="310" height="314"/>
+ </resources>
+</document>
diff --git a/tests/gdx-tests-ios-intel/src/main/resources/MainUI.storyboard b/tests/gdx-tests-ios-intel/src/main/resources/MainUI.storyboard
new file mode 100644
index 000000000..140ee4c2e
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/src/main/resources/MainUI.storyboard
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="86b32757-56ac-4b20-b8b4-b57fbd5aacaa">
+ <dependencies>
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
+ </dependencies>
+ <scenes>
+ <!--App View Controller-->
+ <scene sceneID="c08b2e61-1be1-4c5f-9314-3d11ab714248">
+ <objects>
+ <viewController id="86b32757-56ac-4b20-b8b4-b57fbd5aacaa" customClass="AppViewController" sceneMemberID="viewController">
+ <layoutGuides>
+ <viewControllerLayoutGuide type="top" id="34a810f1-2d11-4347-82ac-1c9ff8ee8e6f"/>
+ <viewControllerLayoutGuide type="bottom" id="b552b700-20a7-40d6-b60d-7573107195c2"/>
+ </layoutGuides>
+ <view key="view" contentMode="scaleToFill" id="2886dc68-5dbd-4c5b-ab40-d867038139af">
+ <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <label opaque="NO" contentMode="scaleToFill" text="Label" lineBreakMode="tailTruncation" id="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5">
+ <rect key="frame" x="10" y="10" width="590" height="290"/>
+ <fontDescription key="fontDescription" type="system" pointSize="15"/>
+ <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+ <nil key="highlightedColor"/>
+ </label>
+ <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="85a10b36-ed84-4835-ad5b-3164cdbb5c5d">
+ <rect key="frame" x="0.0" y="300" width="600" height="300"/>
+ <color key="backgroundColor" red="1" green="1" blue="1" alpha="0.0" colorSpace="calibratedRGB"/>
+ <fontDescription key="fontDescription" type="system" pointSize="15"/>
+ <state key="normal" title="Press me!">
+ <color key="titleColor" red="0.0" green="0.20000000000000001" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
+ </state>
+ <connections>
+ <action selector="BtnPressedCancel_helloButton:" destination="86b32757-56ac-4b20-b8b4-b57fbd5aacaa" eventType="touchUpInside" id="683683f8-7413-4957-8956-38c35dbead73"/>
+ </connections>
+ </button>
+ </subviews>
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+ <constraints>
+ <constraint firstItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" firstAttribute="leading" secondItem="2886dc68-5dbd-4c5b-ab40-d867038139af" secondAttribute="leading" priority="950" constant="10" id="1af67bfd-d7c0-456e-9a1d-07a05371a621"/>
+ <constraint firstAttribute="trailing" secondItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" secondAttribute="trailing" priority="900" id="58041903-aa2f-4dbb-bfe8-1513243e438a"/>
+ <constraint firstItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" firstAttribute="height" secondItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" secondAttribute="height" priority="500" constant="-10" id="5ab61591-c2e9-46f2-8852-f7662eb05904"/>
+ <constraint firstItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" firstAttribute="width" secondItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" secondAttribute="width" priority="500" constant="-10" id="75be507c-f9dd-4917-aeb7-9235f19d55f6"/>
+ <constraint firstItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" firstAttribute="leading" secondItem="2886dc68-5dbd-4c5b-ab40-d867038139af" secondAttribute="leading" priority="950" id="7886afc3-3bbf-496c-8afc-a03360076606"/>
+ <constraint firstAttribute="trailing" secondItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" secondAttribute="trailing" priority="900" id="b3babdb5-de0b-414f-b364-ab668cc8e517"/>
+ <constraint firstAttribute="bottom" secondItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" secondAttribute="bottom" priority="900" id="ba410457-cbc4-456a-9240-b2c23c787872"/>
+ <constraint firstItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" firstAttribute="top" secondItem="2886dc68-5dbd-4c5b-ab40-d867038139af" secondAttribute="top" priority="950" constant="10" id="c91a7ef4-330a-4d6b-876d-d81c16b4a115"/>
+ <constraint firstItem="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" firstAttribute="bottom" secondItem="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" secondAttribute="top" priority="950" id="da53174b-2826-487b-ac82-d79760fbcfd4"/>
+ </constraints>
+ </view>
+ <connections>
+ <outlet property="helloButton" destination="85a10b36-ed84-4835-ad5b-3164cdbb5c5d" id="2a3a7e85-7c21-4e0f-bb4f-bb3869821c82"/>
+ <outlet property="statusText" destination="db4b6fd7-cd29-46a7-b5a0-1f68afed4fb5" id="fe0745e2-c92d-49a1-86bd-d959a3b8c19f"/>
+ </connections>
+ </viewController>
+ <placeholder placeholderIdentifier="IBFirstResponder" id="587f70e5-b7f3-4fea-920f-72e17c15b7af" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="181.33333333333334" y="395.70666666666665"/>
+ </scene>
+ </scenes>
+</document>
diff --git a/tests/gdx-tests-ios-intel/src/main/resources/intel_logo.png b/tests/gdx-tests-ios-intel/src/main/resources/intel_logo.png
new file mode 100644
index 000000000..82a4037f5
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/src/main/resources/intel_logo.png
Binary files differ
diff --git a/tests/gdx-tests-ios-intel/src/main/resources/layout/sample_design.ixml b/tests/gdx-tests-ios-intel/src/main/resources/layout/sample_design.ixml
new file mode 100644
index 000000000..1d0f972d5
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/src/main/resources/layout/sample_design.ixml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.android.sdklib.widgets.iOSViewController xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" xmlns:xrt="http://schemas.android.com/apk/res/android" xrt:initialViewController="true" android:orientation="vertical" xrt:viewController="com.badlogicgames.gdx-tests-ios-intel.ui.AppViewController">
+
+<com.android.sdklib.widgets.iOSTextView
+ style="@style/XOSLabel"
+ android:textSize="15dp"
+ android:text="Label"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_gravity="left" android:id="@+id/com.android.sdklib.widgets.iOSTextView" android:layout_weight="1.0" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" xrt:iboutlet="statusText"/><com.android.sdklib.widgets.iOSButton
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:textSize="15dp"
+ android:text="Press me!"
+ style="@style/XOSButton"
+ android:id="@+id/com.android.sdklib.widgets.iOSButton" android:layout_weight="1.0" xrt:ibaction="touchUpInside-BtnPressedCancel_helloButton:" xrt:iboutlet="helloButton"/></com.android.sdklib.widgets.iOSViewController>
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/Info-Test.plist b/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/Info-Test.plist
new file mode 100644
index 000000000..548600cc6
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/Info-Test.plist
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>IOSTests</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string></string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string></string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIRequiresFullScreen</key>
+ <true/>
+ <key>Intel.MOE.Main.Class</key>
+ <string>com.intel.moe.mdt.junit.MoeRemoteTestRunner</string>
+ <key>UIApplicationExitsOnSuspend</key>
+ <false/>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+</dict>
+</plist>
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/build.xcconfig b/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/build.xcconfig
new file mode 100644
index 000000000..b80ae8282
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests-Test/build.xcconfig
@@ -0,0 +1,30 @@
+// Create sections from the art and oat files.
+MOE_SECT_OAT = -sectcreate __OATDATA __oatdata "${SRCROOT}/../build/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat"
+MOE_SECT_ART = -sectcreate __ARTDATA __artdata "${SRCROOT}/../build/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art"
+
+// Set the maximum and initial virtual memory protection for the segments.
+
+MOE_SEGPROT[sdk=iphoneos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=iphonesimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+MOE_SEGPROT[sdk=appletvos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=appletvsimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+
+// Set the __PAGEZERO segment size.
+MOE_PAGEZERO[sdk=iphoneos*] =
+MOE_PAGEZERO[sdk=iphonesimulator*] = -pagezero_size 4096
+MOE_PAGEZERO[sdk=appletvos*] =
+MOE_PAGEZERO[sdk=appletvsimulator*] = -pagezero_size 4096
+
+// Set frameworks paths.
+MOE_FRAMEWORK_PATH = ${INTEL_MULTI_OS_ENGINE_HOME}/sdk/${PLATFORM_NAME}
+
+MOE_CUSTOM_STATIC_FRAMEWORK_PATH = ../build/libs/static/${PLATFORM_NAME}
+MOE_CUSTOM_DYNAMIC_FRAMEWORK_PATH = ../build/libs/dynamic/${PLATFORM_NAME}
+
+// Collect all MOE linker flags.
+MOE_CUSTOM_OTHER_LDFLAGS = -framework Foundation -framework UIKit -L../build/libs/static -L../build/libs/static/${PLATFORM_NAME} -F../build/libs/static -F../build/libs/static/${PLATFORM_NAME} -F../build/libs/dynamic -F../build/libs/dynamic/${PLATFORM_NAME}
+
+MOE_OTHER_LDFLAGS = ${MOE_SECT_OAT} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lstdc++
+
+// Disable BitCode.
+ENABLE_BITCODE = NO
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests.xcodeproj/project.pbxproj b/tests/gdx-tests-ios-intel/xcode/IOSTests.xcodeproj/project.pbxproj
new file mode 100644
index 000000000..2ec3efa1b
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests.xcodeproj/project.pbxproj
@@ -0,0 +1,526 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 004C9DD25E4448BD8BF72472 /* classlist.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2EDE867029E44CA48C764FCD /* classlist.txt */; };
+ 03D156E71CDCB7FB00C81516 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156E61CDCB7FB00C81516 /* OpenAL.framework */; };
+ 03D156E91CDCB80100C81516 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156E81CDCB80100C81516 /* AudioToolbox.framework */; };
+ 03D156EB1CDCB80800C81516 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156EA1CDCB80800C81516 /* OpenGLES.framework */; };
+ 03D156ED1CDCB80F00C81516 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156EC1CDCB80F00C81516 /* UIKit.framework */; };
+ 03D156EF1CDCB81E00C81516 /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156EE1CDCB81E00C81516 /* GLKit.framework */; };
+ 03D156F11CDCB82700C81516 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156F01CDCB82700C81516 /* CoreGraphics.framework */; };
+ 03D156F31CDCB83200C81516 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156F21CDCB83200C81516 /* QuartzCore.framework */; };
+ 03D156F51CDCB83C00C81516 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156F41CDCB83C00C81516 /* AVFoundation.framework */; };
+ 03D156F71CDCB84300C81516 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156F61CDCB84300C81516 /* Foundation.framework */; };
+ 03D156FB1CDCC17400C81516 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D156FA1CDCC17400C81516 /* CoreMotion.framework */; };
+ 03F251061CDCC62F00D2E4A9 /* data in Resources */ = {isa = PBXBuildFile; fileRef = 03F251051CDCC62F00D2E4A9 /* data */; };
+ 09EF2437CE13CBC0AC8B098F /* application.jar in Resources */ = {isa = PBXBuildFile; fileRef = 70E9E15E3B30F2DB586F8930 /* application.jar */; };
+ 10415E3F2381C9368C48621C /* MOE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C6135C7F7ABF5AB44711F8E /* MOE.framework */; };
+ 25A1EA60CB4B6C698185E027 /* MainUI.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E9270ECBEEB32E0C1EF5AFB4 /* MainUI.storyboard */; };
+ 5D13884401CB34994695EB59 /* MOE.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4C6135C7F7ABF5AB44711F8E /* MOE.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 63076841CE05F8DD7D6A4A2F /* MOE.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4C6135C7F7ABF5AB44711F8E /* MOE.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+ 70CB7B589C98701E26F68B18 /* preregister.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2E0E162BCE1CE2BFAEA447F2 /* preregister.txt */; };
+ 7DE72839FDEB0AEF4656D0B8 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6735C2F38ABF03AD0F8529E9 /* main.cpp */; };
+ 9F1800CF6D8D73CB72AA4986 /* preregister.txt in Resources */ = {isa = PBXBuildFile; fileRef = B3544AF8E36DB4435FF7B7F1 /* preregister.txt */; };
+ C5885E323956FD3DCDB8B42F /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = E9184D1B8E32730E310DFD0E /* LaunchScreen.xib */; };
+ D17FA5C457CAF92D5D07FA2C /* intel_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = EC22DFDBDD00BFBF9BE2B880 /* intel_logo.png */; };
+ D245738463F0BB59B51CA839 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6735C2F38ABF03AD0F8529E9 /* main.cpp */; };
+ DA318EF136F046DE943303B8 /* MOE.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C6135C7F7ABF5AB44711F8E /* MOE.framework */; };
+ ED8388FE919BC120D93ECD49 /* application.jar in Resources */ = {isa = PBXBuildFile; fileRef = 9A44DE81A3D43975F6E1C4CF /* application.jar */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 6922EE9B341CD2975FBC466F /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 63076841CE05F8DD7D6A4A2F /* MOE.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 9BB7F93E4591114915A17E46 /* Embed Frameworks */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ 5D13884401CB34994695EB59 /* MOE.framework in Embed Frameworks */,
+ );
+ name = "Embed Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 03D156E61CDCB7FB00C81516 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+ 03D156E81CDCB80100C81516 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ 03D156EA1CDCB80800C81516 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ 03D156EC1CDCB80F00C81516 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ 03D156EE1CDCB81E00C81516 /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+ 03D156F01CDCB82700C81516 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ 03D156F21CDCB83200C81516 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ 03D156F41CDCB83C00C81516 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+ 03D156F61CDCB84300C81516 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ 03D156FA1CDCC17400C81516 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+ 03F251051CDCC62F00D2E4A9 /* data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = data; path = "../../../gdx-tests-android/assets/data"; sourceTree = "<group>"; };
+ 12AE76094C8116F34623F508 /* IOSTests-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "IOSTests-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2E0E162BCE1CE2BFAEA447F2 /* preregister.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = preregister.txt; path = ../build/moe/test/preregister.txt; sourceTree = SOURCE_ROOT; };
+ 2EDE867029E44CA48C764FCD /* classlist.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = classlist.txt; path = ../build/moe/test/classlist.txt; sourceTree = SOURCE_ROOT; };
+ 38AB674E8BE61F30992ABD1F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = IOSTests/Info.plist; sourceTree = "<group>"; };
+ 4C6135C7F7ABF5AB44711F8E /* MOE.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MOE.framework; sourceTree = MOE_FRAMEWORK_PATH; };
+ 6735C2F38ABF03AD0F8529E9 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
+ 68C12E02F70A282E6475F6D8 /* IOSTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IOSTests.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 70E9E15E3B30F2DB586F8930 /* application.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = application.jar; path = ../build/moe/test/application.jar; sourceTree = SOURCE_ROOT; };
+ 8CE42E603C578EADBEE7CAEB /* Info-Test.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-Test.plist"; path = "IOSTests-Test/Info-Test.plist"; sourceTree = "<group>"; };
+ 9A44DE81A3D43975F6E1C4CF /* application.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = application.jar; path = ../build/moe/main/application.jar; sourceTree = SOURCE_ROOT; };
+ B3544AF8E36DB4435FF7B7F1 /* preregister.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = preregister.txt; path = ../build/moe/main/preregister.txt; sourceTree = SOURCE_ROOT; };
+ E9184D1B8E32730E310DFD0E /* LaunchScreen.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = LaunchScreen.xib; path = ../src/main/resources/LaunchScreen.xib; sourceTree = SOURCE_ROOT; };
+ E9270ECBEEB32E0C1EF5AFB4 /* MainUI.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = MainUI.storyboard; path = ../src/main/resources/MainUI.storyboard; sourceTree = SOURCE_ROOT; };
+ EC22DFDBDD00BFBF9BE2B880 /* intel_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = intel_logo.png; path = ../src/main/resources/intel_logo.png; sourceTree = SOURCE_ROOT; };
+ F35F953030F91FB7C12697D8 /* build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = build.xcconfig; sourceTree = "<group>"; };
+ F417873B6D31BF2D9BB91E02 /* build.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = build.xcconfig; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 9E74A4F59C5D114D50498B39 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 10415E3F2381C9368C48621C /* MOE.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ EB6BCFD80C2FFDC53FE6567F /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 03D156FB1CDCC17400C81516 /* CoreMotion.framework in Frameworks */,
+ 03D156F71CDCB84300C81516 /* Foundation.framework in Frameworks */,
+ 03D156F51CDCB83C00C81516 /* AVFoundation.framework in Frameworks */,
+ 03D156F31CDCB83200C81516 /* QuartzCore.framework in Frameworks */,
+ 03D156F11CDCB82700C81516 /* CoreGraphics.framework in Frameworks */,
+ 03D156EF1CDCB81E00C81516 /* GLKit.framework in Frameworks */,
+ 03D156ED1CDCB80F00C81516 /* UIKit.framework in Frameworks */,
+ 03D156EB1CDCB80800C81516 /* OpenGLES.framework in Frameworks */,
+ 03D156E91CDCB80100C81516 /* AudioToolbox.framework in Frameworks */,
+ 03D156E71CDCB7FB00C81516 /* OpenAL.framework in Frameworks */,
+ DA318EF136F046DE943303B8 /* MOE.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 545DB1DBF6DB1134FFFAC093 = {
+ isa = PBXGroup;
+ children = (
+ 937623F47B1FDC4C9C9ED47B /* IOSTests */,
+ A1FCD26636C918E54785B7E7 /* IOSTests-Test */,
+ 881F609385F45CE22E679D9B /* Frameworks */,
+ C65647FC0A7A14CE570E6074 /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ 5D55093526DAFB2B82A2D03E /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ F417873B6D31BF2D9BB91E02 /* build.xcconfig */,
+ 8CE42E603C578EADBEE7CAEB /* Info-Test.plist */,
+ 2E0E162BCE1CE2BFAEA447F2 /* preregister.txt */,
+ 70E9E15E3B30F2DB586F8930 /* application.jar */,
+ 2EDE867029E44CA48C764FCD /* classlist.txt */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+ 881F609385F45CE22E679D9B /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 03D156FA1CDCC17400C81516 /* CoreMotion.framework */,
+ 03D156F61CDCB84300C81516 /* Foundation.framework */,
+ 03D156F41CDCB83C00C81516 /* AVFoundation.framework */,
+ 03D156F21CDCB83200C81516 /* QuartzCore.framework */,
+ 03D156F01CDCB82700C81516 /* CoreGraphics.framework */,
+ 03D156EE1CDCB81E00C81516 /* GLKit.framework */,
+ 03D156EC1CDCB80F00C81516 /* UIKit.framework */,
+ 03D156EA1CDCB80800C81516 /* OpenGLES.framework */,
+ 03D156E81CDCB80100C81516 /* AudioToolbox.framework */,
+ 03D156E61CDCB7FB00C81516 /* OpenAL.framework */,
+ 4C6135C7F7ABF5AB44711F8E /* MOE.framework */,
+ );
+ path = Frameworks;
+ sourceTree = "<group>";
+ };
+ 937623F47B1FDC4C9C9ED47B /* IOSTests */ = {
+ isa = PBXGroup;
+ children = (
+ E8FC58ED6CDF93B5DEFAD2AC /* Supporting Files */,
+ );
+ path = IOSTests;
+ sourceTree = "<group>";
+ };
+ A1FCD26636C918E54785B7E7 /* IOSTests-Test */ = {
+ isa = PBXGroup;
+ children = (
+ 5D55093526DAFB2B82A2D03E /* Supporting Files */,
+ );
+ path = "IOSTests-Test";
+ sourceTree = "<group>";
+ };
+ C65647FC0A7A14CE570E6074 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 68C12E02F70A282E6475F6D8 /* IOSTests.app */,
+ 12AE76094C8116F34623F508 /* IOSTests-Test.app */,
+ );
+ path = Products;
+ sourceTree = "<group>";
+ };
+ E8FC58ED6CDF93B5DEFAD2AC /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 03F251051CDCC62F00D2E4A9 /* data */,
+ 6735C2F38ABF03AD0F8529E9 /* main.cpp */,
+ F35F953030F91FB7C12697D8 /* build.xcconfig */,
+ 38AB674E8BE61F30992ABD1F /* Info.plist */,
+ B3544AF8E36DB4435FF7B7F1 /* preregister.txt */,
+ 9A44DE81A3D43975F6E1C4CF /* application.jar */,
+ E9184D1B8E32730E310DFD0E /* LaunchScreen.xib */,
+ EC22DFDBDD00BFBF9BE2B880 /* intel_logo.png */,
+ E9270ECBEEB32E0C1EF5AFB4 /* MainUI.storyboard */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 366DF33768F9BCA5DDDC2E60 /* IOSTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D7A10DEC285B470857872ED1 /* Build configuration list for PBXNativeTarget "IOSTests" */;
+ buildPhases = (
+ A7B123662907286EEBED29EB /* Compile Sources (MOE) */,
+ EB6BCFD80C2FFDC53FE6567F /* Frameworks */,
+ 3C106A0AFF7CE5DADDD1745B /* Resources */,
+ 6DB0BBEEB0E188045D7CCAB9 /* Sources */,
+ 6922EE9B341CD2975FBC466F /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ name = IOSTests;
+ productName = IOSTests;
+ productReference = 68C12E02F70A282E6475F6D8 /* IOSTests.app */;
+ productType = "com.apple.product-type.application";
+ };
+ 98AFD0FF1A32CDB32550DEA8 /* IOSTests-Test */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 9B43188D7CA9A2460EF31160 /* Build configuration list for PBXNativeTarget "IOSTests-Test" */;
+ buildPhases = (
+ 2844733277DF8DCE84937CFC /* Compile Sources (MOE) */,
+ 9E74A4F59C5D114D50498B39 /* Frameworks */,
+ 8543AB5976150AE2640757B8 /* Resources */,
+ E5627A23B1958845A8033C37 /* Sources */,
+ 9BB7F93E4591114915A17E46 /* Embed Frameworks */,
+ );
+ buildRules = (
+ );
+ name = "IOSTests-Test";
+ productName = "IOSTests-Test";
+ productReference = 12AE76094C8116F34623F508 /* IOSTests-Test.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 9BF4288442A1872E70F34A41 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ ORGANIZATIONNAME = "";
+ };
+ buildConfigurationList = 3842F3934E16178B349E1128 /* Build configuration list for PBXProject "IOSTests" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 545DB1DBF6DB1134FFFAC093;
+ productRefGroup = C65647FC0A7A14CE570E6074 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 366DF33768F9BCA5DDDC2E60 /* IOSTests */,
+ 98AFD0FF1A32CDB32550DEA8 /* IOSTests-Test */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 3C106A0AFF7CE5DADDD1745B /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 9F1800CF6D8D73CB72AA4986 /* preregister.txt in Resources */,
+ ED8388FE919BC120D93ECD49 /* application.jar in Resources */,
+ C5885E323956FD3DCDB8B42F /* LaunchScreen.xib in Resources */,
+ D17FA5C457CAF92D5D07FA2C /* intel_logo.png in Resources */,
+ 03F251061CDCC62F00D2E4A9 /* data in Resources */,
+ 25A1EA60CB4B6C698185E027 /* MainUI.storyboard in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 8543AB5976150AE2640757B8 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 70CB7B589C98701E26F68B18 /* preregister.txt in Resources */,
+ 09EF2437CE13CBC0AC8B098F /* application.jar in Resources */,
+ 004C9DD25E4448BD8BF72472 /* classlist.txt in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 2844733277DF8DCE84937CFC /* Compile Sources (MOE) */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Compile Sources (MOE)";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/bash;
+ shellScript = "cd \"${SRCROOT}/..\"\n\nexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)\njava -version\n\n########################\n# Find Gradle\n########################\nfunction findGradle {\n\tCD=\"$PWD\"\n\twhile [ \"$CD\" != \"\" ]; do\n\t\techo \"Looking for gradlew in $CD\"\n\t\tif [ -x \"$CD/gradlew\" ]; then\n\t\t\tGRADLE_EXEC=$CD/gradlew\n\t\t\treturn 0\n\t\tfi\n\t\tCD=\"${CD%/*}\"\n\tdone\n\n\tDEFAULT_PATH=$(echo $PATH)\n\tsource ~/.bash_profile\n\texport PATH=$PATH:DEFAULT_PATH\n\n\techo \"Checking with 'which'\"\n\tGRADLE_EXEC=$(which 'gradle')\n\n\tif [ \"$GRADLE_EXEC\" = \"\" ]; then\n\t\techo \"Falling back to '/usr/local/bin/gradle'\"\n\t\tGRADLE_EXEC=/usr/local/bin/gradle\n\tfi\n}\n########################\n# Execute Gradle build\n########################\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n\n export MOE_BUILD_SOURCE_SET=test\n \"$GRADLE_EXEC\" --daemon moeXcodeInternal\nfi\n";
+ };
+ A7B123662907286EEBED29EB /* Compile Sources (MOE) */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Compile Sources (MOE)";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/bash;
+ shellScript = "cd \"${SRCROOT}/..\"\n\nexport JAVA_HOME=$(/usr/libexec/java_home -v 1.8)\njava -version\n\n########################\n# Find Gradle\n########################\nfunction findGradle {\n\tCD=\"$PWD\"\n\twhile [ \"$CD\" != \"\" ]; do\n\t\techo \"Looking for gradlew in $CD\"\n\t\tif [ -x \"$CD/gradlew\" ]; then\n\t\t\tGRADLE_EXEC=$CD/gradlew\n\t\t\treturn 0\n\t\tfi\n\t\tCD=\"${CD%/*}\"\n\tdone\n\n\tDEFAULT_PATH=$(echo $PATH)\n\tsource ~/.bash_profile\n\texport PATH=$PATH:DEFAULT_PATH\n\n\techo \"Checking with 'which'\"\n\tGRADLE_EXEC=$(which 'gradle')\n\n\tif [ \"$GRADLE_EXEC\" = \"\" ]; then\n\t\techo \"Falling back to '/usr/local/bin/gradle'\"\n\t\tGRADLE_EXEC=/usr/local/bin/gradle\n\tfi\n}\n########################\n# Execute Gradle build\n########################\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n\n \"$GRADLE_EXEC\" --daemon moeXcodeInternal\nfi\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 6DB0BBEEB0E188045D7CCAB9 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D245738463F0BB59B51CA839 /* main.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ E5627A23B1958845A8033C37 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7DE72839FDEB0AEF4656D0B8 /* main.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 5828ECAB774FB7A17883548B /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "${MOE_FRAMEWORK_PATH}",
+ );
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = NO;
+ SDKROOT = iphoneos;
+ SYMROOT = ../build/xcode;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ 639293912FBEDFF91B028D01 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F417873B6D31BF2D9BB91E02 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "Info-Test.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "IOSTests-Test";
+ STRIP_STYLE = "non-global";
+ };
+ name = Release;
+ };
+ 66822642BD742E98F9DAFFD9 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F35F953030F91FB7C12697D8 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = IOSTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = IOSTests;
+ STRIP_STYLE = "non-global";
+ };
+ name = Release;
+ };
+ B7F2796137B9A1C32DD3868E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F417873B6D31BF2D9BB91E02 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = "Info-Test.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = "IOSTests-Test";
+ STRIP_STYLE = "non-global";
+ };
+ name = Debug;
+ };
+ BD1F6DF1566E9124B543ED63 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = F35F953030F91FB7C12697D8 /* build.xcconfig */;
+ buildSettings = {
+ DEAD_CODE_STRIPPING = NO;
+ EMBEDDED_CONTENT_CONTAINS_SWIFT = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(inherited)";
+ INFOPLIST_FILE = IOSTests/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ OTHER_LDFLAGS = "${MOE_OTHER_LDFLAGS}";
+ PRODUCT_NAME = IOSTests;
+ STRIP_STYLE = "non-global";
+ };
+ name = Debug;
+ };
+ FE50130AB1D4A86CD9C0C27B /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ FRAMEWORK_SEARCH_PATHS = (
+ "$(inherited)",
+ "${MOE_FRAMEWORK_PATH}",
+ );
+ 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_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MTL_ENABLE_DEBUG_INFO = YES;
+ SDKROOT = iphoneos;
+ SYMROOT = ../build/xcode;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 3842F3934E16178B349E1128 /* Build configuration list for PBXProject "IOSTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ FE50130AB1D4A86CD9C0C27B /* Debug */,
+ 5828ECAB774FB7A17883548B /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 9B43188D7CA9A2460EF31160 /* Build configuration list for PBXNativeTarget "IOSTests-Test" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ B7F2796137B9A1C32DD3868E /* Debug */,
+ 639293912FBEDFF91B028D01 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ D7A10DEC285B470857872ED1 /* Build configuration list for PBXNativeTarget "IOSTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ BD1F6DF1566E9124B543ED63 /* Debug */,
+ 66822642BD742E98F9DAFFD9 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 9BF4288442A1872E70F34A41 /* Project object */;
+}
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests/Info.plist b/tests/gdx-tests-ios-intel/xcode/IOSTests/Info.plist
new file mode 100644
index 000000000..54133d667
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests/Info.plist
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleExecutable</key>
+ <string>$(EXECUTABLE_NAME)</string>
+ <key>CFBundleIdentifier</key>
+ <string>IOSTests</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>$(PRODUCT_NAME)</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string></string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string></string>
+ <key>Intel.MOE.Main.Class</key>
+ <string>com.badlogicgames.gdx.tests.IOSTests</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIApplicationExitsOnSuspend</key>
+ <false/>
+ <key>UILaunchStoryboardName</key>
+ <string>LaunchScreen</string>
+ <key>UIMainStoryboardFile</key>
+ <string>MainUI</string>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UIRequiresFullScreen</key>
+ <true/>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationPortrait</string>
+ <string>UIInterfaceOrientationPortraitUpsideDown</string>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests/build.xcconfig b/tests/gdx-tests-ios-intel/xcode/IOSTests/build.xcconfig
new file mode 100644
index 000000000..d5f569dc5
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests/build.xcconfig
@@ -0,0 +1,32 @@
+#include "custom.xcconfig"
+
+// Create sections from the art and oat files.
+MOE_SECT_OAT = -sectcreate __OATDATA __oatdata "${SRCROOT}/../build/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat"
+MOE_SECT_ART = -sectcreate __ARTDATA __artdata "${SRCROOT}/../build/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art"
+
+// Set the maximum and initial virtual memory protection for the segments.
+
+MOE_SEGPROT[sdk=iphoneos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=iphonesimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+MOE_SEGPROT[sdk=appletvos*] = -segprot __OATDATA rx rx -segprot __ARTDATA rw rw
+MOE_SEGPROT[sdk=appletvsimulator*] = -segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw
+
+// Set the __PAGEZERO segment size.
+MOE_PAGEZERO[sdk=iphoneos*] =
+MOE_PAGEZERO[sdk=iphonesimulator*] = -pagezero_size 4096
+MOE_PAGEZERO[sdk=appletvos*] =
+MOE_PAGEZERO[sdk=appletvsimulator*] = -pagezero_size 4096
+
+// Set frameworks paths.
+MOE_FRAMEWORK_PATH = ${INTEL_MULTI_OS_ENGINE_HOME}/sdk/${PLATFORM_NAME}
+
+MOE_CUSTOM_STATIC_FRAMEWORK_PATH = ../build/libs/static/${PLATFORM_NAME}
+MOE_CUSTOM_DYNAMIC_FRAMEWORK_PATH = ../build/libs/dynamic/${PLATFORM_NAME}
+
+// Collect all MOE linker flags.
+MOE_CUSTOM_OTHER_LDFLAGS = ${LIBGDX_NATIVES} -framework Foundation -framework UIKit -L../build/libs/static -L../build/libs/static/${PLATFORM_NAME} -F../build/libs/static -F../build/libs/static/${PLATFORM_NAME} -F../build/libs/dynamic -F../build/libs/dynamic/${PLATFORM_NAME}
+
+MOE_OTHER_LDFLAGS = ${MOE_SECT_OAT} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lstdc++
+
+// Disable BitCode.
+ENABLE_BITCODE = NO
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests/custom.xcconfig b/tests/gdx-tests-ios-intel/xcode/IOSTests/custom.xcconfig
new file mode 100644
index 000000000..e25e18aa7
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests/custom.xcconfig
@@ -0,0 +1 @@
+LIBGDX_NATIVES = -force_load ${SRCROOT}/native/ios/libObjectAL.a -force_load ${SRCROOT}/native/ios/libgdx.a -force_load ${SRCROOT}/native/ios/libgdx-box2d.a -force_load ${SRCROOT}/native/ios/libgdx-bullet.a -force_load ${SRCROOT}/native/ios/libgdx-freetype.a \ No newline at end of file
diff --git a/tests/gdx-tests-ios-intel/xcode/IOSTests/main.cpp b/tests/gdx-tests-ios-intel/xcode/IOSTests/main.cpp
new file mode 100644
index 000000000..763c55044
--- /dev/null
+++ b/tests/gdx-tests-ios-intel/xcode/IOSTests/main.cpp
@@ -0,0 +1,35 @@
+// Copyright (c) 2015, Intel Corporation
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// 1. Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include <MOE/MOE.h>
+
+
+int main(int argc, char *argv[]) {
+ return moevm(argc, argv);
+}
diff --git a/tests/gdx-tests-iosrobovm/src/com/badlogic/gdx/tests/IOSRobovmTests.java b/tests/gdx-tests-iosrobovm/src/com/badlogic/gdx/tests/IOSRobovmTests.java
index 295bc3ffc..7e5bafcc9 100644
--- a/tests/gdx-tests-iosrobovm/src/com/badlogic/gdx/tests/IOSRobovmTests.java
+++ b/tests/gdx-tests-iosrobovm/src/com/badlogic/gdx/tests/IOSRobovmTests.java
@@ -19,8 +19,8 @@ package com.badlogic.gdx.tests;
import org.robovm.apple.foundation.NSAutoreleasePool;
import org.robovm.apple.uikit.UIApplication;
-import com.badlogic.gdx.backends.iosrobovm.IOSApplication;
-import com.badlogic.gdx.backends.iosrobovm.IOSApplicationConfiguration;
+import com.badlogic.gdx.backends.iosmoe.IOSApplication;
+import com.badlogic.gdx.backends.iosmoe.IOSApplicationConfiguration;
public class IOSRobovmTests extends IOSApplication.Delegate {
@@ -29,7 +29,7 @@ public class IOSRobovmTests extends IOSApplication.Delegate {
IOSApplicationConfiguration config = new IOSApplicationConfiguration();
config.useAccelerometer = false;
config.useGL30 = true;
- return new IOSApplication(new GLES30Test(), config);
+ return new IOSApplication(new BulletTestCollection(), config);
}
public static void main(String[] argv) {
diff --git a/tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java b/tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java
index 8b63794b9..b111269cd 100644
--- a/tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java
+++ b/tests/gdx-tests-lwjgl/src/com/badlogic/gdx/tests/lwjgl/LwjglDebugStarter.java
@@ -18,13 +18,7 @@ package com.badlogic.gdx.tests.lwjgl;
import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
-import com.badlogic.gdx.tests.CursorTest;
-import com.badlogic.gdx.tests.DpiTest;
-import com.badlogic.gdx.tests.FullscreenTest;
-import com.badlogic.gdx.tests.InputTest;
-import com.badlogic.gdx.tests.LifeCycleTest;
-import com.badlogic.gdx.tests.MusicTest;
-import com.badlogic.gdx.tests.UITest;
+import com.badlogic.gdx.tests.*;
import com.badlogic.gdx.tests.extensions.ControllersTest;
import com.badlogic.gdx.tests.extensions.FreeTypeMetricsTest;
import com.badlogic.gdx.tests.superkoalio.SuperKoalio;
@@ -39,7 +33,7 @@ public class LwjglDebugStarter {
// new SharedLibraryLoader("../../extensions/gdx-controllers/gdx-controllers-desktop/libs/gdx-controllers-desktop-natives.jar").load("gdx-controllers-desktop");
// new SharedLibraryLoader("../../gdx/libs/gdx-natives.jar").load("gdx");
- GdxTest test = new ControllersTest();
+ GdxTest test = new SpriteBatchTest();
LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.r = config.g = config.b = config.a = 8;
// config.width = 320;