diff --git a/init.cpp b/init.cpp index 7dfffcef..83c5e760 100644 --- a/init.cpp +++ b/init.cpp @@ -165,6 +165,10 @@ #define CAP_PNG (!ISMOBWEB) #endif +#ifndef CAP_ORIENTATION +#define CAP_ORIENTATION ISMOBILE +#endif + #ifndef CAP_COMMANDLINE #define CAP_COMMANDLINE (!ISMOBILE) #endif @@ -299,13 +303,13 @@ void gdpush(int t); typedef int SDL_Event; #endif -// #if ISWEB -// inline Uint8 *SDL_GetKeyState(void *v) { static Uint8 tab[1024]; return tab; } -// #endif +#if ISWEB +inline Uint8 *SDL_GetKeyState(void *v) { static Uint8 tab[1024]; return tab; } +#endif -extern "C" { +/* extern "C" { Uint8 *SDL_GetKeyState(void*); -} +} */ #ifndef CAP_GLEW #define CAP_GLEW (CAP_GL && !ISMOBILE && !ISMAC && !ISLINUX) diff --git a/rug.cpp b/rug.cpp index 27874034..3bcf41b5 100644 --- a/rug.cpp +++ b/rug.cpp @@ -11,6 +11,8 @@ namespace rug { +int when_enabled; + struct rug_exception { }; bool fast_euclidean = true; @@ -1196,6 +1198,7 @@ transmatrix currentrot; void init() { if(rugged) return; + when_enabled = ticks; glbuf = new renderbuffer(TEXTURESIZE, TEXTURESIZE, vid.usingGL && !rendernogl); if(!glbuf->valid) { addMessage(XLAT("Failed to enable")); @@ -1303,12 +1306,24 @@ void finger_on(int coord, ld val) { enqueue(finger_center), good_shape = false; } +transmatrix last_orientation; + void actDraw() { try { if(!renderonce) prepareTexture(); physics(); drawRugScene(); + #if CAP_ORIENTATION + if(ticks < when_enabled + 500) + last_orientation = getOrientation(); + else { + transmatrix next_orientation = getOrientation(); + apply_rotation(inverse(last_orientation) * next_orientation); + last_orientation = next_orientation; + } + #endif + #if CAP_SDL Uint8 *keystate = SDL_GetKeyState(NULL); int qm = 0;