mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 00:10:52 +02:00
allow 3d overlays to be ignored from ray intersection
This commit is contained in:
parent
05f2263c9c
commit
f59185c00b
3 changed files with 9 additions and 2 deletions
|
@ -26,7 +26,8 @@ Base3DOverlay::Base3DOverlay() :
|
||||||
_lineWidth(DEFAULT_LINE_WIDTH),
|
_lineWidth(DEFAULT_LINE_WIDTH),
|
||||||
_isSolid(DEFAULT_IS_SOLID),
|
_isSolid(DEFAULT_IS_SOLID),
|
||||||
_rotation(),
|
_rotation(),
|
||||||
_isDashedLine(DEFAULT_IS_DASHED_LINE)
|
_isDashedLine(DEFAULT_IS_DASHED_LINE),
|
||||||
|
_ignoreRayIntersection(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -112,6 +113,9 @@ void Base3DOverlay::setProperties(const QScriptValue& properties) {
|
||||||
if (properties.property("dashed").isValid()) {
|
if (properties.property("dashed").isValid()) {
|
||||||
setIsDashedLine(properties.property("dashed").toVariant().toBool());
|
setIsDashedLine(properties.property("dashed").toVariant().toBool());
|
||||||
}
|
}
|
||||||
|
if (properties.property("ignoreRayIntersection").isValid()) {
|
||||||
|
setIgnoreRayIntersection(properties.property("ignoreRayIntersection").toVariant().toBool());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Base3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
bool Base3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
bool getIsDashedLine() const { return _isDashedLine; }
|
bool getIsDashedLine() const { return _isDashedLine; }
|
||||||
bool getIsSolidLine() const { return !_isDashedLine; }
|
bool getIsSolidLine() const { return !_isDashedLine; }
|
||||||
const glm::quat& getRotation() const { return _rotation; }
|
const glm::quat& getRotation() const { return _rotation; }
|
||||||
|
bool getIgnoreRayIntersection() const { return _ignoreRayIntersection; }
|
||||||
|
|
||||||
// setters
|
// setters
|
||||||
void setPosition(const glm::vec3& position) { _position = position; }
|
void setPosition(const glm::vec3& position) { _position = position; }
|
||||||
|
@ -40,6 +41,7 @@ public:
|
||||||
void setIsSolid(bool isSolid) { _isSolid = isSolid; }
|
void setIsSolid(bool isSolid) { _isSolid = isSolid; }
|
||||||
void setIsDashedLine(bool isDashedLine) { _isDashedLine = isDashedLine; }
|
void setIsDashedLine(bool isDashedLine) { _isDashedLine = isDashedLine; }
|
||||||
void setRotation(const glm::quat& value) { _rotation = value; }
|
void setRotation(const glm::quat& value) { _rotation = value; }
|
||||||
|
void setIgnoreRayIntersection(bool value) { _ignoreRayIntersection = value; }
|
||||||
|
|
||||||
virtual void setProperties(const QScriptValue& properties);
|
virtual void setProperties(const QScriptValue& properties);
|
||||||
|
|
||||||
|
@ -53,6 +55,7 @@ protected:
|
||||||
glm::quat _rotation;
|
glm::quat _rotation;
|
||||||
bool _isSolid;
|
bool _isSolid;
|
||||||
bool _isDashedLine;
|
bool _isDashedLine;
|
||||||
|
bool _ignoreRayIntersection;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -265,7 +265,7 @@ RayToOverlayIntersectionResult Overlays::findRayIntersection(const PickRay& ray)
|
||||||
i.previous();
|
i.previous();
|
||||||
unsigned int thisID = i.key();
|
unsigned int thisID = i.key();
|
||||||
Base3DOverlay* thisOverlay = static_cast<Base3DOverlay*>(i.value());
|
Base3DOverlay* thisOverlay = static_cast<Base3DOverlay*>(i.value());
|
||||||
if (thisOverlay->getVisible() && thisOverlay->isLoaded()) {
|
if (thisOverlay->getVisible() && !thisOverlay->getIgnoreRayIntersection() && thisOverlay->isLoaded()) {
|
||||||
float thisDistance;
|
float thisDistance;
|
||||||
BoxFace thisFace;
|
BoxFace thisFace;
|
||||||
if (thisOverlay->findRayIntersection(ray.origin, ray.direction, thisDistance, thisFace)) {
|
if (thisOverlay->findRayIntersection(ray.origin, ray.direction, thisDistance, thisFace)) {
|
||||||
|
|
Loading…
Reference in a new issue