History

Add VR display auto-calibration user message calculations

David Rowe committed 12 years ago

Commit 0a4bc2b1 parent d3b37681 file · +16 −0Browse files

Showing the changes to interface/src/devices/OculusManager.cpp (1 of 1 file). Show all

Unified · Split

interface/src/devices/OculusManager.cpp+16−0
@@ -186,6 +186,8 @@ void OculusManager::disconnect() { · 185 unmodified lines
186186
187187 void OculusManager::calibrate(glm::vec3 position, glm::quat orientation) {
188188 #ifdef HAVE_LIBOVR
189+ static QString progressMessage;
190+
189191 switch (_calibrationState) {
190192
191193 case UNCALIBRATED:
@@ -210,6 +212,8 @@ void OculusManager::calibrate(glm::vec3 position, glm::quat orientation) { · 18 unmodified lines
210212 && glm::angle(orientation * glm::inverse(_calibrationOrientation)) < CALIBRATION_ZERO_MAXIMUM_ANGLE) {
211213 _calibrationStartTime = usecTimestampNow();
212214 _calibrationState = WAITING_FOR_ZERO_HELD;
215+ qDebug() << "Progress box: Hold still to calibrate";
216+ progressMessage = "";
213217 } else {
214218 _calibrationPosition = position;
215219 _calibrationOrientation = orientation;
@@ -221,7 +225,19 @@ void OculusManager::calibrate(glm::vec3 position, glm::quat orientation) { · 5 unmodified lines
221225 && glm::angle(orientation * glm::inverse(_calibrationOrientation)) < CALIBRATION_ZERO_MAXIMUM_ANGLE) {
222226 if ((usecTimestampNow() - _calibrationStartTime) > CALIBRATION_ZERO_HOLD_TIME) {
223227 _calibrationState = CALIBRATED;
228+ qDebug() << "Delete progress box";
224229 Application::getInstance()->resetSensors();
230+ } else {
231+ // 3...2...1...
232+ quint64 quarterSeconds = (usecTimestampNow() - _calibrationStartTime) / 250000;
233+ if (quarterSeconds + 1 > progressMessage.length()) {
234+ if (quarterSeconds == 4 * (quarterSeconds / 4)) {
235+ progressMessage += QString::number(CALIBRATION_ZERO_HOLD_TIME / 1000000 - quarterSeconds / 4);
236+ } else {
237+ progressMessage += ".";
238+ }
239+ qDebug() << progressMessage;
240+ }
225241 }
226242 } else {
227243 _calibrationPosition = position;