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 PredatorBoid
s, and PreyBehavior
handles PreyBoid
s. 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 ...
Get Killer Game Programming in Java now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.