Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
There have been plenty of ppl involved in creating this version. I don't wanna mention names as I'm sure I'd forget someone so I just tell where help has been done: - The partial android versions done by various ppl - Testing on different android devices - reviewing code (especially the in core changes) - testing controls - reviewing texts A big thank you to everyone helping this to be completed!
- Loading branch information
sapier
authored and
sapier
committed
Jun 29, 2014
1 parent
ff36071
commit 1cc40c0
Showing
66 changed files
with
4,424 additions
and
161 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="org.minetest.minetest" | ||
android:versionCode="###ANDROID_VERSION###" | ||
android:versionName="###BASE_VERSION###.###ANDROID_VERSION###" | ||
android:installLocation="auto"> | ||
<uses-sdk android:minSdkVersion="9"/> | ||
<uses-feature android:glEsVersion="0x00010000" android:required="true"/> | ||
<uses-permission android:name="android.permission.INTERNET" /> | ||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> | ||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> | ||
###DEBUG_BUILD### | ||
<application android:icon="@drawable/irr_icon" android:label="Minetest" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" ###DEBUG_FLAG###> | ||
<activity android:name=".MtNativeActivity" | ||
android:label="Minetest" | ||
android:launchMode="singleTask" | ||
android:configChanges="orientation|keyboardHidden" | ||
android:screenOrientation="landscape" | ||
android:clearTaskOnLaunch="true"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
<meta-data android:name="android.app.lib_name" android:value="minetest" /> | ||
</activity> | ||
<activity android:name=".MinetestTextEntry" | ||
android:theme="@style/Theme.Transparent" | ||
android:excludeFromRecents="true"> | ||
</activity> | ||
<activity android:name=".MinetestAssetCopy" | ||
android:theme="@style/Theme.Transparent" | ||
android:excludeFromRecents="true"> | ||
</activity> | ||
</application> | ||
</manifest> |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<project name="Minetest" default="help"> | ||
<property file="local.properties" /> | ||
<property file="ant.properties" /> | ||
<property environment="env" /> | ||
<condition property="sdk.dir" value="${env.ANDROID_HOME}"> | ||
<isset property="env.ANDROID_HOME" /> | ||
</condition> | ||
<loadproperties srcFile="project.properties" /> | ||
<fail | ||
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable." | ||
unless="sdk.dir" | ||
/> | ||
<import file="custom_rules.xml" optional="true" /> | ||
<import file="${sdk.dir}/tools/ant/build.xml" /> | ||
</project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
--- irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 20:56:21.289559503 +0200 | ||
+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp.orig 2014-06-03 20:57:39.281556749 +0200 | ||
@@ -423,6 +423,7 @@ | ||
} | ||
|
||
device->postEventFromUser(event); | ||
+ status = 1; | ||
} | ||
break; | ||
default: | ||
@@ -479,7 +480,7 @@ | ||
KeyMap[1] = KEY_LBUTTON; // AKEYCODE_SOFT_LEFT | ||
KeyMap[2] = KEY_RBUTTON; // AKEYCODE_SOFT_RIGHT | ||
KeyMap[3] = KEY_HOME; // AKEYCODE_HOME | ||
- KeyMap[4] = KEY_BACK; // AKEYCODE_BACK | ||
+ KeyMap[4] = KEY_CANCEL; // AKEYCODE_BACK | ||
KeyMap[5] = KEY_UNKNOWN; // AKEYCODE_CALL | ||
KeyMap[6] = KEY_UNKNOWN; // AKEYCODE_ENDCALL | ||
KeyMap[7] = KEY_KEY_0; // AKEYCODE_0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
--- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-22 17:01:13.266568869 +0200 | ||
+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-22 17:03:59.298572810 +0200 | ||
@@ -366,112 +366,140 @@ | ||
void(*convert)(const void*, s32, void*) = 0; | ||
getFormatParameters(ColorFormat, InternalFormat, filtering, PixelFormat, PixelType, convert); | ||
|
||
- // make sure we don't change the internal format of existing images | ||
- if (!newTexture) | ||
- InternalFormat = oldInternalFormat; | ||
- | ||
- Driver->setActiveTexture(0, this); | ||
- | ||
- if (Driver->testGLError()) | ||
- os::Printer::log("Could not bind Texture", ELL_ERROR); | ||
- | ||
- // mipmap handling for main texture | ||
- if (!level && newTexture) | ||
- { | ||
- // auto generate if possible and no mipmap data is given | ||
- if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE)) | ||
- { | ||
- if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) | ||
- glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); | ||
- else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) | ||
- glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); | ||
- else | ||
- glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); | ||
+ bool retry = false; | ||
+ | ||
+ do { | ||
+ if (retry) { | ||
+ InternalFormat = GL_RGBA; | ||
+ PixelFormat = GL_RGBA; | ||
+ convert = CColorConverter::convert_A8R8G8B8toA8B8G8R8; | ||
+ } | ||
+ // make sure we don't change the internal format of existing images | ||
+ if (!newTexture) | ||
+ InternalFormat = oldInternalFormat; | ||
|
||
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); | ||
- AutomaticMipmapUpdate=true; | ||
- } | ||
+ Driver->setActiveTexture(0, this); | ||
|
||
- // enable bilinear filter without mipmaps | ||
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering); | ||
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); | ||
- } | ||
+ if (Driver->testGLError()) | ||
+ os::Printer::log("Could not bind Texture", ELL_ERROR); | ||
|
||
- // now get image data and upload to GPU | ||
+ // mipmap handling for main texture | ||
+ if (!level && newTexture) | ||
+ { | ||
+ // auto generate if possible and no mipmap data is given | ||
+ if (!IsCompressed && HasMipMaps && !mipmapData && Driver->queryFeature(EVDF_MIP_MAP_AUTO_UPDATE)) | ||
+ { | ||
+ if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_SPEED)) | ||
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST); | ||
+ else if (Driver->getTextureCreationFlag(ETCF_OPTIMIZED_FOR_QUALITY)) | ||
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST); | ||
+ else | ||
+ glHint(GL_GENERATE_MIPMAP_HINT, GL_DONT_CARE); | ||
+ | ||
+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); | ||
+ AutomaticMipmapUpdate=true; | ||
+ } | ||
+ | ||
+ // enable bilinear filter without mipmaps | ||
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering); | ||
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); | ||
+ } | ||
|
||
- u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height); | ||
+ // now get image data and upload to GPU | ||
|
||
- void* source = image->lock(); | ||
+ u32 compressedImageSize = IImage::getCompressedImageSize(ColorFormat, image->getDimension().Width, image->getDimension().Height); | ||
|
||
- IImage* tmpImage = 0; | ||
+ void* source = image->lock(); | ||
|
||
- if (convert) | ||
- { | ||
- tmpImage = new CImage(image->getColorFormat(), image->getDimension()); | ||
- void* dest = tmpImage->lock(); | ||
- convert(source, image->getDimension().getArea(), dest); | ||
- image->unlock(); | ||
- source = dest; | ||
- } | ||
+ IImage* tmpImage = 0; | ||
|
||
- if (newTexture) | ||
- { | ||
- if (IsCompressed) | ||
+ if (convert) | ||
{ | ||
- glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width, | ||
- image->getDimension().Height, 0, compressedImageSize, source); | ||
+ tmpImage = new CImage(image->getColorFormat(), image->getDimension()); | ||
+ void* dest = tmpImage->lock(); | ||
+ convert(source, image->getDimension().getArea(), dest); | ||
+ image->unlock(); | ||
+ source = dest; | ||
} | ||
- else | ||
- glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width, | ||
- image->getDimension().Height, 0, PixelFormat, PixelType, source); | ||
- } | ||
- else | ||
- { | ||
- if (IsCompressed) | ||
+ | ||
+ if (newTexture) | ||
{ | ||
- glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, | ||
- image->getDimension().Height, PixelFormat, compressedImageSize, source); | ||
+ if (IsCompressed) | ||
+ { | ||
+ glCompressedTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, image->getDimension().Width, | ||
+ image->getDimension().Height, 0, compressedImageSize, source); | ||
+ } | ||
+ else | ||
+ glTexImage2D(GL_TEXTURE_2D, level, InternalFormat, image->getDimension().Width, | ||
+ image->getDimension().Height, 0, PixelFormat, PixelType, source); | ||
} | ||
else | ||
- glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, | ||
- image->getDimension().Height, PixelFormat, PixelType, source); | ||
- } | ||
- | ||
- if (convert) | ||
- { | ||
- tmpImage->unlock(); | ||
- tmpImage->drop(); | ||
- } | ||
- else | ||
- image->unlock(); | ||
- | ||
- if (!level && newTexture) | ||
- { | ||
- if (IsCompressed && !mipmapData) | ||
{ | ||
- if (image->hasMipMaps()) | ||
- mipmapData = static_cast<u8*>(image->lock())+compressedImageSize; | ||
+ if (IsCompressed) | ||
+ { | ||
+ glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, | ||
+ image->getDimension().Height, PixelFormat, compressedImageSize, source); | ||
+ } | ||
else | ||
- HasMipMaps = false; | ||
+ glTexSubImage2D(GL_TEXTURE_2D, level, 0, 0, image->getDimension().Width, | ||
+ image->getDimension().Height, PixelFormat, PixelType, source); | ||
} | ||
|
||
- regenerateMipMapLevels(mipmapData); | ||
- | ||
- if (HasMipMaps) // might have changed in regenerateMipMapLevels | ||
+ if (convert) | ||
{ | ||
- // enable bilinear mipmap filter | ||
- GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST; | ||
- | ||
- if (filtering != GL_LINEAR) | ||
- filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST; | ||
+ tmpImage->unlock(); | ||
+ tmpImage->drop(); | ||
+ } | ||
+ else | ||
+ image->unlock(); | ||
+ | ||
+ if (glGetError() != GL_NO_ERROR) { | ||
+ static bool warned = false; | ||
+ if ((!retry) && (ColorFormat == ECF_A8R8G8B8)) { | ||
+ | ||
+ if (!warned) { | ||
+ os::Printer::log("Your driver claims to support GL_BGRA but fails on trying to upload a texture, converting to GL_RGBA and trying again", ELL_ERROR); | ||
+ warned = true; | ||
+ } | ||
+ } | ||
+ else if (retry) { | ||
+ os::Printer::log("Neither uploading texture as GL_BGRA nor, converted one using GL_RGBA succeeded", ELL_ERROR); | ||
+ } | ||
+ retry = !retry; | ||
+ continue; | ||
+ } else { | ||
+ retry = false; | ||
+ } | ||
|
||
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps); | ||
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); | ||
+ if (!level && newTexture) | ||
+ { | ||
+ if (IsCompressed && !mipmapData) | ||
+ { | ||
+ if (image->hasMipMaps()) | ||
+ mipmapData = static_cast<u8*>(image->lock())+compressedImageSize; | ||
+ else | ||
+ HasMipMaps = false; | ||
+ } | ||
+ | ||
+ regenerateMipMapLevels(mipmapData); | ||
+ | ||
+ if (HasMipMaps) // might have changed in regenerateMipMapLevels | ||
+ { | ||
+ // enable bilinear mipmap filter | ||
+ GLint filteringMipMaps = GL_LINEAR_MIPMAP_NEAREST; | ||
+ | ||
+ if (filtering != GL_LINEAR) | ||
+ filteringMipMaps = GL_NEAREST_MIPMAP_NEAREST; | ||
+ | ||
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filteringMipMaps); | ||
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering); | ||
+ } | ||
} | ||
- } | ||
|
||
- if (Driver->testGLError()) | ||
- os::Printer::log("Could not glTexImage2D", ELL_ERROR); | ||
+ if (Driver->testGLError()) | ||
+ os::Printer::log("Could not glTexImage2D", ELL_ERROR); | ||
+ } | ||
+ while(retry); | ||
} | ||
|
||
|
||
--- irrlicht/source/Irrlicht/COGLESTexture.cpp.orig 2014-06-25 00:28:50.820501856 +0200 | ||
+++ irrlicht/source/Irrlicht/COGLESTexture.cpp 2014-06-25 00:08:37.712544692 +0200 | ||
@@ -422,6 +422,9 @@ | ||
source = dest; | ||
} | ||
|
||
+ //clear old error | ||
+ glGetError(); | ||
+ | ||
if (newTexture) | ||
{ | ||
if (IsCompressed) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- irrlicht.orig/include/IEventReceiver.h 2014-06-03 19:43:50.433713133 +0200 | ||
+++ irrlicht/include/IEventReceiver.h 2014-06-03 19:44:36.993711489 +0200 | ||
@@ -375,6 +375,9 @@ | ||
// Y position of simple touch. | ||
s32 Y; | ||
|
||
+ // number of current touches | ||
+ s32 touchedCount; | ||
+ | ||
//! Type of touch event. | ||
ETOUCH_INPUT_EVENT Event; | ||
}; | ||
--- irrlicht.orig/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:43:50.505713130 +0200 | ||
+++ irrlicht/source/Irrlicht/Android/CIrrDeviceAndroid.cpp 2014-06-03 19:45:37.265709359 +0200 | ||
@@ -315,6 +315,7 @@ | ||
event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, i); | ||
event.TouchInput.X = AMotionEvent_getX(androidEvent, i); | ||
event.TouchInput.Y = AMotionEvent_getY(androidEvent, i); | ||
+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent); | ||
|
||
device->postEventFromUser(event); | ||
} | ||
@@ -326,6 +327,7 @@ | ||
event.TouchInput.ID = AMotionEvent_getPointerId(androidEvent, pointerIndex); | ||
event.TouchInput.X = AMotionEvent_getX(androidEvent, pointerIndex); | ||
event.TouchInput.Y = AMotionEvent_getY(androidEvent, pointerIndex); | ||
+ event.TouchInput.touchedCount = AMotionEvent_getPointerCount(androidEvent); | ||
|
||
device->postEventFromUser(event); | ||
} |
Oops, something went wrong.