This commit is contained in:
SamGondelman 2018-07-27 15:30:27 -07:00
parent 1ef54b2fe6
commit 3d4639bfdd
8 changed files with 40 additions and 42 deletions

View file

@ -35,12 +35,12 @@ void LaserPointer::editRenderStatePath(const std::string& state, const QVariant&
}
}
glm::vec3 LaserPointer::getPickOrigin(const PickResultPointer& pickResult) {
glm::vec3 LaserPointer::getPickOrigin(const PickResultPointer& pickResult) const {
auto rayPickResult = std::static_pointer_cast<RayPickResult>(pickResult);
return (rayPickResult ? vec3FromVariant(rayPickResult->pickVariant["origin"]) : glm::vec3());
return (rayPickResult ? vec3FromVariant(rayPickResult->pickVariant["origin"]) : glm::vec3(0.0f));
}
glm::vec3 LaserPointer::getPickEnd(const PickResultPointer& pickResult, float distance) {
glm::vec3 LaserPointer::getPickEnd(const PickResultPointer& pickResult, float distance) const {
auto rayPickResult = std::static_pointer_cast<RayPickResult>(pickResult);
if (distance > 0.0f) {
PickRay pick = PickRay(rayPickResult->pickVariant);
@ -50,17 +50,17 @@ glm::vec3 LaserPointer::getPickEnd(const PickResultPointer& pickResult, float di
}
}
glm::vec3 LaserPointer::getPickedObjectNormal(const PickResultPointer& pickResult) {
glm::vec3 LaserPointer::getPickedObjectNormal(const PickResultPointer& pickResult) const {
auto rayPickResult = std::static_pointer_cast<RayPickResult>(pickResult);
return (rayPickResult ? rayPickResult->surfaceNormal : glm::vec3());
return (rayPickResult ? rayPickResult->surfaceNormal : glm::vec3(0.0f));
}
IntersectionType LaserPointer::getPickedObjectType(const PickResultPointer& pickResult) {
IntersectionType LaserPointer::getPickedObjectType(const PickResultPointer& pickResult) const {
auto rayPickResult = std::static_pointer_cast<RayPickResult>(pickResult);
return (rayPickResult ? rayPickResult->type : IntersectionType::NONE);
}
QUuid LaserPointer::getPickedObjectID(const PickResultPointer& pickResult) {
QUuid LaserPointer::getPickedObjectID(const PickResultPointer& pickResult) const {
auto rayPickResult = std::static_pointer_cast<RayPickResult>(pickResult);
return (rayPickResult ? rayPickResult->objectID : QUuid());
}

View file

@ -47,11 +47,11 @@ public:
protected:
void editRenderStatePath(const std::string& state, const QVariant& pathProps) override;
glm::vec3 getPickOrigin(const PickResultPointer& pickResult) override;
glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance) override;
glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) override;
IntersectionType getPickedObjectType(const PickResultPointer& pickResult) override;
QUuid getPickedObjectID(const PickResultPointer& pickResult) override;
glm::vec3 getPickOrigin(const PickResultPointer& pickResult) const override;
glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance) const override;
glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) const override;
IntersectionType getPickedObjectType(const PickResultPointer& pickResult) const override;
QUuid getPickedObjectID(const PickResultPointer& pickResult) const override;
void setVisualPickResultInternal(PickResultPointer pickResult, IntersectionType type, const QUuid& id,
const glm::vec3& intersection, float distance, const glm::vec3& surfaceNormal) override;

View file

@ -20,7 +20,7 @@ public:
ParabolaPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {}
ParabolaPickResult(const IntersectionType type, const QUuid& objectID, float distance, float parabolicDistance, const glm::vec3& intersection, const PickParabola& parabola,
const glm::vec3& surfaceNormal = glm::vec3(NAN), const QVariantMap& extraInfo = QVariantMap()) :
PickResult(parabola.toVariantMap()), type(type), intersects(type != NONE), objectID(objectID), distance(distance), parabolicDistance(parabolicDistance), intersection(intersection), surfaceNormal(surfaceNormal), extraInfo(extraInfo) {
PickResult(parabola.toVariantMap()), extraInfo(extraInfo), objectID(objectID), intersection(intersection), surfaceNormal(surfaceNormal), type(type), distance(distance), parabolicDistance(parabolicDistance), intersects(type != NONE) {
}
ParabolaPickResult(const ParabolaPickResult& parabolaPickResult) : PickResult(parabolaPickResult.pickVariant) {
@ -34,14 +34,14 @@ public:
extraInfo = parabolaPickResult.extraInfo;
}
IntersectionType type { NONE };
bool intersects { false };
QVariantMap extraInfo;
QUuid objectID;
float distance { FLT_MAX };
float parabolicDistance { FLT_MAX };
glm::vec3 intersection { NAN };
glm::vec3 surfaceNormal { NAN };
QVariantMap extraInfo;
IntersectionType type { NONE };
float distance { FLT_MAX };
float parabolicDistance { FLT_MAX };
bool intersects { false };
virtual QVariantMap toVariantMap() const override {
QVariantMap toReturn;

View file

@ -62,12 +62,12 @@ void ParabolaPointer::editRenderStatePath(const std::string& state, const QVaria
}
}
glm::vec3 ParabolaPointer::getPickOrigin(const PickResultPointer& pickResult) {
glm::vec3 ParabolaPointer::getPickOrigin(const PickResultPointer& pickResult) const {
auto parabolaPickResult = std::static_pointer_cast<ParabolaPickResult>(pickResult);
return (parabolaPickResult ? vec3FromVariant(parabolaPickResult->pickVariant["origin"]) : glm::vec3());
return (parabolaPickResult ? vec3FromVariant(parabolaPickResult->pickVariant["origin"]) : glm::vec3(0.0f));
}
glm::vec3 ParabolaPointer::getPickEnd(const PickResultPointer& pickResult, float distance) {
glm::vec3 ParabolaPointer::getPickEnd(const PickResultPointer& pickResult, float distance) const {
auto parabolaPickResult = std::static_pointer_cast<ParabolaPickResult>(pickResult);
if (distance > 0.0f) {
PickParabola pick = PickParabola(parabolaPickResult->pickVariant);
@ -77,17 +77,17 @@ glm::vec3 ParabolaPointer::getPickEnd(const PickResultPointer& pickResult, float
}
}
glm::vec3 ParabolaPointer::getPickedObjectNormal(const PickResultPointer& pickResult) {
glm::vec3 ParabolaPointer::getPickedObjectNormal(const PickResultPointer& pickResult) const {
auto parabolaPickResult = std::static_pointer_cast<ParabolaPickResult>(pickResult);
return (parabolaPickResult ? parabolaPickResult->surfaceNormal : glm::vec3());
return (parabolaPickResult ? parabolaPickResult->surfaceNormal : glm::vec3(0.0f));
}
IntersectionType ParabolaPointer::getPickedObjectType(const PickResultPointer& pickResult) {
IntersectionType ParabolaPointer::getPickedObjectType(const PickResultPointer& pickResult) const {
auto parabolaPickResult = std::static_pointer_cast<ParabolaPickResult>(pickResult);
return (parabolaPickResult ? parabolaPickResult->type : IntersectionType::NONE);
}
QUuid ParabolaPointer::getPickedObjectID(const PickResultPointer& pickResult) {
QUuid ParabolaPointer::getPickedObjectID(const PickResultPointer& pickResult) const {
auto parabolaPickResult = std::static_pointer_cast<ParabolaPickResult>(pickResult);
return (parabolaPickResult ? parabolaPickResult->objectID : QUuid());
}

View file

@ -101,11 +101,11 @@ public:
protected:
void editRenderStatePath(const std::string& state, const QVariant& pathProps) override;
glm::vec3 getPickOrigin(const PickResultPointer& pickResult) override;
glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance) override;
glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) override;
IntersectionType getPickedObjectType(const PickResultPointer& pickResult) override;
QUuid getPickedObjectID(const PickResultPointer& pickResult) override;
glm::vec3 getPickOrigin(const PickResultPointer& pickResult) const override;
glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance) const override;
glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) const override;
IntersectionType getPickedObjectType(const PickResultPointer& pickResult) const override;
QUuid getPickedObjectID(const PickResultPointer& pickResult) const override;
void setVisualPickResultInternal(PickResultPointer pickResult, IntersectionType type, const QUuid& id,
const glm::vec3& intersection, float distance, const glm::vec3& surfaceNormal) override;

View file

@ -79,8 +79,6 @@ void PathPointer::setLockEndUUID(const QUuid& objectID, const bool isOverlay, co
});
}
#include "ParabolaPick.h"
PickResultPointer PathPointer::getVisualPickResult(const PickResultPointer& pickResult) {
PickResultPointer visualPickResult = pickResult;
glm::vec3 origin = getPickOrigin(pickResult);

View file

@ -121,11 +121,11 @@ protected:
Pointer::Buttons getPressedButtons(const PickResultPointer& pickResult) override;
PickResultPointer getVisualPickResult(const PickResultPointer& pickResult) override;
virtual glm::vec3 getPickOrigin(const PickResultPointer& pickResult) = 0;
virtual glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance = 0.0f) = 0;
virtual glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) = 0;
virtual IntersectionType getPickedObjectType(const PickResultPointer& pickResult) = 0;
virtual QUuid getPickedObjectID(const PickResultPointer& pickResult) = 0;
virtual glm::vec3 getPickOrigin(const PickResultPointer& pickResult) const = 0;
virtual glm::vec3 getPickEnd(const PickResultPointer& pickResult, float distance = 0.0f) const = 0;
virtual glm::vec3 getPickedObjectNormal(const PickResultPointer& pickResult) const = 0;
virtual IntersectionType getPickedObjectType(const PickResultPointer& pickResult) const = 0;
virtual QUuid getPickedObjectID(const PickResultPointer& pickResult) const = 0;
virtual void setVisualPickResultInternal(PickResultPointer pickResult, IntersectionType type, const QUuid& id,
const glm::vec3& intersection, float distance, const glm::vec3& surfaceNormal) = 0;

View file

@ -19,7 +19,7 @@ public:
RayPickResult() {}
RayPickResult(const QVariantMap& pickVariant) : PickResult(pickVariant) {}
RayPickResult(const IntersectionType type, const QUuid& objectID, float distance, const glm::vec3& intersection, const PickRay& searchRay, const glm::vec3& surfaceNormal = glm::vec3(NAN), const QVariantMap& extraInfo = QVariantMap()) :
PickResult(searchRay.toVariantMap()), type(type), intersects(type != NONE), objectID(objectID), distance(distance), intersection(intersection), surfaceNormal(surfaceNormal), extraInfo(extraInfo) {
PickResult(searchRay.toVariantMap()), extraInfo(extraInfo), objectID(objectID), intersection(intersection), surfaceNormal(surfaceNormal), type(type), distance(distance), intersects(type != NONE) {
}
RayPickResult(const RayPickResult& rayPickResult) : PickResult(rayPickResult.pickVariant) {
@ -32,13 +32,13 @@ public:
extraInfo = rayPickResult.extraInfo;
}
IntersectionType type { NONE };
bool intersects { false };
QVariantMap extraInfo;
QUuid objectID;
float distance { FLT_MAX };
glm::vec3 intersection { NAN };
glm::vec3 surfaceNormal { NAN };
QVariantMap extraInfo;
IntersectionType type { NONE };
float distance { FLT_MAX };
bool intersects { false };
virtual QVariantMap toVariantMap() const override {
QVariantMap toReturn;