Ogre::Vector2 AIWizard::seekFlag() { m_iAnimation = WALK; if(this->IsAttacking()) { m_vSteeringForce = getSteering()->Seek(EntityCityManager::getSingletonPtr()->GetType(BARRACK)[0]->getPosition()); this->setObjetive((AIUnit*)EntityCityManager::getSingletonPtr()->GetType(BARRACK)[0]); }else{ m_vSteeringForce = getSteering()->Seek(EntityCityManager::getSingletonPtr()->GetType(HALL)[0]->getPosition()); this->setObjetive((AIUnit*)EntityCityManager::getSingletonPtr()->GetType(HALL)[0]); } return m_vSteeringForce; }
void Gcdc2016::nextContainer(odcore::data::Container &a_c) { if(a_c.getDataType() == opendlv::proxy::ActuationRequest::ID()){ auto actuationRequest = a_c.getData<opendlv::proxy::ActuationRequest>(); if (actuationRequest.getIsValid()) { double braking = 0.0; double acceleration = 0.0; double roadWheelAngle = actuationRequest.getSteering(); if (actuationRequest.getAcceleration() > 0) { acceleration = actuationRequest.getAcceleration(); } else { braking = actuationRequest.getAcceleration(); } m_vehicle->SetRoadVheelAngle(roadWheelAngle+0.1); m_vehicle->SetDeceleraionRequest(braking); m_vehicle->SetThrottlePedalPosition(acceleration+1); } } }
Ogre::Vector2 AIWizard::charge() { m_dMass = 0.1; m_MaxSpeed = 1.0; m_vSteeringForce = getSteering()->Seek(m_pObjetive->getPosition()); return m_vSteeringForce; }
void PhysicsVehicle::update(float elapsedTime, float steering, float braking, float driving) { float v = getSpeedKph(); //MathUtil::smooth(&_speedSmoothed, v, elapsedTime, 0, 1200); kmSmooth(&_speedSmoothed, v, elapsedTime, 0, 1200); if (elapsedTime > 0) { // Avoid accumulation of downforce while paused (zero elapsedTime) applyDownforce(); } // Adjust control inputs based on vehicle speed. steering = getSteering(v, steering); driving = getDriving(v, driving, braking); braking = getBraking(v, braking); // Allow braking to take precedence over driving. if (driving > 0 && braking > 0) { driving = 0; } PhysicsVehicleWheel* wheel; for (int i = 0; i < _vehicle->getNumWheels(); i++) { wheel = getWheel(i); if (wheel->isSteerable()) { _vehicle->setSteeringValue(steering * _steeringGain, i); } else { _vehicle->applyEngineForce(driving * _drivingForce, i); _vehicle->setBrake(braking * _brakingForce, i); } wheel->update(elapsedTime); wheel->transform(wheel->getNode()); } }