Exemplo n.º 1
0
 public void UnregisterTouchArea(/* final */ ITouchArea pTouchArea)
 {
     this.mTouchAreas.Remove(pTouchArea);
 }
Exemplo n.º 2
0
        private bool? OnAreaTouchEvent(/* final */ TouchEvent pSceneTouchEvent, /* final */ float sceneTouchEventX, /* final */ float sceneTouchEventY, /* final */ ITouchArea touchArea)
        {
            /* final */
            float[] touchAreaLocalCoordinates = touchArea.ConvertSceneToLocalCoordinates(sceneTouchEventX, sceneTouchEventY);
            /* final */
            float touchAreaLocalX = touchAreaLocalCoordinates[Constants.VERTEX_INDEX_X];
            /* final */
            float touchAreaLocalY = touchAreaLocalCoordinates[Constants.VERTEX_INDEX_Y];

            /* final */
            bool handledSelf = touchArea.OnAreaTouched(pSceneTouchEvent, touchAreaLocalX, touchAreaLocalY);
            if (handledSelf)
            {
                //return Boolean.TRUE;
                return true;
            }
            else if (this.mOnAreaTouchListener != null)
            {
                return this.mOnAreaTouchListener.OnAreaTouched(pSceneTouchEvent, touchArea, touchAreaLocalX, touchAreaLocalY);
            }
            else
            {
                return null;
            }
        }
Exemplo n.º 3
0
 public void RegisterTouchArea(/* final */ ITouchArea pTouchArea)
 {
     this.mTouchAreas.Add(pTouchArea);
 }
