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(NeuroidNetwork 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); } }