31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
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);
|
|
}} |