Flock Behavior
The public and protected methods and data of the FlockBehavior class and its PredatorBehavior and PreyBehavior subclasses are shown in Figure 22-7.

Figure 22-7. FlockBehavior and its subclasses
FlockBehavior has two main tasks:
To call
animateBoid()on every boid periodicallyTo store the velocity rules, which require an examination of the entire flock
FlockBehavior doesn't create boids since that's handled by its subclasses, and the information required for each type of boid is too specialized to be located in the superclass. PredatorBehavior creates a series of PredatorBoids, and PreyBehavior handles PreyBoids. But the subclass behaviors do use the inherited boidsList list for storage.
Animate the Boids
The calls to animateBoid() are carried out in processStimulus():
public void processStimulus(Enumeration en)
{ Boid b;
int i = 0;
while((b = boidsList.getBoid(i)) != null) {
b.animateBoid();
i++;
}
wakeupOn(timeOut); // schedule next update
}Velocity Rules Again
FlockBehavior is a general-purpose flock manager, so it stores the basic velocity methods used by all boids: Reynolds' cohesion, separation, and alignment rules. All the rules have a similar implementation since they examine nearby flockmates and build an aggregate result. This is converted into a velocity and scaled before being returned.
As explained at the start of this chapter, Reynolds' notion of flockmates ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access