Esempio n. 1
0
        public void DisableFingerEvent <T> (CocoGestureType gestureType, System.Action <T> onGestureAction)
            where T : FingerEvent, new ()
        {
            if (onGestureAction == null)
            {
                return;
            }

            if (!_gestureConfigDataDic.ContainsKey(gestureType))
            {
                return;
            }

            CocoTouchPriorityFingerEventConfigData <T> configData =
                _gestureConfigDataDic [gestureType] as CocoTouchPriorityFingerEventConfigData <T>;

            if (configData == null)
            {
                return;
            }

            configData.OnGesture -= onGestureAction;
            if (configData.OnGesture == null)
            {
                UnListenGesture(gestureType);
                _gestureConfigDataDic.Remove(gestureType);
            }
        }
Esempio n. 2
0
        private void RegisterMultiTouchGesture(CocoGestureType gestureType)
        {
            // already registered
            if ((gestureType & _registeredMultiTouchGestureTypeFlags) != 0)
            {
                return;
            }

            // not muti-touch gesture
            if ((gestureType & CocoGestureType.All_MultiTouch) == 0)
            {
                return;
            }

            if (_isOriginMultiTouchRecorded)
            {
                // first registered, record original setting
                if (_registeredMultiTouchGestureTypeFlags == CocoGestureType.None)
                {
                    _originMultiTouchEnabled = Input.multiTouchEnabled;
                    Input.multiTouchEnabled  = true;
                }
            }

            _registeredMultiTouchGestureTypeFlags |= gestureType;
        }
Esempio n. 3
0
        private void OnGesture(CocoGestureType gestureType, ContinuousGesture gesture)
        {
            switch (gesture.Phase)
            {
            case ContinuousGesturePhase.Started:
                StartGestureActiving(gestureType);
                if (ShouldIgnoreGesture(gestureType, gesture.StartPosition))
                {
                    break;
                }
                if (!StartGestureProcess(gestureType))
                {
                    break;
                }
                ProcessGestureData(gestureType, gesture);
                break;

            case ContinuousGesturePhase.Updated:
                ProcessGestureData(gestureType, gesture);
                break;

            case ContinuousGesturePhase.Ended:
                if (ProcessGestureData(gestureType, gesture))
                {
                    EndGestureProcess(gestureType);
                }
                EndGestureActiving(gestureType);
                break;
            }
        }
Esempio n. 4
0
        public void SetIgnoreTouchUILayers(CocoGestureType gestureType, LayerMask uiLayerMask)
        {
            if (_ignoreTouchUILayerMasks.ContainsKey(gestureType))
            {
                _ignoreTouchUILayerMasks [gestureType] = uiLayerMask;
                return;
            }

            _ignoreTouchUILayerMasks.Add(gestureType, uiLayerMask);
        }
Esempio n. 5
0
        private bool IsHighPriorityGestureActiving(CocoGestureType gestureType)
        {
            CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType);

            if (data == null)
            {
                return(false);
            }

            return((data.HighPriorityGestureTypes & _activeGestureTypes) != 0);
        }
Esempio n. 6
0
        private bool StartGestureProcess(CocoGestureType gestureType)
        {
            if (IsHighPriorityGestureActiving(gestureType))
            {
                return(false);
            }

            //Debug.LogErrorFormat ("{0}: {1}->StartGestureProcess: {2} started", Time.time, GetType ().Name, gestureType);
            _processingGestureTypes |= gestureType;
            CancelLowPriorityGestureProcess(gestureType);
            return(true);
        }
Esempio n. 7
0
        private void OnGesture(CocoGestureType gestureType, DiscreteGesture gesture)
        {
            if (ShouldIgnoreGesture(gestureType, gesture.Position))
            {
                return;
            }
            if (!StartGestureProcess(gestureType))
            {
                return;
            }

            ProcessGestureData(gestureType, gesture);
            EndGestureProcess(gestureType);
        }
Esempio n. 8
0
        private void CancelLowPriorityGestureProcess(CocoGestureType gestureType)
        {
            CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType);

            if (data == null)
            {
                return;
            }

            if (data.LowPriorityGestureTypes != null)
            {
                data.LowPriorityGestureTypes.ForEach(CancelGestureDataProcess);
            }
        }
Esempio n. 9
0
        private void OnFingerEvent(CocoGestureType gestureType, FingerEvent fingerEvent)
        {
            if (ShouldIgnoreGesture(gestureType, fingerEvent.Position))
            {
                return;
            }
            if (!StartGestureProcess(gestureType))
            {
                return;
            }

            ProcessGestureData(gestureType, fingerEvent);
            EndGestureProcess(gestureType);
        }
Esempio n. 10
0
        public void EnableGesture <T> (CocoGestureType gestureType, System.Action <T> onGestureAction) where T : Gesture, new ()
        {
            if (onGestureAction == null)
            {
                return;
            }

            CocoTouchPriorityGestureConfigData <T> configData = GetOrAddGestureConfigData <T> (gestureType);

            if (configData != null)
            {
                configData.OnGesture += onGestureAction;
            }
        }
Esempio n. 11
0
        private void CancelGestureDataProcess(CocoGestureType gestureType)
        {
            if (IsGestureProcessing(gestureType))
            {
                //Debug.LogErrorFormat ("{0}: {1}->CancelGestureDataProcess: {2} cancelled", Time.time, GetType ().Name, gestureType);
                EndGestureProcess(gestureType);
                CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType);
                if (data != null)
                {
                    data.CancelGestureProcess();
                }
            }

            CancelLowPriorityGestureProcess(gestureType);
        }
