Browse Source

Fixed DragCompleted handlers firing incorrectly.

master
chrisgregan 10 years ago
parent
commit
e066f9c2d8
  1. 19
      Assets/Fungus/Sprite/Scripts/EventHandlers/DragCompleted.cs

19
Assets/Fungus/Sprite/Scripts/EventHandlers/DragCompleted.cs

@ -12,41 +12,48 @@ namespace Fungus
{
public Draggable2D draggableObject;
public Collider2D targetObject;
// There's no way to poll if an object is touching another object, so
// we have to listen to the callbacks and track the touching state ourselves.
bool overTarget = false;
public virtual bool IsOverTarget()
{
return overTarget;
}
public virtual void OnDragEntered(Draggable2D draggableObject, Collider2D targetObject)
{
if (this.targetObject != null &&
draggableObject == this.draggableObject &&
targetObject == this.targetObject)
{
overTarget = true;
}
}
public virtual void OnDragExited(Draggable2D draggableObject, Collider2D targetObject)
{
if (this.targetObject != null &&
draggableObject == this.draggableObject &&
targetObject == this.targetObject)
{
overTarget = false;
}
}
public virtual void OnDragCompleted(Draggable2D draggableObject)
{
if (draggableObject == this.draggableObject &&
overTarget)
{
// Assume that the player will have to do perform another drag and drop operation
// to complete the drag again. This is necessary because we don't get an OnDragExited if the
// draggable object is set to be inactive.
overTarget = false;
ExecuteSequence();
}
}
}
}
}
Loading…
Cancel
Save