From 3f880389903c5a916eea8b86b609ad86bc82b32b Mon Sep 17 00:00:00 2001 From: XProger Date: Mon, 24 Apr 2017 01:50:27 +0300 Subject: [PATCH] #15 fix android build --- src/camera.h | 21 ++++++++++++------ src/core.h | 16 +++++++++----- src/game.h | 4 ++-- src/platform/android/app/build.gradle | 2 +- .../android/app/src/main/cpp/main.cpp | 22 +++++-------------- .../org/xproger/openlara/MainActivity.java | 8 +++---- 6 files changed, 38 insertions(+), 35 deletions(-) diff --git a/src/camera.h b/src/camera.h index cd8eb51..d9be322 100644 --- a/src/camera.h +++ b/src/camera.h @@ -20,13 +20,15 @@ struct Camera : Controller { float timer; int actTargetEntity, actCamera; - bool cutscene; - bool firstPerson; - Basis prevBasis; + Basis prevBasis; vec4 *reflectPlane; - Camera(IGame *game, Lara *owner) : Controller(game, owner ? owner->entity : 0), owner(owner), frustum(new Frustum()), timer(0.0f), actTargetEntity(-1), actCamera(-1), reflectPlane(NULL) { + bool cutscene; + bool firstPerson; + bool isVR; + + Camera(IGame *game, Lara *owner) : Controller(game, owner ? owner->entity : 0), owner(owner), frustum(new Frustum()), timer(0.0f), actTargetEntity(-1), actCamera(-1), reflectPlane(NULL), isVR(false) { changeView(false); cutscene = owner->getEntity().type != TR::Entity::LARA && level->cameraFrames; } @@ -250,8 +252,11 @@ struct Camera : Controller { checkRoom(); } - mat4 head = Input::head.getMatrix(); - mViewInv = mat4(pos, target, vec3(0, -1, 0)) * head; + mViewInv = mat4(pos, target, vec3(0, -1, 0)); + if (isVR) { + mat4 head = Input::head.getMatrix(); + mViewInv = mViewInv * head; + } updateListener(); } @@ -268,7 +273,9 @@ struct Camera : Controller { Core::mViewInv = mViewInv; Core::mView = Core::mViewInv.inverse(); - Core::mView.translate(Core::mViewInv.right.xyz * (-Core::eye * 32.0f)); + + if (isVR) + Core::mView.translate(Core::mViewInv.right.xyz * (-Core::eye * 32.0f)); Core::mProj = getProjMatrix(); diff --git a/src/core.h b/src/core.h index fd3195f..e8297aa 100644 --- a/src/core.h +++ b/src/core.h @@ -8,13 +8,16 @@ #include #elif ANDROID #define MOBILE - #include - #include + #include + #include #include - #define GL_TEXTURE_COMPARE_MODE 0x884C - #define GL_TEXTURE_COMPARE_FUNC 0x884D - #define GL_COMPARE_REF_TO_TEXTURE 0x884E + #define GL_CLAMP_TO_BORDER 0x812D + #define GL_TEXTURE_BORDER_COLOR 0x1004 + + #define GL_TEXTURE_COMPARE_MODE 0x884C + #define GL_TEXTURE_COMPARE_FUNC 0x884D + #define GL_COMPARE_REF_TO_TEXTURE 0x884E #undef GL_RGBA32F #undef GL_RGBA16F @@ -63,6 +66,9 @@ #define glDeleteVertexArrays glDeleteVertexArraysOES #define glBindVertexArray glBindVertexArrayOES + #define GL_CLAMP_TO_BORDER GL_CLAMP_TO_BORDER_EXT + #define GL_TEXTURE_BORDER_COLOR GL_TEXTURE_BORDER_COLOR_EXT + #define GL_TEXTURE_COMPARE_MODE GL_TEXTURE_COMPARE_MODE_EXT #define GL_TEXTURE_COMPARE_FUNC GL_TEXTURE_COMPARE_FUNC_EXT #define GL_COMPARE_REF_TO_TEXTURE GL_COMPARE_REF_TO_TEXTURE_EXT diff --git a/src/game.h b/src/game.h index d3c1d9c..76846c9 100644 --- a/src/game.h +++ b/src/game.h @@ -1,5 +1,5 @@ -#ifndef H_GAME_TR -#define H_GAME_TR +#ifndef H_GAME +#define H_GAME #include "core.h" #include "format.h" diff --git a/src/platform/android/app/build.gradle b/src/platform/android/app/build.gradle index 4d9ee94..e72e1df 100644 --- a/src/platform/android/app/build.gradle +++ b/src/platform/android/app/build.gradle @@ -8,7 +8,7 @@ android { minSdkVersion 18 targetSdkVersion 25 versionCode 1 - versionName "1.0" + versionName "0.1" ndk { abiFilters 'armeabi-v7a' } diff --git a/src/platform/android/app/src/main/cpp/main.cpp b/src/platform/android/app/src/main/cpp/main.cpp index c48e190..946b65d 100644 --- a/src/platform/android/app/src/main/cpp/main.cpp +++ b/src/platform/android/app/src/main/cpp/main.cpp @@ -1,8 +1,6 @@ #include #include -//#include "vr/gvr/capi/include/gvr.h" #include -#include #include #include @@ -20,7 +18,7 @@ int getTime() { extern "C" { -int lastTime, fpsTime, fps; +int lastTime; char Stream::cacheDir[255]; char Stream::contentDir[255]; @@ -44,8 +42,6 @@ JNI_METHOD(void, nativeInit)(JNIEnv* env, jobject obj, jstring packName, jstring Game::init(level, music); lastTime = getTime(); - fpsTime = lastTime + 1000; - fps = 0; } JNI_METHOD(void, nativeFree)(JNIEnv* env) { @@ -68,12 +64,6 @@ JNI_METHOD(void, nativeRender)(JNIEnv* env) { Core::stats.dips = 0; Core::stats.tris = 0; Game::render(); - if (fpsTime < getTime()) { - LOG("FPS: %d DIP: %d TRI: %d\n", fps, Core::stats.dips, Core::stats.tris); - fps = 0; - fpsTime = getTime() + 1000; - } else - fps++; } JNI_METHOD(void, nativeResize)(JNIEnv* env, jobject obj, jint w, jint h) { @@ -137,11 +127,11 @@ JNI_METHOD(void, nativeTouch)(JNIEnv* env, jobject obj, jint id, jint state, jfl } if (id == -100) { - switch (state) { - case 0 : Input::head.basis.rot.x = x; Input::head.basis.rot.y = y; break; - case 1 : Input::head.basis.rot.z = x; Input::head.basis.rot.w = y; Input::head.set(); break; - } - return; + switch (state) { + case 0 : Input::head.basis.rot.x = x; Input::head.basis.rot.y = y; break; + case 1 : Input::head.basis.rot.z = x; Input::head.basis.rot.w = y; Input::head.set(); break; + } + return; } // touch diff --git a/src/platform/android/app/src/main/java/org/xproger/openlara/MainActivity.java b/src/platform/android/app/src/main/java/org/xproger/openlara/MainActivity.java index 6d6e1ef..0ac310e 100644 --- a/src/platform/android/app/src/main/java/org/xproger/openlara/MainActivity.java +++ b/src/platform/android/app/src/main/java/org/xproger/openlara/MainActivity.java @@ -58,12 +58,13 @@ public class MainActivity extends Activity implements OnTouchListener, OnKeyList //setAsyncReprojectionEnabled(true); //setSustainedPerformanceMode(this, true); setContentView(view); - +/* SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_FASTEST); - +*/ try { String packName = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES).applicationInfo.sourceDir; + // hardcoded demo level and music AssetFileDescriptor fLevel = this.getResources().openRawResourceFd(R.raw.level2); AssetFileDescriptor fMusic = this.getResources().openRawResourceFd(R.raw.music); @@ -122,8 +123,6 @@ public class MainActivity extends Activity implements OnTouchListener, OnKeyList @Override public void onSensorChanged(SensorEvent event) { -// wrapper.onTouch(-100, 0, event.values[0], event.values[1]); -// wrapper.onTouch(-100, 1, event.values[2], event.values[3]); wrapper.onTouch(-100, 0, -event.values[1], event.values[0]); wrapper.onTouch(-100, 1, event.values[2], event.values[3]); } @@ -186,6 +185,7 @@ public class MainActivity extends Activity implements OnTouchListener, OnKeyList } } +// @TODO: use native OpenSL ES class Sound { private short buffer[]; private static AudioTrack audioTrack;