History

laserpointers generate pointerevents

SamGondelman committed 9 years ago

Commit cf34fe31 parent befe58320 files · +376 −57Browse files

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

Unified · Split

interface/src/raypick/PointerScriptingInterface.cpp+23−4
@@ -21,7 +21,7 @@ void PointerScriptingInterface::setIncludeItems(const QUuid& uid, const QScriptV · 20 unmodified lines
2121 DependencyManager::get<PointerManager>()->setIncludeItems(uid, qVectorQUuidFromScriptValue(includeItems));
2222 }
2323
24−QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType type, const QVariant& properties) const {
24+QUuid PointerScriptingInterface::createPointer(const PickQuery::PickType& type, const QVariant& properties) const {
2525 switch (type) {
2626 case PickQuery::PickType::Ray:
2727 return createLaserPointer(properties);
@@ -61,7 +61,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) · 33 unmodified lines
6161 LaserPointer::RenderStateMap renderStates;
6262 if (propertyMap["renderStates"].isValid()) {
6363 QList<QVariant> renderStateVariants = propertyMap["renderStates"].toList();
64− for (QVariant& renderStateVariant : renderStateVariants) {
64+ for (const QVariant& renderStateVariant : renderStateVariants) {
6565 if (renderStateVariant.isValid()) {
6666 QVariantMap renderStateMap = renderStateVariant.toMap();
6767 if (renderStateMap["name"].isValid()) {
@@ -75,7 +75,7 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) · 7 unmodified lines
7575 LaserPointer::DefaultRenderStateMap defaultRenderStates;
7676 if (propertyMap["defaultRenderStates"].isValid()) {
7777 QList<QVariant> renderStateVariants = propertyMap["defaultRenderStates"].toList();
78− for (QVariant& renderStateVariant : renderStateVariants) {
78+ for (const QVariant& renderStateVariant : renderStateVariants) {
7979 if (renderStateVariant.isValid()) {
8080 QVariantMap renderStateMap = renderStateVariant.toMap();
8181 if (renderStateMap["name"].isValid() && renderStateMap["distance"].isValid()) {
@@ -87,7 +87,26 @@ QUuid PointerScriptingInterface::createLaserPointer(const QVariant& properties) · 5 unmodified lines
8787 }
8888 }
8989
90− return DependencyManager::get<PointerManager>()->addPointer(std::make_shared<LaserPointer>(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled));
90+ PointerTriggers triggers;
91+ auto userInputMapper = DependencyManager::get<UserInputMapper>();
92+ if (propertyMap["triggers"].isValid()) {
93+ QList<QVariant> triggerVariants = propertyMap["triggers"].toList();
94+ for (const QVariant& triggerVariant : triggerVariants) {
95+ if (triggerVariant.isValid()) {
96+ QVariantMap triggerMap = triggerVariant.toMap();
97+ if (triggerMap["action"].isValid() && triggerMap["button"].isValid()) {
98+ controller::Endpoint::Pointer endpoint = userInputMapper->endpointFor(controller::Input(triggerMap["action"].toUInt()));
99+ if (endpoint) {
100+ std::string button = triggerMap["button"].toString().toStdString();
101+ triggers.emplace_back(endpoint, button);
102+ }
103+ }
104+ }
105+ }
106+ }
107+
108+ return DependencyManager::get<PointerManager>()->addPointer(std::make_shared<LaserPointer>(properties, renderStates, defaultRenderStates, triggers,
109+ faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled));
91110 }
92111
93112 void PointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const {