diff --git a/addons/godot_state_charts/csharp/NodeWrapper.cs b/addons/godot_state_charts/csharp/NodeWrapper.cs index d7ebd5fe..ef9b4f8a 100644 --- a/addons/godot_state_charts/csharp/NodeWrapper.cs +++ b/addons/godot_state_charts/csharp/NodeWrapper.cs @@ -11,7 +11,7 @@ namespace GodotStateCharts /// /// The wrapped node. /// - protected readonly Node Wrapped; + public readonly Node Wrapped; protected NodeWrapper(Node wrapped) { diff --git a/addons/godot_state_charts/csharp/ResourceWrapper.cs b/addons/godot_state_charts/csharp/ResourceWrapper.cs new file mode 100644 index 00000000..60ff238f --- /dev/null +++ b/addons/godot_state_charts/csharp/ResourceWrapper.cs @@ -0,0 +1,39 @@ +// ReSharper disable once CheckNamespace +namespace GodotStateCharts +{ + using Godot; + + /// + /// Base class for all wrapper classes for Godot Resource types. Provides common functionality. Not to be used directly. + /// + public abstract class ResourceWrapper + { + /// + /// The wrapped resource. Useful for you need to access the underlying resource directly, + /// e.g. for serialization. + /// + public readonly Resource Wrapped; + + protected ResourceWrapper(Resource wrapped) + { + Wrapped = wrapped; + } + + /// + /// Allows to call methods on the wrapped resource deferred. + /// + public Variant CallDeferred(string method, params Variant[] args) + { + return Wrapped.CallDeferred(method, args); + } + + /// + /// Allows to call methods on the wrapped resource. + /// + public Variant Call(string method, params Variant[] args) + { + return Wrapped.Call(method, args); + } + } +} + diff --git a/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid b/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid new file mode 100644 index 00000000..8aea204a --- /dev/null +++ b/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid @@ -0,0 +1 @@ +uid://j8ro24kpswjd diff --git a/addons/godot_state_charts/csharp/SerializedStateChart.cs b/addons/godot_state_charts/csharp/SerializedStateChart.cs new file mode 100644 index 00000000..59d2adda --- /dev/null +++ b/addons/godot_state_charts/csharp/SerializedStateChart.cs @@ -0,0 +1,89 @@ +// ReSharper disable once CheckNamespace +namespace GodotStateCharts +{ + using System; + using Godot; + + /// + /// C# wrapper for the SerializedStateChart Godot resource. + /// + public class SerializedStateChart : ResourceWrapper + { + private SerializedStateChart(Resource wrapped) : base(wrapped) { } + + public static SerializedStateChart Of(Resource resource) + { + if (resource.GetScript().As