29 lines
1022 B
C#

public class Swarming : Nucleus {
//public Perception perception;
public Neuroid cohesion;
public Neuroid alignment;
public Neuroid avoidance;
public Neuroid boundary;
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");
output.GetInputFrom(alignment, sc.alignmentForce);
output.GetInputFrom(cohesion, sc.cohesionForce);
output.GetInputFrom(avoidance, -sc.avoidanceForce);
output.GetInputFrom(boundary, sc.boundaryForce);
}
}