public void UnregisterTouchArea(/* final */ ITouchArea pTouchArea) { this.mTouchAreas.Remove(pTouchArea); }
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; } }
public void RegisterTouchArea(/* final */ ITouchArea pTouchArea) { this.mTouchAreas.Add(pTouchArea); }
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); } }
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); } }