Assign _mathPick in the Pick constructor

This commit is contained in:
sabrina-shanman 2018-09-27 11:27:25 -07:00
parent bb38efa061
commit 3ac9478101
7 changed files with 12 additions and 18 deletions

View file

@ -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<ModelCache>()->getCollisionGeometryResource(collisionRegion.modelURL);
}

View file

@ -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 {

View file

@ -71,13 +71,11 @@ class RayPick : public Pick<PickRay> {
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;

View file

@ -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;
}

View file

@ -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

View file

@ -243,7 +243,7 @@ Q_DECLARE_METATYPE(PickQuery::PickType)
template<typename T>
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;

View file

@ -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"])) {}