/* protected */ public override void OnRecycle() { base.OnRecycle(); TouchEvent touchEvent = this.mTouchEvent; touchEvent.GetMotionEvent().Recycle(); touchEvent.Recycle(); }
public void ConvertCameraSceneToSceneTouchEvent(/* final */ TouchEvent pCameraSceneTouchEvent) { this.UnapplyCameraSceneRotation(pCameraSceneTouchEvent); this.UnapplySceneToCameraSceneOffset(pCameraSceneTouchEvent); this.ApplySceneRotation(pCameraSceneTouchEvent); }
private void UpdateControlKnob(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY) { /* final */ Sprite controlBase = this.mControlBase; /* final */ float relativeX = MathUtils.BringToBounds(0, controlBase.GetWidth(), pTouchAreaLocalX) / controlBase.GetWidth() - 0.5f; /* final */ float relativeY = MathUtils.BringToBounds(0, controlBase.GetHeight(), pTouchAreaLocalY) / controlBase.GetHeight() - 0.5f; this.OnUpdateControlKnob(relativeX, relativeY); }
protected override Camera GetCameraFromSurfaceTouchEvent(/* final */ TouchEvent pTouchEvent) { //if (pTouchEvent.getX() <= this.mSurfaceWidth >> 1) if (pTouchEvent.X <= this.mSurfaceWidth >> 1) { //return this.getFirstCamera(); return(this.FirstCamera); } else { //return this.getSecondCamera(); return(this.SecondCamera); } }
protected override bool OnChildSceneTouchEvent(TouchEvent pSceneTouchEvent) { bool childIsCameraScene = this.mChildScene is CameraScene; if (childIsCameraScene) { this.mCamera.ConvertCameraSceneToSceneTouchEvent(pSceneTouchEvent); bool result = base.OnChildSceneTouchEvent(pSceneTouchEvent); this.mCamera.ConvertSceneToCameraSceneTouchEvent(pSceneTouchEvent); return(result); } else { return(base.OnChildSceneTouchEvent(pSceneTouchEvent)); } }
private void ApplySceneRotation(/* final */ TouchEvent pCameraSceneTouchEvent) { /* final */ float rotation = -this.mRotation; if (rotation != 0) { VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pCameraSceneTouchEvent.GetX(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pCameraSceneTouchEvent.GetY(); //MathUtils.RotateAroundCenter(VERTICES_TOUCH_TMP, rotation, this.getCenterX(), this.getCenterY()); MathUtils.RotateAroundCenter(VERTICES_TOUCH_TMP, rotation, this.CenterX, this.CenterY); pCameraSceneTouchEvent.Set(VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X], VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y]); } }
private void UnapplyCameraSceneRotation(/* final */ TouchEvent pCameraSceneTouchEvent) { /* final */ float cameraSceneRotation = -this.mCameraSceneRotation; if (cameraSceneRotation != 0) { //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pCameraSceneTouchEvent.getX(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pCameraSceneTouchEvent.X; //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pCameraSceneTouchEvent.getY(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pCameraSceneTouchEvent.Y; MathUtils.RevertRotateAroundCenter(VERTICES_TOUCH_TMP, cameraSceneRotation, (this.mMaxX - this.mMinX) * 0.5f, (this.mMaxY - this.mMinY) * 0.5f); pCameraSceneTouchEvent.Set(VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X], VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y]); } }
private void UnapplySceneRotation(/* final */ TouchEvent pSceneTouchEvent) { /* final */ float rotation = this.mRotation; if (rotation != 0) { //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pSceneTouchEvent.getX(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pSceneTouchEvent.X; //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pSceneTouchEvent.getY(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pSceneTouchEvent.Y; //MathUtils.revertRotateAroundCenter(VERTICES_TOUCH_TMP, rotation, this.getCenterX(), this.getCenterY()); MathUtils.RevertRotateAroundCenter(VERTICES_TOUCH_TMP, rotation, this.CenterX, this.CenterY); pSceneTouchEvent.Set(VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X], VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y]); } }
private void convertAxisAlignedSurfaceToSceneTouchEvent(/* final */ TouchEvent pSurfaceTouchEvent, /* final */ float pRelativeX, /* final */ float pRelativeY) { // final float minX = this.getMinX(); float minX = this.MinX; // final float maxX = this.getMaxX(); float maxX = this.MaxX; // final float minY = this.getMinY(); float minY = this.MinY; // final float maxY = this.getMaxY(); float maxY = this.MaxY; /* final */ float x = minX + pRelativeX * (maxX - minX); /* final */ float y = minY + pRelativeY * (maxY - minY); pSurfaceTouchEvent.Set(x, y); }
protected internal bool OnHandleControlBaseTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY) { /* final */ int pointerID = pSceneTouchEvent.GetPointerID(); switch (pSceneTouchEvent.GetAction()) { //case MotionEvent.ACTION_DOWN: case Android.Views.MotionEventActions.Down: if (this.mActivePointerID == INVALID_POINTER_ID) { this.mActivePointerID = pointerID; this.UpdateControlKnob(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); return(true); } break; //case MotionEvent.ACTION_UP: case Android.Views.MotionEventActions.Up: //case MotionEvent.ACTION_CANCEL: case Android.Views.MotionEventActions.Cancel: if (this.mActivePointerID == pointerID) { this.mActivePointerID = INVALID_POINTER_ID; this.OnHandleControlKnobReleased(); return(true); } break; default: if (this.mActivePointerID == pointerID) { this.UpdateControlKnob(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); return(true); } break; } return(true); }
public void ConvertSurfaceToSceneTouchEvent(/* final */ TouchEvent pSurfaceTouchEvent, /* final */ int pSurfaceWidth, /* final */ int pSurfaceHeight) { /* final */ float relativeX; /* final */ float relativeY; /* final */ float rotation = this.mRotation; if (rotation == 0) { //relativeX = pSurfaceTouchEvent.getX() / pSurfaceWidth; relativeX = pSurfaceTouchEvent.X / pSurfaceWidth; //relativeY = pSurfaceTouchEvent.getY() / pSurfaceHeight; relativeY = pSurfaceTouchEvent.Y / pSurfaceHeight; } else if (rotation == 180) { //relativeX = 1 - (pSurfaceTouchEvent.getX() / pSurfaceWidth); relativeX = 1 - (pSurfaceTouchEvent.X / pSurfaceWidth); //relativeY = 1 - (pSurfaceTouchEvent.getY() / pSurfaceHeight); relativeY = 1 - (pSurfaceTouchEvent.Y / pSurfaceHeight); } else { //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pSurfaceTouchEvent.getX(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] = pSurfaceTouchEvent.X; //VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pSurfaceTouchEvent.getY(); VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] = pSurfaceTouchEvent.Y; MathUtils.RotateAroundCenter(VERTICES_TOUCH_TMP, rotation, pSurfaceWidth / 2, pSurfaceHeight / 2); relativeX = VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_X] / pSurfaceWidth; relativeY = VERTICES_TOUCH_TMP[Constants.VERTEX_INDEX_Y] / pSurfaceHeight; } this.convertAxisAlignedSurfaceToSceneTouchEvent(pSurfaceTouchEvent, relativeX, relativeY); }
protected bool FireTouchEvent(float pX, float pY, /* int pAction */ Android.Views.MotionEventActions pAction, int pPointerID, MotionEvent pMotionEvent) { bool handled; if (this.mRunOnUpdateThread) { TouchEvent touchEvent = TouchEvent.Obtain(pX, pY, pAction, pPointerID, MotionEvent.Obtain(pMotionEvent)); TouchEventRunnablePoolItem touchEventRunnablePoolItem = this.mTouchEventRunnablePoolUpdateHandler.ObtainPoolItem(); touchEventRunnablePoolItem.Set(touchEvent); this.mTouchEventRunnablePoolUpdateHandler.PostPoolItem(touchEventRunnablePoolItem); handled = true; } else { TouchEvent touchEvent = TouchEvent.Obtain(pX, pY, pAction, pPointerID, pMotionEvent); handled = this.mTouchEventCallback.OnTouchEvent(touchEvent); touchEvent.Recycle(); } return(handled); }
// =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public override bool OnSceneTouchEvent(TouchEvent pSceneTouchEvent) { if (this.mCamera == null) { return(false); } else { this.mCamera.ConvertSceneToCameraSceneTouchEvent(pSceneTouchEvent); bool handled = base.OnSceneTouchEvent(pSceneTouchEvent); if (handled) { return(true); } else { this.mCamera.ConvertCameraSceneToSceneTouchEvent(pSceneTouchEvent); return(false); } } }
// =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public override bool OnSceneTouchEvent(TouchEvent pSceneTouchEvent) { if (this.mCamera == null) { return false; } else { this.mCamera.ConvertSceneToCameraSceneTouchEvent(pSceneTouchEvent); bool handled = base.OnSceneTouchEvent(pSceneTouchEvent); if (handled) { return true; } else { this.mCamera.ConvertCameraSceneToSceneTouchEvent(pSceneTouchEvent); return false; } } }
protected void ApplySceneToCameraSceneOffset(/* final */ TouchEvent pSceneTouchEvent) { pSceneTouchEvent.Offset(-this.mMinX, -this.mMinY); }
// =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public /* override */ virtual bool OnSceneTouchEvent(/* final */ Scene pScene, /* final */ TouchEvent pSceneTouchEvent) { /* final */ int pointerID = pSceneTouchEvent.GetPointerID(); if (pointerID == this.mActivePointerID) { this.OnHandleControlBaseLeft(); switch (pSceneTouchEvent.GetAction()) { //case MotionEvent.ACTION_UP: //case MotionEvent.ACTION_CANCEL: case Android.Views.MotionEventActions.Up: case Android.Views.MotionEventActions.Cancel: this.mActivePointerID = INVALID_POINTER_ID; break; } } return(false); }
// =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public /* override */ virtual bool OnAreaTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY) { return false; }
protected override bool OnChildSceneTouchEvent(TouchEvent pSceneTouchEvent) { bool childIsCameraScene = this.mChildScene is CameraScene; if (childIsCameraScene) { this.mCamera.ConvertCameraSceneToSceneTouchEvent(pSceneTouchEvent); bool result = base.OnChildSceneTouchEvent(pSceneTouchEvent); this.mCamera.ConvertSceneToCameraSceneTouchEvent(pSceneTouchEvent); return result; } else { return base.OnChildSceneTouchEvent(pSceneTouchEvent); } }
public override bool OnAreaTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY) { return(_this.OnHandleControlBaseTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY)); }
// =========================================================== // Methods for/from SuperClass/Interfaces // =========================================================== public /* override */ virtual bool OnAreaTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY) { return(false); }
protected void UnapplySceneToCameraSceneOffset(/* final */ TouchEvent pCameraSceneTouchEvent) { pCameraSceneTouchEvent.Offset(this.mMinX, this.mMinY); }
protected override void ConvertSurfaceToSceneTouchEvent(/* final */ Camera pCamera, /* final */ TouchEvent pSurfaceTouchEvent) { /* final */ int surfaceWidthHalf = this.mSurfaceWidth >> 1; //if (pCamera == this.getFirstCamera()) if (pCamera == this.FirstCamera) { pCamera.ConvertSurfaceToSceneTouchEvent(pSurfaceTouchEvent, surfaceWidthHalf, this.mSurfaceHeight); } else { pSurfaceTouchEvent.Offset(-surfaceWidthHalf, 0); pCamera.ConvertSurfaceToSceneTouchEvent(pSurfaceTouchEvent, surfaceWidthHalf, this.mSurfaceHeight); } }
// =========================================================== // Getter & Setter // =========================================================== public void Set(TouchEvent pTouchEvent) { this.mTouchEvent = pTouchEvent; }