diff --git a/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs b/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs
index 5e2047cc..4307d839 100644
--- a/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs
+++ b/Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs
@@ -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;
+ ///
+ /// Awake is called when the script instance is being loaded.
+ ///
+ 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(OnDragCompletedEvent);
- eventDispatcher.AddListener(OnDragEnteredEvent);
- eventDispatcher.AddListener(OnDragExitedEvent);
+ eventDispatcher.AddListener(OnDragCompletedEvent);
+ eventDispatcher.AddListener(OnDragEnteredEvent);
+ eventDispatcher.AddListener(OnDragExitedEvent);
- foreach(Draggable2D dragObj in draggableObjects)
- {
- dragObj.RegisterHandler(this);
+ foreach(Draggable2D dragObj in draggableObjects)
+ {
+ dragObj.RegisterHandler(this);
+ }
}
+
}
protected virtual void OnDisable()
{
- eventDispatcher.RemoveListener(OnDragCompletedEvent);
- eventDispatcher.RemoveListener(OnDragEnteredEvent);
- eventDispatcher.RemoveListener(OnDragExitedEvent);
-
- foreach(Draggable2D dragObj in draggableObjects)
+ if(Application.IsPlaying(this))
{
- dragObj.UnregisterHandler(this);
- }
+ eventDispatcher.RemoveListener(OnDragCompletedEvent);
+ eventDispatcher.RemoveListener(OnDragEnteredEvent);
+ eventDispatcher.RemoveListener(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()
diff --git a/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs b/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs
index 09217ac8..0ca5a15a 100644
--- a/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs
+++ b/Assets/Fungus/Scripts/EventHandlers/DragEntered.cs
@@ -15,6 +15,8 @@ namespace Fungus
"Drag Entered",
"The block will execute when the player is dragging an object which starts touching the target object.")]
[AddComponentMenu("")]
+
+ [ExecuteAlways]
public class DragEntered : EventHandler, ISerializationCallbackReceiver
{
public class DragEnteredEvent
@@ -45,18 +47,46 @@ namespace Fungus
protected EventDispatcher eventDispatcher;
+ 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(OnDragEnteredEvent);
+ eventDispatcher.AddListener(OnDragEnteredEvent);
+ }
}
protected virtual void OnDisable()
{
- eventDispatcher.RemoveListener(OnDragEnteredEvent);
+ if(Application.IsPlaying(this)){
+ eventDispatcher.RemoveListener(OnDragEnteredEvent);
- eventDispatcher = null;
+ eventDispatcher = null;
+ }
}
void OnDragEnteredEvent(DragEnteredEvent evt)
@@ -88,24 +118,7 @@ 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()
diff --git a/Assets/Fungus/Scripts/EventHandlers/DragExited.cs b/Assets/Fungus/Scripts/EventHandlers/DragExited.cs
index a875c430..cd9092f4 100644
--- a/Assets/Fungus/Scripts/EventHandlers/DragExited.cs
+++ b/Assets/Fungus/Scripts/EventHandlers/DragExited.cs
@@ -14,6 +14,8 @@ namespace Fungus
"Drag Exited",
"The block will execute when the player is dragging an object which stops touching the target object.")]
[AddComponentMenu("")]
+
+ [ExecuteAlways]
public class DragExited : EventHandler, ISerializationCallbackReceiver
{
public class DragExitedEvent
@@ -47,26 +49,11 @@ namespace Fungus
protected EventDispatcher eventDispatcher;
- protected virtual void OnEnable()
- {
- eventDispatcher = FungusManager.Instance.EventDispatcher;
-
- eventDispatcher.AddListener(OnDragEnteredEvent);
- }
-
- protected virtual void OnDisable()
- {
- eventDispatcher.RemoveListener(OnDragEnteredEvent);
-
- eventDispatcher = null;
- }
-
- void OnDragEnteredEvent(DragExitedEvent evt)
- {
- OnDragExited(evt.DraggableObject, evt.TargetCollider);
- }
- void ISerializationCallbackReceiver.OnAfterDeserialize()
+ ///
+ /// Awake is called when the script instance is being loaded.
+ ///
+ void Awake()
{
//add any dragableobject already present to list for backwards compatability
if (draggableObject != null)
@@ -88,6 +75,36 @@ namespace Fungus
targetObject = null;
}
+ protected virtual void OnEnable()
+ {
+ if(Application.IsPlaying(this)){
+ eventDispatcher = FungusManager.Instance.EventDispatcher;
+
+ eventDispatcher.AddListener(OnDragEnteredEvent);
+ }
+
+ }
+
+ protected virtual void OnDisable()
+ {
+ if(Application.IsPlaying(this)){
+ eventDispatcher.RemoveListener(OnDragEnteredEvent);
+
+ eventDispatcher = null;
+ }
+
+ }
+
+ void OnDragEnteredEvent(DragExitedEvent evt)
+ {
+ OnDragExited(evt.DraggableObject, evt.TargetCollider);
+ }
+
+ void ISerializationCallbackReceiver.OnAfterDeserialize()
+ {
+
+ }
+
void ISerializationCallbackReceiver.OnBeforeSerialize()
{