using UnityEngine; public class Swarming : Nucleus { public Neuroid cohesion; public Neuroid alignment; public Neuroid avoidance; public Neuroid boundary; public Neuroid output; public override Vector3 outputValue { get => output.outputValue; set => output.outputValue = value; } public Swarming(NanoBrainObj brain, Perception perception, SwarmControl sc) : base(null, "Swarming Nucleus") { this.cohesion = new(brain, "Cohesion") { inverse = false }; perception.SendPositions(this.cohesion, Boid.BoidType); this.alignment = new(brain, "Alignment") { average = true }; perception.SendVelocities(this.alignment, Boid.BoidType); this.avoidance = new(brain, "Avoidance") { inverse = true }; perception.SendPositions(this.avoidance); this.boundary = new(brain, "Boundary"); perception.SendPositions(this.boundary, Boid.BoundaryType); this.output = new(brain, "Swarming"); this.output.GetInputFrom(alignment, sc.alignmentForce); this.output.GetInputFrom(cohesion, sc.cohesionForce); this.output.GetInputFrom(avoidance, -sc.avoidanceForce); this.output.GetInputFrom(boundary, -sc.avoidanceForce); } public override void AddReceiver(Nucleus receiver) { this.output.AddReceiver(receiver); } }