Browse Source

Java-side files updated, CrownView no more needed

mikymod 12 years ago
parent
commit
81857983bf

+ 60 - 18
android/jni/Android.mk

@@ -59,14 +59,17 @@ LOCAL_SRC_FILES :=\
 	input/Touch.cpp\
 	input/EventDispatcher.cpp\
 	input/InputManager.cpp\
+\
+	lua/LuaStack.cpp\
+	lua/LuaEnvironment.cpp\
 \
 	network/BitMessage.cpp\
 \
 	os/OS.cpp\
 	os/android/AndroidOS.cpp\
-	os/android/AndroidInput.cpp\
 	os/android/AndroidDevice.cpp\
-	os/android/File.cpp\
+	os/android/OsWindow.cpp\
+	os/android/OsFile.cpp\
 	os/posix/Thread.cpp\
 	os/posix/Mutex.cpp\
 	os/posix/Cond.cpp\
@@ -75,24 +78,25 @@ LOCAL_SRC_FILES :=\
 \
 	renderers/gles/GLESRenderer.cpp\
 	renderers/gles/GLESUtils.cpp\
+	renderers/gles/egl/GLContext.cpp\
 	renderers/DebugRenderer.cpp\
 	renderers/PixelFormat.cpp\
 	renderers/VertexFormat.cpp\
 \
-	ArchiveBundle.cpp
-	Camera.cpp
-	Device.cpp
-	FileBundle.cpp
-	FontResource.cpp
-	FPSSystem.cpp
-	Game.cpp
-	JSONParser.cpp
-	MaterialResource.cpp
-	PixelShaderResource.cpp
-	ResourceManager.cpp
-	TextResource.cpp
-	TextureResource.cpp
-	VertexShaderResource.cpp
+	ArchiveBundle.cpp\
+	Camera.cpp\
+	Device.cpp\
+	FileBundle.cpp\
+	FontResource.cpp\
+	FPSSystem.cpp\
+	JSONParser.cpp\
+	MaterialResource.cpp\
+	PixelShaderResource.cpp\
+	ResourceManager.cpp\
+	TextResource.cpp\
+	TextureResource.cpp\
+	VertexShaderResource.cpp\
+	Game.cpp\
 \
 
 LOCAL_C_INCLUDES	:=\
@@ -108,6 +112,7 @@ LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/core/settings\
 	$(LOCAL_PATH)/core/strings\
 	$(LOCAL_PATH)/input\
+	$(LOCAL_PATH)/lua\
 	$(LOCAL_PATH)/network\
 	$(LOCAL_PATH)/os\
 	$(LOCAL_PATH)/os/android\
@@ -115,8 +120,45 @@ LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/renderers/gles\
 	$(LOCAL_PATH)/renderers/gles/egl\
 	$(LOCAL_PATH)/samples\
+#	include third/luajit/include
+\
 
 LOCAL_CPPFLAGS	:= -g -fexceptions
-LOCAL_LDLIBS	:= -llog -landroid -lGLESv2
+LOCAL_LDLIBS	:= -llog -landroid -lEGL -lGLESv2 -lz
+LOCAL_LDLIBS 	+= $(LOCAL_PATH)/libluajit-5.1.so -lluajit-5.1
+LOCAL_SHARED_LIBRARIES := crown luajit-5.1
 include $(BUILD_SHARED_LIBRARY)
-#(call import-module, android/native_app_glue)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := crownlua
+
+LOCAL_SRC_FILES :=\
+	lua/LuaStack.cpp\
+	lua/LuaEnvironment.cpp\
+	lua/AccelerometerBinds.cpp\
+	lua/CameraBinds.cpp\
+	lua/DeviceBinds.cpp\
+	lua/KeyboardBinds.cpp\
+	lua/Mat4Binds.cpp\
+	lua/MathBinds.cpp\
+	lua/MouseBinds.cpp\
+	lua/QuatBinds.cpp\
+	lua/TouchBinds.cpp\
+	lua/Vec2Binds.cpp\
+	lua/Vec3Binds.cpp\
+	Game.cpp\
+
+\
+
+LOCAL_C_INCLUDES	:=\
+	$(LOCAL_PATH)\
+	$(LOCAL_PATH)/lua\
+#	include third/luajit/include
+\
+
+LOCAL_CPPFLAGS	:= -g -fexceptions -I
+LOCAL_LDLIBS	:= -llog -landroid
+LOCAL_LDLIBS 	+= $(LOCAL_PATH)/libluajit-5.1.so -lluajit-5.1
+LOCAL_SHARED_LIBRARIES := crown luajit-5.1
+include $(BUILD_SHARED_LIBRARY)

