private void OnRegisterClickable(object sender, EventArgs eventArgs) { if (sender is IClickable clickable) { Clickables.Add(clickable); } }
private void OnUnregisterClickable(object sender, EventArgs eventArgs) { if (sender is IClickable clickable) { Clickables.Remove(clickable); } }
protected virtual void OnEntityRemoved(Entity e) { var mp = Scene.View.LocalMousePosition; if (mouseDownEntity == e) { mouseDownEntity.ProcessMessage(MessageType.MouseUp, new System.Windows.Forms.MouseEventArgs(View.MouseButtons, 0, mp.X, mp.Y, 0)); mouseDownEntity = null; } if (MouseOverEntity == e) { MouseOverEntity.ProcessMessage(MessageType.MouseLeave, new System.Windows.Forms.MouseEventArgs(View.MouseButtons, 0, mp.X, mp.Y, 0)); MouseOverEntity = null; } if (IsClickable(e)) { Clickables.Remove(e); } e.ClickableChanged -= new EventHandler(UpdateEntityBounding); e.IsVisibleChanged -= new EventHandler(UpdateEntityBounding); e.PickingLocalBoundingChanged -= new EventHandler(UpdateEntityBounding); e.Transformed -= new EventHandler(UpdateEntityBounding); if (e.Updateable) { updateables.Remove(e); } }
public void OnClick(object sender, MouseButtonEventArgs mouseButtonEventArgs) { Vector2f point = Window.MapPixelToCoords(new Vector2i(mouseButtonEventArgs.X, mouseButtonEventArgs.Y)); Clickables.ToList() .FindAll(clickable => clickable.Visible) .ForEach(clickable => clickable.GetRenderComponents() .ToList() .FindAll(component => component != null && component.IsPointInside(point)) .ForEach(_ => clickable.OnClick(mouseButtonEventArgs))); }
protected virtual void OnEntityAdded(Entity obj) { if (IsClickable(obj)) { Clickables.Insert(obj, obj.PickingWorldBounding); } obj.ClickableChanged += new EventHandler(UpdateEntityBounding); obj.IsVisibleChanged += new EventHandler(UpdateEntityBounding); obj.PickingLocalBoundingChanged += new EventHandler(UpdateEntityBounding); obj.Transformed += new EventHandler(UpdateEntityBounding); if (obj.Updateable) { updateables.Add(obj); } obj.UpdateableChanged += new EventHandler(obj_UpdateableChanged); }
void UpdateEntityBounding(object sender, EventArgs e) { var ent = (Entity)sender; if (IsClickable(ent)) { if (!Clickables.Contains(ent)) { Clickables.Insert(ent, ent.PickingWorldBounding); } else { Clickables.Move(((Entity)sender), ((Entity)sender).PickingWorldBounding); } } else { Clickables.Remove(ent); } }
private void OnMouseDown() { Clickables.interactions(name); }