void checkClicked(Drawable drw, float x, float y) { if (!drw.checkPoint(x, y)) { return; } //loop backward if (drw is CompositeDrawable) { CompositeDrawable cd = (CompositeDrawable)drw; //todo: apply inverse transformation for (int i = cd.clickables.Count - 1; i >= 0; i--) { checkClicked(cd.clickables[i], x, y); if (clickHandled) { return; //don't continue looping } } } //fire if (clickHandled) { return; } clickHandled = drw.fireClick(x, y); }
void checkHovered(Drawable drw, float x, float y) { if (!drw.checkPoint(x, y)) { return; } //loop backward if (drw is CompositeDrawable) { CompositeDrawable cd = (CompositeDrawable)drw; //todo: apply inverse transformation for (int i = cd.clickables.Count - 1; i >= 0; i--) { checkHovered(cd.clickables[i], x, y); if (hoverHandled) { return; } } } //fire hoverHandled = drw.fireHover(); }