Exemplo n.º 4
0
        private bool?OnAreaTouchEvent(/* final */ TouchEvent pSceneTouchEvent, /* final */ float sceneTouchEventX, /* final */ float sceneTouchEventY, /* final */ ITouchArea touchArea)
        {
            /* final */
            float[] touchAreaLocalCoordinates = touchArea.ConvertSceneToLocalCoordinates(sceneTouchEventX, sceneTouchEventY);
            /* final */
            float touchAreaLocalX = touchAreaLocalCoordinates[Constants.VERTEX_INDEX_X];
            /* final */
            float touchAreaLocalY = touchAreaLocalCoordinates[Constants.VERTEX_INDEX_Y];

            /* final */
            bool handledSelf = touchArea.OnAreaTouched(pSceneTouchEvent, touchAreaLocalX, touchAreaLocalY);

            if (handledSelf)
            {
                //return Boolean.TRUE;
                return(true);
            }
            else if (this.mOnAreaTouchListener != null)
            {
                return(this.mOnAreaTouchListener.OnAreaTouched(pSceneTouchEvent, touchArea, touchAreaLocalX, touchAreaLocalY));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 5
0
        public virtual bool OnSceneTouchEvent(/* final */ TouchEvent pSceneTouchEvent)
        {
            //* final */ int action = pSceneTouchEvent.GetAction();
            MotionEvent action = pSceneTouchEvent.GetMotionEvent();
            // final bool isDownAction = action == MotionEvent.ACTION_DOWN;
            bool isDownAction = (action == (MotionEvent)MotionEvent.ActionPointer1Down);

            // final float sceneTouchEventX = pSceneTouchEvent.getX();
            float sceneTouchEventX = pSceneTouchEvent.X;
            // final float sceneTouchEventY = pSceneTouchEvent.getY();
            float sceneTouchEventY = pSceneTouchEvent.Y;

            if (this.mTouchAreaBindingEnabled && !isDownAction)
            {
                /* final */
                SparseArray <ITouchArea> touchAreaBindings = this.mTouchAreaBindings;
                /* final */
                ITouchArea boundTouchArea = touchAreaBindings[pSceneTouchEvent.GetPointerID()];

                /* In the case a ITouchArea has been bound to this PointerID,
                 * we'll pass this this TouchEvent to the same ITouchArea. */
                if (boundTouchArea != null)
                {
                    /* Check if boundTouchArea needs to be removed. */
                    switch (action.Action)
                    {
                    //TODO: this value was MotionEvent.ActionPointer1Up in Java.  Is it important to be pointer 1?
                    case MotionEventActions.PointerUp:
                    case MotionEventActions.Cancel:
                        touchAreaBindings.RemoveAt(pSceneTouchEvent.GetPointerID());
                        break;
                    }
                    /* final */
                    bool?handled = this.OnAreaTouchEvent(pSceneTouchEvent, sceneTouchEventX, sceneTouchEventY, boundTouchArea);
                    if (handled != null && handled.Value)
                    {
                        return(true);
                    }
                }
            }

            /* final */
            Scene childScene = this.mChildScene;

            if (childScene != null)
            {
                /* final */
                bool handledByChild = this.OnChildSceneTouchEvent(pSceneTouchEvent);
                if (handledByChild)
                {
                    return(true);
                }
                else if (this.mChildSceneModalTouch)
                {
                    return(false);
                }
            }

            /* First give the layers a chance to handle their TouchAreas. */
            {
                /* final */
                int layerCount = this.mLayerCount;
                /* final */
                ILayer[] layers = this.mLayers;
                if (this.mOnAreaTouchTraversalBackToFront)
                { /* Back to Front. */
                    for (int i = 0; i < layerCount; i++)
                    {
                        /* final */
                        ILayer layer = layers[i];
                        /* final */
                        //ArrayList<ITouchArea> layerTouchAreas = layer.getTouchAreas();
                        var layerTouchAreas = layer.GetTouchAreas();
                        /* final */
                        int layerTouchAreaCount = layerTouchAreas.Count;
                        if (layerTouchAreaCount > 0)
                        {
                            for (int j = 0; j < layerTouchAreaCount; j++)
                            {
                                /* final */
                                ITouchArea layerTouchArea = layerTouchAreas[j];
                                if (layerTouchArea.Contains(sceneTouchEventX, sceneTouchEventY))
                                {
                                    /* final */
                                    bool?handled = this.OnAreaTouchEvent(pSceneTouchEvent, sceneTouchEventX, sceneTouchEventY, layerTouchArea);
                                    if (handled != null && handled.Value)
                                    {
                                        /* If binding of ITouchAreas is enabled and this is an ACTION_DOWN event,
                                         *  bind this ITouchArea to the PointerID. */
                                        if (this.mTouchAreaBindingEnabled && isDownAction)
                                        {
                                            this.mTouchAreaBindings[pSceneTouchEvent.GetPointerID()] = layerTouchArea;
                                        }
                                        return(true);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                { /* Front to back. */
                    for (int i = layerCount - 1; i >= 0; i--)
                    {
                        /* final */
                        ILayer layer = layers[i];
                        /* final */
                        //ArrayList<ITouchArea> layerTouchAreas = layer.getTouchAreas();
                        var layerTouchAreas = layer.GetTouchAreas();
                        /* final */
                        int layerTouchAreaCount = layerTouchAreas.Count;
                        if (layerTouchAreaCount > 0)
                        {
                            for (int j = layerTouchAreaCount - 1; j >= 0; j--)
                            {
                                /* final */
                                ITouchArea layerTouchArea = layerTouchAreas[j];
                                if (layerTouchArea.Contains(sceneTouchEventX, sceneTouchEventY))
                                {
                                    /* final */
                                    bool?handled = this.OnAreaTouchEvent(pSceneTouchEvent, sceneTouchEventX, sceneTouchEventY, layerTouchArea);
                                    if (handled != null && handled.Value)
                                    {
                                        /* If binding of ITouchAreas is enabled and this is an ACTION_DOWN event,
                                         *  bind this ITouchArea to the PointerID. */
                                        if (this.mTouchAreaBindingEnabled && isDownAction)
                                        {
                                            this.mTouchAreaBindings[pSceneTouchEvent.GetPointerID()] = layerTouchArea;
                                        }
                                        return(true);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            /* final */
            //ArrayList<ITouchArea> touchAreas = this.mTouchAreas;
            List <ITouchArea> touchAreas = this.mTouchAreas;
            /* final */
            int touchAreaCount = touchAreas.Count;

            if (touchAreaCount > 0)
            {
                if (this.mOnAreaTouchTraversalBackToFront)
                { /* Back to Front. */
                    for (int i = 0; i < touchAreaCount; i++)
                    {
                        /* final */
                        ITouchArea touchArea = touchAreas[i];
                        if (touchArea.Contains(sceneTouchEventX, sceneTouchEventY))
                        {
                            /* final */
                            bool?handled = this.OnAreaTouchEvent(pSceneTouchEvent, sceneTouchEventX, sceneTouchEventY, touchArea);
                            if (handled != null && handled.Value)
                            {
                                /* If binding of ITouchAreas is enabled and this is an ACTION_DOWN event,
                                 *  bind this ITouchArea to the PointerID. */
                                if (this.mTouchAreaBindingEnabled && isDownAction)
                                {
                                    this.mTouchAreaBindings[pSceneTouchEvent.GetPointerID()] = touchArea;
                                }
                                return(true);
                            }
                        }
                    }
                }
                else
                { /* Front to back. */
                    for (int i = touchAreaCount - 1; i >= 0; i--)
                    {
                        /* final */
                        ITouchArea touchArea = touchAreas[i];
                        if (touchArea.Contains(sceneTouchEventX, sceneTouchEventY))
                        {
                            /* final */
                            bool?handled = this.OnAreaTouchEvent(pSceneTouchEvent, sceneTouchEventX, sceneTouchEventY, touchArea);
                            if (handled != null && handled.Value)
                            {
                                /* If binding of ITouchAreas is enabled and this is an ACTION_DOWN event,
                                 *  bind this ITouchArea to the PointerID. */
                                if (this.mTouchAreaBindingEnabled && isDownAction)
                                {
                                    this.mTouchAreaBindings[pSceneTouchEvent.GetPointerID()] = touchArea;
                                }
                                return(true);
                            }
                        }
                    }
                }
            }
            /* If no area was touched, the Scene itself was touched as a fallback. */
            if (this.mOnSceneTouchListener != null)
            {
                return(this.mOnSceneTouchListener.OnSceneTouchEvent(this, pSceneTouchEvent));
            }
            else
            {
                return(false);
            }
        }
Exemplo n.º 6
0
 public void UnregisterTouchArea(/* final */ ITouchArea pTouchArea)
 {
     this.mTouchAreas.Remove(pTouchArea);
 }
Exemplo n.º 7
0
 public void RegisterTouchArea(/* final */ ITouchArea pTouchArea)
 {
     this.mTouchAreas.Add(pTouchArea);
 }