source generator

This commit is contained in:
h z
2024-07-10 07:02:11 +01:00
parent 3eec8a1345
commit 401e48e0ba
77 changed files with 432 additions and 336 deletions

View File

@@ -0,0 +1,32 @@
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
namespace Enigmos.Modules.SubModules;
public partial class EnumerableArrayInputModule : SubModule, ITerminalModule
{
public new IEnumerableProcessingModule ParentModule
{
get => (base.ParentModule as IEnumerableProcessingModule)!;
set => base.ParentModule = value;
}
public IDataInPort? Input { get; set; }
public IDataInPort[] DataInPorts { get; set; } = Array.Empty<IDataInPort>();
public void Init(IEnumerableProcessingModule module)
{
base.Init();
this.DataInInit("Input", 1);
Input = DataInPorts[0];
ParentModule = module;
}
public void Drain()
{
if(Finished)
return;
ParentModule.CachedInputArray = Input!.GetData.Get!.Array;
}
public bool Finished { get; set; }
}

View File

@@ -0,0 +1,9 @@
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
namespace Enigmos.Modules.SubModules;
public partial class EnumerableElementOutputModule : SubModule
{
private IDataOutPort? Output { get; set; }
}

View File

@@ -0,0 +1,35 @@
using Godot;
using Nocturnis.Enigmos.Modules;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
using Skeleton.DataStructure;
namespace Enigmos.Modules.SubModules;
public partial class OutputSubModule : SubModule, ISourceModule
{
public IDataOutPort? Out { get; set; }
public IDataOutPort[] DataOutPorts { get; set; } = Array.Empty<IDataOutPort>();
public new IInternalComputationalModule? ParentModule
{
get => base.ParentModule as IInternalComputationalModule;
set => base.ParentModule = value;
}
public override void Init()
{
base.Init();
Out = this.GetPort<IDataOutPort>("Out");
}
public void Define()
{
(object, StringName) Func(CacheItem c)
{
if (!ParentModule!.ComputationFinished)
ParentModule!.Compute();
return (ParentModule!.CachedResult.Data, ParentModule!.CachedResult.Type)!;
}
Out!.OutData.UpdateCalculation(Func);
}
}

View File

@@ -0,0 +1,13 @@
using Godot;
using Nocturnis.Enigmos.Modules;
namespace Enigmos.Modules.SubModules;
public class SubModule : BaseModule
{
public ICompositeModule? ParentModule { get; set; }
public sealed override Vector2 PositionToBoard =>
base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero);
protected sealed override bool Draggable => false;
protected sealed override bool HasManual => false;
}