The demo code in 1_Boids
uses a mixture of GoTo and Flocking behaviors to make a swarm of boids chase a user-specified target, and at the same time, create an illusion of the swarm-like movement.
We do not discuss the whole source of the application here and only underline the most important parts. The initialization of the demo starts with the creation of clSwarm
filled with randomly positioned boids:
auto Swarm = make_intrusive<clSwarm>(); Swarm->GenerateRandom( 10 );
We set the same controller for all boids. The controller itself is a blend of clFlockingBehaviour
and clGoToBehavior
in the g_Behaviour
object:
auto MixedControl = make_intrusive<clMixedBehaviour>(); MixedControl->AddBehaviour(0.5f, make_intrusive<clFlockingBehaviour>()); MixedControl->AddBehaviour(0.5f, g_Behaviour); Swarm->SetSingleBehaviour(MixedControl);
The g_Behaviour
instance holds coordinates of the target, which are initially set to (1.0, 1.0)
:
g_Behaviour->m_TargetRadius...