+ 32 - 33
android/src/crown/android/CrownActivity.java

@@ -1,3 +1,28 @@
+/*
+Copyright (c) 2013 Daniele Bartolini, Michele Rossi
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
 package crown.android;
 
 import android.app.Activity;
@@ -12,7 +37,8 @@ import android.hardware.SensorManager;
 import android.content.Context;
 import android.widget.Toast;
 import android.content.res.AssetManager;
-import android.view.ScaleGestureDetector;
+import android.view.Surface;
+import android.view.SurfaceView;
 
 import crown.android.CrownEnum;
 
@@ -28,20 +54,18 @@ public class CrownActivity extends Activity
 	// Resource attributes
     static AssetManager 		mAssetManager;
 
-	// Graphic attributes
-	private CrownView 			mView;
-
 	// Input attributes
 	private CrownTouch 			mTouch;
 	private CrownSensor			mSensor;
 
-	// Gestures detectors
-	private ScaleGestureDetector mScaleDetector;
+	// Graphic attributes
+	static SurfaceView			mWindow;
 
 //-----------------------------------------------------------------------------------
     public void onCreate(Bundle savedInstanceState)
     {
         super.onCreate(savedInstanceState);
+		setContentView(R.layout.main);
 
 		// init AssetManager
 		mAssetManager = getAssets();
@@ -55,7 +79,8 @@ public class CrownActivity extends Activity
 		mTouch = new CrownTouch(this);
 		mSensor = new CrownSensor(this);
 		
-	    mScaleDetector = new ScaleGestureDetector(this, new ScaleListener());
+        mWindow = (SurfaceView)findViewById(R.id.crown_window);
+        CrownLib.setWindow(mWindow);
     }
 
 //-----------------------------------------------------------------------------------
@@ -74,7 +99,6 @@ public class CrownActivity extends Activity
 	public void onResume()
 	{
 		super.onResume();
-        mView.onResume();
 		
 		// init accelerometer
 		if (!mSensor.startListening(this))
@@ -87,7 +111,6 @@ public class CrownActivity extends Activity
 	public void onPause()
 	{
 		super.onPause();
-        mView.onPause();
 	}
 
 //-----------------------------------------------------------------------------------
@@ -108,8 +131,6 @@ public class CrownActivity extends Activity
 //-----------------------------------------------------------------------------------
 	public boolean onTouchEvent(MotionEvent event)
 	{
-		mScaleDetector.onTouchEvent(event);
-
 		mTouch.onTouch(event);
         return super.onTouchEvent(event);
 	}
@@ -119,26 +140,4 @@ public class CrownActivity extends Activity
 	{
 		return context.getPackageManager().hasSystemFeature("android.hardware.touchscreen.multitouch");
 	}
-
-
-//-----------------------------------------------------------------------------------
-	private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener
-	{
-	    public boolean onScale(ScaleGestureDetector detector) 
-	    {
-	    	Log.i(TAG, "onScale.");
-	    	return true;
-	    }
-
-	    public boolean onScaleBegin(ScaleGestureDetector detector) 
-	    {
-	    	Log.i(TAG, "onScaleBegin.");
-	    	return true;
-	    }
-
-	    public void onScaleEnd(ScaleGestureDetector detector) 
-	    {
-	    	Log.i(TAG, "onScaleBegin.");
-	    }
-	};
 }

+ 37 - 9
android/src/crown/android/CrownLib.java

@@ -1,6 +1,32 @@
+/*
+Copyright (c) 2013 Daniele Bartolini, Michele Rossi
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
 package crown.android;
 
 import android.content.res.AssetManager;
+import android.view.Surface;
 
 public class CrownLib
 {
@@ -10,18 +36,20 @@ public class CrownLib
 	}
 	
 	// Device functions
-	public static native void init();
-	public static native void frame();
-	public static native void shutdown();
+	public static native void 		init();
+	public static native void 		frame();
+	public static native void 		shutdown();
+	public static native boolean 	isInit();
+	public static native boolean	isRunning();
 
 	// AssetManager functions
-	public static native void initAssetManager(AssetManager assetManager);
+	public static native void 		initAssetManager(AssetManager assetManager);
 
 	// InputManager functions
-	public static native void pushIntEvent(int type, int a, int b, int c, int d);
-	public static native void pushFloatEvent(int type, float a, float b, float c, float d);
-
-	// RenderWindow functions
-	public static native void setRenderWindowMetrics(int width, int height);
+	public static native void 		pushIntEvent(int type, int a, int b, int c, int d);
+	public static native void 		pushFloatEvent(int type, float a, float b, float c, float d);
 
+	// Window functions
+	public static native void		setWindow(Surface window);
+	public static native void 		setDisplaySize(int width, int height);
 }

+ 13 - 113
android/src/crown/android/CrownView.java

@@ -11,7 +11,7 @@ import javax.microedition.khronos.egl.EGL10;
 import javax.microedition.khronos.egl.EGLConfig;
 import javax.microedition.khronos.egl.EGLContext;
 import javax.microedition.khronos.egl.EGLDisplay;
-import javax.microedition.khronos.opengles.GL10;
+import javax.microedition.khronos.opengles.GL20;
 
 
 /**
@@ -135,10 +135,8 @@ class CrownView extends GLSurfaceView
             mStencilSize = stencil;
         }
 
-		// Choose OpenGL|ES 1 bit
-        private static int EGL_OPENGL_ES_BIT = 1;
 		// Choose OpenGl|ES 2 bit
-//        private static int EGL_OPENGL_ES_BIT = 4;
+        private static int EGL_OPENGL_ES_BIT = 4;
         private static int[] s_configAttribs2 =
         {
             EGL10.EGL_RED_SIZE, 4,
@@ -150,7 +148,6 @@ class CrownView extends GLSurfaceView
 
         public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) 
 		{
-			Log.i(TAG, "JAVA CHOOSE CONFIG CALLED.");
             /* Get the number of minimally matching EGL configurations
              */
             int[] num_config = new int[1];
