|
|
|
@ -14,6 +14,7 @@ namespace Fungus
|
|
|
|
|
"Drag Completed", |
|
|
|
|
"The block will execute when the player drags an object and successfully drops it on a target object.")] |
|
|
|
|
[AddComponentMenu("")] |
|
|
|
|
[ExecuteAlways] |
|
|
|
|
public class DragCompleted : EventHandler, ISerializationCallbackReceiver |
|
|
|
|
{ |
|
|
|
|
public class DragCompletedEvent |
|
|
|
@ -55,32 +56,65 @@ namespace Fungus
|
|
|
|
|
|
|
|
|
|
protected EventDispatcher eventDispatcher; |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Awake is called when the script instance is being loaded. |
|
|
|
|
/// </summary> |
|
|
|
|
void Awake() |
|
|
|
|
{ |
|
|
|
|
//add any dragableobject already present to list for backwards compatability |
|
|
|
|
if (draggableObject != null) |
|
|
|
|
{ |
|
|
|
|
if (!draggableObjects.Contains(draggableObject)) |
|
|
|
|
{ |
|
|
|
|
draggableObjects.Add(draggableObject); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (targetObject != null) |
|
|
|
|
{ |
|
|
|
|
if (!targetObjects.Contains(targetObject)) |
|
|
|
|
{ |
|
|
|
|
targetObjects.Add(targetObject); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
draggableObject = null; |
|
|
|
|
targetObject = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected virtual void OnEnable() |
|
|
|
|
{ |
|
|
|
|
eventDispatcher = FungusManager.Instance.EventDispatcher; |
|
|
|
|
if(Application.IsPlaying(this)){ |
|
|
|
|
eventDispatcher = FungusManager.Instance.EventDispatcher; |
|
|
|
|
|
|
|
|
|
eventDispatcher.AddListener<DragCompletedEvent>(OnDragCompletedEvent); |
|
|
|
|
eventDispatcher.AddListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent); |
|
|
|
|
eventDispatcher.AddListener<DragExited.DragExitedEvent>(OnDragExitedEvent); |
|
|
|
|
eventDispatcher.AddListener<DragCompletedEvent>(OnDragCompletedEvent); |
|
|
|
|
eventDispatcher.AddListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent); |
|
|
|
|
eventDispatcher.AddListener<DragExited.DragExitedEvent>(OnDragExitedEvent); |
|
|
|
|
|
|
|
|
|
foreach(Draggable2D dragObj in draggableObjects) |
|
|
|
|
{ |
|
|
|
|
dragObj.RegisterHandler(this); |
|
|
|
|
foreach(Draggable2D dragObj in draggableObjects) |
|
|
|
|
{ |
|
|
|
|
dragObj.RegisterHandler(this); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected virtual void OnDisable() |
|
|
|
|
{ |
|
|
|
|
eventDispatcher.RemoveListener<DragCompletedEvent>(OnDragCompletedEvent); |
|
|
|
|
eventDispatcher.RemoveListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent); |
|
|
|
|
eventDispatcher.RemoveListener<DragExited.DragExitedEvent>(OnDragExitedEvent); |
|
|
|
|
|
|
|
|
|
foreach(Draggable2D dragObj in draggableObjects) |
|
|
|
|
if(Application.IsPlaying(this)) |
|
|
|
|
{ |
|
|
|
|
dragObj.UnregisterHandler(this); |
|
|
|
|
} |
|
|
|
|
eventDispatcher.RemoveListener<DragCompletedEvent>(OnDragCompletedEvent); |
|
|
|
|
eventDispatcher.RemoveListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent); |
|
|
|
|
eventDispatcher.RemoveListener<DragExited.DragExitedEvent>(OnDragExitedEvent); |
|
|
|
|
|
|
|
|
|
eventDispatcher = null; |
|
|
|
|
foreach(Draggable2D dragObj in draggableObjects) |
|
|
|
|
{ |
|
|
|
|
dragObj.UnregisterHandler(this); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
eventDispatcher = null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void OnDragCompletedEvent(DragCompletedEvent evt) |
|
|
|
@ -100,24 +134,6 @@ namespace Fungus
|
|
|
|
|
|
|
|
|
|
void ISerializationCallbackReceiver.OnAfterDeserialize() |
|
|
|
|
{ |
|
|
|
|
//add any dragableobject already present to list for backwards compatability |
|
|
|
|
if (draggableObject != null) |
|
|
|
|
{ |
|
|
|
|
if (!draggableObjects.Contains(draggableObject)) |
|
|
|
|
{ |
|
|
|
|
draggableObjects.Add(draggableObject); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (targetObject != null) |
|
|
|
|
{ |
|
|
|
|
if (!targetObjects.Contains(targetObject)) |
|
|
|
|
{ |
|
|
|
|
targetObjects.Add(targetObject); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
draggableObject = null; |
|
|
|
|
targetObject = null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ISerializationCallbackReceiver.OnBeforeSerialize() |
|
|
|
|