History

merge with pointers branch

SamGondelman committed 9 years ago

Commit f970eb22 parents 7d420f5 544c54b46 files · +1117 −604Browse files

Showing the changes to interface/src/raypick/PointerScriptingInterface.cpp (1 of 46 files). Show all

Unified · Split

interface/src/raypick/PointerScriptingInterface.cpp+38−1
@@ -10,26 +10,54 @@ · 9 unmodified lines
1010
1111 #include <QtCore/QVariant>
1212 #include <GLMHelpers.h>
13+#include <shared/QtHelpers.h>
1314
1415 #include "Application.h"
1516 #include "LaserPointer.h"
17+#include "StylusPointer.h"
1618
1719 void PointerScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) const {
1820 DependencyManager::get<PointerManager>()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems));
1921 }
22+
2023 void PointerScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) const {
2124 DependencyManager::get<PointerManager>()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems));
2225 }
2326
24−unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const {
27+unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) {
28+ // Interaction with managers should always happen on the main thread
29+ if (QThread::currentThread() != qApp->thread()) {
30+ unsigned int result;
31+ BLOCKING_INVOKE_METHOD(this, "createPointer", Q_RETURN_ARG(unsigned int, result), Q_ARG(PickQuery::PickType, type), Q_ARG(QVariant, properties));
32+ return result;
33+ }
34+
2535 switch (type) {
2636 case PickQuery::PickType::Ray:
2737 return createLaserPointer(properties);
38+ case PickQuery::PickType::Stylus:
39+ return createStylus(properties);
2840 default:
2941 return PointerEvent::INVALID_POINTER_ID;
3042 }
3143 }
3244
45+unsigned int PointerScriptingInterface::createStylus(const QVariant& properties) const {
46+ bilateral::Side side = bilateral::Side::Invalid;
47+ {
48+ QVariant handVar = properties.toMap()["hand"];
49+ if (handVar.isValid()) {
50+ side = bilateral::side(handVar.toInt());
51+ }
52+ }
53+
54+ if (bilateral::Side::Invalid == side) {
55+ return PointerEvent::INVALID_POINTER_ID;
56+ }
57+
58+ return DependencyManager::get<PointerManager>()->addPointer(std::make_shared<StylusPointer>(side));
59+}
60+
3361 unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const {
3462 QVariantMap propertyMap = properties.toMap();
3563
@@ -133,4 +161,13 @@ void PointerScriptingInterface::editRenderState(unsigned int uid, const QString& · 97 unmodified lines
133161 }
134162
135163 DependencyManager::get<PointerManager>()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps);
164+}
165+
166+QVariantMap PointerScriptingInterface::getPrevPickResult(unsigned int uid) const {
167+ QVariantMap result;
168+ auto pickResult = DependencyManager::get<PointerManager>()->getPrevPickResult(uid);
169+ if (pickResult) {
170+ result = pickResult->toVariantMap();
171+ }
172+ return result;
136173 }