History

Create CollisionPick API

sabrina-shanman committed 8 years ago

Commit f33ee551 parent 1a599fd12 files · +690 −2Browse files

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

Unified · Split

interface/src/raypick/PickScriptingInterface.cpp+26−0
@@ -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
140unsigned 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
137void PickScriptingInterface::enablePick(unsigned int uid) {163void PickScriptingInterface::enablePick(unsigned int uid) {
138 DependencyManager::get<PickManager>()->enablePick(uid);164 DependencyManager::get<PickManager>()->enablePick(uid);
139}165}