bool Magnetic::prepareUpdate(State &state, const Update &update) { // reset reference position if Magnetic has not been updated for a while if (timedout()) reference_.reset(); if (reference_ != GlobalReference::Instance()) { reference_ = GlobalReference::Instance(); if (auto_heading_) reference_->setCurrentHeading(state, getModel()->getTrueHeading(state, update.getVector())); } getModel()->setReference(reference_->heading()); return true; }