Browse Source

fixed execute in main thread issue using awake()[ExecuteAlways]

master
SarveshBajaj 5 years ago
parent
commit
ef98eaaeb7
  1. 52
      Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs
  2. 47
      Assets/Fungus/Scripts/EventHandlers/DragEntered.cs
  3. 51
      Assets/Fungus/Scripts/EventHandlers/DragExited.cs

52
Assets/Fungus/Scripts/EventHandlers/DragCompleted.cs

@ -14,6 +14,7 @@ namespace Fungus
"Drag Completed", "Drag Completed",
"The block will execute when the player drags an object and successfully drops it on a target object.")] "The block will execute when the player drags an object and successfully drops it on a target object.")]
[AddComponentMenu("")] [AddComponentMenu("")]
[ExecuteAlways]
public class DragCompleted : EventHandler, ISerializationCallbackReceiver public class DragCompleted : EventHandler, ISerializationCallbackReceiver
{ {
public class DragCompletedEvent public class DragCompletedEvent
@ -55,8 +56,36 @@ namespace Fungus
protected EventDispatcher eventDispatcher; 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() protected virtual void OnEnable()
{ {
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher; eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragCompletedEvent>(OnDragCompletedEvent); eventDispatcher.AddListener<DragCompletedEvent>(OnDragCompletedEvent);
@ -69,7 +98,11 @@ namespace Fungus
} }
} }
}
protected virtual void OnDisable() protected virtual void OnDisable()
{
if(Application.IsPlaying(this))
{ {
eventDispatcher.RemoveListener<DragCompletedEvent>(OnDragCompletedEvent); eventDispatcher.RemoveListener<DragCompletedEvent>(OnDragCompletedEvent);
eventDispatcher.RemoveListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent); eventDispatcher.RemoveListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent);
@ -82,6 +115,7 @@ namespace Fungus
eventDispatcher = null; eventDispatcher = null;
} }
}
void OnDragCompletedEvent(DragCompletedEvent evt) void OnDragCompletedEvent(DragCompletedEvent evt)
{ {
@ -100,24 +134,6 @@ namespace Fungus
void ISerializationCallbackReceiver.OnAfterDeserialize() 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() void ISerializationCallbackReceiver.OnBeforeSerialize()

47
Assets/Fungus/Scripts/EventHandlers/DragEntered.cs

@ -15,6 +15,8 @@ namespace Fungus
"Drag Entered", "Drag Entered",
"The block will execute when the player is dragging an object which starts touching the target object.")] "The block will execute when the player is dragging an object which starts touching the target object.")]
[AddComponentMenu("")] [AddComponentMenu("")]
[ExecuteAlways]
public class DragEntered : EventHandler, ISerializationCallbackReceiver public class DragEntered : EventHandler, ISerializationCallbackReceiver
{ {
public class DragEnteredEvent public class DragEnteredEvent
@ -45,19 +47,47 @@ namespace Fungus
protected EventDispatcher eventDispatcher; 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() protected virtual void OnEnable()
{ {
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher; eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragEnteredEvent>(OnDragEnteredEvent); eventDispatcher.AddListener<DragEnteredEvent>(OnDragEnteredEvent);
} }
}
protected virtual void OnDisable() protected virtual void OnDisable()
{ {
if(Application.IsPlaying(this)){
eventDispatcher.RemoveListener<DragEnteredEvent>(OnDragEnteredEvent); eventDispatcher.RemoveListener<DragEnteredEvent>(OnDragEnteredEvent);
eventDispatcher = null; eventDispatcher = null;
} }
}
void OnDragEnteredEvent(DragEnteredEvent evt) void OnDragEnteredEvent(DragEnteredEvent evt)
{ {
@ -88,24 +118,7 @@ namespace Fungus
void ISerializationCallbackReceiver.OnAfterDeserialize() 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() void ISerializationCallbackReceiver.OnBeforeSerialize()

51
Assets/Fungus/Scripts/EventHandlers/DragExited.cs

@ -14,6 +14,8 @@ namespace Fungus
"Drag Exited", "Drag Exited",
"The block will execute when the player is dragging an object which stops touching the target object.")] "The block will execute when the player is dragging an object which stops touching the target object.")]
[AddComponentMenu("")] [AddComponentMenu("")]
[ExecuteAlways]
public class DragExited : EventHandler, ISerializationCallbackReceiver public class DragExited : EventHandler, ISerializationCallbackReceiver
{ {
public class DragExitedEvent public class DragExitedEvent
@ -47,20 +49,52 @@ namespace Fungus
protected EventDispatcher eventDispatcher; 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() protected virtual void OnEnable()
{ {
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher; eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragExitedEvent>(OnDragEnteredEvent); eventDispatcher.AddListener<DragExitedEvent>(OnDragEnteredEvent);
} }
}
protected virtual void OnDisable() protected virtual void OnDisable()
{ {
if(Application.IsPlaying(this)){
eventDispatcher.RemoveListener<DragExitedEvent>(OnDragEnteredEvent); eventDispatcher.RemoveListener<DragExitedEvent>(OnDragEnteredEvent);
eventDispatcher = null; eventDispatcher = null;
} }
}
void OnDragEnteredEvent(DragExitedEvent evt) void OnDragEnteredEvent(DragExitedEvent evt)
{ {
OnDragExited(evt.DraggableObject, evt.TargetCollider); OnDragExited(evt.DraggableObject, evt.TargetCollider);
@ -68,24 +102,7 @@ namespace Fungus
void ISerializationCallbackReceiver.OnAfterDeserialize() 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() void ISerializationCallbackReceiver.OnBeforeSerialize()

Loading…
Cancel
Save