summaryrefslogtreecommitdiff
path: root/platform/android
diff options
context:
space:
mode:
authorJuan Linietsky <reduzio@gmail.com>2014-04-28 21:56:43 -0300
committerJuan Linietsky <reduzio@gmail.com>2014-04-28 21:56:43 -0300
commit87f37bc5a305e6a68ef232be580350588e300fcc (patch)
tree608af97f58c0dd7f2f6f86d973b072f7888bfca0 /platform/android
parent7fadc2f93a18f2b5487fbcd6e90bcde781c53fec (diff)
-Added OpenSSL and HTTPS support
-Built-in version of the library for Windows, Android and iOS (other OSs use system one) -Small fixes all around
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/.old/SCsub22
-rw-r--r--platform/android/.old/audio_driver_android.cpp104
-rw-r--r--platform/android/.old/audio_driver_android.h29
-rw-r--r--platform/android/.old/context_gl_android.cpp38
-rw-r--r--platform/android/.old/context_gl_android.h24
-rw-r--r--platform/android/.old/detect.py107
-rw-r--r--platform/android/.old/dir_access_jandroid.cpp217
-rw-r--r--platform/android/.old/dir_access_jandroid.h63
-rw-r--r--platform/android/.old/file_access_jandroid.cpp204
-rw-r--r--platform/android/.old/file_access_jandroid.h56
-rw-r--r--platform/android/.old/gdb.setup.base3
-rw-r--r--platform/android/.old/java/AndroidManifest.xml22
-rw-r--r--platform/android/.old/java/build.properties17
-rw-r--r--platform/android/.old/java/build.xml79
-rw-r--r--platform/android/.old/java/default.properties11
-rwxr-xr-xplatform/android/.old/java/libs/armeabi/gdbserverbin125208 -> 0 bytes
-rw-r--r--platform/android/.old/java/local.properties10
-rw-r--r--platform/android/.old/java/proguard.cfg36
-rw-r--r--platform/android/.old/java/res/drawable-hdpi/icon.pngbin4147 -> 0 bytes
-rw-r--r--platform/android/.old/java/res/drawable-ldpi/icon.pngbin1723 -> 0 bytes
-rw-r--r--platform/android/.old/java/res/drawable-mdpi/icon.pngbin2574 -> 0 bytes
-rw-r--r--platform/android/.old/java/res/values/strings.xml4
-rw-r--r--platform/android/.old/java/src/com/android/godot/Godot.java85
-rw-r--r--platform/android/.old/java/src/com/android/godot/GodotIO.java277
-rw-r--r--platform/android/.old/java/src/com/android/godot/GodotLib.java22
-rw-r--r--platform/android/.old/java/src/com/android/godot/GodotView.java319
-rw-r--r--platform/android/.old/java_glue.cpp181
-rw-r--r--platform/android/.old/java_glue.h16
-rw-r--r--platform/android/.old/os_android.cpp428
-rw-r--r--platform/android/.old/os_android.h108
-rw-r--r--platform/android/.old/platform_config.h1
-rwxr-xr-xplatform/android/.old/run_debug.sh40
-rw-r--r--platform/android/detect.py3
-rw-r--r--platform/android/export/export.cpp97
-rw-r--r--platform/android/java/src/com/android/godot/Godot.java50
-rw-r--r--platform/android/java/src/com/android/godot/GodotLib.java2
-rw-r--r--platform/android/java_glue.cpp18
-rw-r--r--platform/android/java_glue.h2
38 files changed, 160 insertions, 2535 deletions
diff --git a/platform/android/.old/SCsub b/platform/android/.old/SCsub
deleted file mode 100644
index 59e6d10b85..0000000000
--- a/platform/android/.old/SCsub
+++ /dev/null
@@ -1,22 +0,0 @@
-Import('env')
-
-android_files = [
-
- 'audio_driver_android.cpp',
- 'file_access_jandroid.cpp',
- 'dir_access_jandroid.cpp',
- 'os_android.cpp',
- 'java_glue.cpp'
-]
-
-#env.Depends('#core/math/vector3.h', 'vector3_psp.h')
-
-#obj = env.SharedObject('godot_android.cpp')
-
-android_objects=[]
-for x in android_files:
- android_objects.append( env.SharedObject( x ) )
-
-prog = None
-
-env.SharedLibrary("#platform/jandroid/libgodot_android.so",[android_objects])
diff --git a/platform/android/.old/audio_driver_android.cpp b/platform/android/.old/audio_driver_android.cpp
deleted file mode 100644
index 7e2d065d65..0000000000
--- a/platform/android/.old/audio_driver_android.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "audio_driver_android.h"
-
-AudioDriverAndroid* AudioDriverAndroid::s_ad=NULL;
-
-const char* AudioDriverAndroid::get_name() const {
-
- return "Android";
-}
-
-#if 0
-int AudioDriverAndroid::thread_func(SceSize args, void *argp) {
-
- AudioDriverAndroid* ad = s_ad;
- sceAudioOutput2Reserve(AUDIO_OUTPUT_SAMPLE);
-
- int half=0;
- while(!ad->exit_thread) {
-
- int16_t *ptr = &ad->outbuff[AUDIO_OUTPUT_SAMPLE*2*half];
-
-
-
- if (!ad->active) {
-
- for(int i=0;i<AUDIO_OUTPUT_SAMPLE*2;i++) {
- ptr[i]=0;
- }
-
- } else {
-
- //printf("samples: %i\n",AUDIO_OUTPUT_SAMPLE);
- ad->lock();
-
- ad->audio_server_process(AUDIO_OUTPUT_SAMPLE,ad->outbuff_32);
-
- ad->unlock();
-
- const int32_t* src_buff=ad->outbuff_32;
-
- for(int i=0;i<AUDIO_OUTPUT_SAMPLE*2;i++) {
-
- ptr[i]=src_buff[i]>>16;
- }
- }
-
-
- /* Output 16-bit PCM STEREO data that is in pcmBuf without changing the volume */
- sceAudioOutput2OutputBlocking(
- SCE_AUDIO_VOLUME_0dB*3, //0db at 0x8000, that's obvious
- ptr
- );
-
- if (half)
- half=0;
- else
- half=1;
-
- }
-
- sceAudioOutput2Release();
-
- sceKernelExitThread(SCE_KERNEL_EXIT_SUCCESS);
- ad->thread_exited=true;
- return SCE_KERNEL_EXIT_SUCCESS;
-
-}
-
-#endif
-Error AudioDriverAndroid::init(){
-
- return OK;
-
-
-}
-void AudioDriverAndroid::start(){
-
-
-}
-int AudioDriverAndroid::get_mix_rate() const {
-
- return 44100;
-}
-AudioDriverSW::OutputFormat AudioDriverAndroid::get_output_format() const{
-
- return OUTPUT_STEREO;
-}
-void AudioDriverAndroid::lock(){
-
-
-}
-void AudioDriverAndroid::unlock() {
-
-
-}
-void AudioDriverAndroid::finish(){
-
- }
-
-
-AudioDriverAndroid::AudioDriverAndroid()
-{
- s_ad=this;
-}
-
diff --git a/platform/android/.old/audio_driver_android.h b/platform/android/.old/audio_driver_android.h
deleted file mode 100644
index 08fbaa927e..0000000000
--- a/platform/android/.old/audio_driver_android.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef AUDIO_DRIVER_ANDROID_H
-#define AUDIO_DRIVER_ANDROID_H
-
-#include "servers/audio/audio_server_sw.h"
-
-class AudioDriverAndroid : public AudioDriverSW {
-
-
- static AudioDriverAndroid* s_ad;
-
-public:
-
- void set_singleton();
-
- virtual const char* get_name() const;
-
- virtual Error init();
- virtual void start();
- virtual int get_mix_rate() const ;
- virtual OutputFormat get_output_format() const;
- virtual void lock();
- virtual void unlock();
- virtual void finish();
-
-
- AudioDriverAndroid();
-};
-
-#endif // AUDIO_DRIVER_ANDROID_H
diff --git a/platform/android/.old/context_gl_android.cpp b/platform/android/.old/context_gl_android.cpp
deleted file mode 100644
index e48ed2e7f9..0000000000
--- a/platform/android/.old/context_gl_android.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "context_gl_android.h"
-
-#include <GLES2/gl2.h>
-#include "os/os.h"
-void ContextGLAndroid::make_current() {
-
-};
-
-int ContextGLAndroid::get_window_width() {
-
- return OS::get_singleton()->get_default_video_mode().width;
-};
-
-int ContextGLAndroid::get_window_height() {
-
- return OS::get_singleton()->get_default_video_mode().height;
-
-};
-
-void ContextGLAndroid::swap_buffers() {
-
-};
-
-Error ContextGLAndroid::initialize() {
-
- return OK;
-};
-
-
-ContextGLAndroid::ContextGLAndroid() {
-
-
-};
-
-ContextGLAndroid::~ContextGLAndroid() {
-
-};
-
diff --git a/platform/android/.old/context_gl_android.h b/platform/android/.old/context_gl_android.h
deleted file mode 100644
index bf09d08ad2..0000000000
--- a/platform/android/.old/context_gl_android.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef CONTEXT_GL_ANDROID_H
-#define CONTEXT_GL_ANDROID_H
-
-class ContextGLAndroid : public ContextGL {
-
- enum {
- COMMAND_BUFFER_SIZE = 1024 * 1024,
- };
-
-public:
-
- virtual void make_current();
-
- virtual int get_window_width();
- virtual int get_window_height();
- virtual void swap_buffers();
-
- virtual Error initialize();
-
- ContextGLAndroid();
- ~ContextGLAndroid();
-};
-
-#endif // CONTEXT_GL_ANDROID_H
diff --git a/platform/android/.old/detect.py b/platform/android/.old/detect.py
deleted file mode 100644
index c29b56aed4..0000000000
--- a/platform/android/.old/detect.py
+++ /dev/null
@@ -1,107 +0,0 @@
-import os
-import sys
-import string
-
-def can_build():
-
- import os
- if (not os.environ.has_key("ANDROID_NDK_ROOT")):
- print("ANDROID_NDK_ROOT not present, Android disabled.")
- return False
- return True
-
-def get_opts():
-
- return [
- ('ANDROID_NDK_ROOT', 'the path to Android NDK', os.environ.get("ANDROID_NDK_ROOT", 0)),
- ('NDK_TOOLCHAIN', 'toolchain to use for the NDK',"arm-eabi-4.4.0"),
- #android 2.2
-# ('NDK_PLATFORM', 'platform to use for the NDK',"android-8"),
-# ('NDK_TARGET', 'toolchain to use for the NDK',"arm-linux-androideabi-4.4.3"),
- ]
-
-def get_flags():
-
- return [
- ('lua', 'no'),
- ('tools', 'no'),
- ('nedmalloc', 'no'),
- ]
-
-
-
-def configure(env):
-
-
- print("Godot Android!!!!!")
-
- env.Append(CPPPATH=['#platform/android'])
-
- env['OBJSUFFIX'] = ".jandroid.o"
- env['LIBSUFFIX'] = ".jandroid.a"
- env['PROGSUFFIX'] = ".jandroid"
-
- gcc_path=env["ANDROID_NDK_ROOT"]+"/toolchains/"+env["NDK_TARGET"]+"/prebuilt/";
-
- if (sys.platform.find("linux")==0):
- gcc_path=gcc_path+"/linux-x86/bin"
- elif (sys.platform=="darwin"):
- gcc_path=gcc_path+"/darwin-x86/bin" #this may be wrong
- elif (os.name=="nt"):
- gcc_path=gcc_path+"/windows-x86/bin" #this may be wrong
-
-
-
- env['ENV']['PATH'] = gcc_path+":"+env['ENV']['PATH']
-
- env['CC'] = gcc_path+'/arm-linux-androideabi-gcc'
- env['CXX'] = gcc_path+'/arm-linux-androideabi-g++'
- env['AR'] = gcc_path+"/arm-linux-androideabi-ar"
-
- import string
- #include path
- gcc_include=env["ANDROID_NDK_ROOT"]+"/platforms/"+env["NDK_PLATFORM"]+"/arch-arm/usr/include"
- ld_sysroot=env["ANDROID_NDK_ROOT"]+"/platforms/"+env["NDK_PLATFORM"]+"/arch-arm"
- ld_path=env["ANDROID_NDK_ROOT"]+"/platforms/"+env["NDK_PLATFORM"]+"/arch-arm/usr/lib"
- #cxx_include=env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/system/include"
- #env.Append(CPPPATH=[gcc_include,cxx_include])
- env['CCFLAGS'] = string.split('-DNO_THREADS -DNO_STATVFS -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -mthumb -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED ')
-
- env.Append(LDPATH=[ld_path])
- env.Append(LIBS=['c','m','stdc++','log','GLESv2'])
-
- env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack")
- env.Append(LINKFLAGS=["-Wl,-soname,libgodot_android.so"])
-
- if (env["target"]=="release"):
-
- env.Append(CCFLAGS=['-O2', '-ffast-math','-fomit-frame-pointer'])
- env['OBJSUFFIX'] = "_opt"+env['OBJSUFFIX']
- env['LIBSUFFIX'] = "_opt"+env['LIBSUFFIX']
-
- elif (env["target"]=="debug"):
-
- env.Append(CCFLAGS=['-D_DEBUG', '-g', '-Wall', '-O0', '-DDEBUG_ENABLED'])
- env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
-
- env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DNO_FCNTL'])
-
- env['neon_enabled']=True
- env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED', '-DNO_FCNTL','-DMPC_FIXED_POINT'])
-# env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT'])
- if (env['android_stl']=='yes'):
- #env.Append(CCFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/system/include"])
- env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.4.3/include"])
- env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/include"])
- env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi"])
- env.Append(LIBS=["gnustl_static","supc++"])
- #env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/stlport/stlport"])
- #env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"])
- #env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a"])
- else:
-
- env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gabi++/include"])
- env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
- env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gabi++/libs/armeabi"])
- env.Append(LIBS=['gabi++_static'])
- env.Append(CCFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST'])
diff --git a/platform/android/.old/dir_access_jandroid.cpp b/platform/android/.old/dir_access_jandroid.cpp
deleted file mode 100644
index 649a25a902..0000000000
--- a/platform/android/.old/dir_access_jandroid.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-#include "dir_access_jandroid.h"
-#include "file_access_jandroid.h"
-
-jobject DirAccessJAndroid::io=NULL;
-jclass DirAccessJAndroid::cls=NULL;
-JNIEnv * DirAccessJAndroid::env=NULL;
-jmethodID DirAccessJAndroid::_dir_open=NULL;
-jmethodID DirAccessJAndroid::_dir_next=NULL;
-jmethodID DirAccessJAndroid::_dir_close=NULL;
-
-
-DirAccess *DirAccessJAndroid::create_fs() {
-
- return memnew(DirAccessJAndroid);
-}
-
-bool DirAccessJAndroid::list_dir_begin() {
-
- list_dir_end();
-
- jstring js = env->NewStringUTF(current_dir.utf8().get_data());
- int res = env->CallIntMethod(io,_dir_open,js);
- if (res<=0)
- return true;
-
- id=res;
-
- return false;
-}
-
-String DirAccessJAndroid::get_next(){
-
- ERR_FAIL_COND_V(id==0,"");
-
- jstring str= (jstring)env->CallObjectMethod(io,_dir_next,id);
- if (!str)
- return "";
-
- int sl = env->GetStringLength(str);
- if (sl==0) {
- env->DeleteLocalRef((jobject)str);
- return "";
- }
-
- CharString cs;
- cs.resize(sl+1);
- env->GetStringRegion(str,0,sl,(jchar*)&cs[0]);
- cs[sl]=0;
-
- String ret;
- ret.parse_utf8(&cs[0]);
- env->DeleteLocalRef((jobject)str);
-
- return ret;
-
-}
-bool DirAccessJAndroid::current_is_dir() const{
-
- String sd;
- if (current_dir=="")
- sd=current;
- else
- sd=current_dir+"/"+current;
-
- jstring js = env->NewStringUTF(sd.utf8().get_data());
-
- int res = env->CallIntMethod(io,_dir_open,js);
- if (res<=0)
- return false;
-
- env->CallObjectMethod(io,_dir_close,res);
-
-
- return true;
-}
-void DirAccessJAndroid::list_dir_end(){
-
- if (id==0)
- return;
-
- env->CallObjectMethod(io,_dir_close,id);
- id=0;
-
-
-}
-
-int DirAccessJAndroid::get_drive_count(){
-
- return 0;
-}
-String DirAccessJAndroid::get_drive(int p_drive){
-
- return "";
-}
-
-Error DirAccessJAndroid::change_dir(String p_dir){
-
- p_dir=p_dir.simplify_path();
-
- if (p_dir=="" || p_dir=="." || (p_dir==".." && current_dir==""))
- return OK;
-
- String new_dir;
-
- if (p_dir.begins_with("/"))
- new_dir=p_dir.substr(1,p_dir.length());
- else if (p_dir.begins_with("res://"))
- new_dir=p_dir.substr(6,p_dir.length());
- else //relative
- new_dir=new_dir+"/"+p_dir;
-
-//test if newdir exists
- new_dir=new_dir.simplify_path();
-
- jstring js = env->NewStringUTF(new_dir.utf8().get_data());
- int res = env->CallIntMethod(io,_dir_open,js);
- if (res<=0)
- return ERR_INVALID_PARAMETER;
-
- env->CallObjectMethod(io,_dir_close,res);
-
-
-
- return OK;
-}
-
-String DirAccessJAndroid::get_current_dir(){
-
- return "/"+current_dir;
-}
-String DirAccessJAndroid::get_dir_separator() const{
-
- return "/";
-}
-
-bool DirAccessJAndroid::file_exists(String p_file){
-
- String sd;
- if (current_dir=="")
- sd=p_file;
- else
- sd=current_dir+"/"+p_file;
-
- FileAccessJAndroid *f = memnew(FileAccessJAndroid);
- bool exists = f->file_exists(sd);
- memdelete(f);
-
- return exists;
-}
-
-uint64_t DirAccessJAndroid::get_modified_time(String p_file){
-
- return 0;
-}
-
-Error DirAccessJAndroid::make_dir(String p_dir){
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-Error DirAccessJAndroid::rename(String p_from, String p_to){
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-Error DirAccessJAndroid::remove(String p_name){
-
- ERR_FAIL_V(ERR_UNAVAILABLE);
-}
-
-//FileType get_file_type() const;
-size_t DirAccessJAndroid::get_space_left() {
-
- return 0;
-}
-
-void DirAccessJAndroid::make_default() {
-
- instance_func=create_fs;
-}
-
-void DirAccessJAndroid::setup( JNIEnv *p_env, jobject p_io) {
-
-
- env=p_env;
- io=p_io;
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP7");
-
- jclass c = env->GetObjectClass(io);
- cls = (jclass)env->NewGlobalRef(c);
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP8");
-
- _dir_open = env->GetMethodID(cls, "dir_open", "(Ljava/lang/String;)I");
- if(_dir_open != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _dir_open ok!!");
- }
- _dir_next = env->GetMethodID(cls, "dir_next", "(I)Ljava/lang/String;");
- if(_dir_next != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _dir_next ok!!");
- }
- _dir_close = env->GetMethodID(cls, "dir_close", "(I)V");
- if(_dir_close != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _dir_close ok!!");
- }
-
-// (*env)->CallVoidMethod(env,obj,aMethodID, myvar);
-}
-
-
-DirAccessJAndroid::DirAccessJAndroid() {
-
- id=0;
-}
-
-DirAccessJAndroid::~DirAccessJAndroid() {
-
- list_dir_end();;
-}
diff --git a/platform/android/.old/dir_access_jandroid.h b/platform/android/.old/dir_access_jandroid.h
deleted file mode 100644
index 80973004aa..0000000000
--- a/platform/android/.old/dir_access_jandroid.h
+++ /dev/null
@@ -1,63 +0,0 @@
-#ifndef DIR_ACCESS_JANDROID_H
-#define DIR_ACCESS_JANDROID_H
-
-#include "java_glue.h"
-#include "os/dir_access.h"
-#include <stdio.h>
-
-
-class DirAccessJAndroid : public DirAccess {
-
- //AAssetDir* aad;
-
- static jobject io;
- static jclass cls;
-
- static jmethodID _dir_open;
- static jmethodID _dir_next;
- static jmethodID _dir_close;
-
- static JNIEnv * env;
-
- int id;
-
- String current_dir;
- String current;
-
- static DirAccess *create_fs();
-
-public:
-
- virtual bool list_dir_begin(); ///< This starts dir listing
- virtual String get_next();
- virtual bool current_is_dir() const;
- virtual void list_dir_end(); ///<
-
- virtual int get_drive_count();
- virtual String get_drive(int p_drive);
-
- virtual Error change_dir(String p_dir); ///< can be relative or absolute, return false on success
- virtual String get_current_dir(); ///< return current dir location
- virtual String get_dir_separator() const ;
-
- virtual bool file_exists(String p_file);
- virtual uint64_t get_modified_time(String p_file);
-
- virtual Error make_dir(String p_dir);
-
- virtual Error rename(String p_from, String p_to);
- virtual Error remove(String p_name);
-
- //virtual FileType get_file_type() const;
- size_t get_space_left();
-
- static void make_default();
-
- static void setup( JNIEnv *env, jobject io);
- static void update_env( JNIEnv *p_env) { env=p_env; }
-
- DirAccessJAndroid();
- ~DirAccessJAndroid();
-};
-
-#endif // DIR_ACCESS_JANDROID_H
diff --git a/platform/android/.old/file_access_jandroid.cpp b/platform/android/.old/file_access_jandroid.cpp
deleted file mode 100644
index 96c064f9f5..0000000000
--- a/platform/android/.old/file_access_jandroid.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-#include "file_access_jandroid.h"
-#include "os/os.h"
-#include <unistd.h>
-
-jobject FileAccessJAndroid::io=NULL;
-jclass FileAccessJAndroid::cls;
-jmethodID FileAccessJAndroid::_file_open=0;
-jmethodID FileAccessJAndroid::_file_get_size=0;
-jmethodID FileAccessJAndroid::_file_seek=0;
-jmethodID FileAccessJAndroid::_file_read=0;
-jmethodID FileAccessJAndroid::_file_tell=0;
-jmethodID FileAccessJAndroid::_file_eof=0;
-jmethodID FileAccessJAndroid::_file_close=0;
-
-
-JNIEnv * FileAccessJAndroid::env=NULL;
-
-void FileAccessJAndroid::make_default() {
-
- create_func=create_jandroid;
-}
-
-FileAccess* FileAccessJAndroid::create_jandroid() {
-
- return memnew(FileAccessJAndroid);
-}
-
-Error FileAccessJAndroid::open(const String& p_path, int p_mode_flags) {
-
- if (is_open())
- close();
-
- String path=fix_path(p_path).simplify_path();
- if (path.begins_with("/"))
- path=path.substr(1,path.length());
- else if (path.begins_with("res://"))
- path=path.substr(6,path.length());
-
- //OS::get_singleton()->print("env: %p, io %p, fo: %p\n",env,io,_file_open);
-
- jstring js = env->NewStringUTF(path.utf8().get_data());
- int res = env->CallIntMethod(io,_file_open,js,p_mode_flags&WRITE?true:false);
-
- if (res<=0)
- return ERR_FILE_CANT_OPEN;
- id=res;
-
-
- return OK;
-}
-
-void FileAccessJAndroid::close() {
-
- if (io==0)
- return;
-
- env->CallVoidMethod(io,_file_close,id);
- id=0;
-
-}
-bool FileAccessJAndroid::is_open() const {
-
- return id!=0;
-}
-
-void FileAccessJAndroid::seek(size_t p_position) {
-
- ERR_FAIL_COND(!is_open());
- env->CallVoidMethod(io,_file_seek,id,p_position);
-}
-void FileAccessJAndroid::seek_end(int64_t p_position) {
-
- ERR_FAIL_COND(!is_open());
-
- seek(get_len());
-
-}
-size_t FileAccessJAndroid::get_pos() const {
-
- ERR_FAIL_COND_V(!is_open(),0);
- return env->CallIntMethod(io,_file_tell,id);
-
-}
-size_t FileAccessJAndroid::get_len() const {
-
- ERR_FAIL_COND_V(!is_open(),0);
- return env->CallIntMethod(io,_file_get_size,id);
-
-
-}
-
-bool FileAccessJAndroid::eof_reached() const {
-
- ERR_FAIL_COND_V(!is_open(),0);
- return env->CallIntMethod(io,_file_eof,id);
-
-}
-
-uint8_t FileAccessJAndroid::get_8() const {
-
- ERR_FAIL_COND_V(!is_open(),0);
- uint8_t byte;
- get_buffer(&byte,1);
- return byte;
-}
-int FileAccessJAndroid::get_buffer(uint8_t *p_dst, int p_length) const {
-
- ERR_FAIL_COND_V(!is_open(),0);
- if (p_length==0)
- return 0;
-
- jbyteArray jca = (jbyteArray)env->CallObjectMethod(io,_file_read,id,p_length);
-
- int len = env->GetArrayLength(jca);
- env->GetByteArrayRegion(jca,0,len,(jbyte*)p_dst);
- env->DeleteLocalRef((jobject)jca);
-
- return len;
-
-}
-
-Error FileAccessJAndroid::get_error() const {
-
- if (eof_reached())
- return ERR_FILE_EOF;
- return OK;
-}
-
-void FileAccessJAndroid::store_8(uint8_t p_dest) {
-
-
-}
-
-bool FileAccessJAndroid::file_exists(const String& p_path) {
-
- jstring js = env->NewStringUTF(p_path.utf8().get_data());
- int res = env->CallIntMethod(io,_file_open,js,false);
- if (res<=0)
- return false;
- env->CallVoidMethod(io,_file_close,res);
- return true;
-
-}
-
-
-void FileAccessJAndroid::setup( JNIEnv *p_env, jobject p_io) {
-
- io=p_io;
- env=p_env;
-
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP5");
-
- jclass c = env->GetObjectClass(io);
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP6");
- cls=(jclass)env->NewGlobalRef(c);
-
- _file_open = env->GetMethodID(cls, "file_open", "(Ljava/lang/String;Z)I");
- if(_file_open != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_open ok!!");
- }
- _file_get_size = env->GetMethodID(cls, "file_get_size", "(I)I");
- if(_file_get_size != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_get_size ok!!");
- }
- _file_tell = env->GetMethodID(cls, "file_tell", "(I)I");
- if(_file_tell != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_tell ok!!");
- }
- _file_eof = env->GetMethodID(cls, "file_eof", "(I)Z");
-
- if(_file_eof != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_eof ok!!");
- }
- _file_seek = env->GetMethodID(cls, "file_seek", "(II)V");
- if(_file_seek != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_seek ok!!");
- }
- _file_read = env->GetMethodID(cls, "file_read", "(II)[B");
- if(_file_read != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_read ok!!");
- }
- _file_close = env->GetMethodID(cls, "file_close", "(I)V");
- if(_file_close != 0) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*******GOT METHOD _file_close ok!!");
- }
-
-// (*env)->CallVoidMethod(env,obj,aMethodID, myvar);
-}
-
-
-FileAccessJAndroid::FileAccessJAndroid()
-{
-
- id=0;
-}
-
-FileAccessJAndroid::~FileAccessJAndroid()
-{
-
- if (is_open())
- close();
-}
-
-
diff --git a/platform/android/.old/file_access_jandroid.h b/platform/android/.old/file_access_jandroid.h
deleted file mode 100644
index 7b432fc4fd..0000000000
--- a/platform/android/.old/file_access_jandroid.h
+++ /dev/null
@@ -1,56 +0,0 @@
-#ifndef FILE_ACCESS_JANDROID_H
-#define FILE_ACCESS_JANDROID_H
-
-#include "java_glue.h"
-#include "os/file_access.h"
-class FileAccessJAndroid : public FileAccess {
-
- static jobject io;
- static jclass cls;
-
- static jmethodID _file_open;
- static jmethodID _file_get_size;
- static jmethodID _file_seek;
- static jmethodID _file_tell;
- static jmethodID _file_eof;
- static jmethodID _file_read;
- static jmethodID _file_close;
-
-
- static JNIEnv * env;
-
- int id;
- static FileAccess* create_jandroid();
-
-
-public:
-
- virtual Error open(const String& p_path, int p_mode_flags); ///< open a file
- virtual void close(); ///< close a file
- virtual bool is_open() const; ///< true when file is open
-
- virtual void seek(size_t p_position); ///< seek to a given position
- virtual void seek_end(int64_t p_position=0); ///< seek from the end of file
- virtual size_t get_pos() const; ///< get position in the file
- virtual size_t get_len() const; ///< get size of the file
-
- virtual bool eof_reached() const; ///< reading passed EOF
-
- virtual uint8_t get_8() const; ///< get a byte
- virtual int get_buffer(uint8_t *p_dst, int p_length) const;
-
- virtual Error get_error() const; ///< get last error
-
- virtual void store_8(uint8_t p_dest); ///< store a byte
-
- virtual bool file_exists(const String& p_path); ///< return true if a file exists
-
- static void make_default();
-
- static void setup( JNIEnv *env, jobject io);
- static void update_env( JNIEnv *p_env) { env=p_env; }
- FileAccessJAndroid();
- ~FileAccessJAndroid();
-};
-
-#endif // FILE_ACCESS_JANDROID_H
diff --git a/platform/android/.old/gdb.setup.base b/platform/android/.old/gdb.setup.base
deleted file mode 100644
index a622b1caf6..0000000000
--- a/platform/android/.old/gdb.setup.base
+++ /dev/null
@@ -1,3 +0,0 @@
-set solib-search-path .
-directory ../..
-file app_process
diff --git a/platform/android/.old/java/AndroidManifest.xml b/platform/android/.old/java/AndroidManifest.xml
deleted file mode 100644
index c05a681fe3..0000000000
--- a/platform/android/.old/java/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.godot"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:label="@string/godot" android:icon="@drawable/icon">
- <activity android:name="Godot"
- android:label="@string/godot"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:launchMode="singleTask"
- android:configChanges="orientation|keyboardHidden">
-
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-feature android:glEsVersion="0x00020000"/>
- <uses-sdk android:minSdkVersion="8"/>
-
-</manifest>
diff --git a/platform/android/.old/java/build.properties b/platform/android/.old/java/build.properties
deleted file mode 100644
index ee52d86d94..0000000000
--- a/platform/android/.old/java/build.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is used to override default values used by the Ant build system.
-#
-# This file must be checked in Version Control Systems, as it is
-# integral to the build system of your project.
-
-# This file is only used by the Ant script.
-
-# You can use this to override default values such as
-# 'source.dir' for the location of your java source folder and
-# 'out.dir' for the location of your output folder.
-
-# You can also use it define how the release builds are signed by declaring
-# the following properties:
-# 'key.store' for the location of your keystore and
-# 'key.alias' for the name of the key to use.
-# The password will be asked during the build when you use the 'release' target.
-
diff --git a/platform/android/.old/java/build.xml b/platform/android/.old/java/build.xml
deleted file mode 100644
index 6dc5eb874c..0000000000
--- a/platform/android/.old/java/build.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="Godot" default="help">
-
-<!-- The local.properties file is created and updated by the 'android'
- tool.
- It contains the path to the SDK. It should *NOT* be checked into
- Version Control Systems. -->
- <property file="local.properties" />
- <property name="asset-dir" value="assets" />
- <!-- The build.properties file can be created by you and is never touched
- by the 'android' tool. This is the place to change some of the
- default property values used by the Ant rules.
- Here are some properties you may want to change/update:
-
- source.dir
- The name of the source directory. Default is 'src'.
- out.dir
- The name of the output directory. Default is 'bin'.
-
- Properties related to the SDK location or the project target should
- be updated using the 'android' tool with the 'update' action.
-
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems.
-
- -->
- <property file="build.properties" />
-
- <!-- The default.properties file is created and updated by the 'android'
- tool, as well as ADT.
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems. -->
- <property file="default.properties" />
-
-
- <!-- Required pre-setup import -->
- <import file="${sdk.dir}/tools/ant/pre_setup.xml" />
-
-
-<!-- extension targets. Uncomment the ones where you want to do custom work
- in between standard targets -->
-<!--
- <target name="-pre-build">
- </target>
- <target name="-pre-compile">
- </target>
-
- [This is typically used for code obfuscation.
- Compiled code location: ${out.classes.absolute.dir}
- If this is not done in place, override ${out.dex.input.absolute.dir}]
- <target name="-post-compile">
- </target>
--->
-
- <!-- Execute the Android Setup task that will setup some properties
- specific to the target, and import the build rules files.
-
- The rules file is imported from
- <SDK>/tools/ant/
- Depending on the project type it can be either:
- - main_rules.xml
- - lib_rules.xml
- - test_rules.xml
-
- To customize existing targets, there are two options:
- - Customize only one target:
- - copy/paste the target into this file, *before* the
- <setup> task.
- - customize it to your needs.
- - Customize the whole script.
- - copy/paste the content of the rules files (minus the top node)
- into this file, *after* the <setup> task
- - disable the import of the rules by changing the setup task
- below to <setup import="false" />.
- - customize to your needs.
- -->
- <setup />
-
-</project>
diff --git a/platform/android/.old/java/default.properties b/platform/android/.old/java/default.properties
deleted file mode 100644
index e2e8061f26..0000000000
--- a/platform/android/.old/java/default.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "build.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=android-8
diff --git a/platform/android/.old/java/libs/armeabi/gdbserver b/platform/android/.old/java/libs/armeabi/gdbserver
deleted file mode 100755
index 39634a8147..0000000000
--- a/platform/android/.old/java/libs/armeabi/gdbserver
+++ /dev/null
Binary files differ
diff --git a/platform/android/.old/java/local.properties b/platform/android/.old/java/local.properties
deleted file mode 100644
index 18e2b6b0cb..0000000000
--- a/platform/android/.old/java/local.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must *NOT* be checked in Version Control Systems,
-# as it contains information specific to your local configuration.
-
-# location of the SDK. This is only used by Ant
-# For customization when using a Version Control System, please read the
-# header note.
-sdk.dir=/home/red/bin/android-sdk-linux_x86
diff --git a/platform/android/.old/java/proguard.cfg b/platform/android/.old/java/proguard.cfg
deleted file mode 100644
index 12dd0392c0..0000000000
--- a/platform/android/.old/java/proguard.cfg
+++ /dev/null
@@ -1,36 +0,0 @@
--optimizationpasses 5
--dontusemixedcaseclassnames
--dontskipnonpubliclibraryclasses
--dontpreverify
--verbose
--optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-
--keep public class * extends android.app.Activity
--keep public class * extends android.app.Application
--keep public class * extends android.app.Service
--keep public class * extends android.content.BroadcastReceiver
--keep public class * extends android.content.ContentProvider
--keep public class * extends android.app.backup.BackupAgentHelper
--keep public class * extends android.preference.Preference
--keep public class com.android.vending.licensing.ILicensingService
-
--keepclasseswithmembernames class * {
- native <methods>;
-}
-
--keepclasseswithmembernames class * {
- public <init>(android.content.Context, android.util.AttributeSet);
-}
-
--keepclasseswithmembernames class * {
- public <init>(android.content.Context, android.util.AttributeSet, int);
-}
-
--keepclassmembers enum * {
- public static **[] values();
- public static ** valueOf(java.lang.String);
-}
-
--keep class * implements android.os.Parcelable {
- public static final android.os.Parcelable$Creator *;
-}
diff --git a/platform/android/.old/java/res/drawable-hdpi/icon.png b/platform/android/.old/java/res/drawable-hdpi/icon.png
deleted file mode 100644
index 8074c4c571..0000000000
--- a/platform/android/.old/java/res/drawable-hdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/android/.old/java/res/drawable-ldpi/icon.png b/platform/android/.old/java/res/drawable-ldpi/icon.png
deleted file mode 100644
index 1095584ec2..0000000000
--- a/platform/android/.old/java/res/drawable-ldpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/android/.old/java/res/drawable-mdpi/icon.png b/platform/android/.old/java/res/drawable-mdpi/icon.png
deleted file mode 100644
index a07c69fa5a..0000000000
--- a/platform/android/.old/java/res/drawable-mdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/platform/android/.old/java/res/values/strings.xml b/platform/android/.old/java/res/values/strings.xml
deleted file mode 100644
index f92332ad4c..0000000000
--- a/platform/android/.old/java/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="godot">Godot</string>
-</resources>
diff --git a/platform/android/.old/java/src/com/android/godot/Godot.java b/platform/android/.old/java/src/com/android/godot/Godot.java
deleted file mode 100644
index 475caf3362..0000000000
--- a/platform/android/.old/java/src/com/android/godot/Godot.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.android.godot;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.view.MotionEvent;
-
-public class Godot extends Activity
-{
-
-
- GodotView mView;
-
- static public GodotIO io;
-
-
- @Override protected void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- io = new GodotIO(getAssets());
- GodotLib.io=io;
- mView = new GodotView(getApplication(),io);
- setContentView(mView);
- }
-
- @Override protected void onPause() {
- super.onPause();
- mView.onPause();
- }
-
- @Override protected void onResume() {
- super.onResume();
- mView.onResume();
- }
-
- @Override public boolean dispatchTouchEvent (MotionEvent event) {
-
- super.onTouchEvent(event);
- int evcount=event.getPointerCount();
- if (evcount==0)
- return true;
-
- int[] arr = new int[event.getPointerCount()*3];
-
- for(int i=0;i<event.getPointerCount();i++) {
-
- arr[i*3+0]=(int)event.getPointerId(i);
- arr[i*3+1]=(int)event.getX(i);
- arr[i*3+2]=(int)event.getY(i);
- }
-
- //System.out.printf("gaction: %d\n",event.getAction());
- switch(event.getAction()&MotionEvent.ACTION_MASK) {
-
- case MotionEvent.ACTION_DOWN: {
- GodotLib.touch(0,0,evcount,arr);
- //System.out.printf("action down at: %f,%f\n", event.getX(),event.getY());
- } break;
- case MotionEvent.ACTION_MOVE: {
- GodotLib.touch(1,0,evcount,arr);
- //for(int i=0;i<event.getPointerCount();i++) {
- // System.out.printf("%d - moved to: %f,%f\n",i, event.getX(i),event.getY(i));
- //}
- } break;
- case MotionEvent.ACTION_POINTER_UP: {
- int pointer_idx = event.getActionIndex();
- GodotLib.touch(4,pointer_idx,evcount,arr);
- //System.out.printf("%d - s.up at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
- } break;
- case MotionEvent.ACTION_POINTER_DOWN: {
- int pointer_idx = event.getActionIndex();
- GodotLib.touch(3,pointer_idx,evcount,arr);
- //System.out.printf("%d - s.down at: %f,%f\n",pointer_idx, event.getX(pointer_idx),event.getY(pointer_idx));
- } break;
- case MotionEvent.ACTION_CANCEL:
- case MotionEvent.ACTION_UP: {
- GodotLib.touch(2,0,evcount,arr);
- //for(int i=0;i<event.getPointerCount();i++) {
- // System.out.printf("%d - up! %f,%f\n",i, event.getX(i),event.getY(i));
- //}
- } break;
-
- }
- return true;
- }
-
-}
diff --git a/platform/android/.old/java/src/com/android/godot/GodotIO.java b/platform/android/.old/java/src/com/android/godot/GodotIO.java
deleted file mode 100644
index a673f79b8d..0000000000
--- a/platform/android/.old/java/src/com/android/godot/GodotIO.java
+++ /dev/null
@@ -1,277 +0,0 @@
-
-package com.android.godot;
-import java.util.HashMap;
-
-import android.content.res.AssetManager;
-import java.io.InputStream;
-import java.io.IOException;
-
-// Wrapper for native library
-
-public class GodotIO {
-
-
- AssetManager am;
-
-
- /// FILES
-
- public int last_file_id=1;
-
- class AssetData {
-
-
- public boolean eof=false;
- public String path;
- public InputStream is;
- public int len;
- public int pos;
- }
-
-
- HashMap<Integer,AssetData> streams;
-
-
- public int file_open(String path,boolean write) {
-
- System.out.printf("file_open: Attempt to Open %s\n",path);
-
- if (write)
- return -1;
-
-
- AssetData ad = new AssetData();
-
- try {
- ad.is = am.open(path);
-
- } catch (Exception e) {
-
- System.out.printf("Exception on file_open: %s\n",e);
- return -1;
- }
-
- try {
- ad.len=ad.is.available();
- } catch (Exception e) {
-
- System.out.printf("Exception availabling on file_open: %s\n",e);
- return -1;
- }
-
- ad.path=path;
- ad.pos=0;
- ++last_file_id;
- streams.put(last_file_id,ad);
-
- return last_file_id;
- }
- public int file_get_size(int id) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_get_size: Invalid file id: %d\n",id);
- return -1;
- }
-
- return streams.get(id).len;
-
- }
- public void file_seek(int id,int bytes) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_get_size: Invalid file id: %d\n",id);
- return;
- }
- //seek sucks
- AssetData ad = streams.get(id);
- if (bytes>ad.len)
- bytes=ad.len;
- if (bytes<0)
- bytes=0;
-
- try {
-
- if (bytes > (int)ad.pos) {
- int todo=bytes-(int)ad.pos;
- while(todo>0) {
- todo-=ad.is.skip(todo);
- }
- ad.pos=bytes;
- } else if (bytes<(int)ad.pos) {
-
- ad.is=am.open(ad.path);
-
- ad.pos=bytes;
- int todo=bytes;
- while(todo>0) {
- todo-=ad.is.skip(todo);
- }
- }
-
- ad.eof=false;
- } catch (IOException e) {
-
- System.out.printf("Exception on file_seek: %s\n",e);
- return;
- }
-
-
- }
-
- public int file_tell(int id) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't tell eof for invalid file id: %d\n",id);
- return 0;
- }
-
- AssetData ad = streams.get(id);
- return ad.pos;
- }
- public boolean file_eof(int id) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't check eof for invalid file id: %d\n",id);
- return false;
- }
-
- AssetData ad = streams.get(id);
- return ad.eof;
- }
-
- public byte[] file_read(int id, int bytes) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_read: Can't read invalid file id: %d\n",id);
- return new byte[0];
- }
-
-
- AssetData ad = streams.get(id);
-
- if (ad.pos + bytes > ad.len) {
-
- bytes=ad.len-ad.pos;
- ad.eof=true;
- }
-
-
- if (bytes==0) {
-
- return new byte[0];
- }
-
-
-
- byte[] buf1=new byte[bytes];
- int r=0;
- try {
- r = ad.is.read(buf1);
- } catch (IOException e) {
-
- System.out.printf("Exception on file_read: %s\n",e);
- return new byte[bytes];
- }
-
- if (r==0) {
- return new byte[0];
- }
-
- ad.pos+=r;
-
- if (r<bytes) {
-
- byte[] buf2=new byte[r];
- for(int i=0;i<r;i++)
- buf2[i]=buf1[i];
- return buf2;
- } else {
-
- return buf1;
- }
-
- }
-
- public void file_close(int id) {
-
- if (!streams.containsKey(id)) {
- System.out.printf("file_close: Can't close invalid file id: %d\n",id);
- return;
- }
-
- streams.remove(id);
-
- }
-
-
- /// DIRECTORIES
-
-
- class AssetDir {
-
- public String[] files;
- public int current;
- }
-
- public int last_dir_id=1;
-
- HashMap<Integer,AssetDir> dirs;
-
- public int dir_open(String path) {
-
- AssetDir ad = new AssetDir();
- ad.current=0;
-
- try {
- ad.files = am.list(path);
- } catch (IOException e) {
-
- System.out.printf("Exception on dir_open: %s\n",e);
- return -1;
- }
-
- ++last_dir_id;
- dirs.put(last_dir_id,ad);
-
- return last_dir_id;
-
- }
-
- public String dir_next(int id) {
-
- if (!dirs.containsKey(id)) {
- System.out.printf("dir_next: invalid dir id: %d\n",id);
- return "";
- }
-
- AssetDir ad = dirs.get(id);
- if (ad.current>=ad.files.length)
- return "";
- String r = ad.files[ad.current];
- ad.current++;
- return r;
-
- }
-
- public void dir_close(int id) {
-
- if (!dirs.containsKey(id)) {
- System.out.printf("dir_close: invalid dir id: %d\n",id);
- return;
- }
-
- dirs.remove(id);
- }
-
-
- GodotIO(AssetManager p_am) {
-
- am=p_am;
- streams=new HashMap<Integer,AssetData>();
- dirs=new HashMap<Integer,AssetDir>();
-
-
- }
-
-
-}
diff --git a/platform/android/.old/java/src/com/android/godot/GodotLib.java b/platform/android/.old/java/src/com/android/godot/GodotLib.java
deleted file mode 100644
index 2ef49a5222..0000000000
--- a/platform/android/.old/java/src/com/android/godot/GodotLib.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.android.godot;
-
-// Wrapper for native library
-
-public class GodotLib {
-
-
- public static GodotIO io;
-
- static {
- System.loadLibrary("godot_android");
- }
-
- /**
- * @param width the current view width
- * @param height the current view height
- */
-
- public static native void init(int width, int height);
- public static native void step();
- public static native void touch(int what,int pointer,int howmany, int[] arr);
-}
diff --git a/platform/android/.old/java/src/com/android/godot/GodotView.java b/platform/android/.old/java/src/com/android/godot/GodotView.java
deleted file mode 100644
index c5eb3d17ad..0000000000
--- a/platform/android/.old/java/src/com/android/godot/GodotView.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package com.android.godot;
-import android.content.Context;
-import android.graphics.PixelFormat;
-import android.opengl.GLSurfaceView;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.content.ContextWrapper;
-
-import java.io.File;
-import javax.microedition.khronos.egl.EGL10;
-import javax.microedition.khronos.egl.EGLConfig;
-import javax.microedition.khronos.egl.EGLContext;
-import javax.microedition.khronos.egl.EGLDisplay;
-import javax.microedition.khronos.opengles.GL10;
-
-/**
- * A simple GLSurfaceView sub-class that demonstrate how to perform
- * OpenGL ES 2.0 rendering into a GL Surface. Note the following important
- * details:
- *
- * - The class must use a custom context factory to enable 2.0 rendering.
- * See ContextFactory class definition below.
- *
- * - The class must use a custom EGLConfigChooser to be able to select
- * an EGLConfig that supports 2.0. This is done by providing a config
- * specification to eglChooseConfig() that has the attribute
- * EGL10.ELG_RENDERABLE_TYPE containing the EGL_OPENGL_ES2_BIT flag
- * set. See ConfigChooser class definition below.
- *
- * - The class must select the surface's format, then choose an EGLConfig
- * that matches it exactly (with regards to red/green/blue/alpha channels
- * bit depths). Failure to do so would result in an EGL_BAD_MATCH error.
- */
-class GodotView extends GLSurfaceView {
- private static String TAG = "GodotView";
- private static final boolean DEBUG = false;
- private static Context ctx;
-
- private static GodotIO io;
-
- public GodotView(Context context,GodotIO p_io) {
- super(context);
- ctx=context;
- io=p_io;
-
- init(false, 0, 0);
- }
-
- public GodotView(Context context, boolean translucent, int depth, int stencil) {
- super(context);
- init(translucent, depth, stencil);
- }
-
- private void init(boolean translucent, int depth, int stencil) {
-
- /* By default, GLSurfaceView() creates a RGB_565 opaque surface.
- * If we want a translucent one, we should change the surface's
- * format here, using PixelFormat.TRANSLUCENT for GL Surfaces
- * is interpreted as any 32-bit surface with alpha by SurfaceFlinger.
- */
- if (translucent) {
- this.getHolder().setFormat(PixelFormat.TRANSLUCENT);
- }
-
- /* Setup the context factory for 2.0 rendering.
- * See ContextFactory class definition below
- */
- setEGLContextFactory(new ContextFactory());
-
- /* We need to choose an EGLConfig that matches the format of
- * our surface exactly. This is going to be done in our
- * custom config chooser. See ConfigChooser class definition
- * below.
- */
- setEGLConfigChooser( translucent ?
- new ConfigChooser(8, 8, 8, 8, depth, stencil) :
- new ConfigChooser(5, 6, 5, 0, depth, stencil) );
-
- /* Set the renderer responsible for frame rendering */
- setRenderer(new Renderer());
- }
-
- private static class ContextFactory implements GLSurfaceView.EGLContextFactory {
- private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;
- public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {
- Log.w(TAG, "creating OpenGL ES 2.0 context");
- checkEglError("Before eglCreateContext", egl);
- int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE };
- EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
- checkEglError("After eglCreateContext", egl);
- return context;
- }
-
- public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context) {
- egl.eglDestroyContext(display, context);
- }
- }
-
- private static void checkEglError(String prompt, EGL10 egl) {
- int error;
- while ((error = egl.eglGetError()) != EGL10.EGL_SUCCESS) {
- Log.e(TAG, String.format("%s: EGL error: 0x%x", prompt, error));
- }
- }
-
- private static class ConfigChooser implements GLSurfaceView.EGLConfigChooser {
-
- public ConfigChooser(int r, int g, int b, int a, int depth, int stencil) {
- mRedSize = r;
- mGreenSize = g;
- mBlueSize = b;
- mAlphaSize = a;
- mDepthSize = depth;
- mStencilSize = stencil;
- }
-
- /* This EGL config specification is used to specify 2.0 rendering.
- * We use a minimum size of 4 bits for red/green/blue, but will
- * perform actual matching in chooseConfig() below.
- */
- private static int EGL_OPENGL_ES2_BIT = 4;
- private static int[] s_configAttribs2 =
- {
- EGL10.EGL_RED_SIZE, 4,
- EGL10.EGL_GREEN_SIZE, 4,
- EGL10.EGL_BLUE_SIZE, 4,
- EGL10.EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
- EGL10.EGL_NONE
- };
-
- public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) {
-
- /* Get the number of minimally matching EGL configurations
- */
- int[] num_config = new int[1];
- egl.eglChooseConfig(display, s_configAttribs2, null, 0, num_config);
-
- int numConfigs = num_config[0];
-
- if (numConfigs <= 0) {
- throw new IllegalArgumentException("No configs match configSpec");
- }
-
- /* Allocate then read the array of minimally matching EGL configs
- */
- EGLConfig[] configs = new EGLConfig[numConfigs];
- egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
-
- if (DEBUG) {
- printConfigs(egl, display, configs);
- }
- /* Now return the "best" one
- */
- return chooseConfig(egl, display, configs);
- }
-
- public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display,
- EGLConfig[] configs) {
- for(EGLConfig config : configs) {
- int d = findConfigAttrib(egl, display, config,
- EGL10.EGL_DEPTH_SIZE, 0);
- int s = findConfigAttrib(egl, display, config,
- EGL10.EGL_STENCIL_SIZE, 0);
-
- // We need at least mDepthSize and mStencilSize bits
- if (d < mDepthSize || s < mStencilSize)
- continue;
-
- // We want an *exact* match for red/green/blue/alpha
- int r = findConfigAttrib(egl, display, config,
- EGL10.EGL_RED_SIZE, 0);
- int g = findConfigAttrib(egl, display, config,
- EGL10.EGL_GREEN_SIZE, 0);
- int b = findConfigAttrib(egl, display, config,
- EGL10.EGL_BLUE_SIZE, 0);
- int a = findConfigAttrib(egl, display, config,
- EGL10.EGL_ALPHA_SIZE, 0);
-
- if (r == mRedSize && g == mGreenSize && b == mBlueSize && a == mAlphaSize)
- return config;
- }
- return null;
- }
-
- private int findConfigAttrib(EGL10 egl, EGLDisplay display,
- EGLConfig config, int attribute, int defaultValue) {
-
- if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) {
- return mValue[0];
- }
- return defaultValue;
- }
-
- private void printConfigs(EGL10 egl, EGLDisplay display,
- EGLConfig[] configs) {
- int numConfigs = configs.length;
- Log.w(TAG, String.format("%d configurations", numConfigs));
- for (int i = 0; i < numConfigs; i++) {
- Log.w(TAG, String.format("Configuration %d:\n", i));
- printConfig(egl, display, configs[i]);
- }
- }
-
- private void printConfig(EGL10 egl, EGLDisplay display,
- EGLConfig config) {
- int[] attributes = {
- EGL10.EGL_BUFFER_SIZE,
- EGL10.EGL_ALPHA_SIZE,
- EGL10.EGL_BLUE_SIZE,
- EGL10.EGL_GREEN_SIZE,
- EGL10.EGL_RED_SIZE,
- EGL10.EGL_DEPTH_SIZE,
- EGL10.EGL_STENCIL_SIZE,
- EGL10.EGL_CONFIG_CAVEAT,
- EGL10.EGL_CONFIG_ID,
- EGL10.EGL_LEVEL,
- EGL10.EGL_MAX_PBUFFER_HEIGHT,
- EGL10.EGL_MAX_PBUFFER_PIXELS,
- EGL10.EGL_MAX_PBUFFER_WIDTH,
- EGL10.EGL_NATIVE_RENDERABLE,
- EGL10.EGL_NATIVE_VISUAL_ID,
- EGL10.EGL_NATIVE_VISUAL_TYPE,
- 0x3030, // EGL10.EGL_PRESERVED_RESOURCES,
- EGL10.EGL_SAMPLES,
- EGL10.EGL_SAMPLE_BUFFERS,
- EGL10.EGL_SURFACE_TYPE,
- EGL10.EGL_TRANSPARENT_TYPE,
- EGL10.EGL_TRANSPARENT_RED_VALUE,
- EGL10.EGL_TRANSPARENT_GREEN_VALUE,
- EGL10.EGL_TRANSPARENT_BLUE_VALUE,
- 0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB,
- 0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA,
- 0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL,
- 0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL,
- EGL10.EGL_LUMINANCE_SIZE,
- EGL10.EGL_ALPHA_MASK_SIZE,
- EGL10.EGL_COLOR_BUFFER_TYPE,
- EGL10.EGL_RENDERABLE_TYPE,
- 0x3042 // EGL10.EGL_CONFORMANT
- };
- String[] names = {
- "EGL_BUFFER_SIZE",
- "EGL_ALPHA_SIZE",
- "EGL_BLUE_SIZE",
- "EGL_GREEN_SIZE",
- "EGL_RED_SIZE",
- "EGL_DEPTH_SIZE",
- "EGL_STENCIL_SIZE",
- "EGL_CONFIG_CAVEAT",
- "EGL_CONFIG_ID",
- "EGL_LEVEL",
- "EGL_MAX_PBUFFER_HEIGHT",
- "EGL_MAX_PBUFFER_PIXELS",
- "EGL_MAX_PBUFFER_WIDTH",
- "EGL_NATIVE_RENDERABLE",
- "EGL_NATIVE_VISUAL_ID",
- "EGL_NATIVE_VISUAL_TYPE",
- "EGL_PRESERVED_RESOURCES",
- "EGL_SAMPLES",
- "EGL_SAMPLE_BUFFERS",
- "EGL_SURFACE_TYPE",
- "EGL_TRANSPARENT_TYPE",
- "EGL_TRANSPARENT_RED_VALUE",
- "EGL_TRANSPARENT_GREEN_VALUE",
- "EGL_TRANSPARENT_BLUE_VALUE",
- "EGL_BIND_TO_TEXTURE_RGB",
- "EGL_BIND_TO_TEXTURE_RGBA",
- "EGL_MIN_SWAP_INTERVAL",
- "EGL_MAX_SWAP_INTERVAL",
- "EGL_LUMINANCE_SIZE",
- "EGL_ALPHA_MASK_SIZE",
- "EGL_COLOR_BUFFER_TYPE",
- "EGL_RENDERABLE_TYPE",
- "EGL_CONFORMANT"
- };
- int[] value = new int[1];
- for (int i = 0; i < attributes.length; i++) {
- int attribute = attributes[i];
- String name = names[i];
- if ( egl.eglGetConfigAttrib(display, config, attribute, value)) {
- Log.w(TAG, String.format(" %s: %d\n", name, value[0]));
- } else {
- // Log.w(TAG, String.format(" %s: failed\n", name));
- while (egl.eglGetError() != EGL10.EGL_SUCCESS);
- }
- }
- }
-
- // Subclasses can adjust these values:
- protected int mRedSize;
- protected int mGreenSize;
- protected int mBlueSize;
- protected int mAlphaSize;
- protected int mDepthSize;
- protected int mStencilSize;
- private int[] mValue = new int[1];
- }
-
- private static class Renderer implements GLSurfaceView.Renderer {
-
-
- public void onDrawFrame(GL10 gl) {
- GodotLib.step();
- }
-
- public void onSurfaceChanged(GL10 gl, int width, int height) {
-
-
- System.out.printf("** CONTENT DIR %s\n",ctx.getFilesDir().getPath());
- GodotLib.init(width, height);
- }
-
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- // Do nothing.
- }
- }
-}
diff --git a/platform/android/.old/java_glue.cpp b/platform/android/.old/java_glue.cpp
deleted file mode 100644
index 38dbcc104f..0000000000
--- a/platform/android/.old/java_glue.cpp
+++ /dev/null
@@ -1,181 +0,0 @@
-#include "java_glue.h"
-#include "os_android.h"
-#include "main/main.h"
-#include <unistd.h>
-#include "file_access_jandroid.h"
-#include "dir_access_jandroid.h"
-
-static OS_Android *os_android=NULL;
-
-
-struct TST {
-
- int a;
- TST() {
-
- a=5;
- }
-};
-
-TST tst;
-
-struct JAndroidPointerEvent {
-
- Vector<OS_Android::TouchPos> points;
- int pointer;
- int what;
-};
-
-static List<JAndroidPointerEvent> pointer_events;
-static bool initialized=false;
-static Mutex *input_mutex=NULL;
-
-JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_init(JNIEnv * env, jobject obj, jint width, jint height)
-{
-
-
- if (initialized) // wtf
- return;
-
- __android_log_print(ANDROID_LOG_INFO,"godot","**INIT EVENT! - %p\n",env);
-
-
- initialized=true;
-
- __android_log_print(ANDROID_LOG_INFO,"godot","***************** HELLO FROM JNI!!!!!!!!");
-
- {
- //setup IO Object
-
- jclass cls = env->FindClass("com/android/godot/Godot");
- if (cls) {
-
- cls=(jclass)env->NewGlobalRef(cls);
- __android_log_print(ANDROID_LOG_INFO,"godot","*******CLASS FOUND!!!");
- }
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP2, %p",cls);
- jfieldID fid = env->GetStaticFieldID(cls, "io", "Lcom/android/godot/GodotIO;");
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP3 %i",fid);
- jobject ob = env->GetStaticObjectField(cls,fid);
- __android_log_print(ANDROID_LOG_INFO,"godot","STEP4, %p",ob);
- jobject gob = env->NewGlobalRef(ob);
-
-
- FileAccessJAndroid::setup(env,gob);
- DirAccessJAndroid::setup(env,gob);
- }
-
-
-
- os_android = new OS_Android(width,height);
-
- char wd[500];
- getcwd(wd,500);
-
- __android_log_print(ANDROID_LOG_INFO,"godot","test construction %i\n",tst.a);
- __android_log_print(ANDROID_LOG_INFO,"godot","running from dir %s\n",wd);
-
- __android_log_print(ANDROID_LOG_INFO,"godot","**SETUP");
-
-
-
-#if 0
- char *args[]={"-test","render",NULL};
- __android_log_print(ANDROID_LOG_INFO,"godot","pre asdasd setup...");
- Error err = Main::setup("apk",2,args);
-#else
- Error err = Main::setup("apk",0,NULL);
-#endif
- if (err!=OK) {
- __android_log_print(ANDROID_LOG_INFO,"godot","*****UNABLE TO SETUP");
-
- return; //should exit instead and print the error
- }
-
- __android_log_print(ANDROID_LOG_INFO,"godot","**START");
-
-
- if (!Main::start()) {
-
- return; //should exit instead and print the error
- }
- input_mutex=Mutex::create();
-
- os_android->main_loop_begin();
-
-
-}
-
-JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj)
-{
-
- __android_log_print(ANDROID_LOG_INFO,"godot","**STEP EVENT! - %p-%i\n",env,Thread::get_caller_ID());
-
-
-
-
- {
-
- FileAccessJAndroid::update_env(env);
- DirAccessJAndroid::update_env(env);
- }
-
- input_mutex->lock();
-
- while(pointer_events.size()) {
-
- JAndroidPointerEvent jpe=pointer_events.front()->get();
- os_android->process_touch(jpe.what,jpe.pointer,jpe.points);
- pointer_events.pop_front();
- }
-
- input_mutex->unlock();
-
-
- if (os_android->main_loop_iterate()==true) {
-
- return; //should exit instead
- }
-
-
-}
-
-JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_touch(JNIEnv * env, jobject obj, jint ev,jint pointer, jint count, jintArray positions) {
-
-
-
- __android_log_print(ANDROID_LOG_INFO,"godot","**TOUCH EVENT! - %p-%i\n",env,Thread::get_caller_ID());
-
-
-
-
-
- Vector<OS_Android::TouchPos> points;
- for(int i=0;i<count;i++) {
-
- jint p[3];
- env->GetIntArrayRegion(positions,i*3,3,p);
- OS_Android::TouchPos tp;
- tp.pos=Point2(p[1],p[2]);
- tp.id=p[0];
- points.push_back(tp);
- }
-
- JAndroidPointerEvent jpe;
- jpe.pointer=pointer;
- jpe.points=points;
- jpe.what=ev;
-
- input_mutex->lock();
-
- pointer_events.push_back(jpe);
-
- input_mutex->unlock();
- //if (os_android)
-// os_android->process_touch(ev,pointer,points);
-
-}
-
-//Main::cleanup();
-
-//return os.get_exit_code();
diff --git a/platform/android/.old/java_glue.h b/platform/android/.old/java_glue.h
deleted file mode 100644
index 9940af3d7d..0000000000
--- a/platform/android/.old/java_glue.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef JAVA_GLUE_H
-#define JAVA_GLUE_H
-
-#include <jni.h>
-#include <android/log.h>
-
-
-extern "C" {
- JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_init(JNIEnv * env, jobject obj, jint width, jint height);
- JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj);
- JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_touch(JNIEnv * env, jobject obj, jint ev,jint pointer, jint count, jintArray positions);
-};
-
-
-
-#endif // JAVA_GLUE_H
diff --git a/platform/android/.old/os_android.cpp b/platform/android/.old/os_android.cpp
deleted file mode 100644
index 9fbfaedd3d..0000000000
--- a/platform/android/.old/os_android.cpp
+++ /dev/null
@@ -1,428 +0,0 @@
-
-#include "os_android.h"
-#include "java_glue.h"
-#include "drivers/gles2/rasterizer_gles2.h"
-#include "servers/visual/visual_server_raster.h"
-
-#include "file_access_jandroid.h"
-#include "dir_access_jandroid.h"
-#include "core/io/file_access_buffered_fa.h"
-#include "main/main.h"
-int OS_Android::get_video_driver_count() const {
-
- return 1;
-}
-const char * OS_Android::get_video_driver_name(int p_driver) const {
-
- return "GLES2";
-}
-
-OS::VideoMode OS_Android::get_default_video_mode() const {
-
- return OS::VideoMode();
-}
-
-int OS_Android::get_audio_driver_count() const {
-
- return 1;
-}
-const char * OS_Android::get_audio_driver_name(int p_driver) const {
-
- return "Android";
-}
-
-void OS_Android::initialize_core() {
-
- OS_Unix::initialize_core();
- //FileAccessJAndroid::make_default();
- DirAccessJAndroid::make_default();
- FileAccessBufferedFA<FileAccessJAndroid>::make_default();
-
-
-}
-
-void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_audio_driver) {
-
- AudioDriverManagerSW::add_driver(&audio_driver_android);
-
- rasterizer = memnew( RasterizerGLES2 );
- visual_server = memnew( VisualServerRaster(rasterizer) );
- visual_server->init();
- visual_server->cursor_set_visible(false, 0);
-
- AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton();
-
- if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) {
-
- ERR_PRINT("Initializing audio failed.");
- }
-
- sample_manager = memnew( SampleManagerMallocSW );
- audio_server = memnew( AudioServerSW(sample_manager) );
-
- audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,false);
- audio_server->init();
-
- spatial_sound_server = memnew( SpatialSoundServerSW );
- spatial_sound_server->init();
-
- spatial_sound_2d_server = memnew( SpatialSound2DServerSW );
- spatial_sound_2d_server->init();
-
- //
- physics_server = memnew( PhysicsServerSW );
- physics_server->init();
- physics_2d_server = memnew( Physics2DServerSW );
- physics_2d_server->init();
-
- input = memnew( InputDefault );
-
-
-}
-
-void OS_Android::set_main_loop( MainLoop * p_main_loop ) {
-
-
-
- main_loop=p_main_loop;
-}
-
-void OS_Android::delete_main_loop() {
-
- memdelete( main_loop );
-}
-
-void OS_Android::finalize() {
-
- memdelete(input);
-
-}
-
-
-void OS_Android::vprint(const char* p_format, va_list p_list, bool p_stderr) {
-
- __android_log_vprint(p_stderr?ANDROID_LOG_ERROR:ANDROID_LOG_INFO,"godot",p_format,p_list);
-}
-
-void OS_Android::print(const char *p_format, ... ) {
-
- va_list argp;
- va_start(argp, p_format);
- __android_log_vprint(ANDROID_LOG_INFO,"godot",p_format,argp);
- va_end(argp);
-
-}
-
-void OS_Android::alert(const String& p_alert) {
-
- print("ALERT: %s\n",p_alert.utf8().get_data());
-}
-
-
-void OS_Android::set_mouse_show(bool p_show) {
-
- //android has no mouse...
-}
-
-void OS_Android::set_mouse_grab(bool p_grab) {
-
- //it really has no mouse...!
-}
-
-bool OS_Android::is_mouse_grab_enabled() const {
-
- //*sigh* technology has evolved so much since i was a kid..
- return false;
-}
-Point2 OS_Android::get_mouse_pos() const {
-
- return Point2();
-}
-int OS_Android::get_mouse_button_state() const {
-
- return 0;
-}
-void OS_Android::set_window_title(const String& p_title) {
-
-
-}
-
-//interesting byt not yet
-//void set_clipboard(const String& p_text);
-//String get_clipboard() const;
-
-void OS_Android::set_video_mode(const VideoMode& p_video_mode,int p_screen) {
-
-
-}
-
-OS::VideoMode OS_Android::get_video_mode(int p_screen) const {
-
- return default_videomode;
-}
-void OS_Android::get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen) const {
-
- p_list->push_back(default_videomode);
-}
-
-String OS_Android::get_name() {
-
- return "Android";
-}
-
-MainLoop *OS_Android::get_main_loop() const {
-
- return main_loop;
-}
-
-bool OS_Android::can_draw() const {
-
- return true; //always?
-}
-
-void OS_Android::set_cursor_shape(CursorShape p_shape) {
-
- //android really really really has no mouse.. how amazing..
-}
-
-void OS_Android::main_loop_begin() {
-
- if (main_loop)
- main_loop->init();
-}
-bool OS_Android::main_loop_iterate() {
-
- if (!main_loop)
- return false;
- return Main::iteration();
-}
-
-void OS_Android::main_loop_end() {
-
- if (main_loop)
- main_loop->finish();
-
-}
-
-void OS_Android::process_touch(int p_what,int p_pointer, const Vector<TouchPos>& p_points) {
-
-
-
- switch(p_what) {
- case 0: { //gesture begin
-
- if (touch.size()) {
- //end all if exist
- InputEvent ev;
- ev.type=InputEvent::MOUSE_BUTTON;
- ev.ID=++last_id;
- ev.mouse_button.button_index=BUTTON_LEFT;
- ev.mouse_button.button_mask=BUTTON_MASK_LEFT;
- ev.mouse_button.pressed=false;
- ev.mouse_button.x=touch[0].pos.x;
- ev.mouse_button.y=touch[0].pos.y;
- ev.mouse_button.global_x=touch[0].pos.x;
- ev.mouse_button.global_y=touch[0].pos.y;
- input->set_mouse_pos(Point2(ev.mouse_button.x,ev.mouse_button.y));
- main_loop->input_event(ev);
-
-
- for(int i=0;i<touch.size();i++) {
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_TOUCH;
- ev.ID=++last_id;
- ev.screen_touch.index=touch[i].id;
- ev.screen_touch.pressed=false;
- ev.screen_touch.x=touch[i].pos.x;
- ev.screen_touch.y=touch[i].pos.y;
- main_loop->input_event(ev);
-
- }
- }
-
- touch.resize(p_points.size());
- for(int i=0;i<p_points.size();i++) {
- touch[i].id=p_points[i].id;
- touch[i].pos=p_points[i].pos;
- }
-
- {
- //send mouse
- InputEvent ev;
- ev.type=InputEvent::MOUSE_BUTTON;
- ev.ID=++last_id;
- ev.mouse_button.button_index=BUTTON_LEFT;
- ev.mouse_button.button_mask=BUTTON_MASK_LEFT;
- ev.mouse_button.pressed=true;
- ev.mouse_button.x=touch[0].pos.x;
- ev.mouse_button.y=touch[0].pos.y;
- ev.mouse_button.global_x=touch[0].pos.x;
- ev.mouse_button.global_y=touch[0].pos.y;
- last_mouse=touch[0].pos;
- input->set_mouse_pos(Point2(ev.mouse_button.x,ev.mouse_button.y));
- main_loop->input_event(ev);
- }
-
-
- //send touch
- for(int i=0;i<touch.size();i++) {
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_TOUCH;
- ev.ID=++last_id;
- ev.screen_touch.index=touch[i].id;
- ev.screen_touch.pressed=true;
- ev.screen_touch.x=touch[i].pos.x;
- ev.screen_touch.y=touch[i].pos.y;
- main_loop->input_event(ev);
- }
-
- } break;
- case 1: { //motion
-
-
- if (p_points.size()) {
- //send mouse, should look for point 0?
- InputEvent ev;
- ev.type=InputEvent::MOUSE_MOTION;
- ev.ID=++last_id;
- ev.mouse_motion.button_mask=BUTTON_MASK_LEFT;
- ev.mouse_motion.x=p_points[0].pos.x;
- ev.mouse_motion.y=p_points[0].pos.y;
- input->set_mouse_pos(Point2(ev.mouse_motion.x,ev.mouse_motion.y));
- ev.mouse_motion.speed_x=input->get_mouse_speed().x;
- ev.mouse_motion.speed_y=input->get_mouse_speed().y;
- ev.mouse_motion.relative_x=p_points[0].pos.x-last_mouse.x;
- ev.mouse_motion.relative_y=p_points[0].pos.y-last_mouse.y;
- last_mouse=p_points[0].pos;
- main_loop->input_event(ev);
- }
-
- ERR_FAIL_COND(touch.size()!=p_points.size());
-
- for(int i=0;i<touch.size();i++) {
-
- int idx=-1;
- for(int j=0;j<p_points.size();j++) {
-
- if (touch[i].id==p_points[j].id) {
- idx=j;
- break;
- }
-
- }
-
- ERR_CONTINUE(idx==-1);
-
- if (touch[i].pos==p_points[idx].pos)
- continue; //no move unncesearily
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_DRAG;
- ev.ID=++last_id;
- ev.screen_drag.index=touch[i].id;
- ev.screen_drag.x=p_points[idx].pos.x;
- ev.screen_drag.y=p_points[idx].pos.y;
- ev.screen_drag.x=p_points[idx].pos.x - touch[i].pos.x;
- ev.screen_drag.y=p_points[idx].pos.y - touch[i].pos.y;
- main_loop->input_event(ev);
- touch[i].pos=p_points[idx].pos;
- }
-
-
- } break;
- case 2: { //release
-
-
-
- if (touch.size()) {
- //end all if exist
- InputEvent ev;
- ev.type=InputEvent::MOUSE_BUTTON;
- ev.ID=++last_id;
- ev.mouse_button.button_index=BUTTON_LEFT;
- ev.mouse_button.button_mask=BUTTON_MASK_LEFT;
- ev.mouse_button.pressed=false;
- ev.mouse_button.x=touch[0].pos.x;
- ev.mouse_button.y=touch[0].pos.y;
- ev.mouse_button.global_x=touch[0].pos.x;
- ev.mouse_button.global_y=touch[0].pos.y;
- main_loop->input_event(ev);
-
-
- for(int i=0;i<touch.size();i++) {
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_TOUCH;
- ev.ID=++last_id;
- ev.screen_touch.index=touch[i].id;
- ev.screen_touch.pressed=false;
- ev.screen_touch.x=touch[i].pos.x;
- ev.screen_touch.y=touch[i].pos.y;
- main_loop->input_event(ev);
-
- }
- }
-
- } break;
- case 3: { // add tuchi
-
-
-
-
-
- ERR_FAIL_INDEX(p_pointer,p_points.size());
-
- TouchPos tp=p_points[p_pointer];
- touch.push_back(tp);
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_TOUCH;
- ev.ID=++last_id;
- ev.screen_touch.index=tp.id;
- ev.screen_touch.pressed=true;
- ev.screen_touch.x=tp.pos.x;
- ev.screen_touch.y=tp.pos.y;
- main_loop->input_event(ev);
-
- } break;
- case 4: {
-
-
- for(int i=0;i<touch.size();i++) {
- if (touch[i].id==p_pointer) {
-
- InputEvent ev;
- ev.type=InputEvent::SCREEN_TOUCH;
- ev.ID=++last_id;
- ev.screen_touch.index=touch[i].id;
- ev.screen_touch.pressed=false;
- ev.screen_touch.x=touch[i].pos.x;
- ev.screen_touch.y=touch[i].pos.y;
- main_loop->input_event(ev);
- touch.remove(i);
- i--;
- }
- }
-
- } break;
-
- }
-
-}
-
-OS_Android::OS_Android(int p_video_width,int p_video_height) {
-
- default_videomode.width=p_video_width;
- default_videomode.height=p_video_height;
- default_videomode.fullscreen=true;
- default_videomode.resizable=false;
- main_loop=NULL;
- last_id=1;
-}
-
-OS_Android::~OS_Android() {
-
-
-}
diff --git a/platform/android/.old/os_android.h b/platform/android/.old/os_android.h
deleted file mode 100644
index 25ed84851a..0000000000
--- a/platform/android/.old/os_android.h
+++ /dev/null
@@ -1,108 +0,0 @@
-#ifndef OS_ANDROID_H
-#define OS_ANDROID_H
-
-#include "os/input.h"
-#include "drivers/unix/os_unix.h"
-#include "os/main_loop.h"
-#include "servers/physics/physics_server_sw.h"
-#include "servers/spatial_sound/spatial_sound_server_sw.h"
-#include "servers/spatial_sound_2d/spatial_sound_2d_server_sw.h"
-#include "servers/audio/audio_server_sw.h"
-#include "servers/physics_2d/physics_2d_server_sw.h"
-#include "servers/visual/rasterizer.h"
-#include "audio_driver_android.h"
-
-class OS_Android : public OS_Unix {
-public:
-
- struct TouchPos {
- int id;
- Point2 pos;
- };
-private:
-
- Vector<TouchPos> touch;
-
- Point2 last_mouse;
- unsigned int last_id;
-
-
- Rasterizer *rasterizer;
- VisualServer *visual_server;
-// AudioDriverPSP audio_driver_psp;
- AudioServerSW *audio_server;
- SampleManagerMallocSW *sample_manager;
- SpatialSoundServerSW *spatial_sound_server;
- SpatialSound2DServerSW *spatial_sound_2d_server;
- PhysicsServer *physics_server;
- Physics2DServer *physics_2d_server;
- AudioDriverAndroid audio_driver_android;
- InputDefault *input;
-
- VideoMode default_videomode;
- MainLoop * main_loop;
-public:
-
-
- void initialize_core();
-
- // functions used by main to initialize/deintialize the OS
- virtual int get_video_driver_count() const;
- virtual const char * get_video_driver_name(int p_driver) const;
-
- virtual VideoMode get_default_video_mode() const;
-
- virtual int get_audio_driver_count() const;
- virtual const char * get_audio_driver_name(int p_driver) const;
-
- virtual void initialize(const VideoMode& p_desired,int p_video_driver,int p_audio_driver);
-
- virtual void set_main_loop( MainLoop * p_main_loop );
- virtual void delete_main_loop();
-
- virtual void finalize();
-
-
- typedef int64_t ProcessID;
-
- static OS* get_singleton();
-
- virtual void vprint(const char* p_format, va_list p_list, bool p_stderr=false);
- virtual void print(const char *p_format, ... );
- virtual void alert(const String& p_alert);
-
-
- virtual void set_mouse_show(bool p_show);
- virtual void set_mouse_grab(bool p_grab);
- virtual bool is_mouse_grab_enabled() const;
- virtual Point2 get_mouse_pos() const;
- virtual int get_mouse_button_state() const;
- virtual void set_window_title(const String& p_title);
-
- //virtual void set_clipboard(const String& p_text);
- //virtual String get_clipboard() const;
-
- virtual void set_screen_orientation(ScreenOrientation p_orientation);
-
- virtual void set_video_mode(const VideoMode& p_video_mode,int p_screen=0);
- virtual VideoMode get_video_mode(int p_screen=0) const;
- virtual void get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen=0) const;
-
- virtual String get_name();
- virtual MainLoop *get_main_loop() const;
-
- virtual bool can_draw() const;
-
- virtual void set_cursor_shape(CursorShape p_shape);
-
- void main_loop_begin();
- bool main_loop_iterate();
- void main_loop_end();
-
- void process_touch(int p_what,int p_pointer, const Vector<TouchPos>& p_points);
- OS_Android(int p_video_width,int p_video_height);
- ~OS_Android();
-
-};
-
-#endif
diff --git a/platform/android/.old/platform_config.h b/platform/android/.old/platform_config.h
deleted file mode 100644
index dad24432a5..0000000000
--- a/platform/android/.old/platform_config.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <alloca.h>
diff --git a/platform/android/.old/run_debug.sh b/platform/android/.old/run_debug.sh
deleted file mode 100755
index e39193bd55..0000000000
--- a/platform/android/.old/run_debug.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-
-# com.android.godot
-# for this, need to push gdbserver to device
-# adb push [location]/gdbserver /data/local
-
-# run
-
-DEBUG_PORT=5039
-GDB_PATH="$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb"
-
-#kill existing previous gdbserver if exists
-adb shell killall gdbserver
-run-as com.android.godot killall com.android.godot
-run-as com.android.godot killall gdbserver
-#get data dir of the app
-adb pull /system/bin/app_process app_process
-
-DATA_DIR=`adb shell run-as com.android.godot /system/bin/sh -c pwd | tr -d '\n\r'`
-echo "DATA DIR IS $DATA_DIR"
-#start app
-adb shell am start -n com.android.godot/com.android.godot.Godot
-#get the pid of the app
-PID=`adb shell pidof com.android.godot | tr -d '\n\r'`
-echo "PID IS: $PID hoho"
-#launch gdbserver
-DEBUG_SOCKET=debug-socket
-#echo adb shell /data/local/gdbserver +debug-socket --attach $PID
-adb shell run-as com.android.godot lib/gdbserver +$DEBUG_SOCKET --attach $PID &
-sleep 2s
-#adb shell /data/local/gdbserver localhost:$DEBUG_PORT --attach $PID &
-#setup network connection
-adb forward tcp:$DEBUG_PORT localfilesystem:$DATA_DIR/$DEBUG_SOCKET
-cp gdb.setup.base gdb.setup
-echo "target remote :$DEBUG_PORT" >> gdb.setup
-#echo "file
-$GDB_PATH -x gdb.setup
-
-
-
-
diff --git a/platform/android/detect.py b/platform/android/detect.py
index 72a16ab59a..cd7f0d8de5 100644
--- a/platform/android/detect.py
+++ b/platform/android/detect.py
@@ -37,7 +37,8 @@ def get_flags():
('tools', 'no'),
('nedmalloc', 'no'),
('builtin_zlib', 'no'),
- ]
+ ('openssl','builtin'), #use builtin openssl
+ ]
def create(env):
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 51db77595b..3b6a62898e 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -181,7 +181,11 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
String package;
String name;
String icon;
+ String cmdline;
bool _signed;
+ bool apk_expansion;
+ String apk_expansion_salt;
+ String apk_expansion_pkey;
int orientation;
String release_keystore;
@@ -257,6 +261,8 @@ bool EditorExportPlatformAndroid::_set(const StringName& p_name, const Variant&
version_code=p_value;
else if (n=="version/name")
version_name=p_value;
+ else if (n=="command_line/extra_args")
+ cmdline=p_value;
else if (n=="package/unique_name")
package=p_value;
else if (n=="package/name")
@@ -279,6 +285,12 @@ bool EditorExportPlatformAndroid::_set(const StringName& p_name, const Variant&
release_keystore=p_value;
else if (n=="keystore/release_user")
release_username=p_value;
+ else if (n=="apk_expansion/enable")
+ apk_expansion=p_value;
+ else if (n=="apk_expansion/SALT")
+ apk_expansion_salt=p_value;
+ else if (n=="apk_expansion/public_key")
+ apk_expansion_pkey=p_value;
else if (n.begins_with("permissions/")) {
String what = n.get_slice("/",1).to_upper();
@@ -307,6 +319,8 @@ bool EditorExportPlatformAndroid::_get(const StringName& p_name,Variant &r_ret)
r_ret=version_code;
else if (n=="version/name")
r_ret=version_name;
+ else if (n=="command_line/extra_args")
+ r_ret=cmdline;
else if (n=="package/unique_name")
r_ret=package;
else if (n=="package/name")
@@ -329,6 +343,12 @@ bool EditorExportPlatformAndroid::_get(const StringName& p_name,Variant &r_ret)
r_ret=release_keystore;
else if (n=="keystore/release_user")
r_ret=release_username;
+ else if (n=="apk_expansion/enable")
+ r_ret=apk_expansion;
+ else if (n=="apk_expansion/SALT")
+ r_ret=apk_expansion_salt;
+ else if (n=="apk_expansion/public_key")
+ r_ret=apk_expansion_pkey;
else if (n.begins_with("permissions/")) {
String what = n.get_slice("/",1).to_upper();
@@ -348,6 +368,7 @@ void EditorExportPlatformAndroid::_get_property_list( List<PropertyInfo> *p_list
p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/debug", PROPERTY_HINT_FILE,"apk"));
p_list->push_back( PropertyInfo( Variant::STRING, "custom_package/release", PROPERTY_HINT_FILE,"apk"));
+ p_list->push_back( PropertyInfo( Variant::STRING, "command_line/extra_args"));
p_list->push_back( PropertyInfo( Variant::INT, "version/code", PROPERTY_HINT_RANGE,"1,65535,1"));
p_list->push_back( PropertyInfo( Variant::STRING, "version/name") );
p_list->push_back( PropertyInfo( Variant::STRING, "package/unique_name") );
@@ -361,6 +382,9 @@ void EditorExportPlatformAndroid::_get_property_list( List<PropertyInfo> *p_list
p_list->push_back( PropertyInfo( Variant::BOOL, "screen/support_xlarge") );
p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release",PROPERTY_HINT_FILE,"keystore") );
p_list->push_back( PropertyInfo( Variant::STRING, "keystore/release_user" ) );
+ p_list->push_back( PropertyInfo( Variant::BOOL, "apk_expansion/enable" ) );
+ p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/SALT" ) );
+ p_list->push_back( PropertyInfo( Variant::STRING, "apk_expansion/pubic_key" ) );
const char **perms = android_perms;
while(*perms) {
@@ -1065,13 +1089,65 @@ Error EditorExportPlatformAndroid::export_project(const String& p_path,bool p_de
ep.step("Adding Files..",1);
+ Error err=OK;
+ Vector<String> cl = cmdline.strip_edges().split(" ");
+ if (apk_expansion) {
+ String apkfname="main."+itos(version_code)+"."+package+".obb";
+ String fullpath=p_path.get_base_dir().plus_file(apkfname);
+ FileAccess *pf = FileAccess::open(fullpath,FileAccess::WRITE);
+ if (!pf) {
+ EditorNode::add_io_error("Could not write expansion package file: "+apkfname);
+ return OK;
+ }
+ err = save_pack(pf);
+ memdelete(pf);
+ cl.push_back("-main_pack");
+ cl.push_back(apkfname);
+ cl.push_back("-main_pack_md5");
+ cl.push_back(FileAccess::get_md5(fullpath));
+ cl.push_back("-main_pack_cfg");
+ cl.push_back(apk_expansion_salt+","+apk_expansion_pkey);
+
+ } else {
+
+ APKExportData ed;
+ ed.ep=&ep;
+ ed.apk=apk;
+
+ err = export_project_files(save_apk_file,&ed,false);
+ }
+
+ if (cl.size()) {
+ //add comandline
+ Vector<uint8_t> clf;
+ clf.resize(4);
+ encode_uint32(cl.size(),&clf[0]);
+ for(int i=0;i<cl.size();i++) {
+
+ CharString txt = cl[i].utf8();
+ int base = clf.size();
+ clf.resize(base+4+txt.length());
+ encode_uint32(txt.length(),&clf[base]);
+ copymem(&clf[base+4],txt.ptr(),txt.length());
+ print_line(itos(i)+" param: "+cl[i]);
+ }
+
+ zipOpenNewFileInZip(apk,
+ "assets/_cl_",
+ NULL,
+ NULL,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ Z_DEFLATED,
+ Z_DEFAULT_COMPRESSION);
- APKExportData ed;
- ed.ep=&ep;
- ed.apk=apk;
+ zipWriteInFileInZip(apk,clf.ptr(),clf.size());
+ zipCloseFileInZip(apk);
- Error err = export_project_files(save_apk_file,&ed,false);
+ }
zipClose(apk,NULL);
unzClose(pkg);
@@ -1400,6 +1476,7 @@ EditorExportPlatformAndroid::EditorExportPlatformAndroid() {
package="com.android.noname";
name="";
_signed=true;
+ apk_expansion=false;
device_lock = Mutex::create();
quit_request=false;
orientation=0;
@@ -1461,6 +1538,18 @@ bool EditorExportPlatformAndroid::can_export(String *r_error) const {
err+="Custom release package not found.\n";
}
+ if (apk_expansion) {
+
+ if (apk_expansion_salt=="") {
+ valid=false;
+ err+="Invalid SALT for apk expansion.\n";
+ }
+ if (apk_expansion_pkey=="") {
+ valid=false;
+ err+="Invalid public key for apk expansion.\n";
+ }
+ }
+
if (r_error)
*r_error=err;
diff --git a/platform/android/java/src/com/android/godot/Godot.java b/platform/android/java/src/com/android/godot/Godot.java
index 0fa07e2490..35ecdc818e 100644
--- a/platform/android/java/src/com/android/godot/Godot.java
+++ b/platform/android/java/src/com/android/godot/Godot.java
@@ -60,6 +60,7 @@ import java.io.IOException;
import android.provider.Settings.Secure;
import android.widget.FrameLayout;
import com.android.godot.input.*;
+import java.io.InputStream;
public class Godot extends Activity implements SensorEventListener
@@ -177,6 +178,48 @@ public class Godot extends Activity implements SensorEventListener
return Godot._self;
}
+
+ private String[] getCommandLine() {
+
+ InputStream is;
+ try {
+ is = getAssets().open("/_cl_");
+ byte[] len = new byte[4];
+ int r = is.read(len);
+ if (r<4) {
+ System.out.printf("**ERROR** Wrong cmdline length.\n");
+ return new String[0];
+ }
+ int argc=((int)(len[3])<<24) | ((int)(len[2])<<16) | ((int)(len[1])<<8) | ((int)(len[0]));
+ String[] cmdline = new String[argc];
+ for(int i=0;i<argc;i++) {
+ r = is.read(len);
+ if (r<4) {
+ System.out.printf("**ERROR** Wrong cmdline param lenght.\n");
+ return new String[0];
+ }
+ int strlen=((int)(len[3])<<24) | ((int)(len[2])<<16) | ((int)(len[1])<<8) | ((int)(len[0]));
+ if (strlen>65535) {
+ System.out.printf("**ERROR** Wrong command len\n");
+ return new String[0];
+ }
+ byte[] arg = new byte[strlen];
+ r = is.read(arg);
+ if (r!=strlen) {
+ cmdline[i]=new String(arg,"UTF-8");
+ }
+
+ }
+
+ return cmdline;
+ } catch (Exception e) {
+
+ return new String[0];
+ }
+
+
+ }
+
@Override protected void onCreate(Bundle icicle) {
System.out.printf("** GODOT ACTIVITY CREATED HERE ***\n");
@@ -187,10 +230,13 @@ public class Godot extends Activity implements SensorEventListener
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+
+
+
io = new GodotIO(this);
io.unique_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
GodotLib.io=io;
- GodotLib.initialize(this,io.needsReloadHooks());
+ GodotLib.initialize(this,io.needsReloadHooks(),getCommandLine());
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
@@ -198,6 +244,8 @@ public class Godot extends Activity implements SensorEventListener
result_callback = null;
mPaymentsManager = PaymentsManager.createManager(this).initService();
+
+
// instanceSingleton( new GodotFacebook(this) );
diff --git a/platform/android/java/src/com/android/godot/GodotLib.java b/platform/android/java/src/com/android/godot/GodotLib.java
index 459c6c1222..ad803f8e8d 100644
--- a/platform/android/java/src/com/android/godot/GodotLib.java
+++ b/platform/android/java/src/com/android/godot/GodotLib.java
@@ -44,7 +44,7 @@ public class GodotLib {
* @param height the current view height
*/
- public static native void initialize(Godot p_instance,boolean need_reload_hook);
+ public static native void initialize(Godot p_instance,boolean need_reload_hook,String[] p_cmdline);
public static native void resize(int width, int height,boolean reload);
public static native void newcontext();
public static native void quit();
diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp
index 8f91f7cc4a..5bf2fc5a73 100644
--- a/platform/android/java_glue.cpp
+++ b/platform/android/java_glue.cpp
@@ -660,7 +660,7 @@ static void _stop_video() {
env->CallVoidMethod(godot_io, _stopVideo);
}
-JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook) {
+JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook, jobjectArray p_cmdline) {
__android_log_print(ANDROID_LOG_INFO,"godot","**INIT EVENT! - %p\n",env);
@@ -723,8 +723,8 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env,
- os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model,_show_vk, _hide_vk,_set_screen_orient,_get_unique_id, _play_video, _is_video_playing, _pause_video, _stop_video);
- os_android->set_need_reload_hooks(p_need_reload_hook);
+ os_android = new OS_Android(_gfx_init_func,env,_open_uri,_get_data_dir,_get_locale, _get_model,_show_vk, _hide_vk,_set_screen_orient,_get_unique_id, _play_video, _is_video_playing, _pause_video, _stop_video);
+ os_android->set_need_reload_hooks(p_need_reload_hook);
char wd[500];
getcwd(wd,500);
@@ -734,13 +734,23 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env,
__android_log_print(ANDROID_LOG_INFO,"godot","**SETUP");
+ const char ** cmdline=NULL;
+ int cmdlen = env->GetArrayLength(p_cmdline);
+ cmdline = (const char**)malloc((env->GetArrayLength(p_cmdline)+1)*sizeof(const char*));
+ cmdline[cmdlen]=NULL;
+ for (int i=0; i<cmdlen; i++) {
+
+ jstring string = (jstring) env->GetObjectArrayElement(p_cmdline, i);
+ const char *rawString = env->GetStringUTFChars(string, 0);
+ cmdline[i]=rawString;
+ }
#if 0
char *args[]={"-test","render",NULL};
__android_log_print(ANDROID_LOG_INFO,"godot","pre asdasd setup...");
Error err = Main::setup("apk",2,args,false);
#else
- Error err = Main::setup("apk",0,NULL,false);
+ Error err = Main::setup("apk",cmdlen,(char**)cmdline,false);
#endif
if (err!=OK) {
diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h
index a519122726..6dc89418b5 100644
--- a/platform/android/java_glue.h
+++ b/platform/android/java_glue.h
@@ -36,7 +36,7 @@
extern "C" {
- JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook);
+ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook, jobjectArray p_cmdline);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_resize(JNIEnv * env, jobject obj, jint width, jint height, jboolean reload);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj);
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj);