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 ; }
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)); }