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",
"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,8 +56,36 @@ 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()
{
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragCompletedEvent>(OnDragCompletedEvent);
@ -69,7 +98,11 @@ namespace Fungus
}
}
}
protected virtual void OnDisable()
{
if(Application.IsPlaying(this))
{
eventDispatcher.RemoveListener<DragCompletedEvent>(OnDragCompletedEvent);
eventDispatcher.RemoveListener<DragEntered.DragEnteredEvent>(OnDragEnteredEvent);
@ -82,6 +115,7 @@ namespace Fungus
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()

47
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,19 +47,47 @@ 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()
{
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragEnteredEvent>(OnDragEnteredEvent);
}
}
protected virtual void OnDisable()
{
if(Application.IsPlaying(this)){
eventDispatcher.RemoveListener<DragEnteredEvent>(OnDragEnteredEvent);
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()

51
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,20 +49,52 @@ 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()
{
if(Application.IsPlaying(this)){
eventDispatcher = FungusManager.Instance.EventDispatcher;
eventDispatcher.AddListener<DragExitedEvent>(OnDragEnteredEvent);
}
}
protected virtual void OnDisable()
{
if(Application.IsPlaying(this)){
eventDispatcher.RemoveListener<DragExitedEvent>(OnDragEnteredEvent);
eventDispatcher = null;
}
}
void OnDragEnteredEvent(DragExitedEvent evt)
{
OnDragExited(evt.DraggableObject, evt.TargetCollider);
@ -68,24 +102,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()

Loading…
Cancel
Save