diff --git a/.externalToolBuilders/[Löve] Generate Internal Scripts.launch b/.externalToolBuilders/[Löve] Generate Internal Scripts.launch
new file mode 100644
index 00000000..c22c36f0
--- /dev/null
+++ b/.externalToolBuilders/[Löve] Generate Internal Scripts.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.externalToolBuilders/ndk-build.launch b/.externalToolBuilders/ndk-build.launch
new file mode 100644
index 00000000..627cdd4e
--- /dev/null
+++ b/.externalToolBuilders/ndk-build.launch
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.gitignore b/.gitignore
index e99b816a..951d4c4e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ libs/
obj/
.*.swp
.*~
+*~
diff --git a/jni/src/Android.mk b/jni/src/Android.mk
deleted file mode 100644
index 769673b7..00000000
--- a/jni/src/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := main
-
-SDL_PATH := ../SDL2-2.0.1
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include
-
-# Add your application source files here...
-LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
- main.cpp
-
-LOCAL_CXXFLAGS := -std=c++0x
-LOCAL_SHARED_LIBRARIES := SDL2 liblua
-LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/jni/src/Android_static.mk b/jni/src/Android_static.mk
deleted file mode 100644
index faed669c..00000000
--- a/jni/src/Android_static.mk
+++ /dev/null
@@ -1,12 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := main
-
-LOCAL_SRC_FILES := YourSourceHere.c
-
-LOCAL_STATIC_LIBRARIES := SDL2_static
-
-include $(BUILD_SHARED_LIBRARY)
-$(call import-module,SDL)LOCAL_PATH := $(call my-dir)
diff --git a/jni/src/main.cpp b/jni/src/main.cpp
deleted file mode 100644
index d03c521c..00000000
--- a/jni/src/main.cpp
+++ /dev/null
@@ -1,324 +0,0 @@
-//
-// main.cpp
-// SDLTutorial
-//
-// Created by Ciaran McCormack on 25/09/13.
-// Copyright (c) 2013 Raiblin. All rights reserved.
-//
-
-#include
-#include
-#include
-#include
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-#include "lua.h"
-#include "lauxlib.h"
-#include "lualib.h"
-#ifdef __cplusplus
-}
-#endif
-
-using namespace std;
-
-class Graphics;
-
-shared_ptr graphics;
-
-class Graphics
-{
-public:
- float color[3];
-
- Graphics() :
- color ({ rand() % 255 / 255.0f, rand() % 255 / 255.0f, rand() % 255 / 255.0f})
- {}
-
- void update()
- {
- glClearColor(color[0], color[1], color[2], 1);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- }
-};
-
-int l_get_color (lua_State *L) {
- lua_pushnumber (L, graphics->color[0]);
- lua_pushnumber (L, graphics->color[1]);
- lua_pushnumber (L, graphics->color[2]);
-
- return 3;
-}
-
-int l_set_color(lua_State *L) {
- SDL_Log ("[Lua] setcolor was called");
-
- if (lua_gettop(L) != 3) {
- SDL_Log ("[Lua] engine.setcolor error: invalid color");
- return 0;
- }
-
- float r = 0.f;
- if (!lua_isnumber(L, -3)) {
- SDL_Log("[Lua] engine.set_color error: invalid color");
- return 0;
- }
- r = (float) lua_tonumber (L, -3);
-
- float g = 0.f;
- if (!lua_isnumber(L, -2)) {
- SDL_Log("[Lua] engine.set_color error: invalid color");
- return 0;
- }
- g = (float) lua_tonumber (L, -2);
-
- float b = 0.f;
- if (!lua_isnumber(L, -1)) {
- SDL_Log("[Lua] engine.set_color error: invalid color");
- return 0;
- }
- b = (float) lua_tonumber (L, -1);
-
- SDL_Log ("[Lua] got color %f, %f, %f", r, g, b );
-
- graphics->color[0] = r;
- graphics->color[1] = g;
- graphics->color[2] = b;
-
- return 0;
-}
-
-int l_log (lua_State *L) {
- if (!lua_isstring(L, -1)) {
- SDL_Log ("[Lua] invalid error message: expected string");
- return 0;
- }
- SDL_Log ("[Lua] %s", lua_tostring (L, -1));
- return 0;
-}
-
-static const struct luaL_Reg enginelib[] = {
- {"get_color", l_get_color},
- {"set_color", l_set_color},
- {"log", l_log},
- {NULL, NULL}
-};
-
-int EventFilter(void* userdata, SDL_Event* event)
-{
- switch (event->type)
- {
- case SDL_KEYDOWN:
- SDL_Log("Key Down %d", event->key.keysym.sym);
- return 0;
-
- case SDL_KEYUP:
- SDL_Log("Key Up %d", event->key.keysym.sym);
- return 0;
-
- case SDL_MOUSEMOTION:
- SDL_Log("Mouse Moved. X=%d, Y=%d, RelativeX=%d, RelativeY=%d", event->motion.x, event->motion.y, event->motion.xrel, event->motion.yrel);
- return 0;
-
- case SDL_MOUSEBUTTONDOWN:
- SDL_Log("Mouse Button Down %d", event->button.button);
- return 0;
-
- case SDL_MOUSEBUTTONUP:
- SDL_Log("Mouse Button Up %d", event->button.button);
- return 0;
-
- case SDL_MOUSEWHEEL:
- SDL_Log("Mouse Wheel");
- return 0;
- }
-
- return 1;
-}
-
-void l_call_on_touch (lua_State *L, int x, int y) {
- lua_getglobal (L, "on_touch");
-
- if (lua_isfunction(L, -1)) {
- lua_pushnumber (L, x);
- lua_pushnumber (L, y);
- lua_pcall (L, 2, 0, 0);
- }
-}
-
-void l_call_update (lua_State *L, float dt) {
- lua_getglobal (L, "update");
- if (lua_isfunction(L, -1)) {
- lua_pushnumber (L, dt);
- lua_pcall (L, 1, 0, 0);
- }
-}
-
-int main(int argc, char * argv[])
-{
- int width = 1080;
- int height = 720;
-
- if (0 != SDL_Init(SDL_INIT_VIDEO))
- {
- fprintf(stderr, "\nUnable to initialize SDL: %s\n", SDL_GetError());
- return 0;
- }
-
- SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE);
-
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
- SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
- SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
- SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
- SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
-
- //Create the window
- auto window = SDL_CreateWindow("SDL 2.0 OSX Tutorial", 0, 0, width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
-
- if (window == 0)
- {
- SDL_Quit();
- return false;
- }
-
- auto gl = SDL_GL_CreateContext(window);
-
- SDL_AddEventWatch(EventFilter, nullptr);
-
- graphics = shared_ptr(new Graphics());
-
- SDL_Log ("OpenGL Version: %s", glGetString(GL_VERSION));
-
- lua_State *L = luaL_newstate();
- luaL_openlibs(L);
- luaL_register (L, "engine", enginelib);
-
- SDL_RWops *file = SDL_RWFromFile("testfile.lua", "rb");
- if (file) {
- Sint64 file_size = file->size(file);
- char data_buffer[file_size + 1];
- size_t read_bytes = file->read(file, data_buffer, sizeof(char), (size_t) file_size);
- data_buffer[read_bytes] = '\0';
- luaL_dostring(L, data_buffer);
- } else {
- SDL_Log ("could not open file");
- }
-
- unsigned int last_time = SDL_GetTicks();
-
- //Game Loop
- SDL_Event event;
- auto done = false;
- while (!done)
- {
- SDL_PumpEvents();
- while (SDL_PollEvent(&event))
- {
- switch (event.type)
- {
- case SDL_QUIT:
- done = true;
- break;
-
- case SDL_APP_DIDENTERFOREGROUND:
- SDL_Log("SDL_APP_DIDENTERFOREGROUND");
- break;
-
- case SDL_APP_DIDENTERBACKGROUND:
- SDL_Log("SDL_APP_DIDENTERBACKGROUND");
- break;
-
- case SDL_APP_LOWMEMORY:
- SDL_Log("SDL_APP_LOWMEMORY");
- break;
-
- case SDL_APP_TERMINATING:
- SDL_Log("SDL_APP_TERMINATING");
- break;
-
- case SDL_APP_WILLENTERBACKGROUND:
- SDL_Log("SDL_APP_WILLENTERBACKGROUND");
- break;
-
- case SDL_APP_WILLENTERFOREGROUND:
- SDL_Log("SDL_APP_WILLENTERFOREGROUND");
- break;
-
- case SDL_FINGERDOWN:
- l_call_on_touch(L, event.tfinger.x, event.tfinger.y);
- SDL_Log("Got finger down at %d,%d", event.tfinger.x, event.tfinger.y);
- break;
-
- case SDL_WINDOWEVENT:
- {
- switch (event.window.event)
- {
- case SDL_WINDOWEVENT_SHOWN:
- SDL_Log("Window %d shown", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_HIDDEN:
- SDL_Log("Window %d hidden", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_EXPOSED:
- SDL_Log("Window %d exposed", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_MOVED:
- SDL_Log("Window %d moved to %d,%d", event.window.windowID, event.window.data1, event.window.data2);
- break;
- case SDL_WINDOWEVENT_RESIZED:
- SDL_Log("Window %d resized to %dx%d", event.window.windowID, event.window.data1, event.window.data2);
- break;
- case SDL_WINDOWEVENT_MINIMIZED:
- SDL_Log("Window %d minimized", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_MAXIMIZED:
- SDL_Log("Window %d maximized", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_RESTORED:
- SDL_Log("Window %d restored", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_ENTER:
- SDL_Log("Mouse entered window %d", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_LEAVE:
- SDL_Log("Mouse left window %d", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_FOCUS_GAINED:
- SDL_Log("Window %d gained keyboard focus", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_FOCUS_LOST:
- SDL_Log("Window %d lost keyboard focus", event.window.windowID);
- break;
- case SDL_WINDOWEVENT_CLOSE:
- SDL_Log("Window %d closed", event.window.windowID);
- break;
- default:
- SDL_Log("Window %d got unknown event %d", event.window.windowID, event.window.event);
- break;
- }
-
- break;
- }
- }
- }
-
- unsigned int current_time = SDL_GetTicks();
- l_call_update(L, static_cast(current_time - last_time) * 0.001f);
- last_time = current_time;
-
- graphics->update();
- SDL_GL_SwapWindow(window);
- }
-
- lua_close (L);
-
- SDL_GL_DeleteContext(gl);
-
- // Done! Close the window, clean-up and exit the program.
- SDL_DestroyWindow(window);
- SDL_Quit();
-}
-