engine/Templates/SalmonWallpaperTemplate/jni/android_api.cpp
2013-01-19 20:02:34 +00:00

119 lines
2.2 KiB
C++

#include "android_api.h"
#include "main_code.h"
#include "boost\thread.hpp"
std::shared_ptr<TAndroidApplication> App(new TAndroidApplication);
boost::mutex RenderMutex;
float lastOffsetX = 0.5f;
bool OffsetChanged = false;
bool RedBkgPref = false;
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_Init(JNIEnv * env, jobject obj, jint width, jint height)
{
RenderMutex.lock();
try
{
if (App->IsInited())
{
App->OuterDeinit(); //Clean up what is left at previous launch (if applicable)
}
App->Width = width;
App->Height = height;
if (width > height)
{
App->OuterInit(width, height, 800.f, 480.f);
}
else
{
App->OuterInit(width, height, 480.f, 800.f);
}
Renderer->SetAlpha((lastOffsetX) * pi / 180.f);
App->Inited = true;
}
catch (...)
{
throw;
}
RenderMutex.unlock();
}
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_Update(JNIEnv * env, jobject obj, long dt)
{
RenderMutex.unlock();
try
{
if (App->IsInited())
{
App->OuterDraw();
App->OuterUpdate(dt);
if (OffsetChanged)
{
Renderer->SetAlpha((lastOffsetX) * pi / 180.f);
}
}
}
catch (...)
{
throw;
}
RenderMutex.unlock();
}
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_OnTapMove(JNIEnv * env, jobject obj, jfloat x, jfloat y)
{
try
{
if (App->IsInited())
{
vec2 offset = vec2(x*Renderer->GetMatrixWidth()/static_cast<float>(App->Width), y*Renderer->GetMatrixHeight()/static_cast<float>(App->Height));
App->OuterOnMove(offset);
}
}
catch (...)
{
throw;
}
}
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_SetOffset(JNIEnv * env, jobject obj, jfloat offsetX, jfloat offsetY)
{
if (Renderer != NULL)
{
OffsetChanged = true;
lastOffsetX = offsetX;
}
}
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_SetOrientation(JNIEnv * env, jobject obj, int isLandscape)
{
}
JNIEXPORT void JNICALL Java_fishrungames_wallpapertemplate_JniWrapper_SetRedBkgPref(JNIEnv * env, jobject obj, jboolean r)
{
RedBkgPref = r;
}