Files
Enigmos/Modules/ProgrammableModules/OptimizationModule/OptimizationInputProviderModule.cs
2024-07-06 02:12:54 +01:00

37 lines
1.1 KiB
C#

using Enigmos.Boards;
using Godot;
using Nocturnis.DataStructures;
using Nocturnis.Enigmos.Modules.ComputationalModules;
using Nocturnis.Enigmos.Ports;
using Nocturnis.Enigmos.Ports.DataPorts.Directions;
using Skeleton.DataStructure;
namespace Enigmos.Modules.ProgrammableModules.OptimizationModule;
public partial class OptimizationInputProviderModule : SubModule, IComputationalModule
{
public IDataOutPort[] DataOutPorts { get; set; } = Array.Empty<IDataOutPort>();
public override IEnumerable<IBasePort> Ports => DataOutPorts;
public IDataOutPort? Output { get; set; }
public OptimizationModuleBoard? ParentBoard { get; set; }
public void Init(OptimizationModuleBoard board)
{
base.Init();
ParentBoard = board;
this.DataOutInit("Output", 1);
Output = DataOutPorts[0];
PostInit();
}
public void Define()
{
(object, StringName) Func(CacheItem c)
{
IData w = ParentBoard!.OptimizationModule!.CachedInput[ParentBoard.OptimizationModule.ProcessingIndex];
return (w.Data, w.Type)!;
}
Output!.OutData.UpdateCalculation(Func);
}
}