public void Click(Renderer source, Vector2 point, Size2 screen, Physic.ClickButton button) { foreach (var obj in source.Objects) { if (ClickObject(source, point, obj, new RectangleF(0, 0, screen.Width, screen.Height), screen, button)) { return; } } }
bool ClickObject(Renderer source, Vector2 point, FlatPrototype prot, RectangleF parent, Size2 screen, Physic.ClickButton button) { var bounds = GetBounds(prot, parent, screen); var contains = bounds.Contains(point); var found = false; var force = prot.Parameter.ContainsKey("MouseSolid") && (bool)prot.Parameter["MouseSolid"].Value; if (!force || contains) { foreach (var sub in prot.Container) { if (ClickObject(source, point, sub, bounds, screen, button)) { return(true); } } } if (contains) { foreach (var anim in prot.Animations) { foreach (var act in anim.Activations) { if ((act is Physic.ClickAnimation) && act.Enabled) { var click = (Physic.ClickAnimation)act; if (click.Button.Exists && click.Button.Value != button) { continue; } source.Animation.ExecuteAnimation(anim); found = true; break; } } } } return(force && found); }