Просмотр исходного кода

update android code base according to OsEventBuffer implementation

mikymod 12 лет назад
Родитель
Сommit
e8ffb46a24

+ 1 - 1
engine/Android.mk

@@ -62,7 +62,7 @@ LOCAL_SRC_FILES :=\
 \
 	network/BitMessage.cpp\
 \
-	os/OS.cpp\
+	os/OsEventBuffer.cpp\
 	os/android/AndroidOS.cpp\
 	os/android/AndroidDevice.cpp\
 	os/android/OsWindow.cpp\

+ 41 - 41
engine/input/InputManager.cpp

@@ -164,52 +164,52 @@ void InputManager::frame(uint64_t frame_count)
 
 				break;
 			}
-			// case OSET_TOUCH_DOWN:
-			// case OSET_TOUCH_UP:
-			// {
-			// 	TouchEvent touch_event;
-			// 	touch_event.pointer_id = event.data_a.int_value;
-			// 	touch_event.x = event.data_b.int_value;
-			// 	touch_event.y = event.data_c.int_value;
-
-			// 	m_touch.m_pointers[touch_event.pointer_id].x = touch_event.x;
-			// 	m_touch.m_pointers[touch_event.pointer_id].y = touch_event.y;
-
-			// 	// FIXME
-			// 	m_touch.m_pointers[touch_event.pointer_id].relative_x = 0.0f;
-			// 	m_touch.m_pointers[touch_event.pointer_id].relative_y = 0.0f;
-
-			// 	if (event.type == OSET_TOUCH_DOWN)
-			// 	{
-			// 		m_touch.m_pointers[touch_event.pointer_id].up = false;
-			// 		m_event_dispatcher.touch_down(touch_event);
-			// 	}
-			// 	else
-			// 	{
-			// 		m_touch.m_pointers[touch_event.pointer_id].up = true;
-			// 		m_event_dispatcher.touch_up(touch_event);
-			// 	}
+			case OSET_TOUCH_DOWN:
+			case OSET_TOUCH_UP:
+			{
+				TouchEvent touch_event;
+				touch_event.pointer_id = ((OsTouchEvent*)event)->pointer_id;
+				touch_event.x = ((OsTouchEvent*)event)->x;
+				touch_event.y = ((OsTouchEvent*)event)->y;
 
-			// 	break;
-			// }
-			// case OSET_TOUCH_MOVE:
-			// {
-			// 	TouchEvent touch_event;
-			// 	touch_event.pointer_id = event.data_a.int_value;
-			// 	touch_event.x = event.data_b.int_value;
-			// 	touch_event.y = event.data_c.int_value;
+				m_touch.m_pointers[touch_event.pointer_id].x = touch_event.x;
+				m_touch.m_pointers[touch_event.pointer_id].y = touch_event.y;
+
+				// FIXME
+				m_touch.m_pointers[touch_event.pointer_id].relative_x = 0.0f;
+				m_touch.m_pointers[touch_event.pointer_id].relative_y = 0.0f;
+
+				if (event_type == OSET_TOUCH_DOWN)
+				{
+					m_touch.m_pointers[touch_event.pointer_id].up = false;
+					m_event_dispatcher.touch_down(touch_event);
+				}
+				else
+				{
+					m_touch.m_pointers[touch_event.pointer_id].up = true;
+					m_event_dispatcher.touch_up(touch_event);
+				}
+
+				break;
+			}
+			case OSET_TOUCH_MOVE:
+			{
+				TouchEvent touch_event;
+				touch_event.pointer_id = ((OsTouchEvent*)event)->pointer_id;
+				touch_event.x = ((OsTouchEvent*)event)->x;
+				touch_event.y = ((OsTouchEvent*)event)->y;
 
-			// 	m_touch.m_pointers[touch_event.pointer_id].x = touch_event.x;
-			// 	m_touch.m_pointers[touch_event.pointer_id].y = touch_event.y;
+				m_touch.m_pointers[touch_event.pointer_id].x = touch_event.x;
+				m_touch.m_pointers[touch_event.pointer_id].y = touch_event.y;
 
-			// 	// FIXME
-			// 	m_touch.m_pointers[touch_event.pointer_id].relative_x = 0.0f;
-			// 	m_touch.m_pointers[touch_event.pointer_id].relative_y = 0.0f;
+				// FIXME
+				m_touch.m_pointers[touch_event.pointer_id].relative_x = 0.0f;
+				m_touch.m_pointers[touch_event.pointer_id].relative_y = 0.0f;
 
-			// 	m_event_dispatcher.touch_move(touch_event);
+				m_event_dispatcher.touch_move(touch_event);
 
-			// 	break;
-			// }
+				break;
+			}
 			// case OSET_ACCELEROMETER:
 			// {
 			// 	AccelerometerEvent sensor_event;

+ 14 - 15
engine/os/android/AndroidOS.cpp

@@ -41,13 +41,14 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "OS.h"
 #include "Assert.h"
 #include "StringUtils.h"
