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 Draggable2D draggableObject;
public Collider2D targetObject; public Collider2D targetObject;
// There's no way to poll if an object is touching another object, so // 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. // we have to listen to the callbacks and track the touching state ourselves.
bool overTarget = false; bool overTarget = false;
public virtual bool IsOverTarget() public virtual bool IsOverTarget()
{ {
return overTarget; return overTarget;
} }
public virtual void OnDragEntered(Draggable2D draggableObject, Collider2D targetObject) public virtual void OnDragEntered(Draggable2D draggableObject, Collider2D targetObject)
{ {
if (this.targetObject != null && if (this.targetObject != null &&
draggableObject == this.draggableObject &&
targetObject == this.targetObject) targetObject == this.targetObject)
{ {
overTarget = true; overTarget = true;
} }
} }
public virtual void OnDragExited(Draggable2D draggableObject, Collider2D targetObject) public virtual void OnDragExited(Draggable2D draggableObject, Collider2D targetObject)
{ {
if (this.targetObject != null && if (this.targetObject != null &&
draggableObject == this.draggableObject &&
targetObject == this.targetObject) targetObject == this.targetObject)
{ {
overTarget = false; overTarget = false;
} }
} }
public virtual void OnDragCompleted(Draggable2D draggableObject) public virtual void OnDragCompleted(Draggable2D draggableObject)
{ {
if (draggableObject == this.draggableObject && if (draggableObject == this.draggableObject &&
overTarget) 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(); ExecuteSequence();
} }
} }
} }
} }
Loading…
Cancel
Save