Esempio n. 12
0
        private bool ProcessGestureData(CocoGestureType gestureType, object gesture)
        {
            if (!IsGestureProcessing(gestureType))
            {
                return(false);
            }

            CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType);

            if (data == null)
            {
                return(false);
            }

            data.ProcessGesture(gesture);
            return(true);
        }
Esempio n. 13
0
        private void UnRegisterMultiTouchGesture(CocoGestureType gestureType)
        {
            // not registered
            if ((gestureType & _registeredMultiTouchGestureTypeFlags) == 0)
            {
                return;
            }

            _registeredMultiTouchGestureTypeFlags &= ~gestureType;

            if (_isOriginMultiTouchRecorded)
            {
                // all unregistered, resume original setting
                if (_registeredMultiTouchGestureTypeFlags == CocoGestureType.None)
                {
                    Input.multiTouchEnabled = _originMultiTouchEnabled;
                }
            }
        }
Esempio n. 14
0
        private void UnListenGesture(CocoGestureType gestureType)
        {
            switch (gestureType)
            {
            case CocoGestureType.Tap:
                TapGestureSignal.RemoveListener(OnSceneTap);
                break;

            case CocoGestureType.Drag:
                DragGestureSignal.RemoveListener(OnSceneDrag);
                break;

            case CocoGestureType.Swipe:
                SwipeGestureSignal.RemoveListener(OnSceneSwipe);
                break;

            case CocoGestureType.Pinch:
                PinchGestureSignal.RemoveListener(OnScenePinch);
                break;

            case CocoGestureType.TwoFingerDrag:
                TwoFingerDragGestureSignal.RemoveListener(OnSceneTwoFingerDrag);
                break;

            case CocoGestureType.Twist:
                TwistGestureSignal.RemoveListener(OnSceneTwist);
                break;

            case CocoGestureType.FingerDown:
                DownEventSignal.RemoveListener(OnSceneFingerDown);
                break;

            case CocoGestureType.FingerUp:
                UpEventSignal.RemoveListener(OnSceneFingerUp);
                break;

            default:
                Debug.LogErrorFormat("{0}->UnListenGesture: gesture [{1}] NOT be supported now.", GetType().Name, gestureType);
                break;
            }

            UnRegisterMultiTouchGesture(gestureType);
        }
Esempio n. 15
0
        public void SetGesturePriorities(CocoGestureType gestureType, CocoGestureType[] lowPriorityGestureTypes)
        {
            CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType);

            if (data == null)
            {
                return;
            }

            data.LowPriorityGestureTypes = lowPriorityGestureTypes;

            lowPriorityGestureTypes.ForEach(lowPriorityGestureType => {
                CocoTouchPriorityConfigData lowPriorityPriorityData = _gestureConfigDataDic.GetValue(lowPriorityGestureType);
                if (lowPriorityPriorityData == null)
                {
                    return;
                }

                lowPriorityPriorityData.HighPriorityGestureTypes |= gestureType;
            });
        }
Esempio n. 16
0
 public CocoTouchPriorityFingerEventConfigData(CocoGestureType gestureType) : base(gestureType)
 {
 }
Esempio n. 17
0
 private bool IsGestureProcessing(CocoGestureType gestureType)
 {
     return((_processingGestureTypes & gestureType) != 0);
 }
Esempio n. 18
0
        private CocoTouchPriorityFingerEventConfigData <T> GetOrAddFingerEventConfigData <T> (CocoGestureType gestureType) where T : FingerEvent, new ()
        {
            CocoTouchPriorityFingerEventConfigData <T> configData;

            if (_gestureConfigDataDic.ContainsKey(gestureType))
            {
                configData = _gestureConfigDataDic [gestureType] as CocoTouchPriorityFingerEventConfigData <T>;
                if (configData == null)
                {
                    Debug.LogErrorFormat("{0}->GetOrAddGestureConfigData: can NOT convert gesture [{1}] to type [{2}].", GetType().Name, gestureType,
                                         typeof(CocoTouchPriorityFingerEventConfigData <T>).Name);
                }
            }
            else
            {
                ListenGesture(gestureType);
                configData = new CocoTouchPriorityFingerEventConfigData <T> (gestureType);
                _gestureConfigDataDic.Add(gestureType, configData);
            }

            return(configData);
        }
Esempio n. 19
0
 protected CocoTouchPriorityConfigData(CocoGestureType gestureType)
 {
     GestureType = gestureType;
 }
Esempio n. 20
0
        private bool ShouldIgnoreGesture(CocoGestureType gestureType, Vector2 screenPosition)
        {
            LayerMask layerMask = _ignoreTouchUILayerMasks.ContainsKey(gestureType) ? _ignoreTouchUILayerMasks [gestureType] : (LayerMask)Physics.DefaultRaycastLayers;

            return(PointOverGui(screenPosition, layerMask));
        }
Esempio n. 21
0
 private void EndGestureProcess(CocoGestureType gestureType)
 {
     //Debug.LogErrorFormat ("{0}: {1}->EndGestureProcess: {2} ended", Time.time, GetType ().Name, gestureType);
     _processingGestureTypes &= ~gestureType;
 }
Esempio n. 22
0
 private void EndGestureActiving(CocoGestureType gestureType)
 {
     //Debug.LogErrorFormat ("{0}: {1}->StartGestureActiving: {2} end actived", Time.time, GetType ().Name, gestureType);
     _activeGestureTypes &= ~gestureType;
 }
Esempio n. 23
0
 public CocoTouchPriorityGestureConfigData(CocoGestureType gestureType) : base(gestureType)
 {
 }