MouseDragDropTrigger ClassDelta Engine Documentation
Drag and Drop events triggered by mouse input from the user. View code on GitHub
Inheritance Hierarchy

System Object
  DeltaEngine.Entities Entity
    DeltaEngine.Commands Trigger
      DeltaEngine.Commands InputTrigger
        DeltaEngine.Input MouseDragDropTrigger

Namespace: DeltaEngine.Input
Assembly: DeltaEngine.Input (in DeltaEngine.Input.dll) Version: 1.1.1.0 (1.1.1)
Syntax

public class MouseDragDropTrigger : InputTrigger, 
	MouseTrigger

The MouseDragDropTrigger type exposes the following members.

Constructors

  NameDescription
Public methodMouseDragDropTrigger(Dictionary String, String )
Initializes a new instance of the MouseDragDropTrigger class
Public methodMouseDragDropTrigger(Rectangle, MouseButton)
Initializes a new instance of the MouseDragDropTrigger class
Top
Methods

  NameDescription
Public methodAdd T  (Inherited from Entity.)
Public methodAddTag (Inherited from Entity.)
Public methodClearTags (Inherited from Entity.)
Public methodContains T  (Inherited from Entity.)
Public methodContainsBehavior T  (Inherited from Entity.)
Public methodContainsTag (Inherited from Entity.)
Protected methodDeactivate (Inherited from Entity.)
Public methodDispose (Inherited from Entity.)
Public methodGet T 
Gets a specific component, derived classes can return faster cached values (e.g. Entity2D) View code on GitHub
(Inherited from Entity.)
Protected methodGetActiveBehaviors (Inherited from Entity.)
Protected methodGetComponentsForSaving (Inherited from Entity.)
Public methodGetOrDefault T  (Inherited from Entity.)
Public methodGetTags (Inherited from Entity.)
Public methodHandleWithMouse
Public methodInvoke (Inherited from Trigger.)
Public methodRemove T  (Inherited from Entity.)
Public methodRemoveTag (Inherited from Entity.)
Public methodSet (Inherited from Entity.)
Public methodSetComponents (Inherited from Entity.)
Public methodStart T  (Inherited from Entity.)
Protected methodStartInputDevice (Overrides InputTrigger StartInputDevice .)
Public methodStop T  (Inherited from Entity.)
Public methodToString (Inherited from Entity.)
Public methodUpdate (Inherited from Trigger.)
Top
Fields

  NameDescription
Protected fieldcomponents (Inherited from Entity.)
Public fieldInvoked (Inherited from Trigger.)
Top
Properties

  NameDescription
Public propertyButton
Public propertyIsActive (Inherited from Entity.)
Public propertyIsPauseable (Inherited from Trigger.)
Public propertyNumberOfComponents (Inherited from Entity.)
Public propertyStartArea
Public propertyStartDragPosition
Public propertyUpdatePriority (Inherited from Entity.)
Public propertyWasInvokedThisTick (Inherited from Trigger.)
Top
Remarks

Tests: DeltaEngine.Input.Tests.MouseDragDropTriggerTests
Examples

5 unit tests call DeltaEngine.Input.MouseDragDropTrigger
[Test, CloseAfterFirstFrame]
public void Create()
{
    var trigger = new MouseDragDropTrigger(Rectangle.One, MouseButton.Right);
    Assert.AreEqual(Rectangle.One, trigger.StartArea);
    Assert.AreEqual(MouseButton.Right, trigger.Button);
    Assert.AreEqual(Vector2D.Unused, trigger.StartDragPosition);
}
    [Test, CloseAfterFirstFrame]
    public void CreateFromAttributes()
    {
        var trigger = new MouseDragDropTrigger(new Dictionary<string, string>
            {
                { "StartArea", "1.1 2.2 3.3 4.4" },
                { "Button", "Right" }
            });
        Assert.AreEqual(new Rectangle(1.1f, 2.2f, 3.3f, 4.4f), trigger.StartArea);
        Assert.AreEqual(MouseButton.Right, trigger.Button);
        Assert.AreEqual(Vector2D.Unused, trigger.StartDragPosition);
        Assert.Throws<MouseDragDropTrigger.CannotCreateMouseDragDropTriggerWithoutStartArea>(
            () => new MouseDragDropTrigger(new Dictionary<string, string>()));
    }

    [Test, CloseAfterFirstFrame]
    public void DragDropOutsideStartArea()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D startPoint = -Vector2D.One;
        new Command(position => { startPoint = position; }).Add(
            new MouseDragDropTrigger(Rectangle.HalfCentered, MouseButton.Left));
        SetMouseState(State.Pressing, Vector2D.Zero);
        SetMouseState(State.Pressed, Vector2D.One);
        SetMouseState(State.Releasing, Vector2D.One);
        SetMouseState(State.Released, Vector2D.One);
        Assert.AreEqual(-Vector2D.One, startPoint);
    }

    private void SetMouseState(State state, Vector2D position)
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        mouse.SetButtonState(MouseButton.Left, state);
        mouse.SetNativePosition(position);
        AdvanceTimeAndUpdateEntities();
    }

    [Test, CloseAfterFirstFrame]
    public void DragDropInsideStartArea()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D startPoint = -Vector2D.One;
        new Command(position => { startPoint = position; }).Add(
            new MouseDragDropTrigger(Rectangle.HalfCentered, MouseButton.Left));
        SetMouseState(State.Pressing, Vector2D.Half);
        SetMouseState(State.Pressed, Vector2D.One);
        SetMouseState(State.Releasing, Vector2D.One);
        Assert.AreEqual(Vector2D.Half, startPoint);
    }

    [Test, CloseAfterFirstFrame]
    public void DragDropCloseToStartPointWillDoNothing()
    {
        if (mouse == null)
            return; //ncrunch: no coverage
        Vector2D startPoint = -Vector2D.One;
        new Command(position => { startPoint = position; }).Add(
            new MouseDragDropTrigger(Rectangle.HalfCentered, MouseButton.Left));
        SetMouseState(State.Pressing, Vector2D.Half);
        SetMouseState(State.Pressed, Vector2D.Half);
        SetMouseState(State.Releasing, Vector2D.Half);
        Assert.AreEqual(-Vector2D.One, startPoint);
    }
}
[Test, CloseAfterFirstFrame]
public void DragDropOutsideStartArea()
{
    if (mouse == null)
        return; //ncrunch: no coverage
    Vector2D startPoint = -Vector2D.One;
    new Command(position => { startPoint = position; }).Add(
        new MouseDragDropTrigger(Rectangle.HalfCentered, MouseButton.Left));
    SetMouseState(State.Pressing, Vector2D.Zero);
    SetMouseState(State.Pressed, Vector2D.One);
    SetMouseState(State.Releasing, Vector2D.One);
    SetMouseState(State.Released, Vector2D.One);
    Assert.AreEqual(-Vector2D.One, startPoint);
}
See Also