@@ -168,10 +165,7 @@ class CrownView extends GLSurfaceView
             EGLConfig[] configs = new EGLConfig[numConfigs];
             egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);
 
-            if (DEBUG) 
-			{
-                 printConfigs(egl, display, configs);
-            }
+
             /* Now return the "best" one
              */
             return chooseConfig(egl, display, configs);
@@ -217,107 +211,6 @@ class CrownView extends GLSurfaceView
             return defaultValue;
         }
 
-        private void printConfigs(EGL10 egl, EGLDisplay display, EGLConfig[] configs) 
-		{
-//            int numConfigs = configs.length;
-//            Log.w(TAG, String.format("%d configurations", numConfigs));
-//            for (int i = 0; i < numConfigs; i++) 
-//			{
-//                Log.w(TAG, String.format("Configuration %d:\n", i));
-//                printConfig(egl, display, configs[i]);
-//            }
-        }
-
-        private void printConfig(EGL10 egl, EGLDisplay display, EGLConfig config) 
-		{
-//            int[] attributes = {
-//				                    EGL10.EGL_BUFFER_SIZE,
-//            				        EGL10.EGL_ALPHA_SIZE,
-//                    				EGL10.EGL_BLUE_SIZE,
-//                   					EGL10.EGL_GREEN_SIZE,
-//                    				EGL10.EGL_RED_SIZE,
-//                    				EGL10.EGL_DEPTH_SIZE,
-//                   	 				EGL10.EGL_STENCIL_SIZE,
-//                    				EGL10.EGL_CONFIG_CAVEAT,
-//                    				EGL10.EGL_CONFIG_ID,
-//                    				EGL10.EGL_LEVEL,
-//                    				EGL10.EGL_MAX_PBUFFER_HEIGHT,
-//                    				EGL10.EGL_MAX_PBUFFER_PIXELS,
-//                    				EGL10.EGL_MAX_PBUFFER_WIDTH,
-//                    				EGL10.EGL_NATIVE_RENDERABLE,
-//								    EGL10.EGL_NATIVE_VISUAL_ID,
-//								    EGL10.EGL_NATIVE_VISUAL_TYPE,
-//								    0x3030, // EGL10.EGL_PRESERVED_RESOURCES,
-//								    EGL10.EGL_SAMPLES,
-//								    EGL10.EGL_SAMPLE_BUFFERS,
-//								    EGL10.EGL_SURFACE_TYPE,
-//								    EGL10.EGL_TRANSPARENT_TYPE,
-//								    EGL10.EGL_TRANSPARENT_RED_VALUE,
-//								    EGL10.EGL_TRANSPARENT_GREEN_VALUE,
-//								    EGL10.EGL_TRANSPARENT_BLUE_VALUE,
-//								    0x3039, // EGL10.EGL_BIND_TO_TEXTURE_RGB,
-//								    0x303A, // EGL10.EGL_BIND_TO_TEXTURE_RGBA,
-//								    0x303B, // EGL10.EGL_MIN_SWAP_INTERVAL,
-//								    0x303C, // EGL10.EGL_MAX_SWAP_INTERVAL,
-//								    EGL10.EGL_LUMINANCE_SIZE,
-//								    EGL10.EGL_ALPHA_MASK_SIZE,
-//								    EGL10.EGL_COLOR_BUFFER_TYPE,
-//								    EGL10.EGL_RENDERABLE_TYPE,
-//								    0x3042 // EGL10.EGL_CONFORMANT
-//            };
-//            String[] names = {
-//								    "EGL_BUFFER_SIZE",
-//								    "EGL_ALPHA_SIZE",
-//								    "EGL_BLUE_SIZE",
-//								    "EGL_GREEN_SIZE",
-//								    "EGL_RED_SIZE",
-//								    "EGL_DEPTH_SIZE",
-//								    "EGL_STENCIL_SIZE",
-//								    "EGL_CONFIG_CAVEAT",
-//								    "EGL_CONFIG_ID",
-//								    "EGL_LEVEL",
-//								    "EGL_MAX_PBUFFER_HEIGHT",
-//								    "EGL_MAX_PBUFFER_PIXELS",
-//								    "EGL_MAX_PBUFFER_WIDTH",
-//								    "EGL_NATIVE_RENDERABLE",
-//								    "EGL_NATIVE_VISUAL_ID",
-//								    "EGL_NATIVE_VISUAL_TYPE",
-//								    "EGL_PRESERVED_RESOURCES",
-//								    "EGL_SAMPLES",
-//								    "EGL_SAMPLE_BUFFERS",
-//								    "EGL_SURFACE_TYPE",
-//								    "EGL_TRANSPARENT_TYPE",
-//								    "EGL_TRANSPARENT_RED_VALUE",
-//								    "EGL_TRANSPARENT_GREEN_VALUE",
-//								    "EGL_TRANSPARENT_BLUE_VALUE",
-//								    "EGL_BIND_TO_TEXTURE_RGB",
-//								    "EGL_BIND_TO_TEXTURE_RGBA",
-//								    "EGL_MIN_SWAP_INTERVAL",
-//								    "EGL_MAX_SWAP_INTERVAL",
-//								    "EGL_LUMINANCE_SIZE",
-//								    "EGL_ALPHA_MASK_SIZE",
-//								    "EGL_COLOR_BUFFER_TYPE",
-//								    "EGL_RENDERABLE_TYPE",
-//								    "EGL_CONFORMANT"
-//            };
-
-//            int[] value = new int[1];
-//            for (int i = 0; i < attributes.length; i++) 
-//			{
-//                int attribute = attributes[i];
-//                String name = names[i];
-//                if ( egl.eglGetConfigAttrib(display, config, attribute, value))
-//				{
-//                    Log.w(TAG, String.format("  %s: %d\n", name, value[0]));
-//                } 
-//				else 
-//				{
-//                    // Log.w(TAG, String.format("  %s: failed\n", name));
-//                    while (egl.eglGetError() != EGL10.EGL_SUCCESS);
-//                }
-//            }
-        }
-
         // Subclasses can adjust these values:
         protected int mRedSize;
         protected int mGreenSize;
@@ -335,13 +228,20 @@ class CrownView extends GLSurfaceView
 	{
         public void onDrawFrame(GL10 gl)
 		{
-			CrownLib.frame();
+            if (CrownLib.isRunning())
+			{
+                CrownLib.frame();
+            }
         }
 
         public void onSurfaceChanged(GL10 gl, int width, int height)
 		{
-			CrownLib.init();
-            CrownLib.setRenderWindowMetrics(width, height);
+            if (!CrownLib.isInit())
+            {
+		        CrownLib.init();
+            }
+
+            CrownLib.setDisplaySize(width, height);
         }
 
         public void onSurfaceCreated(GL10 gl, EGLConfig config)