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 | #include "JointRayPick.h" | 17 | #include "JointRayPick.h" |
| 18 | #include "MouseRayPick.h" | 18 | #include "MouseRayPick.h" |
| 19 | #include "StylusPick.h" | 19 | #include "StylusPick.h" |
| 20 | #include "CollisionPick.h" | ||
| 20 | 21 | ||
| 21 | #include <ScriptEngine.h> | 22 | #include <ScriptEngine.h> |
| 22 | 23 | ||
| @@ -26,6 +27,8 @@ unsigned int PickScriptingInterface::createPick(const PickQuery::PickType type, · 3 unmodified lines | |||
| 26 | return createRayPick(properties); | 27 | return createRayPick(properties); |
| 27 | case PickQuery::PickType::Stylus: | 28 | case PickQuery::PickType::Stylus: |
| 28 | return createStylusPick(properties); | 29 | return createStylusPick(properties); |
| 30 | case PickQuery::PickType::Collision: | ||
| 31 | return createCollisionPick(properties); | ||
| 29 | default: | 32 | default: |
| 30 | return PickManager::INVALID_PICK_ID; | 33 | return PickManager::INVALID_PICK_ID; |
| 31 | } | 34 | } |
| @@ -134,6 +137,29 @@ unsigned int PickScriptingInterface::createStylusPick(const QVariant& properties · 102 unmodified lines | |||
| 134 | return DependencyManager::get<PickManager>()->addPick(PickQuery::Stylus, std::make_shared<StylusPick>(side, filter, maxDistance, enabled)); | 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 | void PickScriptingInterface::enablePick(unsigned int uid) { | 163 | void PickScriptingInterface::enablePick(unsigned int uid) { |
| 138 | DependencyManager::get<PickManager>()->enablePick(uid); | 164 | DependencyManager::get<PickManager>()->enablePick(uid); |
| 139 | } | 165 | } |