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
10 10
11#include <QtCore/QVariant>11#include <QtCore/QVariant>
12#include <GLMHelpers.h>12#include <GLMHelpers.h>
13#include <shared/QtHelpers.h>
13 14
14#include "Application.h"15#include "Application.h"
15#include "LaserPointer.h"16#include "LaserPointer.h"
17#include "StylusPointer.h"
16 18
17void PointerScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) const {19void PointerScriptingInterface::setIgnoreItems(unsigned int uid, const QScriptValue& ignoreItems) const {
18 DependencyManager::get<PointerManager>()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems));20 DependencyManager::get<PointerManager>()->setIgnoreItems(uid, qVectorQUuidFromScriptValue(ignoreItems));
19}21}
22
20void PointerScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) const {23void PointerScriptingInterface::setIncludeItems(unsigned int uid, const QScriptValue& includeItems) const {
21 DependencyManager::get<PointerManager>()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems));24 DependencyManager::get<PointerManager>()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems));
22}25}
23 26
24unsigned int PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const {27unsigned 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
25 switch (type) {35 switch (type) {
26 case PickQuery::PickType::Ray:36 case PickQuery::PickType::Ray:
27 return createLaserPointer(properties);37 return createLaserPointer(properties);
38 case PickQuery::PickType::Stylus:
39 return createStylus(properties);
28 default:40 default:
29 return PointerEvent::INVALID_POINTER_ID;41 return PointerEvent::INVALID_POINTER_ID;
30 }42 }
31}43}
32 44
45unsigned 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
33unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const {61unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const {
34 QVariantMap propertyMap = properties.toMap();62 QVariantMap propertyMap = properties.toMap();
35 63
@@ -133,4 +161,13 @@ void PointerScriptingInterface::editRenderState(unsigned int uid, const QString& · 97 unmodified lines
133 }161 }
134 162
135 DependencyManager::get<PointerManager>()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps);163 DependencyManager::get<PointerManager>()->editRenderState(uid, renderState.toStdString(), startProps, pathProps, endProps);
164}
165
166QVariantMap 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;
136}173}