public class Swarming : Nucleus { //public Perception perception; public Neuroid cohesion; public Neuroid alignment; public Neuroid avoidance; public Neuroid boundary; public Neuroid output; public const int BoundaryType = 1; public const int BoidType = 2; public Swarming(NeuroidNetwork neuroidNet, Perception perception, SwarmControl sc) : base(neuroidNet) { cohesion = new(neuroidNet, "Cohesion"); perception.SendPositions(cohesion, 1.0f, BoidType); alignment = new(neuroidNet, "Alignment") { average = true }; perception.SendVelocities(alignment); avoidance = new(neuroidNet, "Separation") { inverse = true }; perception.SendPositions(avoidance, sc.avoidanceForce); boundary = new(neuroidNet, "Boundary"); this.output = new(neuroidNet, "Swarming"); output.GetInputFrom(alignment, sc.alignmentForce); output.GetInputFrom(cohesion, sc.cohesionForce); output.GetInputFrom(avoidance, -sc.avoidanceForce); output.GetInputFrom(boundary, sc.boundaryForce); }}