Ogre::Vector3 wander(const Vehicle& agent)
       {
         // random walk WanderSide and WanderUp between -1 and +1
         const float speed = agent.getSpeed().length() ;
         WanderSide = scalarRandomWalk (WanderSide, speed, -1, +1) ;
         WanderUp   = scalarRandomWalk (WanderUp,   speed, -1, +1) ;
 
         // return a pure lateral steering vector: (+/-Side) + (+/-Up)
         return agent.getSide()*WanderSide + agent.getUp()*WanderUp ;
         
       }
Esempio n. 2
0
float3
OpenSteer::SteerLibrary::
steerForWander (const AbstractVehicle& v, float dt)
{
    // random walk WanderSide and WanderUp between -1 and +1
    const float speed = 12 * dt; // maybe this (12) should be an argument?
    WanderSide = scalarRandomWalk (WanderSide, speed, -1, +1);
    WanderUp   = scalarRandomWalk (WanderUp,   speed, -1, +1);

    // return a pure lateral steering vector: (+/-Side) + (+/-Up)
    return float3_add(float3_scalar_multiply(v.side(), WanderSide), float3_scalar_multiply(v.up(), WanderUp));
}