コード例 #1
0
 private void OnRegisterClickable(object sender, EventArgs eventArgs)
 {
     if (sender is IClickable clickable)
     {
         Clickables.Add(clickable);
     }
 }
コード例 #2
0
 private void OnUnregisterClickable(object sender, EventArgs eventArgs)
 {
     if (sender is IClickable clickable)
     {
         Clickables.Remove(clickable);
     }
 }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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)));
        }
コード例 #5
0
 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);
 }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
 private void OnMouseDown()
 {
     Clickables.interactions(name);
 }