Showing the changes to interface/src/raypick/PickScriptingInterface.cpp (1 of 12 files). Show all
Unified · Split
| @@ -17,6 +17,7 @@ · 16 unmodified lines | ||
| 17 | 17 | #include "JointRayPick.h" |
| 18 | 18 | #include "MouseRayPick.h" |
| 19 | 19 | #include "StylusPick.h" |
| 20 | +#include "CollisionPick.h" | |
| 20 | 21 | |
| 21 | 22 | #include <ScriptEngine.h> |
| 22 | 23 | |
| @@ -26,6 +27,8 @@ unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, · 3 unmodified lines | ||
| 26 | 27 | return createRayPick(properties); |
| 27 | 28 | case PickQuery::PickType::Stylus: |
| 28 | 29 | return createStylusPick(properties); |
| 30 | + case PickQuery::PickType::Collision: | |
| 31 | + return createCollisionPick(properties); | |
| 29 | 32 | default: |
| 30 | 33 | return PickManager::INVALID_PICK_ID; |
| 31 | 34 | } |
| @@ -134,6 +137,29 @@ unsigned int PickScriptingInterface::createStylusPick(const QVariant& properties · 102 unmodified lines | ||
| 134 | 137 | return DependencyManager::get<PickManager>()->addPick(PickQuery::Stylus, std::make_shared<StylusPick>(side, filter, maxDistance, enabled)); |
| 135 | 138 | } |
| 136 | 139 | |
| 140 | +unsigned int PickScriptingInterface::createCollisionPick(const QVariant& properties) { | |
| 141 | + QVariantMap propMap = properties.toMap(); | |
| 142 | + | |
| 143 | + bool enabled = false; | |
| 144 | + if (propMap["enabled"].isValid()) { | |
| 145 | + enabled = propMap["enabled"].toBool(); | |
| 146 | + } | |
| 147 | + | |
| 148 | + PickFilter filter = PickFilter(); | |
| 149 | + if (propMap["filter"].isValid()) { | |
| 150 | + filter = PickFilter(propMap["filter"].toUInt()); | |
| 151 | + } | |
| 152 | + | |
| 153 | + float maxDistance = 0.0f; | |
| 154 | + if (propMap["maxDistance"].isValid()) { | |
| 155 | + maxDistance = propMap["maxDistance"].toFloat(); | |
| 156 | + } | |
| 157 | + | |
| 158 | + CollisionRegion collisionRegion(propMap); | |
| 159 | + | |
| 160 | + return DependencyManager::get<PickManager>()->addPick(PickQuery::Collision, std::make_shared<CollisionPick>(filter, maxDistance, enabled, collisionRegion, _collisionWorld)); | |
| 161 | +} | |
| 162 | + | |
| 137 | 163 | void PickScriptingInterface::enablePick(unsigned int uid) { |
| 138 | 164 | DependencyManager::get<PickManager>()->enablePick(uid); |
| 139 | 165 | } |