34 lines
1.2 KiB
C#

using UnityEngine;
public class Swarming : Nucleus {
public Neuroid cohesion;
public Neuroid alignment;
public Neuroid avoidance;
public Neuroid output;
public override Vector3 outputValue { get => output.outputValue; set => output.outputValue = value; }
public const int BoundaryType = 1;
public const int BoidType = 2;
public Swarming(NanoBrain neuroidNet, Perception perception, SwarmControl sc) : base("Swarming Nucleus") {
this.cohesion = new(neuroidNet, "Cohesion");
perception.SendPositions(this.cohesion, 1.0f, BoidType);
this.alignment = new(neuroidNet, "Alignment") { average = true };
perception.SendVelocities(this.alignment, 1.0f, BoidType);
this.avoidance = new(neuroidNet, "Avoidance") { inverse = true };
perception.SendPositions(this.avoidance);
this.output = new(neuroidNet, "Swarming");
this.output.GetInputFrom(alignment, sc.alignmentForce);
this.output.GetInputFrom(cohesion, sc.cohesionForce);
this.output.GetInputFrom(avoidance, -sc.avoidanceForce);
}
public override void AddReceiver(Neuroid receiver) {
this.output.AddReceiver(receiver);
}
}