-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAveragerElement.cs
58 lines (51 loc) · 3.37 KB
/
AveragerElement.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using MetaphysicsIndustries.Epiphany;
using MetaphysicsIndustries.Utilities;
namespace MetaphysicsIndustries.Amethyst
{
public class AveragerElement : AmethystElement
{
public AveragerElement()
: base(new AveragerNode(), new SizeV(60, 60))
{
}
[Serializable]
public class AveragerNode : Node
{
public AveragerNode()
: base("μ")
{
}
protected override void InitConnections()
{
InputConnectionBases.Add(Input);
OutputConnectionBases.Add(Output);
}
private InputConnectionBase _input = new InputConnection<IEnumerable<float>>("Input");
public InputConnectionBase Input
{
get { return _input; }
}
private OutputConnectionBase _output = new OutputConnection<float>("Output");
public OutputConnectionBase Output
{
get { return _output; }
}
public override void Execute(Dictionary<InputConnectionBase, object> inputs, Dictionary<OutputConnectionBase, object> outputs)
{
IEnumerable<float> input = (IEnumerable<float>)inputs[Input];
float sum = 0;
int count = 0;
foreach (float value in input)
{
sum += value;
count++;
}
outputs[Output] = sum / count;
}
}
}
}