diff --git a/resources/events/test2.tres b/resources/events/test2.tres
deleted file mode 100644
index 14b8ba4..0000000
--- a/resources/events/test2.tres
+++ /dev/null
@@ -1,8 +0,0 @@
-[gd_resource type="Resource" script_class="EventResource" load_steps=2 format=3 uid="uid://bgfxakxxfmoxs"]
-
-[ext_resource type="Script" uid="uid://ci3t5mvnopntg" path="res://scripts/CSharp/Low Code/Events/EventResource.cs" id="1_jm77s"]
-
-[resource]
-script = ExtResource("1_jm77s")
-_showLog = true
-metadata/_custom_type_script = "uid://ci3t5mvnopntg"
diff --git a/scripts/CSharp/Low Code/Events/EventListener.cs b/scripts/CSharp/Low Code/Events/EventListener.cs
index 2bf3693..caa2801 100644
--- a/scripts/CSharp/Low Code/Events/EventListener.cs
+++ b/scripts/CSharp/Low Code/Events/EventListener.cs
@@ -1,4 +1,3 @@
-using System;
using Godot;
using Godot.Collections;
@@ -23,6 +22,26 @@ public partial class EventListener : Node
/// The signal that is triggered when this listener is called by one of the .
///
[Signal] public delegate void EventRaisedEventHandler();
+
+ ///
+ /// The signal that is triggered when this listener is called by one of the .
+ ///
+ [Signal] public delegate void EventRaisedWithPayloadEventHandler(Variant payload);
+
+ ///
+ /// A signal that is triggered when the payload of one of the changed.
+ ///
+ [Signal] public delegate void PayloadChangedEventHandler(Variant payload, Variant oldPayload);
+
+ ///
+ /// A signal that is triggered when the payload of one of the changed.
+ ///
+ [Signal] public delegate void NewEventPayloadEventHandler(Variant payload);
+
+ ///
+ /// A signal that is triggered when the payload of one of the changed.
+ ///
+ [Signal] public delegate void OldEventPayloadEventHandler(Variant oldPayload);
///
@@ -53,10 +72,24 @@ public partial class EventListener : Node
/// Called by a s from the array.
/// Propagates the event by emitting signal.
///
- public void Invoke()
+ public void EventInvoked(Variant payload)
{
if(_showLog)
GD.Print("Event Raised on: " + Name);
EmitSignal(SignalName.EventRaised);
+ EmitSignal(SignalName.EventRaisedWithPayload, payload);
+ }
+
+ ///
+ /// Called by a s from the array.
+ /// Propagates the event by emitting signal.
+ ///
+ public void EventPayloadChanged(Variant payload, Variant oldPayload)
+ {
+ if(_showLog)
+ GD.Print($"Calling Event Payload Changed Signals on: " + Name);
+ EmitSignal(SignalName.PayloadChanged, payload, oldPayload);
+ EmitSignal(SignalName.NewEventPayload, payload);
+ EmitSignal(SignalName.OldEventPayload, oldPayload);
}
}
\ No newline at end of file
diff --git a/scripts/CSharp/Low Code/Events/EventResource.cs b/scripts/CSharp/Low Code/Events/EventResource.cs
index 1560c00..4811348 100644
--- a/scripts/CSharp/Low Code/Events/EventResource.cs
+++ b/scripts/CSharp/Low Code/Events/EventResource.cs
@@ -14,6 +14,24 @@ public partial class EventResource : Resource
/// Log into console when this event resource is adding or removing listeners, and when it's raised.
///
[Export] private bool _showLog;
+
+ [Export]
+ public Variant Payload
+ {
+ get { return _payload; }
+ set
+ {
+ if (!_payload.Equals(value))
+ {
+ _lastPayload = _payload;
+ _payload = value;
+ ValueChangeHandler();
+ }
+ }
+ }
+
+ private Variant _payload;
+ private Variant _lastPayload;
///
/// Raise-Button Call with Editor Export for easier debugging.
@@ -56,7 +74,22 @@ public partial class EventResource : Resource
foreach (var eventListener in _eventListeners)
{
- eventListener.Invoke();
+ eventListener.EventInvoked(_payload);
}
}
+
+ ///
+ /// Called when the Payload value changed.
+ ///
+ public void ValueChangeHandler()
+ {
+ if(_showLog)
+ GD.Print($"Event payload changed from {_lastPayload} to {_payload} on event resource: " + ResourcePath.GetFile().TrimSuffix(".tres"));
+
+ foreach (var eventListener in _eventListeners)
+ {
+ eventListener.EventPayloadChanged(_payload, _lastPayload);
+ }
+ }
+
}
\ No newline at end of file