From 3ac9478101ccd4d02a1783fa5e5140a31c7fd97b Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Thu, 27 Sep 2018 11:27:25 -0700 Subject: [PATCH] Assign _mathPick in the Pick constructor --- interface/src/raypick/CollisionPick.cpp | 3 +-- interface/src/raypick/ParabolaPick.cpp | 3 +-- interface/src/raypick/RayPick.h | 6 ++---- interface/src/raypick/StylusPick.cpp | 7 +++---- interface/src/raypick/StylusPick.h | 7 ++----- libraries/pointers/src/Pick.h | 2 +- libraries/shared/src/RegisteredMetaTypes.h | 2 ++ 7 files changed, 12 insertions(+), 18 deletions(-) diff --git a/interface/src/raypick/CollisionPick.cpp b/interface/src/raypick/CollisionPick.cpp index f79879bf93..5b5ecd09ff 100644 --- a/interface/src/raypick/CollisionPick.cpp +++ b/interface/src/raypick/CollisionPick.cpp @@ -346,9 +346,8 @@ void CollisionPick::computeShapeInfo(const CollisionRegion& pick, ShapeInfo& sha } CollisionPick::CollisionPick(const PickFilter& filter, float maxDistance, bool enabled, CollisionRegion collisionRegion, PhysicsEnginePointer physicsEngine) : - Pick(filter, maxDistance, enabled), + Pick(collisionRegion, filter, maxDistance, enabled), _physicsEngine(physicsEngine) { - _mathPick = collisionRegion; if (collisionRegion.shouldComputeShapeInfo()) { _cachedResource = DependencyManager::get()->getCollisionGeometryResource(collisionRegion.modelURL); } diff --git a/interface/src/raypick/ParabolaPick.cpp b/interface/src/raypick/ParabolaPick.cpp index e8aa42140b..eb95d03f13 100644 --- a/interface/src/raypick/ParabolaPick.cpp +++ b/interface/src/raypick/ParabolaPick.cpp @@ -16,11 +16,10 @@ #include "PickManager.h" ParabolaPick::ParabolaPick(const glm::vec3& position, const glm::vec3& direction, float speed, const glm::vec3& accelerationAxis, bool rotateAccelerationWithAvatar, bool rotateAccelerationWithParent, bool scaleWithParent, const PickFilter& filter, float maxDistance, bool enabled) : - Pick(filter, maxDistance, enabled), + Pick(PickParabola(position, speed * direction, accelerationAxis), filter, maxDistance, enabled), _rotateAccelerationWithAvatar(rotateAccelerationWithAvatar), _rotateAccelerationWithParent(rotateAccelerationWithParent), _scaleWithParent(scaleWithParent) { - _mathPick = PickParabola(position, speed*direction, accelerationAxis); } PickParabola ParabolaPick::getMathematicalPick() const { diff --git a/interface/src/raypick/RayPick.h b/interface/src/raypick/RayPick.h index 07e2136864..4af8490fdc 100644 --- a/interface/src/raypick/RayPick.h +++ b/interface/src/raypick/RayPick.h @@ -71,13 +71,11 @@ class RayPick : public Pick { public: RayPick(const PickFilter& filter, float maxDistance, bool enabled) : - Pick(filter, maxDistance, enabled) { - _mathPick = PickRay(Vectors::ZERO, Vectors::UP); + Pick(PickRay(Vectors::ZERO, Vectors::UP), filter, maxDistance, enabled) { } RayPick(glm::vec3 position, glm::vec3 direction, const PickFilter& filter, float maxDistance, bool enabled) : - Pick(filter, maxDistance, enabled) { - _mathPick = PickRay(position, direction); + Pick(PickRay(position, direction), filter, maxDistance, enabled) { } PickRay getMathematicalPick() const override; diff --git a/interface/src/raypick/StylusPick.cpp b/interface/src/raypick/StylusPick.cpp index 69f605e7f9..c495ddd194 100644 --- a/interface/src/raypick/StylusPick.cpp +++ b/interface/src/raypick/StylusPick.cpp @@ -65,8 +65,7 @@ bool StylusPickResult::checkOrFilterAgainstMaxDistance(float maxDistance) { } StylusPick::StylusPick(Side side, const PickFilter& filter, float maxDistance, bool enabled) : - Pick(filter, maxDistance, enabled), - _side(side) + Pick(StylusTip(side), filter, maxDistance, enabled) { } @@ -130,9 +129,9 @@ static StylusTip getControllerWorldLocation(Side side) { StylusTip StylusPick::getMathematicalPick() const { StylusTip result; if (qApp->getPreferAvatarFingerOverStylus()) { - result = getFingerWorldLocation(_side); + result = getFingerWorldLocation(_mathPick.side); } else { - result = getControllerWorldLocation(_side); + result = getControllerWorldLocation(_mathPick.side); } return result; } diff --git a/interface/src/raypick/StylusPick.h b/interface/src/raypick/StylusPick.h index e6b1da9914..cd01df20e9 100644 --- a/interface/src/raypick/StylusPick.h +++ b/interface/src/raypick/StylusPick.h @@ -68,12 +68,9 @@ public: PickResultPointer getHUDIntersection(const StylusTip& pick) override; Transform getResultTransform() const override; - bool isLeftHand() const override { return _side == Side::Left; } - bool isRightHand() const override { return _side == Side::Right; } + bool isLeftHand() const override { return _mathPick.side == Side::Left; } + bool isRightHand() const override { return _mathPick.side == Side::Right; } bool isMouse() const override { return false; } - -private: - const Side _side; }; #endif // hifi_StylusPick_h \ No newline at end of file diff --git a/libraries/pointers/src/Pick.h b/libraries/pointers/src/Pick.h index 42a9354122..2ae1048249 100644 --- a/libraries/pointers/src/Pick.h +++ b/libraries/pointers/src/Pick.h @@ -243,7 +243,7 @@ Q_DECLARE_METATYPE(PickQuery::PickType) template class Pick : public PickQuery { public: - Pick(const PickFilter& filter, const float maxDistance, const bool enabled) : PickQuery(filter, maxDistance, enabled) {} + Pick(const T& mathPick, const PickFilter& filter, const float maxDistance, const bool enabled) : PickQuery(filter, maxDistance, enabled), _mathPick(mathPick) {} virtual T getMathematicalPick() const = 0; virtual PickResultPointer getDefaultResult(const QVariantMap& pickVariant) const = 0; diff --git a/libraries/shared/src/RegisteredMetaTypes.h b/libraries/shared/src/RegisteredMetaTypes.h index 46f112f5c6..58b99bc0f7 100644 --- a/libraries/shared/src/RegisteredMetaTypes.h +++ b/libraries/shared/src/RegisteredMetaTypes.h @@ -200,6 +200,8 @@ void pickRayFromScriptValue(const QScriptValue& object, PickRay& pickRay); class StylusTip : public MathPick { public: StylusTip() : position(NAN), velocity(NAN) {} + StylusTip(bilateral::Side side, glm::vec3 position = Vectors::ZERO, glm::quat orientation = Quaternions::IDENTITY, glm::vec3 velocity = Vectors::ZERO) : + side(side), position(position), orientation(orientation), velocity(velocity) {} StylusTip(const QVariantMap& pickVariant) : side(bilateral::Side(pickVariant["side"].toInt())), position(vec3FromVariant(pickVariant["position"])), orientation(quatFromVariant(pickVariant["orientation"])), velocity(vec3FromVariant(pickVariant["velocity"])) {}