/* protected */ public override void OnRecycle()
            {
                base.OnRecycle();
                TouchEvent touchEvent = this.mTouchEvent;

                touchEvent.GetMotionEvent().Recycle();
                touchEvent.Recycle();
            }
Example #2
0
        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);
     }
 }
Example #5
0
        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));
            }
        }
Example #6
0
        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]);
            }
        }
Example #7
0
        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]);
            }
        }
Example #8
0
        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]);
            }
        }
Example #9
0
        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);
        }
Example #11
0
        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);
        }
Example #13
0
        // ===========================================================
        // 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);
                }
            }
        }
Example #14
0
        // ===========================================================
        // 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;
                }
            }
        }
Example #15
0
 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);
        }
Example #17
0
        // ===========================================================
        // Methods for/from SuperClass/Interfaces
        // ===========================================================

        public /* override */ virtual bool OnAreaTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY)
        {
            return false;
        }
Example #18
0
 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));
 }
Example #20
0
        // ===========================================================
        // Methods for/from SuperClass/Interfaces
        // ===========================================================

        public /* override */ virtual bool OnAreaTouched(/* final */ TouchEvent pSceneTouchEvent, /* final */ float pTouchAreaLocalX, /* final */ float pTouchAreaLocalY)
        {
            return(false);
        }
Example #21
0
 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;
            }