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
+29
View File
@@ -0,0 +1,29 @@
using System;
using System.Reflection;
using Godot;
using Microsoft.Extensions.DependencyInjection;
namespace GodotHostTest.GodotDI;
public partial class Scope : Node
{
[Export] protected Node?[] InjectedNodes = [];
internal void ResolveInjectedNodes(IServiceProvider serviceProvider)
{
// resolve the injected nodes
// TODO: move to source generator, make it the only way for injection
foreach (var node in InjectedNodes)
{
if (node == null) continue;
foreach (var field in node.GetType()
.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic))
{
if (field.GetCustomAttribute<InjectAttribute>() == null) continue;
var fieldType = field.FieldType;
var service = serviceProvider.GetRequiredService(fieldType);
field.SetValue(node, service);
}
}
}
}