using Enigmos.Boards; using Enigmos.Modules.SubModules; 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 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!.CachedInputArray[ParentBoard.OptimizationModule.ProcessingIndex]; return (w.Data, w.Type)!; } Output!.OutData.UpdateCalculation(Func); } }