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(); public override IEnumerable 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); } }