summaryrefslogtreecommitdiff
path: root/misc
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2017-02-09 00:07:44 +0100
committerRémi Verschelde <rverschelde@gmail.com>2017-02-09 00:08:27 +0100
commitb87a232668d9f9f3b32c2fceb60bc5f6ef46df22 (patch)
tree40bf3a8b94fbca24f9bf144e4ac9eee7f3c011d0 /misc
parentb19c9bd1983b8c72621595b7c22daade4ebf6625 (diff)
Reorder the folders in tools to prepare moving tools/editor
- `certs` and `editor_fonts` go to `thirdparty` - `dist` and `scripts` go to a new `misc` folder - `collada` and `doc` go to `tools/editor` The next step will be to rename `tools/editor` to `editor` directly, but this will be done at the right time to avoid breaking too many PRs.
Diffstat (limited to 'misc')
-rw-r--r--misc/dist/docker/Dockerfile13
-rw-r--r--misc/dist/docker/README.md40
-rw-r--r--misc/dist/docker/scripts/install-android-tools90
-rw-r--r--misc/dist/html_fs/godotfs.js149
-rw-r--r--misc/dist/ios_xcode/godot_xcode/data.pck0
-rwxr-xr-xmisc/dist/ios_xcode/godot_xcode/godot_debug.iphone0
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj370
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata7
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.pngbin0 -> 564 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.pngbin0 -> 683 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.pngbin0 -> 817 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.pngbin0 -> 1676 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.pngbin0 -> 2582 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.pngbin0 -> 2582 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.pngbin0 -> 3131 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.pngbin0 -> 634 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.pngbin0 -> 3070 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.pngbin0 -> 589 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.pngbin0 -> 515 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.pngbin0 -> 309 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json128
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.pngbin0 -> 250 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.pngbin0 -> 253 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.pngbin0 -> 253 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.pngbin0 -> 259 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.pngbin0 -> 260 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.pngbin0 -> 265 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.pngbin0 -> 242 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.pngbin0 -> 240 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.pngbin0 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.pngbin0 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.pngbin0 -> 243 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.pngbin0 -> 244 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.pngbin0 -> 244 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.pngbin0 -> 246 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.pngbin0 -> 245 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.pngbin0 -> 262 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.pngbin0 -> 247 bytes
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes17
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings2
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist50
-rw-r--r--misc/dist/ios_xcode/godot_xcode/godot_ios/main.m39
-rwxr-xr-xmisc/dist/ios_xcode/godot_xcode/godot_opt.iphone0
-rwxr-xr-xmisc/dist/osx_template.app/Contents/Info.plist39
-rw-r--r--misc/dist/osx_template.app/Contents/PkgInfo1
-rw-r--r--misc/dist/osx_template.app/Contents/Resources/icon.icnsbin0 -> 120942 bytes
-rwxr-xr-xmisc/dist/osx_tools.app/Contents/Info.plist69
-rw-r--r--misc/dist/osx_tools.app/Contents/PkgInfo1
-rw-r--r--misc/dist/osx_tools.app/Contents/Resources/Godot.icnsbin0 -> 120942 bytes
-rw-r--r--misc/dist/uwp_template/AppxManifest.xml32
-rw-r--r--misc/dist/uwp_template/Assets/SplashScreen.scale-100.pngbin0 -> 14919 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.pngbin0 -> 7001 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.pngbin0 -> 14490 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.pngbin0 -> 2067 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.pngbin0 -> 3369 bytes
-rw-r--r--misc/dist/uwp_template/Assets/StoreLogo.scale-100.pngbin0 -> 2339 bytes
-rw-r--r--misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.pngbin0 -> 7390 bytes
-rw-r--r--misc/scripts/addheader.py70
-rwxr-xr-xmisc/scripts/file-hex-array.py56
-rw-r--r--misc/scripts/make_bmfhdr.py67
-rw-r--r--misc/scripts/make_glwrapper.py178
-rw-r--r--misc/scripts/make_icons.sh5
-rw-r--r--misc/scripts/makeargs.py82
-rw-r--r--misc/scripts/memsort.py35
-rw-r--r--misc/scripts/sort-demos.sh29
-rw-r--r--misc/scripts/svgs_2_pngs.py137
66 files changed, 1706 insertions, 0 deletions
diff --git a/misc/dist/docker/Dockerfile b/misc/dist/docker/Dockerfile
new file mode 100644
index 0000000000..428de9d1a7
--- /dev/null
+++ b/misc/dist/docker/Dockerfile
@@ -0,0 +1,13 @@
+FROM ubuntu:14.04
+MAINTAINER Mohammad Rezai, https://github.com/mrezai
+WORKDIR /godot-dev
+COPY scripts/install-android-tools /godot-dev/
+ENV DEBIAN_FRONTEND noninteractive
+RUN dpkg --add-architecture i386 && \
+ apt-get update && \
+ apt-get upgrade -y && \
+ apt-get install --no-install-recommends -y -q \
+ build-essential gcc-multilib g++-multilib mingw32 mingw-w64 scons pkg-config libx11-dev libxcursor-dev \
+ libasound2-dev libfreetype6-dev libgl1-mesa-dev libglu-dev libssl-dev libxinerama-dev libudev-dev \
+ git wget openjdk-7-jdk libbcprov-java libc6:i386 libncurses5:i386 libstdc++6:i386 zlib1g:i386 lib32z1
+
diff --git a/misc/dist/docker/README.md b/misc/dist/docker/README.md
new file mode 100644
index 0000000000..7f10b46ad8
--- /dev/null
+++ b/misc/dist/docker/README.md
@@ -0,0 +1,40 @@
+## A Docker image to build Linux, Windows and Android godot binaries.
+
+The main reason to write this, is to provide a simple way in all platforms to integrate external godot modules and build a custom version of godot.
+
+## usage
+1. Install docker on Linux or docker toolbox on Windows or Mac.
+2. Open a terminal on linux or "Docker Quickstart Terminal" on Windows or Mac.
+3. Run command:
+ - Linux: `cd`
+ - Windows: `cd /c/Users/YOUR_USERNAME`
+ - Mac: `cd /Users/YOUR_USERNAME`
+4. Get godot source code: `git clone https://github.com/godotengine/godot.git`
+5. Run command: `cd godot/tools/docker`
+6. Run command: `docker build -t godot .`(In Linux run Docker commands with `sudo` or add your user to docker group before run the Docker commands). The godot docker image will be build after a while.
+7. Run command:
+ - Linux: `docker run -it --name=godot-dev -v /home/YOUR_USERNAME/godot:/godot-dev/godot godot`
+ - Windows: `docker run -it --name=godot-dev -v /c/Users/YOUR_USERNAME/godot:/godot-dev/godot godot`
+ - Mac: `docker run -it --name=godot-dev -v /Users/YOUR_USERNAME/godot:/godot-dev/godot godot`
+ You are in the godot-dev container and /godot-dev directory now.
+8. Run `./install-android-tools` to download and install all android development tools.
+9. Run command: `source ~/.bashrc`
+10. Run command: `cd godot`
+11. Run command: `scons p=android target=release` to test everything is ok. You can set platform to x11, windows, android, haiku and server.
+
+After use and exit, you can use this environment again by open terminal and type commands: `docker start godot-dev && docker attach godot-dev`.
+
+### Windows and Mac stuffs:
+
+- Speed up compilation:
+ - Exit from container.
+ - Run command: `docker-machine stop`
+ - Open "Oracle VM VirtualBox".
+ - In settings of default VM increase CPU cores and RAM to suitable values.
+ - Run command: `docker-machine start`
+ - Run command: `docker start godot-dev && docker attach godot-dev`
+
+- ssh to VM(can be useful sometimes):
+ - `docker-machine ssh`
+
+Check docker and boot2docker projects for more details.
diff --git a/misc/dist/docker/scripts/install-android-tools b/misc/dist/docker/scripts/install-android-tools
new file mode 100644
index 0000000000..8a617d9942
--- /dev/null
+++ b/misc/dist/docker/scripts/install-android-tools
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+BASH_RC=~/.bashrc
+GODOT_BUILD_TOOLS_PATH=/godot-dev/build-tools
+mkdir -p $GODOT_BUILD_TOOLS_PATH
+cd $GODOT_BUILD_TOOLS_PATH
+
+ANDROID_BASE_URL=http://dl.google.com/android
+
+ANDROID_SDK_RELEASE=android-sdk_r24.4.1
+ANDROID_SDK_DIR=android-sdk-linux
+ANDROID_SDK_FILENAME=$ANDROID_SDK_RELEASE-linux.tgz
+ANDROID_SDK_URL=$ANDROID_BASE_URL/$ANDROID_SDK_FILENAME
+ANDROID_SDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_SDK_DIR
+ANDROID_SDK_SHA1=725bb360f0f7d04eaccff5a2d57abdd49061326d
+
+ANDROID_NDK_RELEASE=android-ndk-r10e
+ANDROID_NDK_DIR=$ANDROID_NDK_RELEASE
+ANDROID_NDK_FILENAME=$ANDROID_NDK_RELEASE-linux-x86_64.bin
+ANDROID_NDK_URL=$ANDROID_BASE_URL/ndk/$ANDROID_NDK_FILENAME
+ANDROID_NDK_PATH=$GODOT_BUILD_TOOLS_PATH/$ANDROID_NDK_DIR
+ANDROID_NDK_MD5=19af543b068bdb7f27787c2bc69aba7f
+
+echo
+echo "Download and install Android development tools ..."
+echo
+
+if [ ! -e $ANDROID_SDK_FILENAME ]; then
+ echo "Downloading: Android SDK ..."
+ wget $ANDROID_SDK_URL
+else
+ echo $ANDROID_SDK_SHA1 $ANDROID_SDK_FILENAME > $ANDROID_SDK_FILENAME.sha1
+ sha1sum --check --strict $ANDROID_SDK_FILENAME.sha1
+ if [ ! $? -eq 0 ]; then
+ echo "Downloading: Android SDK ..."
+ wget $ANDROID_SDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_SDK_DIR ]; then
+ tar -xvzf $ANDROID_SDK_FILENAME
+fi
+
+if [ ! -e $ANDROID_NDK_FILENAME ]; then
+ echo "Downloading: Android NDK ..."
+ wget $ANDROID_NDK_URL
+else
+ echo $ANDROID_NDK_MD5 $ANDROID_NDK_FILENAME > $ANDROID_NDK_FILENAME.md5
+ md5sum --check --strict $ANDROID_NDK_FILENAME.md5
+ if [ ! $? -eq 0 ]; then
+ echo "Downloading: Android NDK ..."
+ wget $ANDROID_NDK_URL
+ fi
+fi
+
+if [ ! -d $ANDROID_NDK_DIR ]; then
+ chmod a+x $ANDROID_NDK_FILENAME
+ ./$ANDROID_NDK_FILENAME
+ echo
+fi
+
+cd $ANDROID_SDK_DIR/tools
+chmod a+x android
+
+if ! ./android list target | grep -q 'android-19'; then
+ echo "Installing: Android Tools ..."
+ echo y | ./android update sdk --no-ui --all --filter "platform-tools,android-19,build-tools-19.1.0,\
+ extra-android-m2repository,extra-android-support,extra-google-google_play_services,extra-google-m2repository,\
+ extra-google-play_apk_expansion,extra-google-play_billing,extra-google-play_licensing"
+fi
+
+EXPORT_VAL="export ANDROID_HOME=$ANDROID_SDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> ~/.bashrc
+fi
+
+
+EXPORT_VAL="export ANDROID_NDK_ROOT=$ANDROID_NDK_PATH"
+if ! grep -q "^$EXPORT_VAL" $BASH_RC; then
+ echo $EXPORT_VAL >> ~/.bashrc
+fi
+
+EXPORT_VAL="export PATH=$PATH:$ANDROID_SDK_PATH/tools"
+if ! grep -q "^export PATH=.*$ANDROID_SDK_PATH/tools.*" $BASH_RC; then
+ echo $EXPORT_VAL >> ~/.bashrc
+fi
+
+echo
+echo "Done!"
+echo \ No newline at end of file
diff --git a/misc/dist/html_fs/godotfs.js b/misc/dist/html_fs/godotfs.js
new file mode 100644
index 0000000000..2c59344cf5
--- /dev/null
+++ b/misc/dist/html_fs/godotfs.js
@@ -0,0 +1,149 @@
+
+var Module;
+if (typeof Module === 'undefined') Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');
+if (!Module.expectedDataFileDownloads) {
+ Module.expectedDataFileDownloads = 0;
+ Module.finishedDataFileDownloads = 0;
+}
+Module.expectedDataFileDownloads++;
+(function() {
+
+ function fetchRemotePackage(packageName, callback, errback) {
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', packageName, true);
+ xhr.responseType = 'arraybuffer';
+ xhr.onprogress = function(event) {
+ var url = packageName;
+ if (event.loaded && event.total) {
+ if (!xhr.addedTotal) {
+ xhr.addedTotal = true;
+ if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
+ Module.dataFileDownloads[url] = {
+ loaded: event.loaded,
+ total: event.total
+ };
+ } else {
+ Module.dataFileDownloads[url].loaded = event.loaded;
+ }
+ var total = 0;
+ var loaded = 0;
+ var num = 0;
+ for (var download in Module.dataFileDownloads) {
+ var data = Module.dataFileDownloads[download];
+ total += data.total;
+ loaded += data.loaded;
+ num++;
+ }
+ total = Math.ceil(total * Module.expectedDataFileDownloads/num);
+ if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
+ } else if (!Module.dataFileDownloads) {
+ if (Module['setStatus']) Module['setStatus']('Downloading data...');
+ }
+ };
+ xhr.onload = function(event) {
+ var packageData = xhr.response;
+ callback(packageData);
+ };
+ xhr.send(null);
+ };
+
+ function handleError(error) {
+ console.error('package error:', error);
+ };
+
+ var fetched = null, fetchedCallback = null;
+ fetchRemotePackage('data.pck', function(data) {
+ if (fetchedCallback) {
+ fetchedCallback(data);
+ fetchedCallback = null;
+ } else {
+ fetched = data;
+ }
+ }, handleError);
+
+ function runWithFS() {
+
+function assert(check, msg) {
+ if (!check) throw msg + new Error().stack;
+}
+
+ function DataRequest(start, end, crunched, audio) {
+ this.start = start;
+ this.end = end;
+ this.crunched = crunched;
+ this.audio = audio;
+ }
+ DataRequest.prototype = {
+ requests: {},
+ open: function(mode, name) {
+ this.name = name;
+ this.requests[name] = this;
+ Module['addRunDependency']('fp ' + this.name);
+ },
+ send: function() {},
+ onload: function() {
+ var byteArray = this.byteArray.subarray(this.start, this.end);
+
+ this.finish(byteArray);
+
+ },
+ finish: function(byteArray) {
+ var that = this;
+ Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
+ Module['removeRunDependency']('fp ' + that.name);
+ }, function() {
+ if (that.audio) {
+ Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
+ } else {
+ Module.printErr('Preloading file ' + that.name + ' failed');
+ }
+ }, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
+ this.requests[this.name] = null;
+ },
+ };
+ new DataRequest(0, $DPLEN, 0, 0).open('GET', '/data.pck');
+
+ var PACKAGE_PATH;
+ if (typeof window === 'object') {
+ PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
+ } else {
+ // worker
+ PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
+ }
+ var PACKAGE_NAME = 'data.pck';
+ var REMOTE_PACKAGE_NAME = 'data.pck';
+ var PACKAGE_UUID = 'b39761ce-0348-4959-9b16-302ed8e1592e';
+
+ function processPackageData(arrayBuffer) {
+ Module.finishedDataFileDownloads++;
+ assert(arrayBuffer, 'Loading data file failed.');
+ var byteArray = new Uint8Array(arrayBuffer);
+ var curr;
+
+ // Reuse the bytearray from the XHR as the source for file reads.
+ DataRequest.prototype.byteArray = byteArray;
+ DataRequest.prototype.requests["/data.pck"].onload();
+ Module['removeRunDependency']('datafile_datapack');
+
+ };
+ Module['addRunDependency']('datafile_datapack');
+
+ if (!Module.preloadResults) Module.preloadResults = {};
+
+ Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
+ if (fetched) {
+ processPackageData(fetched);
+ fetched = null;
+ } else {
+ fetchedCallback = processPackageData;
+ }
+
+ }
+ if (Module['calledRun']) {
+ runWithFS();
+ } else {
+ if (!Module['preRun']) Module['preRun'] = [];
+ Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
+ }
+
+})();
diff --git a/misc/dist/ios_xcode/godot_xcode/data.pck b/misc/dist/ios_xcode/godot_xcode/data.pck
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/data.pck
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_debug.iphone b/misc/dist/ios_xcode/godot_xcode/godot_debug.iphone
new file mode 100755
index 0000000000..e69de29bb2
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_debug.iphone
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..bdba8488c8
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.pbxproj
@@ -0,0 +1,370 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D07CD43F1C5D573600B7FB28 /* Default-568h@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4331C5D573600B7FB28 /* Default-568h@2x~iphone.png */; };
+ D07CD4401C5D573600B7FB28 /* Default-667h.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4341C5D573600B7FB28 /* Default-667h.png */; };
+ D07CD4411C5D573600B7FB28 /* Default-667h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4351C5D573600B7FB28 /* Default-667h@2x.png */; };
+ D07CD4421C5D573600B7FB28 /* Default-736h.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4361C5D573600B7FB28 /* Default-736h.png */; };
+ D07CD4431C5D573600B7FB28 /* Default-736h@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4371C5D573600B7FB28 /* Default-736h@3x.png */; };
+ D07CD4441C5D573600B7FB28 /* Default-Landscape-736h.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4381C5D573600B7FB28 /* Default-Landscape-736h.png */; };
+ D07CD4451C5D573600B7FB28 /* Default-Landscape@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD4391C5D573600B7FB28 /* Default-Landscape@2x~ipad.png */; };
+ D07CD4461C5D573600B7FB28 /* Default-Landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD43A1C5D573600B7FB28 /* Default-Landscape~ipad.png */; };
+ D07CD4471C5D573600B7FB28 /* Default-Portrait@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD43B1C5D573600B7FB28 /* Default-Portrait@2x~ipad.png */; };
+ D07CD4481C5D573600B7FB28 /* Default-Portrait~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD43C1C5D573600B7FB28 /* Default-Portrait~ipad.png */; };
+ D07CD4491C5D573600B7FB28 /* Default@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD43D1C5D573600B7FB28 /* Default@2x~iphone.png */; };
+ D07CD44A1C5D573600B7FB28 /* Default~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D07CD43E1C5D573600B7FB28 /* Default~iphone.png */; };
+ D07CD44E1C5D589C00B7FB28 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D07CD44D1C5D589C00B7FB28 /* Images.xcassets */; };
+ D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */; };
+ D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */; };
+ D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */; };
+ D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */; };
+ D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */; };
+ D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */; };
+ D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7718AEBFEB004A7AAE /* data.pck */; };
+ D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */ = {isa = PBXBuildFile; fileRef = D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D07CD4331C5D573600B7FB28 /* Default-568h@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x~iphone.png"; sourceTree = "<group>"; };
+ D07CD4341C5D573600B7FB28 /* Default-667h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h.png"; sourceTree = "<group>"; };
+ D07CD4351C5D573600B7FB28 /* Default-667h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-667h@2x.png"; sourceTree = "<group>"; };
+ D07CD4361C5D573600B7FB28 /* Default-736h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h.png"; sourceTree = "<group>"; };
+ D07CD4371C5D573600B7FB28 /* Default-736h@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-736h@3x.png"; sourceTree = "<group>"; };
+ D07CD4381C5D573600B7FB28 /* Default-Landscape-736h.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape-736h.png"; sourceTree = "<group>"; };
+ D07CD4391C5D573600B7FB28 /* Default-Landscape@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape@2x~ipad.png"; sourceTree = "<group>"; };
+ D07CD43A1C5D573600B7FB28 /* Default-Landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape~ipad.png"; sourceTree = "<group>"; };
+ D07CD43B1C5D573600B7FB28 /* Default-Portrait@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait@2x~ipad.png"; sourceTree = "<group>"; };
+ D07CD43C1C5D573600B7FB28 /* Default-Portrait~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait~ipad.png"; sourceTree = "<group>"; };
+ D07CD43D1C5D573600B7FB28 /* Default@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x~iphone.png"; sourceTree = "<group>"; };
+ D07CD43E1C5D573600B7FB28 /* Default~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default~iphone.png"; sourceTree = "<group>"; };
+ D07CD44D1C5D589C00B7FB28 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
+ D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = godot_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; };
+ D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "godot_ios-Info.plist"; sourceTree = "<group>"; };
+ D0BCFE4518AEBDA2004A7AAE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+ D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "godot_ios-Prefix.pch"; sourceTree = "<group>"; };
+ D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
+ D0BCFE7718AEBFEB004A7AAE /* data.pck */ = {isa = PBXFileReference; lastKnownFileType = text; path = data.pck; sourceTree = "<group>"; };
+ D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = godot_opt.iphone; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0BCFE3118AEBDA2004A7AAE /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0BCFE4018AEBDA2004A7AAE /* OpenGLES.framework in Frameworks */,
+ D0BCFE3A18AEBDA2004A7AAE /* CoreGraphics.framework in Frameworks */,
+ D0BCFE3C18AEBDA2004A7AAE /* UIKit.framework in Frameworks */,
+ D0BCFE3E18AEBDA2004A7AAE /* GLKit.framework in Frameworks */,
+ D0BCFE3818AEBDA2004A7AAE /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0BCFE2B18AEBDA2004A7AAE = {
+ isa = PBXGroup;
+ children = (
+ D0BCFE7918AEC06A004A7AAE /* godot_opt.iphone */,
+ D0BCFE7718AEBFEB004A7AAE /* data.pck */,
+ D0BCFE4118AEBDA2004A7AAE /* godot_ios */,
+ D0BCFE3618AEBDA2004A7AAE /* Frameworks */,
+ D0BCFE3518AEBDA2004A7AAE /* Products */,
+ );
+ sourceTree = "<group>";
+ };
+ D0BCFE3518AEBDA2004A7AAE /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ D0BCFE3618AEBDA2004A7AAE /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0BCFE3718AEBDA2004A7AAE /* Foundation.framework */,
+ D0BCFE3918AEBDA2004A7AAE /* CoreGraphics.framework */,
+ D0BCFE3B18AEBDA2004A7AAE /* UIKit.framework */,
+ D0BCFE3D18AEBDA2004A7AAE /* GLKit.framework */,
+ D0BCFE3F18AEBDA2004A7AAE /* OpenGLES.framework */,
+ D0BCFE6118AEBDA3004A7AAE /* XCTest.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ D0BCFE4118AEBDA2004A7AAE /* godot_ios */ = {
+ isa = PBXGroup;
+ children = (
+ D07CD4331C5D573600B7FB28 /* Default-568h@2x~iphone.png */,
+ D07CD4341C5D573600B7FB28 /* Default-667h.png */,
+ D07CD4351C5D573600B7FB28 /* Default-667h@2x.png */,
+ D07CD4361C5D573600B7FB28 /* Default-736h.png */,
+ D07CD4371C5D573600B7FB28 /* Default-736h@3x.png */,
+ D07CD4381C5D573600B7FB28 /* Default-Landscape-736h.png */,
+ D07CD4391C5D573600B7FB28 /* Default-Landscape@2x~ipad.png */,
+ D07CD43A1C5D573600B7FB28 /* Default-Landscape~ipad.png */,
+ D07CD43B1C5D573600B7FB28 /* Default-Portrait@2x~ipad.png */,
+ D07CD43C1C5D573600B7FB28 /* Default-Portrait~ipad.png */,
+ D07CD43D1C5D573600B7FB28 /* Default@2x~iphone.png */,
+ D07CD43E1C5D573600B7FB28 /* Default~iphone.png */,
+ D07CD44D1C5D589C00B7FB28 /* Images.xcassets */,
+ D0BCFE4218AEBDA2004A7AAE /* Supporting Files */,
+ );
+ path = godot_ios;
+ sourceTree = "<group>";
+ };
+ D0BCFE4218AEBDA2004A7AAE /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ D0BCFE4318AEBDA2004A7AAE /* godot_ios-Info.plist */,
+ D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */,
+ D0BCFE4918AEBDA2004A7AAE /* godot_ios-Prefix.pch */,
+ );
+ name = "Supporting Files";
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ D0BCFE3318AEBDA2004A7AAE /* godot_ios */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */;
+ buildPhases = (
+ D0BCFE3018AEBDA2004A7AAE /* Sources */,
+ D0BCFE3118AEBDA2004A7AAE /* Frameworks */,
+ D0BCFE3218AEBDA2004A7AAE /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = godot_ios;
+ productName = godot_ios;
+ productReference = D0BCFE3418AEBDA2004A7AAE /* godot_ios.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0BCFE2C18AEBDA2004A7AAE /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0500;
+ ORGANIZATIONNAME = GodotEngine;
+ };
+ buildConfigurationList = D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = D0BCFE2B18AEBDA2004A7AAE;
+ productRefGroup = D0BCFE3518AEBDA2004A7AAE /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0BCFE3318AEBDA2004A7AAE /* godot_ios */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0BCFE3218AEBDA2004A7AAE /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D07CD4471C5D573600B7FB28 /* Default-Portrait@2x~ipad.png in Resources */,
+ D07CD44E1C5D589C00B7FB28 /* Images.xcassets in Resources */,
+ D0BCFE7818AEBFEB004A7AAE /* data.pck in Resources */,
+ D07CD4461C5D573600B7FB28 /* Default-Landscape~ipad.png in Resources */,
+ D07CD4411C5D573600B7FB28 /* Default-667h@2x.png in Resources */,
+ D07CD4401C5D573600B7FB28 /* Default-667h.png in Resources */,
+ D07CD4431C5D573600B7FB28 /* Default-736h@3x.png in Resources */,
+ D07CD43F1C5D573600B7FB28 /* Default-568h@2x~iphone.png in Resources */,
+ D07CD4451C5D573600B7FB28 /* Default-Landscape@2x~ipad.png in Resources */,
+ D07CD44A1C5D573600B7FB28 /* Default~iphone.png in Resources */,
+ D07CD4491C5D573600B7FB28 /* Default@2x~iphone.png in Resources */,
+ D07CD4441C5D573600B7FB28 /* Default-Landscape-736h.png in Resources */,
+ D07CD4421C5D573600B7FB28 /* Default-736h.png in Resources */,
+ D0BCFE4618AEBDA2004A7AAE /* InfoPlist.strings in Resources */,
+ D0BCFE7A18AEC06A004A7AAE /* godot_opt.iphone in Resources */,
+ D07CD4481C5D573600B7FB28 /* Default-Portrait~ipad.png in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0BCFE3018AEBDA2004A7AAE /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+ D0BCFE4418AEBDA2004A7AAE /* InfoPlist.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ D0BCFE4518AEBDA2004A7AAE /* en */,
+ );
+ name = InfoPlist.strings;
+ sourceTree = "<group>";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ D0BCFE6F18AEBDA3004A7AAE /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ D0BCFE7018AEBDA3004A7AAE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)";
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 7.0;
+ SDKROOT = iphoneos;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ D0BCFE7218AEBDA3004A7AAE /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD)";
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
+ INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+ PRODUCT_BUNDLE_IDENTIFIER = org.godotengine.game.ios;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALID_ARCHS = "armv7 armv7s";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Debug;
+ };
+ D0BCFE7318AEBDA3004A7AAE /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = "$(ARCHS_STANDARD)";
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "iPhone Distribution: Ariel Manzur (BYC57PA2Q5)";
+ CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = "godot_ios/godot_ios-Prefix.pch";
+ INFOPLIST_FILE = "godot_ios/godot_ios-Info.plist";
+ IPHONEOS_DEPLOYMENT_TARGET = 6.0;
+ PRODUCT_BUNDLE_IDENTIFIER = org.godotengine.game.ios;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TARGETED_DEVICE_FAMILY = "1,2";
+ VALID_ARCHS = "armv7 armv7s";
+ WRAPPER_EXTENSION = app;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0BCFE2F18AEBDA2004A7AAE /* Build configuration list for PBXProject "godot_ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0BCFE6F18AEBDA3004A7AAE /* Debug */,
+ D0BCFE7018AEBDA3004A7AAE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ D0BCFE7118AEBDA3004A7AAE /* Build configuration list for PBXNativeTarget "godot_ios" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0BCFE7218AEBDA3004A7AAE /* Debug */,
+ D0BCFE7318AEBDA3004A7AAE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0BCFE2C18AEBDA2004A7AAE /* Project object */;
+}
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000000..3c9ba38bbe
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+ version = "1.0">
+ <FileRef
+ location = "self:godot_ios.xcodeproj">
+ </FileRef>
+</Workspace>
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png
new file mode 100644
index 0000000000..1d5e472665
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-568h@2x~iphone.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png
new file mode 100644
index 0000000000..b13a399c83
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png
new file mode 100644
index 0000000000..b51598fed0
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-667h@2x.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png
new file mode 100644
index 0000000000..8c44edbccd
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png
new file mode 100644
index 0000000000..33847ac136
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-736h@3x.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png
new file mode 100644
index 0000000000..2a025b745b
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape-736h.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png
new file mode 100644
index 0000000000..7099f3e18d
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape@2x~ipad.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png
new file mode 100644
index 0000000000..4a761c339a
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Landscape~ipad.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png
new file mode 100644
index 0000000000..b09cf21186
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait@2x~ipad.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png
new file mode 100644
index 0000000000..fa698eb70c
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default-Portrait~ipad.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png
new file mode 100644
index 0000000000..ddf2861f4d
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default@2x~iphone.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png
new file mode 100644
index 0000000000..c485a33b03
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Default~iphone.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..a458b67873
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,128 @@
+{
+ "images" : [
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "1x",
+ "filename": "Icon-29.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "2x",
+ "filename": "Icon-58.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "29x29",
+ "scale" : "3x",
+ "filename": "icon-87.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "2x",
+ "filename": "Icon-80.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "40x40",
+ "scale" : "3x",
+ "filename": "Icon-120.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "57x57",
+ "scale" : "1x",
+ "filename": "Icon-57.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "57x57",
+ "scale" : "2x",
+ "filename": "Icon-114.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "2x",
+ "filename": "Icon-120.png",
+ },
+ {
+ "idiom" : "iphone",
+ "size" : "60x60",
+ "scale" : "3x",
+ "filename": "Icon-180.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "1x",
+ "filename": "Icon-29.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "29x29",
+ "scale" : "2x",
+ "filename": "Icon-58.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "1x",
+ "filename": "Icon-40.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "40x40",
+ "scale" : "2x",
+ "filename": "Icon-80.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "50x50",
+ "scale" : "1x",
+ "filename": "Icon-50.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "50x50",
+ "scale" : "2x",
+ "filename": "Icon-100.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "72x72",
+ "scale" : "1x",
+ "filename": "Icon-72.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "72x72",
+ "scale" : "2x",
+ "filename": "Icon-144.png",
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76.png",
+ "scale" : "1x",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "76x76",
+ "scale" : "2x",
+ "filename": "Icon-152.png",
+ },
+ {
+ "idiom" : "ipad",
+ "size" : "83.5x83.5",
+ "scale" : "2x",
+ "filename": "icon-167.png",
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png
new file mode 100644
index 0000000000..165f4423b3
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-100.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png
new file mode 100644
index 0000000000..2e205e920c
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-114.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png
new file mode 100644
index 0000000000..6245f83f48
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-120.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png
new file mode 100644
index 0000000000..7b24e01bc6
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-144.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png
new file mode 100644
index 0000000000..344b470fa3
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-152.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png
new file mode 100644
index 0000000000..0dcebbc3f2
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-180.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
new file mode 100644
index 0000000000..9ae94e9aaf
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
new file mode 100644
index 0000000000..569f24df91
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
new file mode 100644
index 0000000000..9e69ed3121
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
new file mode 100644
index 0000000000..b970fa3067
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png
new file mode 100644
index 0000000000..6097a6c73b
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-58.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png
new file mode 100644
index 0000000000..21b9622eb6
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-60.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
new file mode 100644
index 0000000000..34dea8e6ad
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
new file mode 100644
index 0000000000..f72eb0b345
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png
new file mode 100644
index 0000000000..793c9b1f5f
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/Icon-80.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png
new file mode 100644
index 0000000000..7cd0e054ab
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-167.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png
new file mode 100644
index 0000000000..e9b2429754
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/icon-87.png
Binary files differ
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes
new file mode 100644
index 0000000000..e328a62cb6
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/Images.xcassets/AppIcon.appiconset/sizes
@@ -0,0 +1,17 @@
+100
+114
+120
+144
+152
+167
+180
+29
+40
+50
+57
+58
+60
+72
+76
+80
+87
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings b/misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings
new file mode 100644
index 0000000000..477b28ff8f
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/en.lproj/InfoPlist.strings
@@ -0,0 +1,2 @@
+/* Localized versions of Info.plist keys */
+
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist b/misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist
new file mode 100644
index 0000000000..f97b0fca36
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/godot_ios-Info.plist
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>en</string>
+ <key>CFBundleDisplayName</key>
+ <string>Insert Name Here</string>
+ <key>CFBundleExecutable</key>
+ <string>godot_opt.iphone</string>
+ <key>CFBundleIcons</key>
+ <dict/>
+ <key>CFBundleIcons~ipad</key>
+ <dict/>
+ <key>CFBundleIdentifier</key>
+ <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1.0</string>
+ <key>CFBundleSignature</key>
+ <string>????</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>LSRequiresIPhoneOS</key>
+ <true/>
+ <key>UIRequiredDeviceCapabilities</key>
+ <array>
+ <string>armv7</string>
+ </array>
+ <key>UIRequiresFullScreen</key>
+ <true/>
+ <key>UIStatusBarHidden</key>
+ <true/>
+ <key>UISupportedInterfaceOrientations</key>
+ <array>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+ <key>UISupportedInterfaceOrientations~ipad</key>
+ <array>
+ <string>UIInterfaceOrientationLandscapeLeft</string>
+ <string>UIInterfaceOrientationLandscapeRight</string>
+ </array>
+</dict>
+</plist>
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_ios/main.m b/misc/dist/ios_xcode/godot_xcode/godot_ios/main.m
new file mode 100644
index 0000000000..88b8e60670
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_ios/main.m
@@ -0,0 +1,39 @@
+/*************************************************************************/
+/* main.m */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#import <UIKit/UIKit.h>
+
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[])
+{
+ @autoreleasepool {
+ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+ }
+}
diff --git a/misc/dist/ios_xcode/godot_xcode/godot_opt.iphone b/misc/dist/ios_xcode/godot_xcode/godot_opt.iphone
new file mode 100755
index 0000000000..e69de29bb2
--- /dev/null
+++ b/misc/dist/ios_xcode/godot_xcode/godot_opt.iphone
diff --git a/misc/dist/osx_template.app/Contents/Info.plist b/misc/dist/osx_template.app/Contents/Info.plist
new file mode 100755
index 0000000000..eee787bdaf
--- /dev/null
+++ b/misc/dist/osx_template.app/Contents/Info.plist
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>$binary</string>
+ <key>CFBundleName</key>
+ <string>$name</string>
+ <key>CFBundleGetInfoString</key>
+ <string>$info</string>
+ <key>CFBundleIconFile</key>
+ <string>icon.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>$identifier</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>$short_version</string>
+ <key>CFBundleSignature</key>
+ <string>$signature</string>
+ <key>CFBundleVersion</key>
+ <string>$version</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>$copyright</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.9.0</string>
+ <key>LSMinimumSystemVersionByArchitecture</key>
+ <dict>
+ <key>x86_64</key>
+ <string>10.9.0</string>
+ </dict>
+ <key>NSHighResolutionCapable</key>
+ $highres
+</dict>
+</plist> \ No newline at end of file
diff --git a/misc/dist/osx_template.app/Contents/PkgInfo b/misc/dist/osx_template.app/Contents/PkgInfo
new file mode 100644
index 0000000000..6f749b0f37
--- /dev/null
+++ b/misc/dist/osx_template.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL????
diff --git a/misc/dist/osx_template.app/Contents/Resources/icon.icns b/misc/dist/osx_template.app/Contents/Resources/icon.icns
new file mode 100644
index 0000000000..375f61437d
--- /dev/null
+++ b/misc/dist/osx_template.app/Contents/Resources/icon.icns
Binary files differ
diff --git a/misc/dist/osx_tools.app/Contents/Info.plist b/misc/dist/osx_tools.app/Contents/Info.plist
new file mode 100755
index 0000000000..4d88e97503
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Info.plist
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>Godot</string>
+ <key>CFBundleName</key>
+ <string>Godot</string>
+ <key>CFBundleGetInfoString</key>
+ <string>(c) 2007-2017 Juan Linietsky, Ariel Manzur</string>
+ <key>CFBundleIconFile</key>
+ <string>Godot.icns</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.godotengine.godot</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>2.2-dev</string>
+ <key>CFBundleSignature</key>
+ <string>godot</string>
+ <key>CFBundleVersion</key>
+ <string>2.2-dev</string>
+ <key>NSHumanReadableCopyright</key>
+ <string>© 2007-2017 Juan Linietsky, Ariel Manzur</string>
+ <key>LSMinimumSystemVersion</key>
+ <string>10.9.0</string>
+ <key>LSMinimumSystemVersionByArchitecture</key>
+ <dict>
+ <key>x86_64</key>
+ <string>10.9.0</string>
+ </dict>
+ <key>NSHighResolutionCapable</key>
+ <true/>
+ <key>CFBundleDocumentTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleTypeExtensions</key>
+ <array>
+ <string>scn</string>
+ <string>SCN</string>
+ </array>
+ <key>CFBundleTypeIconFile</key>
+ <string>Godot.icns</string>
+ <key>CFBundleTypeMIMETypes</key>
+ <array>
+ <string>scene/x-scn</string>
+ </array>
+ <key>CFBundleTypeName</key>
+ <string>Godot Scene</string>
+ <key>CFBundleTypeOSTypes</key>
+ <array>
+ <string>SCN </string>
+ </array>
+ <key>CFBundleTypeRole</key>
+ <string>Editor</string>
+ <key>LSIsAppleDefaultForType</key>
+ <true/>
+ <key>LSItemContentTypes</key>
+ <array>
+ <string>org.godotengine.scn</string>
+ </array>
+ </dict>
+ </array>
+</dict>
+</plist>
diff --git a/misc/dist/osx_tools.app/Contents/PkgInfo b/misc/dist/osx_tools.app/Contents/PkgInfo
new file mode 100644
index 0000000000..6f749b0f37
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL????
diff --git a/misc/dist/osx_tools.app/Contents/Resources/Godot.icns b/misc/dist/osx_tools.app/Contents/Resources/Godot.icns
new file mode 100644
index 0000000000..375f61437d
--- /dev/null
+++ b/misc/dist/osx_tools.app/Contents/Resources/Godot.icns
Binary files differ
diff --git a/misc/dist/uwp_template/AppxManifest.xml b/misc/dist/uwp_template/AppxManifest.xml
new file mode 100644
index 0000000000..d5e653708c
--- /dev/null
+++ b/misc/dist/uwp_template/AppxManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp build" xmlns:build="http://schemas.microsoft.com/developer/appx/2015/build">
+ <Identity Name="$identity_name$" Publisher="$publisher$" Version="$version_string$" ProcessorArchitecture="$architecture$" />
+ <mp:PhoneIdentity PhoneProductId="$product_guid$" PhonePublisherId="$publisher_guid$" />
+ <Properties>
+ <DisplayName>$display_name$</DisplayName>
+ <PublisherDisplayName>$publisher_display_name$</PublisherDisplayName>
+ <Logo>Assets\StoreLogo.png</Logo>
+ </Properties>
+ <Dependencies>
+ <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.14393.0" />
+ <PackageDependency Name="Microsoft.VCLibs.140.00" MinVersion="14.0.24123.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
+ </Dependencies>
+ <Resources>
+ <Resource Language="EN-US" />
+ </Resources>
+ <Applications>
+ <Application Id="App" Executable="godot.uwp.exe" EntryPoint="GodotUWP.App">
+ <uap:VisualElements DisplayName="$display_name$" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="$app_description$" BackgroundColor="$bg_color$">
+ <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square310x310Logo="Assets\Square310x310Logo.png" Square71x71Logo="Assets\Square71x71Logo.png" ShortName="$short_name$">
+ $name_on_tiles$
+ </uap:DefaultTile>
+ <uap:SplashScreen Image="Assets\SplashScreen.png" />
+ $rotation_preference$
+ </uap:VisualElements>
+ </Application>
+ </Applications>
+ $capabilities_place$
+ <build:Metadata>
+ <build:Item Name="GodotEngine" Version="$godot_version$" />
+ </build:Metadata>
+</Package> \ No newline at end of file
diff --git a/misc/dist/uwp_template/Assets/SplashScreen.scale-100.png b/misc/dist/uwp_template/Assets/SplashScreen.scale-100.png
new file mode 100644
index 0000000000..540bfb1c01
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/SplashScreen.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png
new file mode 100644
index 0000000000..6cff663eb5
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/Square150x150Logo.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png
new file mode 100644
index 0000000000..12ec232c87
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/Square310x310Logo.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png
new file mode 100644
index 0000000000..ad059994ed
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/Square44x44Logo.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png b/misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png
new file mode 100644
index 0000000000..b1bf331365
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/Square71x71Logo.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/StoreLogo.scale-100.png b/misc/dist/uwp_template/Assets/StoreLogo.scale-100.png
new file mode 100644
index 0000000000..8d7a625c82
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/StoreLogo.scale-100.png
Binary files differ
diff --git a/misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png b/misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png
new file mode 100644
index 0000000000..b06f1ad50f
--- /dev/null
+++ b/misc/dist/uwp_template/Assets/Wide310x150Logo.scale-100.png
Binary files differ
diff --git a/misc/scripts/addheader.py b/misc/scripts/addheader.py
new file mode 100644
index 0000000000..056e807c81
--- /dev/null
+++ b/misc/scripts/addheader.py
@@ -0,0 +1,70 @@
+header = """\
+/*************************************************************************/
+/* $filename */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+"""
+
+f = open("files", "rb")
+
+fname = f.readline()
+while (fname != ""):
+
+ fr = open(fname.strip(), "rb")
+ l = fr.readline()
+ bc = False
+ fsingle = fname.strip()
+
+ if (fsingle.find("/") != -1):
+ fsingle = fsingle[fsingle.rfind("/") + 1:]
+ rep_fl = "$filename"
+ rep_fi = fsingle
+ len_fl = len(rep_fl)
+ len_fi = len(rep_fi)
+ if (len_fi < len_fl):
+ for x in range(len_fl - len_fi):
+ rep_fi += " "
+ elif (len_fl < len_fi):
+ for x in range(len_fi - len_fl):
+ rep_fl += " "
+ if (header.find(rep_fl) != -1):
+ text = header.replace(rep_fl, rep_fi)
+ else:
+ text = header.replace("$filename", fsingle)
+
+ while (l != ""):
+ if ((l.find("//") != 0 and l.find("/*") != 0 and l.strip() != "") or bc):
+ text += l
+ bc = True
+ l = fr.readline()
+
+ fr.close()
+ fr = open(fname.strip(), "wb")
+ fr.write(text)
+ fr.close()
+ # print(text)
+ fname = f.readline()
diff --git a/misc/scripts/file-hex-array.py b/misc/scripts/file-hex-array.py
new file mode 100755
index 0000000000..a6cdfe541f
--- /dev/null
+++ b/misc/scripts/file-hex-array.py
@@ -0,0 +1,56 @@
+import binascii
+import os.path
+import sys
+
+
+def tof(filepath):
+ with open(filepath, 'r') as f:
+ content = f.read()
+ content = content.replace("0x", "")
+ content = content.split(',')
+ for i in range(len(content)):
+ if len(content[i]) == 1:
+ content[i] = "0" + content[i]
+ content = "".join(content)
+ with open(filepath + ".file", 'wb') as f:
+ content = f.write(content.decode("hex"))
+ print(os.path.basename(filepath) + ".file created.")
+ exit(0)
+
+
+def toa(filepath):
+ with open(filepath, 'rb') as f:
+ content = f.read()
+ content = binascii.hexlify(content)
+ content = [content[i:i + 2] for i in range(0, len(content), 2)]
+ content = ",0x".join(content)
+ content = "0x" + content
+ content = content.replace("0x00", "0x0")
+ with open(filepath + ".array", 'w') as f:
+ content = f.write(content)
+ print(os.path.basename(filepath) + ".array created.")
+ exit(0)
+
+
+def usage():
+ print("========================================================\n\
+#\n\
+# Usage: python file-hex-array.py [action] [option]\n\
+#\n\
+# Arguments:\n\
+# action ==> toa # convert file to array [option is file path]\n\
+# tof # convert array to file [option is array file path]\n\
+#\n\
+# Example : python file-hex-array.py toa 1.png\n\
+#\n\
+========================================================")
+ exit(1)
+
+if len(sys.argv) != 3:
+ usage()
+if sys.argv[1] == "toa" and os.path.isfile(sys.argv[2]):
+ toa(sys.argv[2])
+elif sys.argv[1] == "tof" and os.path.isfile(sys.argv[2]):
+ tof(sys.argv[2])
+else:
+ usage()
diff --git a/misc/scripts/make_bmfhdr.py b/misc/scripts/make_bmfhdr.py
new file mode 100644
index 0000000000..1d3c40f9c6
--- /dev/null
+++ b/misc/scripts/make_bmfhdr.py
@@ -0,0 +1,67 @@
+
+
+import sys
+
+if (len(sys.argv) != 2):
+ print("Pass me a .fnt argument!")
+
+f = open(sys.argv[1], "rb")
+
+name = sys.argv[1].lower().replace(".fnt", "")
+
+l = f.readline()
+
+font_height = 0
+font_ascent = 0
+font_charcount = 0
+font_chars = []
+font_cc = 0
+
+while(l != ""):
+
+ fs = l.strip().find(" ")
+ if (fs == -1):
+ l = f.readline()
+ continue
+ t = l[0:fs]
+
+ dv = l[fs + 1:].split(" ")
+ d = {}
+ for x in dv:
+ if (x.find("=") == -1):
+ continue
+ s = x.split("=")
+ d[s[0]] = s[1]
+
+ if (t == "common"):
+ font_height = d["lineHeight"]
+ font_ascent = d["base"]
+
+ if (t == "char"):
+ font_chars.append(d["id"])
+ font_chars.append(d["x"])
+ font_chars.append(d["y"])
+ font_chars.append(d["width"])
+ font_chars.append(d["height"])
+ font_chars.append(d["xoffset"])
+ font_chars.append(d["yoffset"])
+ font_chars.append(d["xadvance"])
+ font_cc += 1
+
+ l = f.readline()
+
+
+print("static const int _bi_font_" + name + "_height=" + str(font_height) + ";")
+print("static const int _bi_font_" + name + "_ascent=" + str(font_ascent) + ";")
+print("static const int _bi_font_" + name + "_charcount=" + str(font_cc) + ";")
+cstr = "static const int _bi_font_" + name + "_characters={"
+for i in range(len(font_chars)):
+
+ c = font_chars[i]
+ if (i > 0):
+ cstr += ", "
+ cstr += c
+
+cstr += ("};")
+
+print(cstr)
diff --git a/misc/scripts/make_glwrapper.py b/misc/scripts/make_glwrapper.py
new file mode 100644
index 0000000000..5694d2327e
--- /dev/null
+++ b/misc/scripts/make_glwrapper.py
@@ -0,0 +1,178 @@
+#! /usr/bin/env python
+import sys
+
+if (len(sys.argv) < 2):
+ print("usage: make_glwrapper.py <headers>")
+ sys.exit(255)
+
+
+functions = []
+types = []
+constants = []
+
+READ_FUNCTIONS = 0
+READ_TYPES = 1
+READ_CONSTANTS = 2
+
+read_what = READ_TYPES
+
+for x in (range(len(sys.argv) - 1)):
+ f = open(sys.argv[x + 1], "r")
+
+ while(True):
+
+ line = f.readline()
+ if (line == ""):
+ break
+
+ line = line.replace("\n", "").strip()
+ """
+ if (line.find("[types]")!=-1):
+ read_what=READ_TYPES
+ continue
+ elif (line.find("[constants]")!=-1):
+ read=READ_TYPES
+ continue
+ elif (line.find("[functions]")!=-1):
+ read_what=READ_FUNCTIONS
+ continue
+ """
+
+ if (line.find("#define") != -1):
+ if (line.find("0x") == -1 and line.find("GL_VERSION") == -1):
+ continue
+ constants.append(line)
+ elif (line.find("typedef") != -1):
+ if (line.find("(") != -1 or line.find(")") != -1 or line.find("ARB") != -1 or line.find("EXT") != -1 or line.find("GL") == -1):
+ continue
+ types.append(line)
+ elif (line.find("APIENTRY") != -1 and line.find("GLAPI") != -1):
+
+ if (line.find("ARB") != -1 or line.find("EXT") != -1 or line.find("NV") != -1):
+ continue
+
+ line = line.replace("APIENTRY", "")
+ line = line.replace("GLAPI", "")
+
+ glpos = line.find(" gl")
+ if (glpos == -1):
+
+ glpos = line.find("\tgl")
+ if (glpos == -1):
+ continue
+
+ ret = line[:glpos].strip()
+
+ line = line[glpos:].strip()
+ namepos = line.find("(")
+
+ if (namepos == -1):
+ continue
+
+ name = line[:namepos].strip()
+ line = line[namepos:]
+
+ argpos = line.rfind(")")
+ if (argpos == -1):
+ continue
+
+ args = line[1:argpos]
+
+ funcdata = {}
+ funcdata["ret"] = ret
+ funcdata["name"] = name
+ funcdata["args"] = args
+
+ functions.append(funcdata)
+ print(funcdata)
+
+
+# print(types)
+# print(constants)
+# print(functions)
+
+
+f = open("glwrapper.h", "w")
+
+f.write("#ifndef GL_WRAPPER\n")
+f.write("#define GL_WRAPPER\n\n\n")
+
+header_code = """\
+#if defined(__gl_h_) || defined(__GL_H__)
+#error gl.h included before glwrapper.h
+#endif
+#if defined(__glext_h_) || defined(__GLEXT_H_)
+#error glext.h included before glwrapper.h
+#endif
+#if defined(__gl_ATI_h_)
+#error glATI.h included before glwrapper.h
+#endif
+
+#define __gl_h_
+#define __GL_H__
+#define __glext_h_
+#define __GLEXT_H_
+#define __gl_ATI_h_
+
+#define GL_TRUE 1
+#define GL_FALSE 0
+
+#define GL_ZERO 0
+#define GL_ONE 1
+#define GL_NONE 0
+#define GL_NO_ERROR 0
+
+\n\n
+"""
+
+f.write("#include <stddef.h>\n\n\n")
+
+f.write(header_code)
+
+f.write("#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n")
+f.write("#if defined(_WIN32) && !defined(__CYGWIN__)\n")
+f.write("#define GLWRP_APIENTRY __stdcall\n")
+f.write("#else\n")
+f.write("#define GLWRP_APIENTRY \n")
+f.write("#endif\n\n")
+for x in types:
+ f.write(x + "\n")
+
+f.write("\n\n")
+
+for x in constants:
+ f.write(x + "\n")
+
+f.write("\n\n")
+
+for x in functions:
+ f.write("extern " + x["ret"] + " GLWRP_APIENTRY (*__wrapper_" + x["name"] + ")(" + x["args"] + ");\n")
+ f.write("#define " + x["name"] + " __wrapper_" + x["name"] + "\n")
+
+f.write("\n\n")
+f.write("typedef void (*GLWrapperFuncPtr)(void);\n\n")
+f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) );\n")
+
+f.write("#ifdef __cplusplus\n}\n#endif\n")
+
+f.write("#endif\n\n")
+
+f = open("glwrapper.c", "w")
+
+f.write("\n\n")
+f.write("#include \"glwrapper.h\"\n")
+f.write("\n\n")
+
+for x in functions:
+ f.write(x["ret"] + " GLWRP_APIENTRY (*__wrapper_" + x["name"] + ")(" + x["args"] + ")=NULL;\n")
+
+f.write("\n\n")
+f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) ) {\n")
+f.write("\n")
+
+for x in functions:
+ f.write("\t__wrapper_" + x["name"] + "=(" + x["ret"] + " GLWRP_APIENTRY (*)(" + x["args"] + "))wrapperFunc(\"" + x["name"] + "\");\n")
+
+f.write("\n\n")
+f.write("}\n")
+f.write("\n\n")
diff --git a/misc/scripts/make_icons.sh b/misc/scripts/make_icons.sh
new file mode 100644
index 0000000000..71037cd1c3
--- /dev/null
+++ b/misc/scripts/make_icons.sh
@@ -0,0 +1,5 @@
+convert -resize 32x32 ../../icon.svg icon32.ico
+convert -resize 32x32 ../../icon.svg icon32.icns
+for s in 16 24 32 64 96 128 256; do convert -resize ${s}x$s ../../icon.svg icon$s.png; done
+zip icons.zip icon*.png
+rm icon*.png
diff --git a/misc/scripts/makeargs.py b/misc/scripts/makeargs.py
new file mode 100644
index 0000000000..2cd47ae087
--- /dev/null
+++ b/misc/scripts/makeargs.py
@@ -0,0 +1,82 @@
+
+text = """
+#define FUNC$numR(m_r,m_func,$argt)\\
+ virtual m_r m_func($argtp) { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ m_r ret;\\
+ command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\
+ return ret;\\
+ } else {\\
+ return visual_server->m_func($argp);\\
+ }\\
+ }
+
+#define FUNC$numRC(m_r,m_func,$argt)\\
+ virtual m_r m_func($argtp) const { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ m_r ret;\\
+ command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\
+ return ret;\\
+ } else {\\
+ return visual_server->m_func($argp);\\
+ }\\
+ }
+
+
+#define FUNC$numS(m_func,$argt)\\
+ virtual void m_func($argtp) { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\
+ } else {\\
+ visual_server->m_func($argp);\\
+ }\\
+ }
+
+#define FUNC$numSC(m_func,$argt)\\
+ virtual void m_func($argtp) const { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\
+ } else {\\
+ visual_server->m_func($argp);\\
+ }\\
+ }
+
+
+#define FUNC$num(m_func,$argt)\\
+ virtual void m_func($argtp) { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ command_queue.push( visual_server, &VisualServer::m_func,$argp);\\
+ } else {\\
+ visual_server->m_func($argp);\\
+ }\\
+ }
+
+#define FUNC$numC(m_func,$argt)\\
+ virtual void m_func($argtp) const { \\
+ if (Thread::get_caller_ID()!=server_thread) {\\
+ command_queue.push( visual_server, &VisualServer::m_func,$argp);\\
+ } else {\\
+ visual_server->m_func($argp);\\
+ }\\
+ }
+
+
+"""
+
+
+for i in range(1, 8):
+
+ tp = ""
+ p = ""
+ t = ""
+ for j in range(i):
+ if (j > 0):
+ tp += ", "
+ p += ", "
+ t += ", "
+ tp += ("m_arg" + str(j + 1) + " p" + str(j + 1))
+ p += ("p" + str(j + 1))
+ t += ("m_arg" + str(j + 1))
+
+ t = text.replace("$argtp", tp).replace("$argp", p).replace("$argt", t).replace("$num", str(i))
+ print(t)
diff --git a/misc/scripts/memsort.py b/misc/scripts/memsort.py
new file mode 100644
index 0000000000..fb636b0f78
--- /dev/null
+++ b/misc/scripts/memsort.py
@@ -0,0 +1,35 @@
+
+import sys
+
+arg = "memdump.txt"
+
+if (len(sys.argv) > 1):
+ arg = sys.argv[1]
+
+f = open(arg, "rb")
+
+
+l = f.readline()
+
+
+sum = {}
+cnt = {}
+
+
+while(l != ""):
+
+ s = l.split("-")
+ amount = int(s[1])
+ what = s[2]
+ if (what in sum):
+ sum[what] += amount
+ cnt[what] += 1
+ else:
+ sum[what] = amount
+ cnt[what] = 1
+
+ l = f.readline()
+
+
+for x in sum:
+ print(x.strip() + "(" + str(cnt[x]) + "):\n: " + str(sum[x]))
diff --git a/misc/scripts/sort-demos.sh b/misc/scripts/sort-demos.sh
new file mode 100644
index 0000000000..2121d78c15
--- /dev/null
+++ b/misc/scripts/sort-demos.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# When scanning for demos, the project manager sorts them based on their
+# timestamp, i.e. last modification date. This can make for a pretty
+# messy output, so this script 'touches' each godot.cfg file in reverse
+# alphabetical order to ensure a nice listing.
+#
+# It's good practice to run it once before packaging demos on the build
+# server.
+
+if [ ! -d "demos" ]; then
+ echo "Run this script from the root directory where 'demos/' is contained."
+ exit 1
+fi
+
+if [ -e demos.list ]; then
+ rm -f demos.list
+fi
+
+for dir in 2d 3d gui misc viewport; do
+ find "demos/$dir" -name "godot.cfg" |sort >> demos.list
+done
+cat demos.list |sort -r > demos_r.list
+
+while read line; do
+ touch $line
+ sleep 0.2
+done < demos_r.list
+
+#rm -f demos.list demos_r.list
diff --git a/misc/scripts/svgs_2_pngs.py b/misc/scripts/svgs_2_pngs.py
new file mode 100644
index 0000000000..b24324dcd7
--- /dev/null
+++ b/misc/scripts/svgs_2_pngs.py
@@ -0,0 +1,137 @@
+# -*- coding: utf-8 -*-
+
+# Basic exporter for svg icons
+
+from os import listdir
+from os.path import isfile, join, dirname, realpath
+import subprocess
+import sys
+
+import rsvg
+import cairo
+
+last_svg_path = None
+last_svg_data = None
+
+SCRIPT_FOLDER = dirname(realpath(__file__)) + '/'
+theme_dir_base = SCRIPT_FOLDER + '../../scene/resources/default_theme/'
+theme_dir_source = theme_dir_base + 'source/'
+icons_dir_base = SCRIPT_FOLDER + '../editor/icons/'
+icons_dir_2x = icons_dir_base + '2x/'
+icons_dir_source = icons_dir_base + 'source/'
+
+
+def svg_to_png(svg_path, png_path, dpi):
+ global last_svg_path, last_svg_data
+
+ zoom = int(dpi / 90)
+ if last_svg_path != svg_path:
+ last_svg_data = open(svg_path, 'r').read()
+ last_svg_path = svg_path
+ svg = rsvg.Handle(data=last_svg_data)
+ img = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32,
+ svg.props.width * zoom,
+ svg.props.height * zoom
+ )
+ ctx = cairo.Context(img)
+ ctx.set_antialias(cairo.ANTIALIAS_DEFAULT)
+ ctx.scale(zoom, zoom)
+ svg.render_cairo(ctx)
+ img.write_to_png('%s.png' % png_path)
+ svg.close()
+
+
+def export_icons():
+ svgs_path = icons_dir_source
+
+ file_names = [f for f in listdir(svgs_path) if isfile(join(svgs_path, f))]
+
+ for file_name in file_names:
+ # name without extensions
+ name_only = file_name.replace('.svg', '')
+
+ out_icon_names = [name_only] # export to a png with the same file name
+ theme_out_icon_names = []
+ # special cases
+ if special_icons.has_key(name_only):
+ special_icon = special_icons[name_only]
+ if type(special_icon) is dict:
+ if special_icon.get('avoid_self'):
+ out_icon_names = []
+ if special_icon.has_key('output_names'):
+ out_icon_names += special_icon['output_names']
+ if special_icon.has_key('theme_output_names'):
+ theme_out_icon_names += special_icon['theme_output_names']
+
+ source_path = '%s%s.svg' % (svgs_path, name_only)
+
+ for out_icon_name in out_icon_names:
+ svg_to_png(source_path, icons_dir_base + out_icon_name, 90)
+ svg_to_png(source_path, icons_dir_2x + out_icon_name, 180)
+ for theme_out_icon_name in theme_out_icon_names:
+ svg_to_png(source_path, theme_dir_base + theme_out_icon_name, 90)
+
+
+def export_theme():
+ svgs_path = theme_dir_source
+ file_names = [f for f in listdir(svgs_path) if isfile(join(svgs_path, f))]
+
+ for file_name in file_names:
+ # name without extensions
+ name_only = file_name.replace('.svg', '')
+
+ out_icon_names = [name_only] # export to a png with the same file name
+ # special cases
+ if theme_icons.has_key(name_only):
+ special_icon = theme_icons[name_only]
+ if type(special_icon) is dict:
+ if special_icon.has_key('output_names'):
+ out_icon_names += special_icon['output_names']
+
+ source_path = '%s%s.svg' % (svgs_path, name_only)
+
+ for out_icon_name in out_icon_names:
+ svg_to_png(source_path, theme_dir_base + out_icon_name, 90)
+
+
+# special cases for icons that will be exported to multiple target pngs or that require transforms.
+special_icons = {
+ 'icon_add_track': dict(
+ output_names=['icon_add'],
+ theme_output_names=['icon_add', 'icon_zoom_more']
+ ),
+ 'icon_new': dict(output_names=['icon_file']),
+ 'icon_animation_tree_player': dict(output_names=['icon_animation_tree']),
+ 'icon_tool_rotate': dict(
+ output_names=['icon_reload'],
+ theme_output_names=['icon_reload']
+ ),
+ 'icon_multi_edit': dict(output_names=['icon_multi_node_edit']),
+ 'icon_folder': dict(
+ output_names=['icon_load', 'icon_open'],
+ theme_output_names=['icon_folder']
+ ),
+ 'icon_file_list': dict(output_names=['icon_enum']),
+ 'icon_collision_2d': dict(output_names=['icon_collision_polygon_2d', 'icon_polygon_2d']),
+ 'icon_class_list': dict(output_names=['icon_filesystem']),
+ 'icon_color_ramp': dict(output_names=['icon_graph_color_ramp']),
+ 'icon_translation': dict(output_names=['icon_p_hash_translation']),
+ 'icon_shader': dict(output_names=['icon_shader_material', 'icon_material_shader']),
+ 'icon_canvas_item_shader_graph': dict(output_names=['icon_material_shader_graph']),
+
+ 'icon_color_pick': dict(theme_output_names=['icon_color_pick'], avoid_self=True),
+ 'icon_play': dict(theme_output_names=['icon_play']),
+ 'icon_stop': dict(theme_output_names=['icon_stop']),
+ 'icon_zoom_less': dict(theme_output_names=['icon_zoom_less'], avoid_self=True),
+ 'icon_zoom_reset': dict(theme_output_names=['icon_zoom_reset'], avoid_self=True),
+ 'icon_snap': dict(theme_output_names=['icon_snap'])
+}
+
+theme_icons = {
+ 'icon_close': dict(output_names=['close', 'close_hl']),
+ 'tab_menu': dict(output_names=['tab_menu_hl'])
+}
+
+export_icons()
+export_theme()