From 73669366368e928d0695d8f10a052fe1462848d6 Mon Sep 17 00:00:00 2001 From: Jesus Oliver Date: Mon, 28 Apr 2025 01:07:17 +0200 Subject: [PATCH 1/2] Added template resources for iOS (MultiOsEngine) --- libraries.json | 10 +- .../build.gradle.jmetemplate | 10 +- .../[IF=MULTIPLATFORM]/gradle.properties | 4 +- .../ios-moe[IF=JME_IOSMOE]/build.gradle | 69 ++ .../proguard.append.cfg | 64 ++ .../java/[GAME_PACKAGE]/ios/DummyMain.java | 78 +++ .../ios/MoeIosJmeAppHarness.java | 319 +++++++++ .../xcode/ios-moe-Test/Info.plist | 44 ++ .../xcode/ios-moe-Test/main.cpp | 5 + .../xcode/ios-moe.xcodeproj/project.pbxproj | 612 +++++++++++++++++ ...ject.pbxproj.jbullet_enabled.Check_and_fix | 618 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 25560 bytes .../xcschemes/xcschememanagement.plist | 19 + .../xcode/ios-moe/EmptyStoryboard.storyboard | 7 + .../xcode/ios-moe/Info.plist | 47 ++ .../xcode/ios-moe/custom.xcconfig | 0 .../xcode/ios-moe/main.cpp | 34 + .../settings.gradle.jmetemplate | 9 +- .../build.gradle | 22 + .../gradle.properties | 3 + .../ios-moe/build.gradle | 68 ++ .../ios-moe/proguard.append.cfg | 64 ++ .../java/[GAME_PACKAGE]/game/[GAME_NAME].java | 33 + .../java/[GAME_PACKAGE]/ios/DummyMain.java | 78 +++ .../ios/MoeIosJmeAppHarness.java | 319 +++++++++ .../ios-moe/xcode/ios-moe-Test/Info.plist | 44 ++ .../ios-moe/xcode/ios-moe-Test/main.cpp | 5 + .../xcode/ios-moe.xcodeproj/project.pbxproj | 612 +++++++++++++++++ ...ject.pbxproj.jbullet_enabled.Check_and_fix | 618 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 25560 bytes .../xcschemes/xcschememanagement.plist | 19 + .../xcode/ios-moe/EmptyStoryboard.storyboard | 7 + .../ios-moe/xcode/ios-moe/Info.plist | 47 ++ .../ios-moe/xcode/ios-moe/custom.xcconfig | 0 .../ios-moe/xcode/ios-moe/main.cpp | 34 + .../settings.gradle | 3 + 40 files changed, 3944 insertions(+), 11 deletions(-) create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/build.gradle create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/proguard.append.cfg create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/Info.plist create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/main.cpp create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/xcuserdata/v1r7ua1.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/EmptyStoryboard.storyboard create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/Info.plist create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/custom.xcconfig create mode 100644 src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/main.cpp create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/gradle.properties create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/build.gradle create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/proguard.append.cfg create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/game/[GAME_NAME].java create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/Info.plist create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/main.cpp create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/xcuserdata/v1r7ua1.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/EmptyStoryboard.storyboard create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/Info.plist create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/custom.xcconfig create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/main.cpp create mode 100644 src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/settings.gradle diff --git a/libraries.json b/libraries.json index 708e16c..8f26659 100644 --- a/libraries.json +++ b/libraries.json @@ -23,6 +23,14 @@ "usesJmeVersion" : true, "artifacts" : [ { "groupId" : "org.jmonkeyengine", "artifactId" : "jme3-android" } ] }, + { + "key": "JME_IOSMOE", + "displayName": "JME iOS using Multi-OS-Engine", + "category" : "JME_PLATFORM", + "descriptionText" : "iOS Multi-OS-Engine Game development", + "usesJmeVersion" : true, + "artifacts" : [ { "groupId" : "org.jmonkeyengine", "artifactId" : "jme3-ios" } ] + }, { "key": "JME_EFFECTS", "displayName": "JME Effects", @@ -111,4 +119,4 @@ "artifacts" : [ { "groupId" : "com.onemillionworlds", "artifactId" : "tamarin" } ], "requiredPlatforms": ["JME_VR"] } -] \ No newline at end of file +] diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate index ed57d4e..968954e 100644 --- a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate @@ -12,6 +12,14 @@ buildscript { } +allprojects { + repositories { + google() + mavenCentral() + jcenter() // Warning: this repository is going to shut down soon + } +} + task clean(type: Delete) { delete rootProject.buildDir } @@ -25,4 +33,4 @@ task buildAllDistributions { println(" #### Check the individual modules build/distributions folders for distributable zips etc #### ") } } -[/IF=WINDOWS|LINUX|MACOS] \ No newline at end of file +[/IF=WINDOWS|LINUX|MACOS] diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/gradle.properties b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/gradle.properties index 52f5917..bdb289d 100644 --- a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/gradle.properties +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/gradle.properties @@ -16,4 +16,6 @@ org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true +# MOE release +multiOsEngineVersion=1.10.1 diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/build.gradle b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/build.gradle new file mode 100644 index 0000000..229fa8d --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/build.gradle @@ -0,0 +1,69 @@ +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath "org.multi-os-engine:moe-gradle:$multiOsEngineVersion" + } +} + +apply plugin: 'moe' + +// Exclude all files from Gradle's test runner +test { exclude '**' } + +// Copy all xcframeworks to xcode/native/ios +// They need to be picked up from there for linking in XCode +task copyNatives { + doLast { + file("xcode/native/ios/").mkdirs(); + def subDir = "META-INF/robovm/ios/libs/" + configurations.natives.files.each { jar -> + copy { + from zipTree(jar) + include "$subDir/*.xcframework/**" + into("xcode/native/ios/") + eachFile { file -> + file.path = file.path.replaceFirst("^$subDir", '') + } + includeEmptyDirs(false) + } + } + + def LD_FLAGS = "" + def outFlags = file("xcode/ios-moe/custom.xcconfig"); + outFlags.write LD_FLAGS + + def proguard = file("proguard.append.cfg") + } +} + +configurations { natives } + +ext.jmonkeyengineVersion = '[JME_VERSION]' + +dependencies { + implementation project(':game') + + implementation "org.jmonkeyengine:jme3-ios:" + jmonkeyengineVersion + natives "org.jmonkeyengine:jme3-ios-native:" + jmonkeyengineVersion +} + +// Setup Multi-OS Engine +moe { + xcode { + project 'xcode/ios-moe.xcodeproj' + mainTarget 'ios-moe' + testTarget 'ios-moe-Test' + } +} + +moeMainReleaseIphoneosXcodeBuild.dependsOn copyNatives +moeMainDebugIphoneosXcodeBuild.dependsOn copyNatives +moeMainReleaseIphonesimulatorXcodeBuild.dependsOn copyNatives +moeMainDebugIphonesimulatorXcodeBuild.dependsOn copyNatives + +if (System.getenv('PLATFORM_NAME') != null) { + moeXcodeInternal.dependsOn copyNatives +} + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/proguard.append.cfg b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/proguard.append.cfg new file mode 100644 index 0000000..3c3fbfc --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/proguard.append.cfg @@ -0,0 +1,64 @@ +#-dontshrink +#-dontoptimize +#-dontusemixedcaseclassnames +#-dontskipnonpubliclibraryclasses +#-dontskipnonpubliclibraryclassmembers +#-dontpreverify +# Issue : (Index 39424 out of bounds for length 635) +#-keep class com.** { *; } +#-keep enum com.** { *; } + +# All jme3 +-keep class com.jme3.** {*;} +-keep enum com.jme3.** {*;} +-keep class de.lessvoid.nifty.** {*;} +-keep enum de.lessvoid.nifty.** {*;} + +# Previous jme3 related classes +-keep public class com.jme3.system.ios.*{public *;} +-keep public class * extends com.jme3.system.ios.IosHarness{public *;} +-keep public class * extends com.jme3.app.Application{public *;} +-keep public class * extends com.jme3.system.JmeSystemDelegate{public *;} +-keep public class * extends com.jme3.scene.control.*{public *;} +-keep public class * extends com.jme3.scene.Node{public *;} +-keep public class * implements com.jme3.renderer.Renderer{public *;} +-keep public class * implements com.jme3.asset.AssetLoader{public *;} +-keep public class * implements com.jme3.asset.AssetLocator{public *;} +-keep public class * implements de.lessvoid.nifty.screen.ScreenController{public *;} +-keep public class de.lessvoid.nifty.loaderv2.types.** { public *;} +-keep public class de.lessvoid.nifty.controls.** { public *; } +-keep public class de.lessvoid.nifty.input.** { public *; } +-keep public class de.lessvoid.nifty.effects.impl.** { public *;} +-keepclassmembers class com.jme3.audio.plugins.NativeVorbisFile{public *;} +-keep public class * implements javax.xml.parsers.SAXParserFactory{public *;} +-keep public class com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl +-keep public class com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl +-keep public class sun.nio.fs.MacOSXFileSystemProvider +-keep public class * extends java.nio.charset.Charset { *; } +-keep public class java.util.zip.Deflater { *; } +-keep public class java.io.FileNotFoundException { *; } +-keep public class java.lang.reflect.Proxy { *; } +-keep public class java.lang.reflect.InvocationHandler { *; } +-keep public class java.util.logging.ConsoleHandler +-keep public class java.util.logging.FileHandler +-keep public class java.util.logging.SimpleFormatter +-keep public class java.util.logging.LogManager { *; } +-keep public class org.xmlpull.mxp1.MXParserFactory { *; } +-keep public class mf.org.** { *; } + +# Base java +-keep class java.lang.** {*;} +-keep class java.net.** {*;} +-keep class java.nio.Bits {*;} + +# Minie +-keep class vhacd4.** {*;} +-keep class vhacd.** {*;} +-keep class jme3utilities.** {*;} + +# Keep all native methods, their classes and any classes in their descriptors +-keepclasseswithmembers,includedescriptorclasses class ** { + native ; + long nativeHandle; +} + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java new file mode 100644 index 0000000..06cc8c2 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java @@ -0,0 +1,78 @@ +package [GAME_PACKAGE]; + +import org.moe.natj.general.Pointer; +import org.moe.natj.general.ann.RegisterOnStartup; +import org.moe.natj.objc.ann.Selector; + +import apple.NSObject; +import apple.foundation.NSDictionary; +import apple.corefoundation.struct.CGRect; +import apple.uikit.UIApplication; +import apple.uikit.UIColor; +import apple.uikit.UIImage; +import apple.uikit.UINavigationController; +import apple.uikit.UIScreen; +import apple.uikit.UIViewController; +import apple.uikit.UIWindow; +import apple.uikit.c.UIKit; +import apple.uikit.enums.UIBarStyle; +import apple.uikit.protocol.UIApplicationDelegate; + +@RegisterOnStartup +public class DummyMain extends NSObject implements UIApplicationDelegate +{ + public static void main(String[] args) { + UIKit.UIApplicationMain(0, null, null, DummyMain.class.getName()); + } + + @Selector("alloc") + public static native DummyMain alloc(); + + protected DummyMain(Pointer peer) { + super(peer); + } + + private UIWindow window; + + @Override + public boolean applicationDidFinishLaunchingWithOptions(UIApplication application, NSDictionary launchOptions) { + UIScreen screen = UIScreen.mainScreen(); + CGRect bounds = screen.bounds(); + window = UIWindow.alloc().initWithFrame(bounds); + + UIViewController vc = MoeIosJmeAppHarness.alloc().init(); + + // Initialization with navigation bar + /* + UINavigationController navigationController = UINavigationController.alloc().init(); + UIColor moeBlue = UIColor.alloc().initWithRedGreenBlueAlpha(0.0, 113/255.f, 197/255.f, 1.0); + navigationController.initWithRootViewController(vc); + window.setRootViewController(navigationController); + + navigationController.navigationBar().setBarStyle(UIBarStyle.Black); + navigationController.navigationBar().setBarTintColor(moeBlue); + navigationController.navigationBar().setShadowImage(UIImage.alloc().init()); + navigationController.navigationBar().setTranslucent(false); + navigationController.navigationBar().setTintColor(UIColor.whiteColor()); + */ + + // New initialization, only glwindow + window.setRootViewController(vc); + + window.makeKeyAndVisible(); + + System.out.println("DummyMain applicationDidFinishLaunchingWithOptions"); + + return true; + } + + @Override + public void setWindow(UIWindow value) { + window = value; + } + + @Override + public UIWindow window() { + return window; + } +} diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java new file mode 100644 index 0000000..af64a27 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java @@ -0,0 +1,319 @@ +package [GAME_PACKAGE]; + +import org.moe.natj.general.Pointer; +import org.moe.natj.general.ann.ByValue; +import org.moe.natj.general.ann.Mapped; +import org.moe.natj.general.ann.Owned; +import org.moe.natj.objc.SEL; +import org.moe.natj.objc.ann.Selector; +import org.moe.natj.objc.map.ObjCObjectMapper; + +import apple.corefoundation.struct.CGPoint; +import apple.corefoundation.struct.CGRect; +import apple.corefoundation.struct.CGSize; +import apple.foundation.NSEnumerator; +import apple.foundation.NSNotification; +import apple.foundation.NSNotificationCenter; +import apple.foundation.NSSet; +import apple.glkit.GLKView; +import apple.glkit.GLKViewController; +import apple.glkit.enums.GLKViewDrawableDepthFormat; +import apple.glkit.protocol.GLKViewDelegate; +import apple.opengles.EAGLContext; +import apple.opengles.enums.EAGLRenderingAPI; +import apple.uikit.UIEvent; +import apple.uikit.UIScreen; +import apple.uikit.UITouch; +import apple.uikit.enums.UIRectEdge; +import apple.uikit.protocol.UIViewControllerTransitionCoordinator; + +import com.jme3.app.LegacyApplication; +import com.jme3.system.JmeSystem; +import com.jme3.system.ios.JmeIosSystem; +import com.jme3.input.ios.IosInputHandler; +import com.jme3.math.Vector2f; +import com.jme3.renderer.opengl.GLRenderer; +import com.jme3.system.JmeContext; +import com.jme3.system.AppSettings; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class MoeIosJmeAppHarness extends GLKViewController implements GLKViewDelegate +{ + // Content from previous JmeAppHarness+IosHarness + protected LegacyApplication app; + private static final Logger logger = Logger.getLogger(MoeIosJmeAppHarness.class.getName()); + protected GLRenderer renderer; + protected IosInputHandler input; + protected boolean autoFlush = true; + protected Vector2f resizePending = null; + + // Content from moe-samples (OpenGLBox) + static final int GLKViewDrawableMultisample4X = 1; + + private EAGLContext context; + + private float rotation; + + private GLKView glkView; + + // Allocator, init and constructor (based on moe stuff) + //@Selector("alloc") + public static native MoeIosJmeAppHarness alloc(); + + @Override + @Owned + @Selector("init") + public MoeIosJmeAppHarness init() + { + MoeIosJmeAppHarness self = (MoeIosJmeAppHarness) super.init(); + if(self!=null) + { + final NSNotificationCenter notificationCenter = NSNotificationCenter.defaultCenter(); + notificationCenter.addObserverSelectorNameObject(self, new SEL("didRotate"), "UIDeviceOrientationDidChangeNotification", null); + } + return self; + } + + public MoeIosJmeAppHarness(Pointer peer) + { + super(peer); + } + + // Methods from previous JmeAppHarness+IosHarness + public void appPaused() { + logger.log(Level.FINE, "JmeAppHarness appPaused"); + } + + public void appReactivated() { + logger.log(Level.FINE, "JmeAppHarness appReactivated"); + } + + public void appClosed() { + logger.log(Level.FINE, "JmeAppHarness appClosed"); + app.stop(); + } + + public void appUpdate() { + logger.log(Level.FINE, "JmeAppHarness appUpdate"); + //app.update(); + } + + public void appDraw() { + logger.log(Level.FINE, "JmeAppHarness appDraw"); + if (renderer == null) { + JmeContext iosContext = app.getContext(); + renderer = (GLRenderer)iosContext.getRenderer(); + renderer.initialize(); + input = (IosInputHandler)iosContext.getTouchInput(); + input.initialize(); + } else { + if(resizePending != null) { + appReshape((int)resizePending.x, (int)resizePending.y); + resizePending = null; + } + app.update(); + if (autoFlush) { + renderer.postFrame(); + } + } + } + + public void appReshape(int width, int height) { + logger.log(Level.FINE, "JmeAppHarness reshape"); + AppSettings settings = app.getContext().getSettings(); + settings.setResolution(width, height); + if (renderer != null) { + app.reshape(width, height); + resizePending = null; + } else { + resizePending = new Vector2f(width, height); + } + + if (input != null) { + input.loadSettings(settings); + } + } + + public void injectTouchBegin(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchBegin"); + input.injectTouchDown(pointerId, time, x, y); + } + } + + public void injectTouchMove(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchMove"); + input.injectTouchMove(pointerId, time, x, y); + } + } + + public void injectTouchEnd(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchEnd"); + input.injectTouchUp(pointerId, time, x, y); + } + } + + // Methods from moe-samples (OpenGLBox) + @Override + public void viewDidLoad() { + super.viewDidLoad(); + + //setTitle("Jme3 for iOS using MOE"); + + setEdgesForExtendedLayout(UIRectEdge.None); + + context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES3); + if (context == null) { + context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES2); + if (context == null) { + System.out.println("Failed to create ES context"); + System.exit(-1); + } + } + glkView = (GLKView) view(); + glkView.setContext(context); + glkView.setDrawableMultisample(GLKViewDrawableMultisample4X); + glkView.setDrawableDepthFormat(GLKViewDrawableDepthFormat.Format24); + + setPreferredFramesPerSecond(60); // TODO: set desired FPS + setPaused(false); + + setupGL(); + + // Initialization from previous JmeAppHarness+IosHarness + JmeSystem.setSystemDelegate(new JmeIosSystem()); + app = new [GAME_PACKAGE].game.[GAME_NAME](); + AppSettings settings = new AppSettings(true); + this.app.setSettings(settings); + app.start(); + app.gainFocus(); + + //Force a didRotate (jme3 reshape) event after having initialized everything so it renders properly from the beginning + didRotate(null); + } + + @Override + public void viewWillTransitionToSizeWithTransitionCoordinator(@ByValue CGSize size, @Mapped(ObjCObjectMapper.class) UIViewControllerTransitionCoordinator coordinator) { + if (isPaused()) + glkView.setNeedsDisplay(); + } + + @Override + public void viewDidDisappear(boolean animated) { + super.viewDidDisappear(animated); + tearDownGL(); + if (EAGLContext.currentContext() != null && EAGLContext.currentContext().equals(context)) { + EAGLContext.setCurrentContext(null); + } + context = null; + } + + @Override + public void didReceiveMemoryWarning() { + super.didReceiveMemoryWarning(); + if (isViewLoaded() && (view().window() == null)) { + setView(null); + tearDownGL(); + if (EAGLContext.currentContext().equals(context)) { + EAGLContext.setCurrentContext(null); + } + context = null; + } + // Dispose of any resources that can be recreated. + } + + private void setupGL() { + EAGLContext.setCurrentContext(context); + // Nothing to do here, there's no gl stuff created in this class + } + + private void tearDownGL() { + EAGLContext.setCurrentContext(context); + // Nothing to do here, there's no gl stuff created in this class + } + + @Override + public void glkViewDrawInRect(GLKView view, CGRect rect) { + appDraw(); + } + + @Selector("update") + public void update() { + appUpdate(); + appUpdate(); + } + + @Override + public void touchesBeganWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchBegin(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + @Override + public void touchesCancelledWithEvent(NSSet touches, UIEvent event) + { + // Not implemented in jME3 + } + + @Override + public void touchesEndedWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchEnd(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + @Override + public void touchesMovedWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchMove(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + // java code equivalent to old jmeAppDelegate.m + @Selector("didRotate") + public void didRotate(NSNotification notification) + { + UIScreen screen = UIScreen.mainScreen(); + CGRect originalFrame = screen.bounds(); + if(glkView!=null) + { + CGRect frame = glkView.convertRectToView(originalFrame, null); + float scale = (float) glkView.contentScaleFactor(); + appReshape((int) (frame.size().width() * scale), (int) (frame.size().height() * scale)); + } + } +} diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/Info.plist b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/Info.plist new file mode 100644 index 0000000..dad821c --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + MOE.Main.Class + org.moe.mdt.junit.MoeRemoteTestRunner + UIRequiredDeviceCapabilities + + opengles-2 + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/main.cpp b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/main.cpp new file mode 100644 index 0000000..fef543a --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe-Test/main.cpp @@ -0,0 +1,5 @@ +#include + +int main(int argc, char *argv[]) { + return moevm(argc, argv); +} diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0d29074 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj @@ -0,0 +1,612 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E152A74253836079FA1075F /* main.cpp */; }; + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8084D1F0A307440EC73CBFCA /* main.cpp */; }; + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */ = {isa = PBXBuildFile; fileRef = AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */; }; + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */; }; + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A01E37A2DB004E28A9 /* AVFoundation.framework */; }; + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */; }; + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A21E37A2DB004E28A9 /* CoreMotion.framework */; }; + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A31E37A2DB004E28A9 /* OpenAL.framework */; }; + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A41E37A2DB004E28A9 /* OpenGLES.framework */; }; + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A51E37A2DB004E28A9 /* QuartzCore.framework */; }; + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773AD1E37A7EF004E28A9 /* UIKit.framework */; }; + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */; }; + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; }; + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1E152A74253836079FA1075F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 5817739D1E37A10D004E28A9 /* custom.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = custom.xcconfig; sourceTree = ""; }; + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 581773A31E37A2DB004E28A9 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 581773AD1E37A7EF004E28A9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5863B88E1DA682C800E46B6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = [GAME_NAME].app; sourceTree = BUILT_PRODUCTS_DIR; }; + 58C6F5381DA66CB600309CB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8084D1F0A307440EC73CBFCA /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "moe-main-interfaces.m"; path = "../build/moe/main/ui-headers/moe-main-interfaces.m"; sourceTree = ""; }; + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = EmptyStoryboard.storyboard; sourceTree = ""; }; + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "jme3-ios-native-lib.xcframework"; path = "../../../jme3-ios-native-lib/release/jme3-ios-native-lib.xcframework"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5863B8781DA682C800E46B6A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5211DA66CB600309CB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */, + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */, + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */, + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */, + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */, + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */, + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */, + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */, + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10A59D530B421B1C760A83FC /* Multi-OS Engine */ = { + isa = PBXGroup; + children = ( + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */, + ); + name = "Multi-OS Engine"; + sourceTree = ""; + }; + 5817739E1E37A2DA004E28A9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */, + 581773AD1E37A7EF004E28A9 /* UIKit.framework */, + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */, + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */, + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */, + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */, + 581773A31E37A2DB004E28A9 /* OpenAL.framework */, + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */, + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5863B87C1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXGroup; + children = ( + 5863B88E1DA682C800E46B6A /* Info.plist */, + 5863B87D1DA682C800E46B6A /* Supporting Files */, + ); + path = "ios-moe-Test"; + sourceTree = ""; + }; + 5863B87D1DA682C800E46B6A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1E152A74253836079FA1075F /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 58C6F51B1DA66CB600309CB6 = { + isa = PBXGroup; + children = ( + 58C6F5261DA66CB600309CB6 /* ios-moe */, + 5863B87C1DA682C800E46B6A /* ios-moe-Test */, + 58C6F5251DA66CB600309CB6 /* Products */, + 5817739E1E37A2DA004E28A9 /* Frameworks */, + 10A59D530B421B1C760A83FC /* Multi-OS Engine */, + ); + sourceTree = ""; + }; + 58C6F5251DA66CB600309CB6 /* Products */ = { + isa = PBXGroup; + children = ( + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */, + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */, + ); + name = Products; + sourceTree = ""; + }; + 58C6F5261DA66CB600309CB6 /* ios-moe */ = { + isa = PBXGroup; + children = ( + 58C6F5381DA66CB600309CB6 /* Info.plist */, + 5817739D1E37A10D004E28A9 /* custom.xcconfig */, + 58C6F5271DA66CB600309CB6 /* Supporting Files */, + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */, + ); + path = "ios-moe"; + sourceTree = ""; + }; + 58C6F5271DA66CB600309CB6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8084D1F0A307440EC73CBFCA /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5863B87A1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */; + buildPhases = ( + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */, + 5863B8771DA682C800E46B6A /* Sources */, + 5863B8781DA682C800E46B6A /* Frameworks */, + 5863B8791DA682C800E46B6A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe-Test"; + productName = "ios-moe-Test"; + productReference = 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */; + productType = "com.apple.product-type.application"; + }; + 58C6F5231DA66CB600309CB6 /* ios-moe */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */; + buildPhases = ( + F461487E379A46F550F0C10A /* Compile Sources (MOE) */, + 58C6F5201DA66CB600309CB6 /* Sources */, + 58C6F5211DA66CB600309CB6 /* Frameworks */, + 58C6F5221DA66CB600309CB6 /* Resources */, + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe"; + productName = "ios-moe"; + productReference = 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58C6F51C1DA66CB600309CB6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = x; + TargetAttributes = { + 5863B87A1DA682C800E46B6A = { + CreatedOnToolsVersion = 7.3.1; + }; + 58C6F5231DA66CB600309CB6 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 58C6F51B1DA66CB600309CB6; + productRefGroup = 58C6F5251DA66CB600309CB6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58C6F5231DA66CB600309CB6 /* ios-moe */, + 5863B87A1DA682C800E46B6A /* ios-moe-Test */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5863B8791DA682C800E46B6A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5221DA66CB600309CB6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"test\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; + F461487E379A46F550F0C10A /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"main\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5863B8771DA682C800E46B6A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5201DA66CB600309CB6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */, + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5863B8901DA682C800E46B6A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 5863B8911DA682C800E46B6A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; + 58C6F5391DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 58C6F53A1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58C6F53C1DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 58C6F53D1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5863B8901DA682C800E46B6A /* Debug */, + 5863B8911DA682C800E46B6A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F5391DA66CB600309CB6 /* Debug */, + 58C6F53A1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F53C1DA66CB600309CB6 /* Debug */, + 58C6F53D1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58C6F51C1DA66CB600309CB6 /* Project object */; +} diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix new file mode 100644 index 0000000..d0c8ea1 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix @@ -0,0 +1,618 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E152A74253836079FA1075F /* main.cpp */; }; + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8084D1F0A307440EC73CBFCA /* main.cpp */; }; + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */ = {isa = PBXBuildFile; fileRef = AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */; }; + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */; }; + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A01E37A2DB004E28A9 /* AVFoundation.framework */; }; + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */; }; + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A21E37A2DB004E28A9 /* CoreMotion.framework */; }; + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A31E37A2DB004E28A9 /* OpenAL.framework */; }; + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A41E37A2DB004E28A9 /* OpenGLES.framework */; }; + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A51E37A2DB004E28A9 /* QuartzCore.framework */; }; + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773AD1E37A7EF004E28A9 /* UIKit.framework */; }; + BB2763E72CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */; }; + BB2763E82CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */; }; + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; }; + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */, + BB2763E82CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1E152A74253836079FA1075F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 5817739D1E37A10D004E28A9 /* custom.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = custom.xcconfig; sourceTree = ""; }; + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 581773A31E37A2DB004E28A9 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 581773AD1E37A7EF004E28A9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5863B88E1DA682C800E46B6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = [GAME_NAME].app; sourceTree = BUILT_PRODUCTS_DIR; }; + 58C6F5381DA66CB600309CB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8084D1F0A307440EC73CBFCA /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "moe-main-interfaces.m"; path = "../build/moe/main/ui-headers/moe-main-interfaces.m"; sourceTree = ""; }; + BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libbulletjme-ios-native-lib.xcframework"; path = "../../../libbulletjme-ios-native-lib/release/libbulletjme-ios-native-lib.xcframework"; sourceTree = ""; }; + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = EmptyStoryboard.storyboard; sourceTree = ""; }; + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "jme3-ios-native-lib.xcframework"; path = "../../../jme3-ios-native-lib/release/jme3-ios-native-lib.xcframework"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5863B8781DA682C800E46B6A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5211DA66CB600309CB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */, + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */, + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */, + BB2763E72CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Frameworks */, + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */, + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */, + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */, + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */, + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */, + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10A59D530B421B1C760A83FC /* Multi-OS Engine */ = { + isa = PBXGroup; + children = ( + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */, + ); + name = "Multi-OS Engine"; + sourceTree = ""; + }; + 5817739E1E37A2DA004E28A9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */, + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */, + 581773AD1E37A7EF004E28A9 /* UIKit.framework */, + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */, + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */, + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */, + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */, + 581773A31E37A2DB004E28A9 /* OpenAL.framework */, + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */, + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5863B87C1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXGroup; + children = ( + 5863B88E1DA682C800E46B6A /* Info.plist */, + 5863B87D1DA682C800E46B6A /* Supporting Files */, + ); + path = "ios-moe-Test"; + sourceTree = ""; + }; + 5863B87D1DA682C800E46B6A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1E152A74253836079FA1075F /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 58C6F51B1DA66CB600309CB6 = { + isa = PBXGroup; + children = ( + 58C6F5261DA66CB600309CB6 /* ios-moe */, + 5863B87C1DA682C800E46B6A /* ios-moe-Test */, + 58C6F5251DA66CB600309CB6 /* Products */, + 5817739E1E37A2DA004E28A9 /* Frameworks */, + 10A59D530B421B1C760A83FC /* Multi-OS Engine */, + ); + sourceTree = ""; + }; + 58C6F5251DA66CB600309CB6 /* Products */ = { + isa = PBXGroup; + children = ( + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */, + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */, + ); + name = Products; + sourceTree = ""; + }; + 58C6F5261DA66CB600309CB6 /* ios-moe */ = { + isa = PBXGroup; + children = ( + 58C6F5381DA66CB600309CB6 /* Info.plist */, + 5817739D1E37A10D004E28A9 /* custom.xcconfig */, + 58C6F5271DA66CB600309CB6 /* Supporting Files */, + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */, + ); + path = "ios-moe"; + sourceTree = ""; + }; + 58C6F5271DA66CB600309CB6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8084D1F0A307440EC73CBFCA /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5863B87A1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */; + buildPhases = ( + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */, + 5863B8771DA682C800E46B6A /* Sources */, + 5863B8781DA682C800E46B6A /* Frameworks */, + 5863B8791DA682C800E46B6A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe-Test"; + productName = "ios-moe-Test"; + productReference = 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */; + productType = "com.apple.product-type.application"; + }; + 58C6F5231DA66CB600309CB6 /* ios-moe */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */; + buildPhases = ( + F461487E379A46F550F0C10A /* Compile Sources (MOE) */, + 58C6F5201DA66CB600309CB6 /* Sources */, + 58C6F5211DA66CB600309CB6 /* Frameworks */, + 58C6F5221DA66CB600309CB6 /* Resources */, + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe"; + productName = "ios-moe"; + productReference = 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58C6F51C1DA66CB600309CB6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = x; + TargetAttributes = { + 5863B87A1DA682C800E46B6A = { + CreatedOnToolsVersion = 7.3.1; + }; + 58C6F5231DA66CB600309CB6 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 58C6F51B1DA66CB600309CB6; + productRefGroup = 58C6F5251DA66CB600309CB6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58C6F5231DA66CB600309CB6 /* ios-moe */, + 5863B87A1DA682C800E46B6A /* ios-moe-Test */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5863B8791DA682C800E46B6A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5221DA66CB600309CB6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"test\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; + F461487E379A46F550F0C10A /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"main\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5863B8771DA682C800E46B6A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5201DA66CB600309CB6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */, + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5863B8901DA682C800E46B6A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 5863B8911DA682C800E46B6A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; + 58C6F5391DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 58C6F53A1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58C6F53C1DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 58C6F53D1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5863B8901DA682C800E46B6A /* Debug */, + 5863B8911DA682C800E46B6A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F5391DA66CB600309CB6 /* Debug */, + 58C6F53A1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F53C1DA66CB600309CB6 /* Debug */, + 58C6F53D1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58C6F51C1DA66CB600309CB6 /* Project object */; +} diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..429055d797ede3b42f7e1982dade2ffcdf77e1e6 GIT binary patch literal 25560 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 l*;ul + + + + SchemeUserState + + ios-moe-Test.xcscheme_^#shared#^_ + + orderHint + 1 + + ios-moe.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/EmptyStoryboard.storyboard b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/EmptyStoryboard.storyboard new file mode 100644 index 0000000..f9a048e --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/EmptyStoryboard.storyboard @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/Info.plist b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/Info.plist new file mode 100644 index 0000000..bf39904 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + MOE.Main.Class + [GAME_PACKAGE].DummyMain + UIApplicationExitsOnSuspend + + UILaunchStoryboardName + EmptyStoryboard + UIRequiredDeviceCapabilities + + opengles-2 + arm64 + + UIRequiresFullScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/custom.xcconfig b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/custom.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/main.cpp b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/main.cpp new file mode 100644 index 0000000..e348909 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/ios-moe[IF=JME_IOSMOE]/xcode/ios-moe/main.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +int main(int argc, char *argv[]) { + int jvm_argc = argc+1; + char** jvm_argv = new char*[jvm_argc]; + + /* + Sample memory sizes: + 268435456 - 256Mb + 536870912 - 512Mb + 1073741824 - 1G + 1610612736 - 1.5G + 2147483648 - 2G + */ + + jvm_argv[0]=argv[0]; + jvm_argv[1]=strdup("-Xmx1073741824"); //1G + // Note: dalvik VM doesn't support -XX:MaxDirectMemorySize but Xmx is enough + for(int i=1;i + copy { + from zipTree(jar) + include "$subDir/*.xcframework/**" + into("xcode/native/ios/") + eachFile { file -> + file.path = file.path.replaceFirst("^$subDir", '') + } + includeEmptyDirs(false) + } + } + + def LD_FLAGS = "" + def outFlags = file("xcode/ios-moe/custom.xcconfig"); + outFlags.write LD_FLAGS + + def proguard = file("proguard.append.cfg") + } +} + +configurations { natives } + +ext.jmonkeyengineVersion = '[JME_VERSION]' + +dependencies { + implementation 'org.jmonkeyengine:jme3-core:'+jmonkeyengineVersion + implementation "org.jmonkeyengine:jme3-ios:" + jmonkeyengineVersion + natives "org.jmonkeyengine:jme3-ios-native:" + jmonkeyengineVersion +} + +// Setup Multi-OS Engine +moe { + xcode { + project 'xcode/ios-moe.xcodeproj' + mainTarget 'ios-moe' + testTarget 'ios-moe-Test' + } +} + +moeMainReleaseIphoneosXcodeBuild.dependsOn copyNatives +moeMainDebugIphoneosXcodeBuild.dependsOn copyNatives +moeMainReleaseIphonesimulatorXcodeBuild.dependsOn copyNatives +moeMainDebugIphonesimulatorXcodeBuild.dependsOn copyNatives + +if (System.getenv('PLATFORM_NAME') != null) { + moeXcodeInternal.dependsOn copyNatives +} + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/proguard.append.cfg b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/proguard.append.cfg new file mode 100644 index 0000000..3c3fbfc --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/proguard.append.cfg @@ -0,0 +1,64 @@ +#-dontshrink +#-dontoptimize +#-dontusemixedcaseclassnames +#-dontskipnonpubliclibraryclasses +#-dontskipnonpubliclibraryclassmembers +#-dontpreverify +# Issue : (Index 39424 out of bounds for length 635) +#-keep class com.** { *; } +#-keep enum com.** { *; } + +# All jme3 +-keep class com.jme3.** {*;} +-keep enum com.jme3.** {*;} +-keep class de.lessvoid.nifty.** {*;} +-keep enum de.lessvoid.nifty.** {*;} + +# Previous jme3 related classes +-keep public class com.jme3.system.ios.*{public *;} +-keep public class * extends com.jme3.system.ios.IosHarness{public *;} +-keep public class * extends com.jme3.app.Application{public *;} +-keep public class * extends com.jme3.system.JmeSystemDelegate{public *;} +-keep public class * extends com.jme3.scene.control.*{public *;} +-keep public class * extends com.jme3.scene.Node{public *;} +-keep public class * implements com.jme3.renderer.Renderer{public *;} +-keep public class * implements com.jme3.asset.AssetLoader{public *;} +-keep public class * implements com.jme3.asset.AssetLocator{public *;} +-keep public class * implements de.lessvoid.nifty.screen.ScreenController{public *;} +-keep public class de.lessvoid.nifty.loaderv2.types.** { public *;} +-keep public class de.lessvoid.nifty.controls.** { public *; } +-keep public class de.lessvoid.nifty.input.** { public *; } +-keep public class de.lessvoid.nifty.effects.impl.** { public *;} +-keepclassmembers class com.jme3.audio.plugins.NativeVorbisFile{public *;} +-keep public class * implements javax.xml.parsers.SAXParserFactory{public *;} +-keep public class com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl +-keep public class com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl +-keep public class sun.nio.fs.MacOSXFileSystemProvider +-keep public class * extends java.nio.charset.Charset { *; } +-keep public class java.util.zip.Deflater { *; } +-keep public class java.io.FileNotFoundException { *; } +-keep public class java.lang.reflect.Proxy { *; } +-keep public class java.lang.reflect.InvocationHandler { *; } +-keep public class java.util.logging.ConsoleHandler +-keep public class java.util.logging.FileHandler +-keep public class java.util.logging.SimpleFormatter +-keep public class java.util.logging.LogManager { *; } +-keep public class org.xmlpull.mxp1.MXParserFactory { *; } +-keep public class mf.org.** { *; } + +# Base java +-keep class java.lang.** {*;} +-keep class java.net.** {*;} +-keep class java.nio.Bits {*;} + +# Minie +-keep class vhacd4.** {*;} +-keep class vhacd.** {*;} +-keep class jme3utilities.** {*;} + +# Keep all native methods, their classes and any classes in their descriptors +-keepclasseswithmembers,includedescriptorclasses class ** { + native ; + long nativeHandle; +} + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/game/[GAME_NAME].java b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/game/[GAME_NAME].java new file mode 100644 index 0000000..e82f21f --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/game/[GAME_NAME].java @@ -0,0 +1,33 @@ +package [GAME_PACKAGE].game; + + +import com.jme3.app.SimpleApplication; + +import com.jme3.app.state.AppState; +import com.jme3.material.Material; +import com.jme3.math.ColorRGBA; +import com.jme3.math.Quaternion; +import com.jme3.math.Vector3f; +import com.jme3.scene.Geometry; +import com.jme3.scene.shape.Box; +import com.jme3.system.AppSettings; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class [GAME_NAME] extends SimpleApplication { + + @Override + public void simpleInitApp() { + Box b = new Box(1, 1, 1); + Geometry geom = new Geometry("Box", b); + + Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); + mat.setColor("Color", ColorRGBA.Blue); + geom.setMaterial(mat); + + rootNode.attachChild(geom); + } +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java new file mode 100644 index 0000000..06cc8c2 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/DummyMain.java @@ -0,0 +1,78 @@ +package [GAME_PACKAGE]; + +import org.moe.natj.general.Pointer; +import org.moe.natj.general.ann.RegisterOnStartup; +import org.moe.natj.objc.ann.Selector; + +import apple.NSObject; +import apple.foundation.NSDictionary; +import apple.corefoundation.struct.CGRect; +import apple.uikit.UIApplication; +import apple.uikit.UIColor; +import apple.uikit.UIImage; +import apple.uikit.UINavigationController; +import apple.uikit.UIScreen; +import apple.uikit.UIViewController; +import apple.uikit.UIWindow; +import apple.uikit.c.UIKit; +import apple.uikit.enums.UIBarStyle; +import apple.uikit.protocol.UIApplicationDelegate; + +@RegisterOnStartup +public class DummyMain extends NSObject implements UIApplicationDelegate +{ + public static void main(String[] args) { + UIKit.UIApplicationMain(0, null, null, DummyMain.class.getName()); + } + + @Selector("alloc") + public static native DummyMain alloc(); + + protected DummyMain(Pointer peer) { + super(peer); + } + + private UIWindow window; + + @Override + public boolean applicationDidFinishLaunchingWithOptions(UIApplication application, NSDictionary launchOptions) { + UIScreen screen = UIScreen.mainScreen(); + CGRect bounds = screen.bounds(); + window = UIWindow.alloc().initWithFrame(bounds); + + UIViewController vc = MoeIosJmeAppHarness.alloc().init(); + + // Initialization with navigation bar + /* + UINavigationController navigationController = UINavigationController.alloc().init(); + UIColor moeBlue = UIColor.alloc().initWithRedGreenBlueAlpha(0.0, 113/255.f, 197/255.f, 1.0); + navigationController.initWithRootViewController(vc); + window.setRootViewController(navigationController); + + navigationController.navigationBar().setBarStyle(UIBarStyle.Black); + navigationController.navigationBar().setBarTintColor(moeBlue); + navigationController.navigationBar().setShadowImage(UIImage.alloc().init()); + navigationController.navigationBar().setTranslucent(false); + navigationController.navigationBar().setTintColor(UIColor.whiteColor()); + */ + + // New initialization, only glwindow + window.setRootViewController(vc); + + window.makeKeyAndVisible(); + + System.out.println("DummyMain applicationDidFinishLaunchingWithOptions"); + + return true; + } + + @Override + public void setWindow(UIWindow value) { + window = value; + } + + @Override + public UIWindow window() { + return window; + } +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java new file mode 100644 index 0000000..af64a27 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/src/main/java/[GAME_PACKAGE]/ios/MoeIosJmeAppHarness.java @@ -0,0 +1,319 @@ +package [GAME_PACKAGE]; + +import org.moe.natj.general.Pointer; +import org.moe.natj.general.ann.ByValue; +import org.moe.natj.general.ann.Mapped; +import org.moe.natj.general.ann.Owned; +import org.moe.natj.objc.SEL; +import org.moe.natj.objc.ann.Selector; +import org.moe.natj.objc.map.ObjCObjectMapper; + +import apple.corefoundation.struct.CGPoint; +import apple.corefoundation.struct.CGRect; +import apple.corefoundation.struct.CGSize; +import apple.foundation.NSEnumerator; +import apple.foundation.NSNotification; +import apple.foundation.NSNotificationCenter; +import apple.foundation.NSSet; +import apple.glkit.GLKView; +import apple.glkit.GLKViewController; +import apple.glkit.enums.GLKViewDrawableDepthFormat; +import apple.glkit.protocol.GLKViewDelegate; +import apple.opengles.EAGLContext; +import apple.opengles.enums.EAGLRenderingAPI; +import apple.uikit.UIEvent; +import apple.uikit.UIScreen; +import apple.uikit.UITouch; +import apple.uikit.enums.UIRectEdge; +import apple.uikit.protocol.UIViewControllerTransitionCoordinator; + +import com.jme3.app.LegacyApplication; +import com.jme3.system.JmeSystem; +import com.jme3.system.ios.JmeIosSystem; +import com.jme3.input.ios.IosInputHandler; +import com.jme3.math.Vector2f; +import com.jme3.renderer.opengl.GLRenderer; +import com.jme3.system.JmeContext; +import com.jme3.system.AppSettings; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class MoeIosJmeAppHarness extends GLKViewController implements GLKViewDelegate +{ + // Content from previous JmeAppHarness+IosHarness + protected LegacyApplication app; + private static final Logger logger = Logger.getLogger(MoeIosJmeAppHarness.class.getName()); + protected GLRenderer renderer; + protected IosInputHandler input; + protected boolean autoFlush = true; + protected Vector2f resizePending = null; + + // Content from moe-samples (OpenGLBox) + static final int GLKViewDrawableMultisample4X = 1; + + private EAGLContext context; + + private float rotation; + + private GLKView glkView; + + // Allocator, init and constructor (based on moe stuff) + //@Selector("alloc") + public static native MoeIosJmeAppHarness alloc(); + + @Override + @Owned + @Selector("init") + public MoeIosJmeAppHarness init() + { + MoeIosJmeAppHarness self = (MoeIosJmeAppHarness) super.init(); + if(self!=null) + { + final NSNotificationCenter notificationCenter = NSNotificationCenter.defaultCenter(); + notificationCenter.addObserverSelectorNameObject(self, new SEL("didRotate"), "UIDeviceOrientationDidChangeNotification", null); + } + return self; + } + + public MoeIosJmeAppHarness(Pointer peer) + { + super(peer); + } + + // Methods from previous JmeAppHarness+IosHarness + public void appPaused() { + logger.log(Level.FINE, "JmeAppHarness appPaused"); + } + + public void appReactivated() { + logger.log(Level.FINE, "JmeAppHarness appReactivated"); + } + + public void appClosed() { + logger.log(Level.FINE, "JmeAppHarness appClosed"); + app.stop(); + } + + public void appUpdate() { + logger.log(Level.FINE, "JmeAppHarness appUpdate"); + //app.update(); + } + + public void appDraw() { + logger.log(Level.FINE, "JmeAppHarness appDraw"); + if (renderer == null) { + JmeContext iosContext = app.getContext(); + renderer = (GLRenderer)iosContext.getRenderer(); + renderer.initialize(); + input = (IosInputHandler)iosContext.getTouchInput(); + input.initialize(); + } else { + if(resizePending != null) { + appReshape((int)resizePending.x, (int)resizePending.y); + resizePending = null; + } + app.update(); + if (autoFlush) { + renderer.postFrame(); + } + } + } + + public void appReshape(int width, int height) { + logger.log(Level.FINE, "JmeAppHarness reshape"); + AppSettings settings = app.getContext().getSettings(); + settings.setResolution(width, height); + if (renderer != null) { + app.reshape(width, height); + resizePending = null; + } else { + resizePending = new Vector2f(width, height); + } + + if (input != null) { + input.loadSettings(settings); + } + } + + public void injectTouchBegin(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchBegin"); + input.injectTouchDown(pointerId, time, x, y); + } + } + + public void injectTouchMove(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchMove"); + input.injectTouchMove(pointerId, time, x, y); + } + } + + public void injectTouchEnd(int pointerId, long time, float x, float y) { + if (input != null) { + logger.log(Level.FINE, "JmeAppHarness injectTouchEnd"); + input.injectTouchUp(pointerId, time, x, y); + } + } + + // Methods from moe-samples (OpenGLBox) + @Override + public void viewDidLoad() { + super.viewDidLoad(); + + //setTitle("Jme3 for iOS using MOE"); + + setEdgesForExtendedLayout(UIRectEdge.None); + + context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES3); + if (context == null) { + context = EAGLContext.alloc().initWithAPI(EAGLRenderingAPI.GLES2); + if (context == null) { + System.out.println("Failed to create ES context"); + System.exit(-1); + } + } + glkView = (GLKView) view(); + glkView.setContext(context); + glkView.setDrawableMultisample(GLKViewDrawableMultisample4X); + glkView.setDrawableDepthFormat(GLKViewDrawableDepthFormat.Format24); + + setPreferredFramesPerSecond(60); // TODO: set desired FPS + setPaused(false); + + setupGL(); + + // Initialization from previous JmeAppHarness+IosHarness + JmeSystem.setSystemDelegate(new JmeIosSystem()); + app = new [GAME_PACKAGE].game.[GAME_NAME](); + AppSettings settings = new AppSettings(true); + this.app.setSettings(settings); + app.start(); + app.gainFocus(); + + //Force a didRotate (jme3 reshape) event after having initialized everything so it renders properly from the beginning + didRotate(null); + } + + @Override + public void viewWillTransitionToSizeWithTransitionCoordinator(@ByValue CGSize size, @Mapped(ObjCObjectMapper.class) UIViewControllerTransitionCoordinator coordinator) { + if (isPaused()) + glkView.setNeedsDisplay(); + } + + @Override + public void viewDidDisappear(boolean animated) { + super.viewDidDisappear(animated); + tearDownGL(); + if (EAGLContext.currentContext() != null && EAGLContext.currentContext().equals(context)) { + EAGLContext.setCurrentContext(null); + } + context = null; + } + + @Override + public void didReceiveMemoryWarning() { + super.didReceiveMemoryWarning(); + if (isViewLoaded() && (view().window() == null)) { + setView(null); + tearDownGL(); + if (EAGLContext.currentContext().equals(context)) { + EAGLContext.setCurrentContext(null); + } + context = null; + } + // Dispose of any resources that can be recreated. + } + + private void setupGL() { + EAGLContext.setCurrentContext(context); + // Nothing to do here, there's no gl stuff created in this class + } + + private void tearDownGL() { + EAGLContext.setCurrentContext(context); + // Nothing to do here, there's no gl stuff created in this class + } + + @Override + public void glkViewDrawInRect(GLKView view, CGRect rect) { + appDraw(); + } + + @Selector("update") + public void update() { + appUpdate(); + appUpdate(); + } + + @Override + public void touchesBeganWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchBegin(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + @Override + public void touchesCancelledWithEvent(NSSet touches, UIEvent event) + { + // Not implemented in jME3 + } + + @Override + public void touchesEndedWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchEnd(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + @Override + public void touchesMovedWithEvent(NSSet touches, UIEvent event) + { + NSEnumerator enumerator = touches.objectEnumerator(); + UITouch touch = (UITouch) enumerator.nextObject(); + if(touch!=null) + { + do + { + CGPoint position = touch.locationInView(null); + float scale = (float) glkView.contentScaleFactor(); + injectTouchMove(touch.hashCode(), (long)touch.timestamp(), (float) (position.x() * scale), (float) (position.y() * scale)); + touch = (UITouch) enumerator.nextObject(); + } while (touch != null); + } + } + + // java code equivalent to old jmeAppDelegate.m + @Selector("didRotate") + public void didRotate(NSNotification notification) + { + UIScreen screen = UIScreen.mainScreen(); + CGRect originalFrame = screen.bounds(); + if(glkView!=null) + { + CGRect frame = glkView.convertRectToView(originalFrame, null); + float scale = (float) glkView.contentScaleFactor(); + appReshape((int) (frame.size().width() * scale), (int) (frame.size().height() * scale)); + } + } +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/Info.plist b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/Info.plist new file mode 100644 index 0000000..dad821c --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/Info.plist @@ -0,0 +1,44 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + MOE.Main.Class + org.moe.mdt.junit.MoeRemoteTestRunner + UIRequiredDeviceCapabilities + + opengles-2 + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/main.cpp b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/main.cpp new file mode 100644 index 0000000..fef543a --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe-Test/main.cpp @@ -0,0 +1,5 @@ +#include + +int main(int argc, char *argv[]) { + return moevm(argc, argv); +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0d29074 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj @@ -0,0 +1,612 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E152A74253836079FA1075F /* main.cpp */; }; + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8084D1F0A307440EC73CBFCA /* main.cpp */; }; + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */ = {isa = PBXBuildFile; fileRef = AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */; }; + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */; }; + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A01E37A2DB004E28A9 /* AVFoundation.framework */; }; + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */; }; + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A21E37A2DB004E28A9 /* CoreMotion.framework */; }; + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A31E37A2DB004E28A9 /* OpenAL.framework */; }; + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A41E37A2DB004E28A9 /* OpenGLES.framework */; }; + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A51E37A2DB004E28A9 /* QuartzCore.framework */; }; + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773AD1E37A7EF004E28A9 /* UIKit.framework */; }; + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */; }; + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; }; + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1E152A74253836079FA1075F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 5817739D1E37A10D004E28A9 /* custom.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = custom.xcconfig; sourceTree = ""; }; + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 581773A31E37A2DB004E28A9 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 581773AD1E37A7EF004E28A9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5863B88E1DA682C800E46B6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = [GAME_NAME].app; sourceTree = BUILT_PRODUCTS_DIR; }; + 58C6F5381DA66CB600309CB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8084D1F0A307440EC73CBFCA /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "moe-main-interfaces.m"; path = "../build/moe/main/ui-headers/moe-main-interfaces.m"; sourceTree = ""; }; + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = EmptyStoryboard.storyboard; sourceTree = ""; }; + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "jme3-ios-native-lib.xcframework"; path = "../../../jme3-ios-native-lib/release/jme3-ios-native-lib.xcframework"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5863B8781DA682C800E46B6A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5211DA66CB600309CB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */, + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */, + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */, + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */, + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */, + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */, + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */, + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */, + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10A59D530B421B1C760A83FC /* Multi-OS Engine */ = { + isa = PBXGroup; + children = ( + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */, + ); + name = "Multi-OS Engine"; + sourceTree = ""; + }; + 5817739E1E37A2DA004E28A9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */, + 581773AD1E37A7EF004E28A9 /* UIKit.framework */, + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */, + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */, + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */, + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */, + 581773A31E37A2DB004E28A9 /* OpenAL.framework */, + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */, + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5863B87C1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXGroup; + children = ( + 5863B88E1DA682C800E46B6A /* Info.plist */, + 5863B87D1DA682C800E46B6A /* Supporting Files */, + ); + path = "ios-moe-Test"; + sourceTree = ""; + }; + 5863B87D1DA682C800E46B6A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1E152A74253836079FA1075F /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 58C6F51B1DA66CB600309CB6 = { + isa = PBXGroup; + children = ( + 58C6F5261DA66CB600309CB6 /* ios-moe */, + 5863B87C1DA682C800E46B6A /* ios-moe-Test */, + 58C6F5251DA66CB600309CB6 /* Products */, + 5817739E1E37A2DA004E28A9 /* Frameworks */, + 10A59D530B421B1C760A83FC /* Multi-OS Engine */, + ); + sourceTree = ""; + }; + 58C6F5251DA66CB600309CB6 /* Products */ = { + isa = PBXGroup; + children = ( + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */, + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */, + ); + name = Products; + sourceTree = ""; + }; + 58C6F5261DA66CB600309CB6 /* ios-moe */ = { + isa = PBXGroup; + children = ( + 58C6F5381DA66CB600309CB6 /* Info.plist */, + 5817739D1E37A10D004E28A9 /* custom.xcconfig */, + 58C6F5271DA66CB600309CB6 /* Supporting Files */, + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */, + ); + path = "ios-moe"; + sourceTree = ""; + }; + 58C6F5271DA66CB600309CB6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8084D1F0A307440EC73CBFCA /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5863B87A1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */; + buildPhases = ( + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */, + 5863B8771DA682C800E46B6A /* Sources */, + 5863B8781DA682C800E46B6A /* Frameworks */, + 5863B8791DA682C800E46B6A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe-Test"; + productName = "ios-moe-Test"; + productReference = 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */; + productType = "com.apple.product-type.application"; + }; + 58C6F5231DA66CB600309CB6 /* ios-moe */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */; + buildPhases = ( + F461487E379A46F550F0C10A /* Compile Sources (MOE) */, + 58C6F5201DA66CB600309CB6 /* Sources */, + 58C6F5211DA66CB600309CB6 /* Frameworks */, + 58C6F5221DA66CB600309CB6 /* Resources */, + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe"; + productName = "ios-moe"; + productReference = 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58C6F51C1DA66CB600309CB6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = x; + TargetAttributes = { + 5863B87A1DA682C800E46B6A = { + CreatedOnToolsVersion = 7.3.1; + }; + 58C6F5231DA66CB600309CB6 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 58C6F51B1DA66CB600309CB6; + productRefGroup = 58C6F5251DA66CB600309CB6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58C6F5231DA66CB600309CB6 /* ios-moe */, + 5863B87A1DA682C800E46B6A /* ios-moe-Test */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5863B8791DA682C800E46B6A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5221DA66CB600309CB6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"test\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; + F461487E379A46F550F0C10A /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"main\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5863B8771DA682C800E46B6A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5201DA66CB600309CB6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */, + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5863B8901DA682C800E46B6A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 5863B8911DA682C800E46B6A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; + 58C6F5391DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 58C6F53A1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58C6F53C1DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 58C6F53D1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5863B8901DA682C800E46B6A /* Debug */, + 5863B8911DA682C800E46B6A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F5391DA66CB600309CB6 /* Debug */, + 58C6F53A1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F53C1DA66CB600309CB6 /* Debug */, + 58C6F53D1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58C6F51C1DA66CB600309CB6 /* Project object */; +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix new file mode 100644 index 0000000..d0c8ea1 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.pbxproj.jbullet_enabled.Check_and_fix @@ -0,0 +1,618 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1E152A74253836079FA1075F /* main.cpp */; }; + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8084D1F0A307440EC73CBFCA /* main.cpp */; }; + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */ = {isa = PBXBuildFile; fileRef = AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */; }; + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */; }; + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A01E37A2DB004E28A9 /* AVFoundation.framework */; }; + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */; }; + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A21E37A2DB004E28A9 /* CoreMotion.framework */; }; + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A31E37A2DB004E28A9 /* OpenAL.framework */; }; + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A41E37A2DB004E28A9 /* OpenGLES.framework */; }; + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773A51E37A2DB004E28A9 /* QuartzCore.framework */; }; + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 581773AD1E37A7EF004E28A9 /* UIKit.framework */; }; + BB2763E72CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */; }; + BB2763E82CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */; }; + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; }; + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + BBAA18852C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Embed Frameworks */, + BB2763E82CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1E152A74253836079FA1075F /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + 5817739D1E37A10D004E28A9 /* custom.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = custom.xcconfig; sourceTree = ""; }; + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 581773A31E37A2DB004E28A9 /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; }; + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 581773AD1E37A7EF004E28A9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ios-moe-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5863B88E1DA682C800E46B6A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = [GAME_NAME].app; sourceTree = BUILT_PRODUCTS_DIR; }; + 58C6F5381DA66CB600309CB6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8084D1F0A307440EC73CBFCA /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "moe-main-interfaces.m"; path = "../build/moe/main/ui-headers/moe-main-interfaces.m"; sourceTree = ""; }; + BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "libbulletjme-ios-native-lib.xcframework"; path = "../../../libbulletjme-ios-native-lib/release/libbulletjme-ios-native-lib.xcframework"; sourceTree = ""; }; + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = EmptyStoryboard.storyboard; sourceTree = ""; }; + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = "jme3-ios-native-lib.xcframework"; path = "../../../jme3-ios-native-lib/release/jme3-ios-native-lib.xcframework"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5863B8781DA682C800E46B6A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5211DA66CB600309CB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + BBAA18842C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework in Frameworks */, + 581773A61E37A2DB004E28A9 /* AudioToolbox.framework in Frameworks */, + 581773A71E37A2DB004E28A9 /* AVFoundation.framework in Frameworks */, + BB2763E72CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework in Frameworks */, + 581773A81E37A2DB004E28A9 /* CoreGraphics.framework in Frameworks */, + 581773A91E37A2DB004E28A9 /* CoreMotion.framework in Frameworks */, + 581773AA1E37A2DB004E28A9 /* OpenAL.framework in Frameworks */, + 581773AB1E37A2DB004E28A9 /* OpenGLES.framework in Frameworks */, + 581773AC1E37A2DB004E28A9 /* QuartzCore.framework in Frameworks */, + 581773AE1E37A7EF004E28A9 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10A59D530B421B1C760A83FC /* Multi-OS Engine */ = { + isa = PBXGroup; + children = ( + AE849253332D33EDDC76AB2C /* moe-main-interfaces.m */, + ); + name = "Multi-OS Engine"; + sourceTree = ""; + }; + 5817739E1E37A2DA004E28A9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + BB2763E62CA623F900B73E12 /* libbulletjme-ios-native-lib.xcframework */, + BBAA18832C9CE16C0015DF5E /* jme3-ios-native-lib.xcframework */, + 581773AD1E37A7EF004E28A9 /* UIKit.framework */, + 5817739F1E37A2DB004E28A9 /* AudioToolbox.framework */, + 581773A01E37A2DB004E28A9 /* AVFoundation.framework */, + 581773A11E37A2DB004E28A9 /* CoreGraphics.framework */, + 581773A21E37A2DB004E28A9 /* CoreMotion.framework */, + 581773A31E37A2DB004E28A9 /* OpenAL.framework */, + 581773A41E37A2DB004E28A9 /* OpenGLES.framework */, + 581773A51E37A2DB004E28A9 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 5863B87C1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXGroup; + children = ( + 5863B88E1DA682C800E46B6A /* Info.plist */, + 5863B87D1DA682C800E46B6A /* Supporting Files */, + ); + path = "ios-moe-Test"; + sourceTree = ""; + }; + 5863B87D1DA682C800E46B6A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 1E152A74253836079FA1075F /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 58C6F51B1DA66CB600309CB6 = { + isa = PBXGroup; + children = ( + 58C6F5261DA66CB600309CB6 /* ios-moe */, + 5863B87C1DA682C800E46B6A /* ios-moe-Test */, + 58C6F5251DA66CB600309CB6 /* Products */, + 5817739E1E37A2DA004E28A9 /* Frameworks */, + 10A59D530B421B1C760A83FC /* Multi-OS Engine */, + ); + sourceTree = ""; + }; + 58C6F5251DA66CB600309CB6 /* Products */ = { + isa = PBXGroup; + children = ( + 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */, + 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */, + ); + name = Products; + sourceTree = ""; + }; + 58C6F5261DA66CB600309CB6 /* ios-moe */ = { + isa = PBXGroup; + children = ( + 58C6F5381DA66CB600309CB6 /* Info.plist */, + 5817739D1E37A10D004E28A9 /* custom.xcconfig */, + 58C6F5271DA66CB600309CB6 /* Supporting Files */, + BB2763E92CA6D20E00B73E12 /* EmptyStoryboard.storyboard */, + ); + path = "ios-moe"; + sourceTree = ""; + }; + 58C6F5271DA66CB600309CB6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8084D1F0A307440EC73CBFCA /* main.cpp */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5863B87A1DA682C800E46B6A /* ios-moe-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */; + buildPhases = ( + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */, + 5863B8771DA682C800E46B6A /* Sources */, + 5863B8781DA682C800E46B6A /* Frameworks */, + 5863B8791DA682C800E46B6A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe-Test"; + productName = "ios-moe-Test"; + productReference = 5863B87B1DA682C800E46B6A /* ios-moe-Test.app */; + productType = "com.apple.product-type.application"; + }; + 58C6F5231DA66CB600309CB6 /* ios-moe */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */; + buildPhases = ( + F461487E379A46F550F0C10A /* Compile Sources (MOE) */, + 58C6F5201DA66CB600309CB6 /* Sources */, + 58C6F5211DA66CB600309CB6 /* Frameworks */, + 58C6F5221DA66CB600309CB6 /* Resources */, + F0BD09F22C793DD000C03AF2 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ios-moe"; + productName = "ios-moe"; + productReference = 58C6F5241DA66CB600309CB6 /* [GAME_NAME].app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58C6F51C1DA66CB600309CB6 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0820; + ORGANIZATIONNAME = x; + TargetAttributes = { + 5863B87A1DA682C800E46B6A = { + CreatedOnToolsVersion = 7.3.1; + }; + 58C6F5231DA66CB600309CB6 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 58C6F51B1DA66CB600309CB6; + productRefGroup = 58C6F5251DA66CB600309CB6 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58C6F5231DA66CB600309CB6 /* ios-moe */, + 5863B87A1DA682C800E46B6A /* ios-moe-Test */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5863B8791DA682C800E46B6A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5221DA66CB600309CB6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB2763EA2CA6D20E00B73E12 /* EmptyStoryboard.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1AE79C4EE6E5C399E50B1E3C /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"test\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; + F461487E379A46F550F0C10A /* Compile Sources (MOE) */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Compile Sources (MOE)"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/bash; + shellScript = "set -e\n\nexport MOE_BUILD_SOURCE_SET=\"main\"\nexport MOE_BUILD_MODE=\"$(echo $CONFIGURATION | tr '[:upper:]' '[:lower:]')\"\n\n# Check project directory\nif [ ! -d \"$MOE_PROJECT_DIR\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_DIR' doesn't point to a directory!\"; exit 1;\nfi\ncd \"$MOE_PROJECT_DIR\"\n\n# Export JAVA_HOME\nif [ -z \"$JAVA_HOME\" ]; then\n if [ -z \"$MOE_JAVA_VERSION_OVERRIDE\" ]; then\n export JAVA_HOME=$(/usr/libexec/java_home)\n else\n export JAVA_HOME=$(/usr/libexec/java_home -v \"$MOE_JAVA_VERSION_OVERRIDE\")\n fi\nfi\necho $JAVA_HOME\n\n# Utility function for finding the Gradle implementation\nfunction findGradle {\n CD=\"$PWD\"\n while [ \"$CD\" != \"\" ]; do\n echo \"Looking for gradlew in $CD\"\n if [ -x \"$CD/gradlew\" ]; then\n GRADLE_EXEC=$CD/gradlew\n return 0\n fi\n CD=\"${CD%/*}\"\n done\n\n echo \"Checking with 'which'\"\n GRADLE_EXEC=$(which 'gradle')\n\n if [ \"$GRADLE_EXEC\" = \"\" ]; then\n echo \"Failed to locate 'gradle' executable!\"\n exit 1\n fi\n}\n\n# Build project with Gradle\nif [ -z \"$MOE_GRADLE_EXTERNAL_BUILD\" ]; then\n findGradle\n \"$GRADLE_EXEC\" --no-daemon moeXcodeInternal -s\nfi\n\n# Check output directory\nif [ ! -d \"${MOE_PROJECT_BUILD_DIR}\" ]; then\n echo \"$0:$LINENO:1: error: 'MOE_PROJECT_BUILD_DIR' doesn't point to a directory!\"; exit 1;\nfi\n\n# Copy some resources\nmkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/resources/${MOE_BUILD_MODE}/application.jar\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\ncp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/startup-provider/${MOE_BUILD_MODE}/preregister.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nif [ \"${MOE_BUILD_SOURCE_SET}\" == \"test\" ]; then\n cp \"${MOE_PROJECT_BUILD_DIR}/moe/${MOE_BUILD_SOURCE_SET}/test-provider/${MOE_BUILD_MODE}/classlist.txt\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/\"\nfi\n\n# Copy android CA certificates on demand\nif [ \"${MOE_COPY_ANDROID_CACERTS}\" == \"YES\" ]; then\n rm -rf \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n mkdir -p \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\n unzip \"${MOE_SDK_PATH}/sdk/moe-core-certificates.zip\" -d \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/android_root/etc/security/cacerts\"\nfi\n\n# Copy and sign MOE framework\nrsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \\\n \"${MOE_FRAMEWORK_PATH}/MOE.framework\" \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/\"\nif [ \"${ARCHS}\" == \"arm64\" ] || [ \"${ARCHS}\" == \"x86_64\" ]; then\n if [ \"${PLATFORM_NAME}\" == \"iphonesimulator\" ]; then\n lipo -thin \"${ARCHS}\" -output \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework/MOE\" \"${MOE_FRAMEWORK_PATH}/MOE.framework/MOE\"\n fi\nfi\nif [ -n \"${EXPANDED_CODE_SIGN_IDENTITY}\" -a \"${CODE_SIGNING_REQUIRED}\" != \"NO\" -a \"${CODE_SIGNING_ALLOWED}\" != \"NO\" ]; then\n /usr/bin/codesign --force --sign $EXPANDED_CODE_SIGN_IDENTITY $OTHER_CODE_SIGN_FLAGS \\\n --preserve-metadata=identifier,entitlements \"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MOE.framework\"\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5863B8771DA682C800E46B6A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 093EA0331288EEC18D3C79EC /* main.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 58C6F5201DA66CB600309CB6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 16479D2CDCAC394B9A9722FE /* main.cpp in Sources */, + 1BC836EF57DF0BA82F65BED9 /* moe-main-interfaces.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5863B8901DA682C800E46B6A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 5863B8911DA682C800E46B6A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/test/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; + 58C6F5391DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 58C6F53A1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + 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_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=iphoneos*]" = armv7; + "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + 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.3; + MOE_VERSION = 1.8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58C6F53C1DA66CB600309CB6 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Debug; + }; + 58C6F53D1DA66CB600309CB6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5817739D1E37A10D004E28A9 /* custom.xcconfig */; + buildSettings = { + DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = 484DN6VW79; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "${MOE_FRAMEWORK_PATH}", + ); + INFOPLIST_FILE = "ios-moe/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MOE_COPY_ANDROID_CACERTS = NO; + MOE_FRAMEWORK_PATH = "${MOE_SDK_PATH}/sdk/${PLATFORM_NAME}"; + MOE_JAVA_VERSION_OVERRIDE = ""; + MOE_OAT_ALIGN = "-Xlinker -sectalign -Xlinker __TEXT -Xlinker __oatdata -Xlinker 0x8000"; + "MOE_OAT_ALIGN[arch=x86_64]" = ""; + MOE_OTHER_LDFLAGS = "${MOE_SECT_OAT} ${MOE_OAT_ALIGN} ${MOE_SECT_ART} ${MOE_SEGPROT} ${MOE_PAGEZERO} ${MOE_CUSTOM_OTHER_LDFLAGS} -lc++ -framework MOE"; + MOE_PAGEZERO = ""; + "MOE_PAGEZERO[arch=x86_64]" = "-pagezero_size 4096"; + MOE_PROJECT_BUILD_DIR = "${MOE_PROJECT_DIR}/build"; + MOE_PROJECT_DIR = "${SRCROOT}/../"; + MOE_SDK_PATH = "${MOE_PROJECT_BUILD_DIR}/moe/sdk"; + MOE_SECT_ART = "-sectcreate __ARTDATA __artdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.art\""; + MOE_SECT_OAT = "-sectcreate __TEXT __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + "MOE_SECT_OAT[arch=x86_64]" = "-sectcreate __OATDATA __oatdata \"${MOE_PROJECT_BUILD_DIR}/moe/main/xcode/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${arch}.oat\""; + MOE_SEGPROT = "-segprot __ARTDATA rw rw"; + "MOE_SEGPROT[arch=x86_64]" = "-segprot __OATDATA rwx rx -segprot __ARTDATA rwx rw"; + ONLY_ACTIVE_ARCH = NO; + OTHER_LDFLAGS = ( + "$(inherited)", + "${MOE_OTHER_LDFLAGS}", + ); + PRODUCT_BUNDLE_IDENTIFIER = [GAME_PACKAGE]; + PRODUCT_NAME = [GAME_NAME]; + STRIP_STYLE = "non-global"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5863B88F1DA682C800E46B6A /* Build configuration list for PBXNativeTarget "ios-moe-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5863B8901DA682C800E46B6A /* Debug */, + 5863B8911DA682C800E46B6A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F51F1DA66CB600309CB6 /* Build configuration list for PBXProject "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F5391DA66CB600309CB6 /* Debug */, + 58C6F53A1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58C6F53B1DA66CB600309CB6 /* Build configuration list for PBXNativeTarget "ios-moe" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58C6F53C1DA66CB600309CB6 /* Debug */, + 58C6F53D1DA66CB600309CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58C6F51C1DA66CB600309CB6 /* Project object */; +} diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe.xcodeproj/project.xcworkspace/xcuserdata/v1r7ua1.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..429055d797ede3b42f7e1982dade2ffcdf77e1e6 GIT binary patch literal 25560 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 l*;ul + + + + SchemeUserState + + ios-moe-Test.xcscheme_^#shared#^_ + + orderHint + 1 + + ios-moe.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/EmptyStoryboard.storyboard b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/EmptyStoryboard.storyboard new file mode 100644 index 0000000..f9a048e --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/EmptyStoryboard.storyboard @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/Info.plist b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/Info.plist new file mode 100644 index 0000000..bf39904 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + MOE.Main.Class + [GAME_PACKAGE].DummyMain + UIApplicationExitsOnSuspend + + UILaunchStoryboardName + EmptyStoryboard + UIRequiredDeviceCapabilities + + opengles-2 + arm64 + + UIRequiresFullScreen + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/custom.xcconfig b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/custom.xcconfig new file mode 100644 index 0000000..e69de29 diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/main.cpp b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/main.cpp new file mode 100644 index 0000000..e348909 --- /dev/null +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/ios-moe/xcode/ios-moe/main.cpp @@ -0,0 +1,34 @@ +#include +#include +#include + +int main(int argc, char *argv[]) { + int jvm_argc = argc+1; + char** jvm_argv = new char*[jvm_argc]; + + /* + Sample memory sizes: + 268435456 - 256Mb + 536870912 - 512Mb + 1073741824 - 1G + 1610612736 - 1.5G + 2147483648 - 2G + */ + + jvm_argv[0]=argv[0]; + jvm_argv[1]=strdup("-Xmx1073741824"); //1G + // Note: dalvik VM doesn't support -XX:MaxDirectMemorySize but Xmx is enough + for(int i=1;i Date: Tue, 29 Apr 2025 01:17:23 +0200 Subject: [PATCH 2/2] Removed jcenter --- .../jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate | 1 - .../[IF=SINGLEPLATFORM][IF=JME_ANDROID]/settings.gradle | 1 - .../jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle | 1 - 3 files changed, 3 deletions(-) diff --git a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate index 968954e..e1d4ba1 100644 --- a/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate +++ b/src/main/resources/jmetemplate/[IF=MULTIPLATFORM]/build.gradle.jmetemplate @@ -16,7 +16,6 @@ allprojects { repositories { google() mavenCentral() - jcenter() // Warning: this repository is going to shut down soon } } diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_ANDROID]/settings.gradle b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_ANDROID]/settings.gradle index 474da60..a414805 100644 --- a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_ANDROID]/settings.gradle +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_ANDROID]/settings.gradle @@ -4,7 +4,6 @@ dependencyResolutionManagement { google() mavenLocal() mavenCentral() - jcenter() // Warning: this repository is going to shut down soon } } rootProject.name = "JmonkeyAndroidVr2" diff --git a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle index 900d645..9cbb05b 100644 --- a/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle +++ b/src/main/resources/jmetemplate/[IF=SINGLEPLATFORM][IF=JME_IOSMOE]/build.gradle @@ -13,7 +13,6 @@ allprojects { repositories { google() mavenCentral() - jcenter() // Warning: this repository is going to shut down soon } }