mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-08 21:42:13 +02:00
Assign _mathPick in the Pick constructor
This commit is contained in:
parent
bb38efa061
commit
3ac9478101
7 changed files with 12 additions and 18 deletions
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
@ -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"])) {}
|
||||
|
||||
|
|
Loading…
Reference in a new issue