History

Teleport bugs

* made HMD.setPosition thread safe * changed script to use HMD.position = foo;

Anthony J. Thibault committed 10 years ago

Commit 86351ca1 parent 82522fb3 files · +14 −9Browse files

Showing the changes to interface/src/scripting/HMDScriptingInterface.cpp (1 of 3 files). Show all

Unified · Split

interface/src/scripting/HMDScriptingInterface.cpp+12−7
@@ -91,13 +91,18 @@ glm::vec3 HMDScriptingInterface::getPosition() const { · 90 unmodified lines
9191 }
9292
9393 void HMDScriptingInterface::setPosition(const glm::vec3& position) {
94− MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
95− glm::mat4 hmdToSensor = myAvatar->getHMDSensorMatrix();
96− glm::mat4 sensorToWorld = myAvatar->getSensorToWorldMatrix();
97− glm::mat4 hmdToWorld = sensorToWorld * hmdToSensor;
98− setTranslation(hmdToWorld, position);
99− sensorToWorld = hmdToWorld * glm::inverse(hmdToSensor);
100− myAvatar->setSensorToWorldMatrix(sensorToWorld);
94+ if (QThread::currentThread() != thread()) {
95+ QMetaObject::invokeMethod(this, "setPosition", Qt::QueuedConnection, Q_ARG(const glm::vec3&, position));
96+ return;
97+ } else {
98+ MyAvatar* myAvatar = DependencyManager::get<AvatarManager>()->getMyAvatar();
99+ glm::mat4 hmdToSensor = myAvatar->getHMDSensorMatrix();
100+ glm::mat4 sensorToWorld = myAvatar->getSensorToWorldMatrix();
101+ glm::mat4 hmdToWorld = sensorToWorld * hmdToSensor;
102+ setTranslation(hmdToWorld, position);
103+ sensorToWorld = hmdToWorld * glm::inverse(hmdToSensor);
104+ myAvatar->setSensorToWorldMatrix(sensorToWorld);
105+ }
101106 }
102107
103108 glm::quat HMDScriptingInterface::getOrientation() const {