feat: initial import

This commit is contained in:
redglow
2026-07-11 10:54:02 +02:00
commit e560a743fb
55 changed files with 993 additions and 0 deletions
+19
View File
@@ -0,0 +1,19 @@
using System;
using Godot;
namespace GodotHostTest.Helpers;
public static class NodeExtensions
{
public static void AddTo(this IDisposable disposable, Node node)
{
node.TreeExited += OnTreeExited;
return;
void OnTreeExited()
{
disposable.Dispose();
node.TreeExited -= OnTreeExited;
}
}
}
+1
View File
@@ -0,0 +1 @@
uid://lbkratfmlq5e
+19
View File
@@ -0,0 +1,19 @@
using System;
using R3;
namespace GodotHostTest.Helpers;
public static class ObservableHelpers
{
public static IDisposable SubscribeOnce<T>(this Observable<T> observable, Action<T> action)
{
IDisposable? disposable = null;
disposable = observable.Subscribe(x =>
{
// ReSharper disable once AccessToModifiedClosure
disposable?.Dispose();
action(x);
});
return disposable;
}
}
+1
View File
@@ -0,0 +1 @@
uid://kfb8ooqmhoh0
+27
View File
@@ -0,0 +1,27 @@
using System;
using R3;
namespace GodotHostTest.Helpers;
public class Pipe<T> : IDisposable
{
private readonly ReplaySubject<Observable<T>> _subject = new(1);
public Pipe()
{
Observable = _subject.Switch();
}
public Observable<T> Observable { get; }
public void Dispose()
{
_subject.Dispose();
GC.SuppressFinalize(this);
}
public void PipeIn(Observable<T> observable)
{
_subject.OnNext(observable);
}
}
+1
View File
@@ -0,0 +1 @@
uid://crh20vve83rew