diff options
Diffstat (limited to 'Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider')
3 files changed, 144 insertions, 0 deletions
diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnCollisionEvent.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnCollisionEvent.cs new file mode 100644 index 0000000..acc732e --- /dev/null +++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnCollisionEvent.cs @@ -0,0 +1,74 @@ +using UnityEngine; + +namespace UnityEngine.Graphs.LogicGraph +{ + public partial class ColliderNodes + { + // This is only used for node declaration. Implementation is in the OnCollisionEventDummy monobehaviour. + [Logic(typeof(Collider))] + public class OnCollisionEvent + { + [LogicTarget] + public Collider self; + + public Action enter; + public Action exit; + public Action stay; + + private Vector3 m_RelativeVelocity; + public Vector3 relativeVelocity + { + get { return m_RelativeVelocity; } + } + + private Collider m_Other; + public Collider other + { + get { return m_Other; } + } + + //TODO: would be nice to have, but no nodes in graphs yet know about how to work with arrays + //private ContactPoint[] m_Contacts; + //public ContactPoint[] contacts + //{ + // get { return m_Contacts; } + //} + + internal void EnterDummy(Collision collision) + { + if (enter == null) + return; + + m_RelativeVelocity = collision.relativeVelocity; + m_Other = collision.collider; + //m_Contacts = collision.contacts; + + enter (); + } + + internal void ExitDummy(Collision collision) + { + if (exit == null) + return; + + m_RelativeVelocity = collision.relativeVelocity; + m_Other = collision.collider; + //m_Contacts = collision.contacts; + + exit(); + } + + internal void StayDummy(Collision collision) + { + if (stay == null) + return; + + m_RelativeVelocity = collision.relativeVelocity; + m_Other = collision.collider; + //m_Contacts = collision.contacts; + + stay(); + } + } + } +} diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnMouseEvent.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnMouseEvent.cs new file mode 100644 index 0000000..869fc5e --- /dev/null +++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnMouseEvent.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace UnityEngine.Graphs.LogicGraph +{ + public partial class ColliderNodes + { + // This is only used for node declaration. Implementation is in the OnMouseEventDummy monobehaviour. + [Logic(typeof(Collider))] + public class OnMouseEvent + { + [LogicTarget] + public Collider self; + + public Action enter; + public Action over; + public Action exit; + public Action down; + public Action up; + public Action drag; + } + } +} diff --git a/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnTriggerEvent.cs b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnTriggerEvent.cs new file mode 100644 index 0000000..4be1fbc --- /dev/null +++ b/Runtime/Graphs/UnityEngine.Graphs/LogicNodeLibrary/Collider/OnTriggerEvent.cs @@ -0,0 +1,48 @@ +using UnityEngine; + +namespace UnityEngine.Graphs.LogicGraph +{ + public partial class ColliderNodes + { + // This is only used for node declaration. Implementation is in the OnCollisionEventDummy monobehaviour. + [Logic(typeof(Collider))] + public class OnTriggerEvent + { + [LogicTarget] + public Collider self; + + public Action enter; + public Action exit; + public Action stay; + + private Collider m_Other; + + public Collider other + { + get { return m_Other; } + } + + internal void EnterDummy(Collider other) + { + if (enter == null) + return; + m_Other = other; + enter(); + } + internal void ExitDummy(Collider other) + { + if (exit == null) + return; + m_Other = other; + exit(); + } + internal void StayDummy(Collider other) + { + if (stay == null) + return; + m_Other = other; + stay(); + } + } + } +} |