// ===========================================================
        // 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);
        }
        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);
        }