+#include "OsEventBuffer.h"
 
 namespace crown
 {
 namespace os
 {
 
-static timespec			base_time;
+static timespec	base_time;
 
 //-----------------------------------------------------------------------------
 void printf(const char* string, ...)
@@ -311,29 +312,27 @@ void execute_process(const char* args[])
 } // namespace os
 
 //-----------------------------------------------------------------------------
-extern "C" JNIEXPORT void JNICALL Java_crown_android_CrownLib_pushIntEvent(JNIEnv * /*env*/, jobject /*obj*/, jint type, jint a, jint b, jint c, jint d)
+extern "C" JNIEXPORT void JNICALL Java_crown_android_CrownLib_pushTouchEvent(JNIEnv * /*env*/, jobject /*obj*/, jint type, jint pointer_id, jint x, jint y)
 {	
-	OsEventParameter values[4];
+	OsTouchEvent event;
 
-	values[0].int_value = a;
-	values[1].int_value = b;
-	values[2].int_value = c;
-	values[3].int_value = d;
+	event.pointer_id = pointer_id;
+	event.x = x;
+	event.y = y;
 
-	push_event((OsEventType)type, values[0], values[1], values[2], values[3]);
+	os_event_buffer()->push_event((OsEventType)type, &event, sizeof(OsTouchEvent));
 }
 
 //-----------------------------------------------------------------------------
-extern "C" JNIEXPORT void JNICALL Java_crown_android_CrownLib_pushFloatEvent(JNIEnv * /*env*/, jobject /*obj*/, jint type, jfloat a, jfloat b, jfloat c, jfloat d)
+extern "C" JNIEXPORT void JNICALL Java_crown_android_CrownLib_pushAccelerometerEvent(JNIEnv * /*env*/, jobject /*obj*/, jint type, jfloat x, jfloat y, jfloat z)
 {
-	OsEventParameter values[4];
+	OsAccelerometerEvent event;
 
-	values[0].float_value = a;
-	values[1].float_value = b;
-	values[2].float_value = c;
-	values[3].float_value = d;
+	event.x = x;
+	event.y = y;
+	event.z = z;
 
-	push_event((OsEventType)type, values[0], values[1], values[2], values[3]);
+	os_event_buffer()->push_event((OsEventType)type, &event, sizeof(OsAccelerometerEvent));
 }
 
 } // namespace crown

+ 2 - 2
engine/os/android/java/CrownLib.java

@@ -60,6 +60,6 @@ public class CrownLib
 	public static native void		shutdownRenderer();
 
 	// 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);	
+	public static native void 		pushTouchEvent(int type, int pointer_id, int x, int y);
+	public static native void 		pushAccelerometerEvent(int type, float x, float y, float z);	
 }

+ 2 - 2
engine/os/android/java/CrownSensor.java

@@ -96,7 +96,7 @@ public class CrownSensor
 
                     norm();
 
-                    CrownLib.pushFloatEvent(CrownEnum.OSET_ACCELEROMETER, mGravity[0], mGravity[1], mGravity[2], 0.0f);
+                    CrownLib.pushAccelerometerEvent(CrownEnum.OSET_ACCELEROMETER, mGravity[0], mGravity[1], mGravity[2]);
                 }
             };           
         }
@@ -115,7 +115,7 @@ public class CrownSensor
                     mGeoMagn[1] = (mGeoMagn[1] + event.values[1]) * 0.5f;
                     mGeoMagn[2] = (mGeoMagn[2] + event.values[2]) * 0.5f; 
 
-                    // CrownLib.pushFloatEvent(CrownEnum.OSET_ACCELEROMETER, mGeoMagn[0], mGeoMagn[1], mGeoMagn[2], 0.0f);
+                    // CrownLib.pushAccelerometerEvent(CrownEnum.OSET_ACCELEROMETER, mGeoMagn[0], mGeoMagn[1], mGeoMagn[2], 0.0f);
                 }                
             };
         }

+ 3 - 3
engine/os/android/java/CrownTouch.java

@@ -63,7 +63,7 @@ public class CrownTouch
 			case MotionEvent.ACTION_DOWN:
 			case MotionEvent.ACTION_POINTER_DOWN:
 			{
-				CrownLib.pushIntEvent(CrownEnum.OSET_TOUCH_DOWN, pointerId, (int)x, (int)y, 0);
+				CrownLib.pushTouchEvent(CrownEnum.OSET_TOUCH_DOWN, pointerId, (int)x, (int)y);
 				break;			
 			}
 
@@ -72,7 +72,7 @@ public class CrownTouch
 			case MotionEvent.ACTION_OUTSIDE:
 			case MotionEvent.ACTION_CANCEL:
 			{
-				CrownLib.pushIntEvent(CrownEnum.OSET_TOUCH_UP, pointerId, (int)x, (int)y, 0);
+				CrownLib.pushTouchEvent(CrownEnum.OSET_TOUCH_UP, pointerId, (int)x, (int)y);
 				break;			
 			}
 			
@@ -80,7 +80,7 @@ public class CrownTouch
 			{
 				for (int index = 0; index < pointerCount; index++)
 				{
-					CrownLib.pushIntEvent(CrownEnum.OSET_TOUCH_MOVE, event.getPointerId(index), (int)event.getX(index), (int)event.getY(index), 0);
+					CrownLib.pushTouchEvent(CrownEnum.OSET_TOUCH_MOVE, event.getPointerId(index), (int)event.getX(index), (int)event.getY(index));
 				}
 
 				break;