using Enigmos.Modules.ComputationalModules; using Enigmos.Modules.ControllingModules; using Enigmos.Modules.ProgrammableModules; using Enigmos.Ports; using Enigmos.Ports.DataPorts; using Godot; using Nocturnis.Enigmos.Modules; using Nocturnis.Enigmos.Ports; namespace Enigmos.Modules.Other; public partial class FilterOutputModule : NullaryComputationalModule, IInterlayerModule { public override Vector2 PositionToBoard => base.PositionToBoard + (ParentModule?.PositionToBoard ?? Vector2.Zero); public IFilterModule FilterModule { get => (ParentModule as IFilterModule)!; set => ParentModule = value; } public DataOutPort Output { get; set; } public override IEnumerable Ports => new[] { Output }; protected override bool Draggable => false; protected override bool HasManual => false; public override void Init() { base.Init(); Output = GetPort("Output"); PostInit(); } protected override void Compute(IRootModule root) => FilterModule.FilterWithTimeoutHandle(root); public IBasePort UnderlyingPort => Output; public IProgrammableModule? ParentModule { get; set; } }