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); } }
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; }
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; } }
public void SetIgnoreTouchUILayers(CocoGestureType gestureType, LayerMask uiLayerMask) { if (_ignoreTouchUILayerMasks.ContainsKey(gestureType)) { _ignoreTouchUILayerMasks [gestureType] = uiLayerMask; return; } _ignoreTouchUILayerMasks.Add(gestureType, uiLayerMask); }
private bool IsHighPriorityGestureActiving(CocoGestureType gestureType) { CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType); if (data == null) { return(false); } return((data.HighPriorityGestureTypes & _activeGestureTypes) != 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); }
private void OnGesture(CocoGestureType gestureType, DiscreteGesture gesture) { if (ShouldIgnoreGesture(gestureType, gesture.Position)) { return; } if (!StartGestureProcess(gestureType)) { return; } ProcessGestureData(gestureType, gesture); EndGestureProcess(gestureType); }
private void CancelLowPriorityGestureProcess(CocoGestureType gestureType) { CocoTouchPriorityConfigData data = _gestureConfigDataDic.GetValue(gestureType); if (data == null) { return; } if (data.LowPriorityGestureTypes != null) { data.LowPriorityGestureTypes.ForEach(CancelGestureDataProcess); } }
private void OnFingerEvent(CocoGestureType gestureType, FingerEvent fingerEvent) { if (ShouldIgnoreGesture(gestureType, fingerEvent.Position)) { return; } if (!StartGestureProcess(gestureType)) { return; } ProcessGestureData(gestureType, fingerEvent); EndGestureProcess(gestureType); }
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; } }
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); }
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); }
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; } } }
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); }
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; }); }
public CocoTouchPriorityFingerEventConfigData(CocoGestureType gestureType) : base(gestureType) { }
private bool IsGestureProcessing(CocoGestureType gestureType) { return((_processingGestureTypes & gestureType) != 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); }
protected CocoTouchPriorityConfigData(CocoGestureType gestureType) { GestureType = gestureType; }
private bool ShouldIgnoreGesture(CocoGestureType gestureType, Vector2 screenPosition) { LayerMask layerMask = _ignoreTouchUILayerMasks.ContainsKey(gestureType) ? _ignoreTouchUILayerMasks [gestureType] : (LayerMask)Physics.DefaultRaycastLayers; return(PointOverGui(screenPosition, layerMask)); }
private void EndGestureProcess(CocoGestureType gestureType) { //Debug.LogErrorFormat ("{0}: {1}->EndGestureProcess: {2} ended", Time.time, GetType ().Name, gestureType); _processingGestureTypes &= ~gestureType; }
private void EndGestureActiving(CocoGestureType gestureType) { //Debug.LogErrorFormat ("{0}: {1}->StartGestureActiving: {2} end actived", Time.time, GetType ().Name, gestureType); _activeGestureTypes &= ~gestureType; }
public CocoTouchPriorityGestureConfigData(CocoGestureType gestureType) : base(gestureType) { }