summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/core.pri10
-rw-r--r--src/core/qboundingsphere.h61
-rw-r--r--src/core/qboundingvolume.h72
-rw-r--r--src/core/services/nullservices_p.h33
-rw-r--r--src/core/services/services.pri6
-rw-r--r--src/render/backend/triangleboundingvolume.cpp8
-rw-r--r--src/render/backend/triangleboundingvolume_p.h4
-rw-r--r--src/render/backend/trianglesextractor.cpp94
-rw-r--r--src/render/backend/trianglesextractor_p.h8
-rw-r--r--src/render/frontend/sphere.cpp2
-rw-r--r--src/render/frontend/sphere_p.h4
-rw-r--r--src/render/geometry/geometryrenderer.cpp2
-rw-r--r--src/render/geometry/geometryrenderer_p.h12
-rw-r--r--src/render/jobs/pickboundingvolumejob.cpp49
-rw-r--r--src/render/jobs/pickboundingvolumejob_p.h11
-rw-r--r--src/render/raycasting/qabstractcollisionqueryservice.cpp (renamed from src/core/services/qabstractcollisionqueryservice.cpp)7
-rw-r--r--src/render/raycasting/qabstractcollisionqueryservice_p.h (renamed from src/core/services/qabstractcollisionqueryservice.h)46
-rw-r--r--src/render/raycasting/qboundingsphere.cpp (renamed from src/core/qboundingsphere.cpp)6
-rw-r--r--src/render/raycasting/qboundingsphere_p.h (renamed from src/core/services/qabstractcollisionqueryservice_p.h)25
-rw-r--r--src/render/raycasting/qboundingvolume.cpp (renamed from src/core/qboundingvolume.cpp)6
-rw-r--r--src/render/raycasting/qboundingvolume_p.h (renamed from src/core/services/qcollisionqueryresult_p.h)36
-rw-r--r--src/render/raycasting/qboundingvolumeprovider.cpp (renamed from src/core/qboundingvolumeprovider.cpp)6
-rw-r--r--src/render/raycasting/qboundingvolumeprovider_p.h (renamed from src/core/qboundingvolumeprovider.h)25
-rw-r--r--src/render/raycasting/qcollisionqueryresult.cpp (renamed from src/core/services/qcollisionqueryresult.cpp)9
-rw-r--r--src/render/raycasting/qcollisionqueryresult_p.h (renamed from src/core/services/qcollisionqueryresult.h)45
-rw-r--r--src/render/raycasting/qraycastingservice.cpp (renamed from src/render/services/qraycastingservice.cpp)17
-rw-r--r--src/render/raycasting/qraycastingservice_p.h (renamed from src/render/services/qraycastingservice_p.h)42
-rw-r--r--src/render/raycasting/raycasting.pri17
-rw-r--r--src/render/render.pro1
-rw-r--r--src/render/services/qraycastingservice.h76
-rw-r--r--src/render/services/services.pri3
-rw-r--r--tests/auto/render/picking/tst_picking.cpp2
-rw-r--r--tests/auto/render/raycasting/tst_raycasting.cpp5
-rw-r--r--tests/auto/render/triangleboundingvolume/tst_triangleboundingvolume.cpp6
-rw-r--r--tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp2
35 files changed, 296 insertions, 462 deletions
diff --git a/src/core/core.pri b/src/core/core.pri
index e970d5822..0058e8e6a 100644
--- a/src/core/core.pri
+++ b/src/core/core.pri
@@ -35,10 +35,7 @@ HEADERS += \
$$PWD/qbackendnodefactory.h \
$$PWD/qray3d.h \
$$PWD/qt3dcore_global_p.h \
- $$PWD/qscene_p.h \
- $$PWD/qboundingvolume.h \
- $$PWD/qboundingsphere.h \
- $$PWD/qboundingvolumeprovider.h
+ $$PWD/qscene_p.h
SOURCES += \
$$PWD/qtickclock.cpp \
@@ -55,7 +52,4 @@ SOURCES += \
$$PWD/qscene.cpp \
$$PWD/qbackendscenepropertychange.cpp \
$$PWD/qbackendnodefactory.cpp \
- $$PWD/qray3d.cpp \
- $$PWD/qboundingvolume.cpp \
- $$PWD/qboundingsphere.cpp \
- $$PWD/qboundingvolumeprovider.cpp
+ $$PWD/qray3d.cpp
diff --git a/src/core/qboundingsphere.h b/src/core/qboundingsphere.h
deleted file mode 100644
index 4fd3a5f0a..000000000
--- a/src/core/qboundingsphere.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DCORE_QBOUDINGSPHERE_H
-#define QT3DCORE_QBOUDINGSPHERE_H
-
-#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/qboundingvolume.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DCore {
-
-class QT3DCORESHARED_EXPORT QBoundingSphere : public QBoundingVolume
-{
-public:
- QBoundingSphere();
- ~QBoundingSphere();
-
- virtual QVector3D center() const = 0;
- virtual float radius() const = 0;
-};
-
-} // namespace Qt3DCore
-
-QT_END_NAMESPACE
-
-#endif // QT3DCORE_QBOUDINGSPHERE_H
diff --git a/src/core/qboundingvolume.h b/src/core/qboundingvolume.h
deleted file mode 100644
index fd7c249a2..000000000
--- a/src/core/qboundingvolume.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DCORE_QBOUDINGVOLUME_P_H
-#define QT3DCORE_QBOUDINGVOLUME_P_H
-
-#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/qnodeid.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DCore {
-
-class QRay3D;
-
-class QT3DCORESHARED_EXPORT QBoundingVolume
-{
-public:
- QBoundingVolume();
- virtual ~QBoundingVolume();
-
- enum Type {
- Sphere = 0,
- Triangle
- };
-
- virtual QNodeId id() const = 0;
- virtual bool intersects(const QRay3D &ray, QVector3D *q = Q_NULLPTR) const = 0;
-
- virtual Type type() const = 0;
-};
-
-} // namespace Qt3DCore
-
-QT_END_NAMESPACE
-
-Q_DECLARE_METATYPE(Qt3DCore::QBoundingVolume*)
-
-#endif // QT3DCORE_QBOUDINGVOLUME_P_H
diff --git a/src/core/services/nullservices_p.h b/src/core/services/nullservices_p.h
index a3e3fd672..3b8740963 100644
--- a/src/core/services/nullservices_p.h
+++ b/src/core/services/nullservices_p.h
@@ -50,10 +50,8 @@
#include <Qt3DCore/qt3dcore_global.h>
#include <Qt3DCore/qray3d.h>
-#include <Qt3DCore/qcollisionqueryresult.h>
#include "qopenglinformationservice.h"
#include "qsysteminformationservice.h"
-#include <Qt3DCore/qabstractcollisionqueryservice.h>
QT_BEGIN_NAMESPACE
@@ -83,37 +81,6 @@ public:
QSurfaceFormat format() const Q_DECL_FINAL { return QSurfaceFormat(); }
};
-class NullCollisionQueryService : public QAbstractCollisionQueryService
-{
-public:
- NullCollisionQueryService()
- : QAbstractCollisionQueryService(QStringLiteral("Null Collision Query Service"))
- {}
- ~NullCollisionQueryService() {}
-
- QQueryHandle query(const QRay3D &ray, QueryMode mode, Qt3DCore::QBoundingVolumeProvider *provider) Q_DECL_OVERRIDE
- {
- Q_UNUSED(ray);
- Q_UNUSED(mode);
- Q_UNUSED(provider);
-
- return 0;
- }
-
- QCollisionQueryResult fetchResult(const QQueryHandle &handle) Q_DECL_OVERRIDE
- {
- Q_UNUSED(handle);
-
- QCollisionQueryResult result;
- return result;
- }
-
- QVector<QCollisionQueryResult> fetchAllResults() const Q_DECL_OVERRIDE
- {
- return QVector<QCollisionQueryResult>();
- }
-};
-
} // namespace Qt3DCore
QT_END_NAMESPACE
diff --git a/src/core/services/services.pri b/src/core/services/services.pri
index 32fc488f8..a7b00476e 100644
--- a/src/core/services/services.pri
+++ b/src/core/services/services.pri
@@ -3,8 +3,6 @@ SOURCES += \
$$PWD/qservicelocator.cpp \
$$PWD/qsysteminformationservice.cpp \
$$PWD/qopenglinformationservice.cpp \
- $$PWD/qabstractcollisionqueryservice.cpp \
- $$PWD/qcollisionqueryresult.cpp \
$$PWD/qtickclockservice.cpp \
$$PWD/qabstractframeadvanceservice.cpp \
$$PWD/qeventfilterservice.cpp
@@ -18,10 +16,6 @@ HEADERS += \
$$PWD/qsysteminformationservice_p.h \
$$PWD/qopenglinformationservice_p.h \
$$PWD/qtickclockservice_p.h \
- $$PWD/qabstractcollisionqueryservice.h \
- $$PWD/qabstractcollisionqueryservice_p.h \
- $$PWD/qcollisionqueryresult.h \
- $$PWD/qcollisionqueryresult_p.h \
$$PWD/qtickclockservice_p.h \
$$PWD/qabstractframeadvanceservice.h \
$$PWD/qabstractframeadvanceservice_p.h \
diff --git a/src/render/backend/triangleboundingvolume.cpp b/src/render/backend/triangleboundingvolume.cpp
index 75b87dc75..8353e0cef 100644
--- a/src/render/backend/triangleboundingvolume.cpp
+++ b/src/render/backend/triangleboundingvolume.cpp
@@ -89,7 +89,7 @@ bool intersectsSegmentTriangle(const Qt3DCore::QRay3D &ray,
}
TriangleBoundingVolume::TriangleBoundingVolume()
- : Qt3DCore::QBoundingVolume()
+ : QBoundingVolume()
{
}
@@ -97,7 +97,7 @@ TriangleBoundingVolume::TriangleBoundingVolume()
The vertices a, b, c are assumed to be in counter clockwise order.
*/
TriangleBoundingVolume::TriangleBoundingVolume(const Qt3DCore::QNodeId &id, const QVector3D &a, const QVector3D &b, const QVector3D &c)
- : Qt3DCore::QBoundingVolume()
+ : QBoundingVolume()
, m_id(id)
, m_a(a)
, m_b(b)
@@ -121,9 +121,9 @@ bool TriangleBoundingVolume::intersects(const Qt3DCore::QRay3D &ray, QVector3D *
return intersected;
}
-Qt3DCore::QBoundingVolume::Type TriangleBoundingVolume::type() const
+QBoundingVolume::Type TriangleBoundingVolume::type() const
{
- return Qt3DCore::QBoundingVolume::Triangle;
+ return QBoundingVolume::Triangle;
}
QVector3D TriangleBoundingVolume::a() const
diff --git a/src/render/backend/triangleboundingvolume_p.h b/src/render/backend/triangleboundingvolume_p.h
index 5cdbbd9f2..849a3abe1 100644
--- a/src/render/backend/triangleboundingvolume_p.h
+++ b/src/render/backend/triangleboundingvolume_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <Qt3DCore/qboundingvolume.h>
+#include <Qt3DRender/private/qboundingvolume_p.h>
#include <Qt3DCore/qnodeid.h>
#include <QVector3D>
@@ -65,7 +65,7 @@ Q_AUTOTEST_EXPORT bool intersectsSegmentTriangle(const Qt3DCore::QRay3D &ray,
QVector3D &uvw,
float &t);
-class Q_AUTOTEST_EXPORT TriangleBoundingVolume : public Qt3DCore::QBoundingVolume
+class Q_AUTOTEST_EXPORT TriangleBoundingVolume : public QBoundingVolume
{
public:
TriangleBoundingVolume();
diff --git a/src/render/backend/trianglesextractor.cpp b/src/render/backend/trianglesextractor.cpp
index 7a5ecf180..85eba29df 100644
--- a/src/render/backend/trianglesextractor.cpp
+++ b/src/render/backend/trianglesextractor.cpp
@@ -90,13 +90,13 @@ struct BufferInfo
// indices, vertices are already offset
template<typename index, typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTrianglesIndexed(index *indices,
- vertex *vertices,
- const BufferInfo &indexInfo,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTrianglesIndexed(index *indices,
+ vertex *vertices,
+ const BufferInfo &indexInfo,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
const uint maxVerticesDataSize = qMin(vertexInfo.dataSize, 3U);
@@ -118,11 +118,11 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTrianglesIndexed(index *indices,
// vertices are already offset
template<typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangles(vertex *vertices,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangles(vertex *vertices,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
@@ -144,13 +144,13 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangles(vertex *vertices,
// indices, vertices are already offset
template<typename index, typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleStripIndexed(index *indices,
- vertex *vertices,
- const BufferInfo &indexInfo,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleStripIndexed(index *indices,
+ vertex *vertices,
+ const BufferInfo &indexInfo,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
const uint maxVerticesDataSize = qMin(vertexInfo.dataSize, 3U);
@@ -172,11 +172,11 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangleStripIndexed(index *indices
// vertices are already offset
template<typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleStrip(vertex *vertices,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleStrip(vertex *vertices,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
@@ -198,13 +198,13 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangleStrip(vertex *vertices,
// indices, vertices are already offset
template<typename index, typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleFanIndexed(index *indices,
- vertex *vertices,
- const BufferInfo &indexInfo,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleFanIndexed(index *indices,
+ vertex *vertices,
+ const BufferInfo &indexInfo,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
const uint maxVerticesDataSize = qMin(vertexInfo.dataSize, 3U);
@@ -231,11 +231,11 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangleFanIndexed(index *indices,
// vertices are already offset
template<typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleFan(vertex *vertices,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleFan(vertex *vertices,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
const uint maxVerticesDataSize = qMin(vertexInfo.dataSize, 3U);
@@ -262,13 +262,13 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangleFan(vertex *vertices,
// indices, vertices are already offset
template<typename index, typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleAdjacencyIndexed(index *indices,
- vertex *vertices,
- const BufferInfo &indexInfo,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleAdjacencyIndexed(index *indices,
+ vertex *vertices,
+ const BufferInfo &indexInfo,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
const uint maxVerticesDataSize = qMin(vertexInfo.dataSize, 3U);
@@ -290,11 +290,11 @@ QVector<Qt3DCore::QBoundingVolume *> traverseTriangleAdjacencyIndexed(index *ind
// vertices are already offset
template<typename vertex>
-QVector<Qt3DCore::QBoundingVolume *> traverseTriangleAdjacency(vertex *vertices,
- const BufferInfo &vertexInfo,
- const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> traverseTriangleAdjacency(vertex *vertices,
+ const BufferInfo &vertexInfo,
+ const Qt3DCore::QNodeId id)
{
- QVector<Qt3DCore::QBoundingVolume *> tris;
+ QVector<QBoundingVolume *> tris;
uint i = 0;
const uint verticesStride = vertexInfo.byteStride / sizeof(vertex);
@@ -332,7 +332,7 @@ typename EnumToType<v>::type *castToType(const QByteArray &u, uint byteOffset)
}
template<typename ReturnType, typename Func>
-QVector<Qt3DCore::QBoundingVolume *> processBuffer(const BufferInfo &info, Func &f)
+QVector<QBoundingVolume *> processBuffer(const BufferInfo &info, Func &f)
{
switch (info.type) {
case QAttribute::Byte: return f(info, castToType<QAttribute::Byte>(info.data, info.byteOffset));
@@ -428,7 +428,7 @@ TrianglesExtractor::TrianglesExtractor(GeometryRenderer *renderer, NodeManagers
{
}
-QVector<Qt3DCore::QBoundingVolume *> TrianglesExtractor::extract(const Qt3DCore::QNodeId id)
+QVector<QBoundingVolume *> TrianglesExtractor::extract(const Qt3DCore::QNodeId id)
{
if (m_renderer && m_renderer->instanceCount() == 1 && isTriangleBased(m_renderer->primitiveType())) {
Attribute *positionAttribute = Q_NULLPTR;
@@ -473,26 +473,26 @@ QVector<Qt3DCore::QBoundingVolume *> TrianglesExtractor::extract(const Qt3DCore:
indexBufferInfo.byteStride = indexAttribute->byteStride();
indexBufferInfo.count = indexAttribute->count();
- IndexExecutor<QVector<Qt3DCore::QBoundingVolume *> > executor;
+ IndexExecutor<QVector<QBoundingVolume *> > executor;
executor.vertexBufferInfo = vertexBufferInfo;
executor.primitiveType = m_renderer->primitiveType();
executor.id = id;
- return processBuffer<QVector<Qt3DCore::QBoundingVolume *> >(indexBufferInfo, executor);
+ return processBuffer<QVector<QBoundingVolume *> >(indexBufferInfo, executor);
} else { // Non Indexed
// Check into which type the buffer needs to be casted
- VertexExecutor<QVector<Qt3DCore::QBoundingVolume *> > executor;
+ VertexExecutor<QVector<QBoundingVolume *> > executor;
executor.primitiveType = m_renderer->primitiveType();
executor.id = id;
- return processBuffer<QVector<Qt3DCore::QBoundingVolume *> >(vertexBufferInfo, executor);
+ return processBuffer<QVector<QBoundingVolume *> >(vertexBufferInfo, executor);
}
}
}
}
- return QVector<Qt3DCore::QBoundingVolume *>();
+ return QVector<QBoundingVolume *>();
}
} // namespace Render
diff --git a/src/render/backend/trianglesextractor_p.h b/src/render/backend/trianglesextractor_p.h
index d324cd183..7353278fe 100644
--- a/src/render/backend/trianglesextractor_p.h
+++ b/src/render/backend/trianglesextractor_p.h
@@ -52,12 +52,10 @@
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
-class QBoundingVolume;
-}
-
namespace Qt3DRender {
+class QBoundingVolume;
+
namespace Render {
class GeometryRenderer;
@@ -69,7 +67,7 @@ public:
explicit TrianglesExtractor(GeometryRenderer *renderer,
NodeManagers *manager);
- QVector<Qt3DCore::QBoundingVolume *> extract(const Qt3DCore::QNodeId id);
+ QVector<QBoundingVolume *> extract(const Qt3DCore::QNodeId id);
private:
GeometryRenderer *m_renderer;
diff --git a/src/render/frontend/sphere.cpp b/src/render/frontend/sphere.cpp
index 97b39cf51..f87be42d3 100644
--- a/src/render/frontend/sphere.cpp
+++ b/src/render/frontend/sphere.cpp
@@ -224,7 +224,7 @@ bool Sphere::intersects(const Qt3DCore::QRay3D &ray, QVector3D *q) const
return intersectRaySphere(ray, *this, q);
}
-Qt3DCore::QBoundingVolume::Type Sphere::type() const
+QBoundingVolume::Type Sphere::type() const
{
return QBoundingVolume::Sphere;
}
diff --git a/src/render/frontend/sphere_p.h b/src/render/frontend/sphere_p.h
index be86b172d..37a30ce74 100644
--- a/src/render/frontend/sphere_p.h
+++ b/src/render/frontend/sphere_p.h
@@ -50,7 +50,7 @@
#include <Qt3DRender/private/qt3drender_global_p.h>
#include <Qt3DCore/qnodeid.h>
-#include <Qt3DCore/qboundingsphere.h>
+#include <Qt3DRender/private/qboundingsphere_p.h>
#include <QMatrix4x4>
#include <QVector3D>
@@ -61,7 +61,7 @@ namespace Qt3DRender {
namespace Render {
-class QT3DRENDERSHARED_PRIVATE_EXPORT Sphere : public Qt3DCore::QBoundingSphere
+class QT3DRENDERSHARED_PRIVATE_EXPORT Sphere : public QBoundingSphere
{
public:
inline Sphere(const Qt3DCore::QNodeId &i = Qt3DCore::QNodeId())
diff --git a/src/render/geometry/geometryrenderer.cpp b/src/render/geometry/geometryrenderer.cpp
index 9a9cab227..bbe30e5fe 100644
--- a/src/render/geometry/geometryrenderer.cpp
+++ b/src/render/geometry/geometryrenderer.cpp
@@ -39,7 +39,7 @@
#include <Qt3DCore/qscenepropertychange.h>
#include <Qt3DRender/private/geometryrenderermanager_p.h>
#include <Qt3DCore/qbackendscenepropertychange.h>
-#include <Qt3DCore/qboundingvolume.h>
+#include <Qt3DRender/private/qboundingvolume_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/render/geometry/geometryrenderer_p.h b/src/render/geometry/geometryrenderer_p.h
index bbcd3397b..8e68ab1f8 100644
--- a/src/render/geometry/geometryrenderer_p.h
+++ b/src/render/geometry/geometryrenderer_p.h
@@ -54,12 +54,10 @@
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
-class QBoundingVolume;
-}
-
namespace Qt3DRender {
+class QBoundingVolume;
+
namespace Render {
class GeometryRendererManager;
@@ -90,9 +88,9 @@ public:
void unsetDirty();
// Build triangle data Job thread
- void setTriangleVolumes(const QVector<Qt3DCore::QBoundingVolume *> &volumes);
+ void setTriangleVolumes(const QVector<QBoundingVolume *> &volumes);
// Pick volumes job
- QVector<Qt3DCore::QBoundingVolume *> triangleData() const;
+ QVector<QBoundingVolume *> triangleData() const;
private:
Qt3DCore::QNodeId m_geometryId;
@@ -107,7 +105,7 @@ private:
bool m_enabled;
QGeometryFunctorPtr m_functor;
GeometryRendererManager *m_manager;
- QVector<Qt3DCore::QBoundingVolume *> m_triangleVolumes;
+ QVector<QBoundingVolume *> m_triangleVolumes;
};
class GeometryRendererFunctor : public Qt3DCore::QBackendNodeFunctor
diff --git a/src/render/jobs/pickboundingvolumejob.cpp b/src/render/jobs/pickboundingvolumejob.cpp
index 1dc0b2575..768277ad4 100644
--- a/src/render/jobs/pickboundingvolumejob.cpp
+++ b/src/render/jobs/pickboundingvolumejob.cpp
@@ -48,11 +48,10 @@
#include <Qt3DRender/private/geometryrenderer_p.h>
#include <Qt3DRender/private/trianglesextractor_p.h>
#include <Qt3DRender/private/triangleboundingvolume_p.h>
-#include <Qt3DRender/qraycastingservice.h>
+#include <Qt3DRender/private/qraycastingservice_p.h>
#include <Qt3DRender/qgeometryrenderer.h>
#include <Qt3DCore/qservicelocator.h>
#include <Qt3DCore/qray3d.h>
-#include <Qt3DCore/qabstractcollisionqueryservice.h>
#include <QSurface>
QT_BEGIN_NAMESPACE
@@ -124,9 +123,9 @@ public:
};
-QVector<Qt3DCore::QBoundingVolume *> gatherBoundingVolumes(Entity *entity)
+QVector<QBoundingVolume *> gatherBoundingVolumes(Entity *entity)
{
- QVector<Qt3DCore::QBoundingVolume *> volumes;
+ QVector<QBoundingVolume *> volumes;
if (entity != Q_NULLPTR) {
volumes.push_back(entity->worldBoundingVolume());
@@ -137,17 +136,17 @@ QVector<Qt3DCore::QBoundingVolume *> gatherBoundingVolumes(Entity *entity)
return volumes;
}
-class SphereBoundingVolumesGatherer : public Qt3DCore::QBoundingVolumeProvider
+class SphereBoundingVolumesGatherer : public QBoundingVolumeProvider
{
public:
explicit SphereBoundingVolumesGatherer(Entity *root)
- : Qt3DCore::QBoundingVolumeProvider()
+ : QBoundingVolumeProvider()
, m_root(root)
, m_needsRefresh(true)
{
}
- QVector<Qt3DCore::QBoundingVolume *> boundingVolumes() const Q_DECL_FINAL
+ QVector<QBoundingVolume *> boundingVolumes() const Q_DECL_FINAL
{
if (m_needsRefresh) {
m_volumes = gatherBoundingVolumes(m_root);
@@ -158,16 +157,16 @@ public:
private:
Entity *m_root;
- mutable QVector<Qt3DCore::QBoundingVolume *> m_volumes;
+ mutable QVector<QBoundingVolume *> m_volumes;
mutable bool m_needsRefresh;
};
-class TriangleVolumeGatherer : public Qt3DCore::QBoundingVolumeProvider
+class TriangleVolumeGatherer : public QBoundingVolumeProvider
{
public:
explicit TriangleVolumeGatherer(Entity *root, NodeManagers *manager)
- : Qt3DCore::QBoundingVolumeProvider()
+ : QBoundingVolumeProvider()
, m_root(root)
, m_manager(manager)
{
@@ -179,21 +178,21 @@ public:
qDeleteAll(m_volumes);
}
- QVector<Qt3DCore::QBoundingVolume *> boundingVolumes() const Q_DECL_FINAL
+ QVector<QBoundingVolume *> boundingVolumes() const Q_DECL_FINAL
{
return m_volumes;
}
private:
- QVector<Qt3DCore::QBoundingVolume *> buildTriangleBoundingVolumes()
+ QVector<QBoundingVolume *> buildTriangleBoundingVolumes()
{
- QVector<Qt3DCore::QBoundingVolume *> volumes;
+ QVector<QBoundingVolume *> volumes;
if (m_root) {
GeometryRenderer *gRenderer = m_root->renderComponent<GeometryRenderer>();
if (gRenderer) {
- const QVector<Qt3DCore::QBoundingVolume *> localVolumes = gRenderer->triangleData();
+ const QVector<QBoundingVolume *> localVolumes = gRenderer->triangleData();
volumes.reserve(localVolumes.size());
- Q_FOREACH (const Qt3DCore::QBoundingVolume *v, localVolumes) {
+ Q_FOREACH (const QBoundingVolume *v, localVolumes) {
TriangleBoundingVolume *worldVolume = new TriangleBoundingVolume();
*worldVolume = static_cast<const TriangleBoundingVolume *>(v)->transformed(*m_root->worldTransform());
volumes.push_back(worldVolume);
@@ -205,7 +204,7 @@ private:
Entity *m_root;
NodeManagers *m_manager;
- QVector<Qt3DCore::QBoundingVolume *> m_volumes;
+ QVector<QBoundingVolume *> m_volumes;
};
} // anonymous
@@ -240,7 +239,7 @@ void PickBoundingVolumeJob::run()
if (m_mouseEvents.empty())
return;
- Qt3DCore::QAbstractCollisionQueryService *rayCasting = m_renderer->renderAspect()->services()->service<Qt3DCore::QAbstractCollisionQueryService>
+ QAbstractCollisionQueryService *rayCasting = m_renderer->renderAspect()->services()->service<QAbstractCollisionQueryService>
(Qt3DCore::QServiceLocator::CollisionService);
if (rayCasting == Q_NULLPTR) {
@@ -411,8 +410,8 @@ QRect PickBoundingVolumeJob::windowViewport(const QRectF &relativeViewport) cons
QVector<Qt3DCore::QNodeId> PickBoundingVolumeJob::sphereHitsForViewportAndCamera(const QPoint &pos,
const QRectF &relativeViewport,
const Qt3DCore::QNodeId &cameraId,
- Qt3DCore::QAbstractCollisionQueryService *rayCasting,
- Qt3DCore::QBoundingVolumeProvider *volumeProvider) const
+ QAbstractCollisionQueryService *rayCasting,
+ QBoundingVolumeProvider *volumeProvider) const
{
QMatrix4x4 viewMatrix;
QMatrix4x4 projectionMatrix;
@@ -424,8 +423,8 @@ QVector<Qt3DCore::QNodeId> PickBoundingVolumeJob::sphereHitsForViewportAndCamera
// In GL the y is inverted compared to Qt
const QPoint glCorrectPos = s ? QPoint(pos.x(), s->size().height() - pos.y()) : pos;
const Qt3DCore::QRay3D ray = intersectionRay(glCorrectPos, viewMatrix, projectionMatrix, viewport);
- const Qt3DCore::QQueryHandle rayCastingHandle = rayCasting->query(ray, Qt3DCore::QAbstractCollisionQueryService::AllHits, volumeProvider);
- const Qt3DCore::QCollisionQueryResult queryResult = rayCasting->fetchResult(rayCastingHandle);
+ const QQueryHandle rayCastingHandle = rayCasting->query(ray, QAbstractCollisionQueryService::AllHits, volumeProvider);
+ const QCollisionQueryResult queryResult = rayCasting->fetchResult(rayCastingHandle);
return queryResult.entitiesHit();
}
@@ -433,7 +432,7 @@ QVector<Qt3DCore::QNodeId> PickBoundingVolumeJob::triangleHitsForViewportAndCame
const QRectF &relativeViewport,
const Qt3DCore::QNodeId &cameraId,
const Qt3DCore::QNodeId &entityId,
- Qt3DCore::QAbstractCollisionQueryService *rayCasting) const
+ QAbstractCollisionQueryService *rayCasting) const
{
QMatrix4x4 viewMatrix;
QMatrix4x4 projectionMatrix;
@@ -450,10 +449,10 @@ QVector<Qt3DCore::QNodeId> PickBoundingVolumeJob::triangleHitsForViewportAndCame
TriangleVolumeGatherer boundingVolumeProvider(m_manager->lookupResource<Entity, EntityManager>(entityId),
m_manager);
- const Qt3DCore::QQueryHandle rayCastingHandle = rayCasting->query(ray,
- Qt3DCore::QAbstractCollisionQueryService::AllHits,
+ const QQueryHandle rayCastingHandle = rayCasting->query(ray,
+ QAbstractCollisionQueryService::AllHits,
&boundingVolumeProvider);
- const Qt3DCore::QCollisionQueryResult queryResult = rayCasting->fetchResult(rayCastingHandle);
+ const QCollisionQueryResult queryResult = rayCasting->fetchResult(rayCastingHandle);
return queryResult.entitiesHit();
}
diff --git a/src/render/jobs/pickboundingvolumejob_p.h b/src/render/jobs/pickboundingvolumejob_p.h
index 685638a58..11a7a1596 100644
--- a/src/render/jobs/pickboundingvolumejob_p.h
+++ b/src/render/jobs/pickboundingvolumejob_p.h
@@ -49,7 +49,7 @@
//
#include <Qt3DCore/qaspectjob.h>
-#include <Qt3DCore/qboundingvolumeprovider.h>
+#include <Qt3DRender/private/qboundingvolumeprovider_p.h>
#include <Qt3DRender/private/handle_types_p.h>
#include <Qt3DCore/qray3d.h>
#include <QSharedPointer>
@@ -59,11 +59,12 @@ QT_BEGIN_NAMESPACE
namespace Qt3DCore {
class QNodeId;
-class QAbstractCollisionQueryService;
}
namespace Qt3DRender {
+class QAbstractCollisionQueryService;
+
namespace Render {
class Entity;
@@ -97,13 +98,13 @@ private:
QVector<Qt3DCore::QNodeId> sphereHitsForViewportAndCamera(const QPoint &pos,
const QRectF &relativeViewport,
const Qt3DCore::QNodeId &cameraId,
- Qt3DCore::QAbstractCollisionQueryService *rayCasting,
- Qt3DCore::QBoundingVolumeProvider *volumeProvider) const;
+ Qt3DRender::QAbstractCollisionQueryService *rayCasting,
+ Qt3DRender::QBoundingVolumeProvider *volumeProvider) const;
QVector<Qt3DCore::QNodeId> triangleHitsForViewportAndCamera(const QPoint &pos,
const QRectF &relativeViewport,
const Qt3DCore::QNodeId &cameraId,
const Qt3DCore::QNodeId &entityId,
- Qt3DCore::QAbstractCollisionQueryService *rayCasting) const;
+ Qt3DRender::QAbstractCollisionQueryService *rayCasting) const;
void clearPreviouslyHoveredPickers();
HObjectPicker m_currentPicker;
QVector<HObjectPicker> m_hoveredPickers;
diff --git a/src/core/services/qabstractcollisionqueryservice.cpp b/src/render/raycasting/qabstractcollisionqueryservice.cpp
index a841abc18..e28b3a7ea 100644
--- a/src/core/services/qabstractcollisionqueryservice.cpp
+++ b/src/render/raycasting/qabstractcollisionqueryservice.cpp
@@ -34,14 +34,13 @@
**
****************************************************************************/
-#include "qabstractcollisionqueryservice.h"
#include "qabstractcollisionqueryservice_p.h"
#include "qcollisionqueryresult_p.h"
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
QAbstractCollisionQueryService::QAbstractCollisionQueryService(const QString &description)
: QAbstractServiceProvider(*new QAbstractCollisionQueryServicePrivate(description))
@@ -58,11 +57,11 @@ void QAbstractCollisionQueryService::setResultHandle(QCollisionQueryResult &resu
result.d_func()->setHandle(handle);
}
-void QAbstractCollisionQueryService::addEntityHit(QCollisionQueryResult &result, const QNodeId &entity)
+void QAbstractCollisionQueryService::addEntityHit(QCollisionQueryResult &result, const Qt3DCore::QNodeId &entity)
{
result.d_func()->addEntityHit(entity);
}
-} // Qt3D
+} // Qt3DRender
QT_END_NAMESPACE
diff --git a/src/core/services/qabstractcollisionqueryservice.h b/src/render/raycasting/qabstractcollisionqueryservice_p.h
index 4f9d6b02f..286f4f932 100644
--- a/src/core/services/qabstractcollisionqueryservice.h
+++ b/src/render/raycasting/qabstractcollisionqueryservice_p.h
@@ -34,25 +34,47 @@
**
****************************************************************************/
-#ifndef QT3DCORE_QABSTRACTCOLLISIONQUERYSERVICE_H
-#define QT3DCORE_QABSTRACTCOLLISIONQUERYSERVICE_H
+#ifndef QT3DRENDER_QABSTRACTCOLLISIONQUERYSERVICE_P_H
+#define QT3DRENDER_QABSTRACTCOLLISIONQUERYSERVICE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
#include <QVector>
-#include <Qt3DCore/qt3dcore_global.h>
+#include <Qt3DRender/qt3drender_global.h>
#include <Qt3DCore/qservicelocator.h>
#include <Qt3DCore/qnodeid.h>
-#include <Qt3DCore/qcollisionqueryresult.h>
+#include <Qt3DCore/private/qabstractserviceprovider_p.h>
+#include <Qt3DRender/private/qcollisionqueryresult_p.h>
QT_BEGIN_NAMESPACE
namespace Qt3DCore {
-
class QRay3D;
-class QAbstractCollisionQueryServicePrivate;
+}
+
+namespace Qt3DRender {
+
class QBoundingVolumeProvider;
-class QT3DCORESHARED_EXPORT QAbstractCollisionQueryService : public QAbstractServiceProvider
+class QAbstractCollisionQueryServicePrivate : public Qt3DCore::QAbstractServiceProviderPrivate
+{
+public:
+ QAbstractCollisionQueryServicePrivate(const QString &description)
+ : QAbstractServiceProviderPrivate(Qt3DCore::QServiceLocator::CollisionService, description)
+ {}
+};
+
+class QT3DRENDERSHARED_EXPORT QAbstractCollisionQueryService : public Qt3DCore::QAbstractServiceProvider
{
public:
enum QueryMode {
@@ -60,7 +82,7 @@ public:
AllHits
};
- virtual QQueryHandle query(const QRay3D &ray, QueryMode mode, QBoundingVolumeProvider *provider) = 0;
+ virtual QQueryHandle query(const Qt3DCore::QRay3D &ray, QueryMode mode, QBoundingVolumeProvider *provider) = 0;
virtual QCollisionQueryResult fetchResult(const QQueryHandle &handle) = 0;
virtual QVector<QCollisionQueryResult> fetchAllResults() const = 0;
@@ -70,16 +92,16 @@ protected:
QAbstractCollisionQueryService(QAbstractCollisionQueryServicePrivate &dd);
void setResultHandle(QCollisionQueryResult &result, const QQueryHandle &handle);
- void addEntityHit(QCollisionQueryResult &result, const QNodeId &entity);
+ void addEntityHit(QCollisionQueryResult &result, const Qt3DCore::QNodeId &entity);
private:
Q_DECLARE_PRIVATE(QAbstractCollisionQueryService)
};
-} // Qt3D
+} // Qt3DRender
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(Qt3DCore::QAbstractCollisionQueryService::QueryMode)
+Q_DECLARE_METATYPE(Qt3DRender::QAbstractCollisionQueryService::QueryMode)
-#endif // QT3DCORE_QABSTRACTCOLLISIONQUERYSERVICE_H
+#endif // QT3DRENDER_QABSTRACTCOLLISIONQUERYSERVICE_P_H
diff --git a/src/core/qboundingsphere.cpp b/src/render/raycasting/qboundingsphere.cpp
index c6f9980e3..1c6915cf4 100644
--- a/src/core/qboundingsphere.cpp
+++ b/src/render/raycasting/qboundingsphere.cpp
@@ -34,11 +34,11 @@
**
****************************************************************************/
-#include "qboundingsphere.h"
+#include "qboundingsphere_p.h"
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
QBoundingSphere::QBoundingSphere()
{
@@ -48,6 +48,6 @@ QBoundingSphere::~QBoundingSphere()
{
}
-} // namespace Qt3DCore
+} // namespace Qt3DRender
QT_END_NAMESPACE
diff --git a/src/core/services/qabstractcollisionqueryservice_p.h b/src/render/raycasting/qboundingsphere_p.h
index 2f2abdc5a..c05fb7613 100644
--- a/src/core/services/qabstractcollisionqueryservice_p.h
+++ b/src/render/raycasting/qboundingsphere_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QT3DCORE_QABSTRACTCOLLISIONQUERYSERVICE_P_H
-#define QT3DCORE_QABSTRACTCOLLISIONQUERYSERVICE_P_H
+#ifndef QT3DRENDER_QBOUNDINGSPHERE_P_H
+#define QT3DRENDER_QBOUNDINGSPHERE_P_H
//
// W A R N I N G
@@ -48,24 +48,25 @@
// We mean it.
//
-#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/private/qabstractserviceprovider_p.h>
-#include <Qt3DCore/qservicelocator.h>
+#include <Qt3DRender/qt3drender_global.h>
+#include <Qt3DRender/private/qboundingvolume_p.h>
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
-class QAbstractCollisionQueryServicePrivate : public QAbstractServiceProviderPrivate
+class QT3DRENDERSHARED_EXPORT QBoundingSphere : public QBoundingVolume
{
public:
- QAbstractCollisionQueryServicePrivate(const QString &description)
- : QAbstractServiceProviderPrivate(QServiceLocator::CollisionService, description)
- {}
+ QBoundingSphere();
+ ~QBoundingSphere();
+
+ virtual QVector3D center() const = 0;
+ virtual float radius() const = 0;
};
-} // Qt3D
+} // namespace Qt3DRender
QT_END_NAMESPACE
-#endif // QT3DCORE_QAbstractCOLLISIONQUERYSERVICE_P_H
+#endif // QT3DRENDER_QBOUNDINGSPHERE_P_H
diff --git a/src/core/qboundingvolume.cpp b/src/render/raycasting/qboundingvolume.cpp
index e0ae704e4..414f4f278 100644
--- a/src/core/qboundingvolume.cpp
+++ b/src/render/raycasting/qboundingvolume.cpp
@@ -34,11 +34,11 @@
**
****************************************************************************/
-#include "qboundingvolume.h"
+#include "qboundingvolume_p.h"
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
QBoundingVolume::QBoundingVolume()
{
@@ -48,6 +48,6 @@ QBoundingVolume::~QBoundingVolume()
{
}
-} // namespace Qt3DCore
+} // namespace Qt3DRender
QT_END_NAMESPACE
diff --git a/src/core/services/qcollisionqueryresult_p.h b/src/render/raycasting/qboundingvolume_p.h
index 02525e36d..b426870a2 100644
--- a/src/core/services/qcollisionqueryresult_p.h
+++ b/src/render/raycasting/qboundingvolume_p.h
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QT3DCORE_QCOLLISIONQUERYRESULT_P_H
-#define QT3DCORE_QCOLLISIONQUERYRESULT_P_H
+#ifndef QT3DRENDER_QBOUNDINGVOLUME_P_H
+#define QT3DRENDER_QBOUNDINGVOLUME_P_H
//
// W A R N I N G
@@ -48,28 +48,38 @@
// We mean it.
//
-#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/qcollisionqueryresult.h>
+#include <Qt3DRender/qt3drender_global.h>
+#include <Qt3DCore/qnodeid.h>
QT_BEGIN_NAMESPACE
namespace Qt3DCore {
+class QRay3D;
+}
-class QCollisionQueryResultPrivate : public QSharedData
+namespace Qt3DRender {
+
+class QT3DRENDERSHARED_EXPORT QBoundingVolume
{
public:
- explicit QCollisionQueryResultPrivate();
- explicit QCollisionQueryResultPrivate(const QCollisionQueryResultPrivate &copy);
+ QBoundingVolume();
+ virtual ~QBoundingVolume();
+
+ enum Type {
+ Sphere = 0,
+ Triangle
+ };
- void setHandle(const QQueryHandle &handle);
- void addEntityHit(const QNodeId &entity);
+ virtual Qt3DCore::QNodeId id() const = 0;
+ virtual bool intersects(const Qt3DCore::QRay3D &ray, QVector3D *q = Q_NULLPTR) const = 0;
- QQueryHandle m_handle;
- QVector<QNodeId> m_entitiesHit;
+ virtual Type type() const = 0;
};
-} // Qt3D
+} // namespace Qt3DRender
QT_END_NAMESPACE
-#endif // QT3DCORE_QCOLLISIONQUERYRESULT_P_H
+Q_DECLARE_METATYPE(Qt3DRender::QBoundingVolume*)
+
+#endif // QT3DRENDER_QBOUNDINGVOLUME_P_H
diff --git a/src/core/qboundingvolumeprovider.cpp b/src/render/raycasting/qboundingvolumeprovider.cpp
index 4d3e0647d..cff36e906 100644
--- a/src/core/qboundingvolumeprovider.cpp
+++ b/src/render/raycasting/qboundingvolumeprovider.cpp
@@ -34,12 +34,12 @@
**
****************************************************************************/
-#include "qboundingvolumeprovider.h"
+#include "qboundingvolumeprovider_p.h"
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
QBoundingVolumeProvider::~QBoundingVolumeProvider()
{
@@ -47,6 +47,6 @@ QBoundingVolumeProvider::~QBoundingVolumeProvider()
}
-} // Qt3D
+} // Qt3DRender
QT_END_NAMESPACE
diff --git a/src/core/qboundingvolumeprovider.h b/src/render/raycasting/qboundingvolumeprovider_p.h
index f61f02b23..3f38a6f6c 100644
--- a/src/core/qboundingvolumeprovider.h
+++ b/src/render/raycasting/qboundingvolumeprovider_p.h
@@ -34,26 +34,37 @@
**
****************************************************************************/
-#ifndef QT3DCORE_QBOUNDINGVOLUMEPROVIDER_H
-#define QT3DCORE_QBOUNDINGVOLUMEPROVIDER_H
+#ifndef QT3DRENDER_QBOUNDINGVOLUMEPROVIDER_P_H
+#define QT3DRENDER_QBOUNDINGVOLUMEPROVIDER_P_H
-#include <Qt3DCore/qt3dcore_global.h>
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <Qt3DRender/qt3drender_global.h>
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
class QBoundingVolume;
-class QT3DCORESHARED_EXPORT QBoundingVolumeProvider
+class QT3DRENDERSHARED_EXPORT QBoundingVolumeProvider
{
public:
virtual ~QBoundingVolumeProvider();
virtual QVector<QBoundingVolume *> boundingVolumes() const = 0;
};
-} // namespace Qt3DCore
+} // namespace Qt3DRender
QT_END_NAMESPACE
-#endif // QT3DCORE_QBOUNDINGVOLUMEPROVIDER_H
+#endif // QT3DRENDER_QBOUNDINGVOLUMEPROVIDER_P_H
diff --git a/src/core/services/qcollisionqueryresult.cpp b/src/render/raycasting/qcollisionqueryresult.cpp
index c0c815093..cf2ea0a9a 100644
--- a/src/core/services/qcollisionqueryresult.cpp
+++ b/src/render/raycasting/qcollisionqueryresult.cpp
@@ -34,12 +34,11 @@
**
****************************************************************************/
-#include "qcollisionqueryresult.h"
#include "qcollisionqueryresult_p.h"
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
QCollisionQueryResultPrivate::QCollisionQueryResultPrivate()
: QSharedData()
@@ -53,7 +52,7 @@ QCollisionQueryResultPrivate::QCollisionQueryResultPrivate(const QCollisionQuery
{
}
-void QCollisionQueryResultPrivate::addEntityHit(const QNodeId &entity)
+void QCollisionQueryResultPrivate::addEntityHit(const Qt3DCore::QNodeId &entity)
{
m_entitiesHit.append(entity);
}
@@ -83,7 +82,7 @@ QCollisionQueryResult &QCollisionQueryResult::operator=(const QCollisionQueryRes
return *this;
}
-QVector<QNodeId> QCollisionQueryResult::entitiesHit() const
+QVector<Qt3DCore::QNodeId> QCollisionQueryResult::entitiesHit() const
{
Q_D(const QCollisionQueryResult);
return d->m_entitiesHit;
@@ -111,6 +110,6 @@ QQueryHandle QCollisionQueryResult::handle() const
return d->m_handle;
}
-} // Qt3D
+} // Qt3DRender
QT_END_NAMESPACE
diff --git a/src/core/services/qcollisionqueryresult.h b/src/render/raycasting/qcollisionqueryresult_p.h
index a5df974b5..c4eb164ff 100644
--- a/src/core/services/qcollisionqueryresult.h
+++ b/src/render/raycasting/qcollisionqueryresult_p.h
@@ -34,23 +34,45 @@
**
****************************************************************************/
-#ifndef QT3DCORE_QCOLLISIONQUERYRESULT_H
-#define QT3DCORE_QCOLLISIONQUERYRESULT_H
-
-#include <Qt3DCore/qt3dcore_global.h>
+#ifndef QT3DRENDER_QCOLLISIONQUERYRESULT_P_H
+#define QT3DRENDER_QCOLLISIONQUERYRESULT_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <Qt3DRender/qt3drender_global.h>
#include <Qt3DCore/qnodeid.h>
#include <QVector>
#include <QSharedData>
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
typedef int QQueryHandle;
-class QCollisionQueryResultPrivate;
+class QCollisionQueryResultPrivate : public QSharedData
+{
+public:
+ explicit QCollisionQueryResultPrivate();
+ explicit QCollisionQueryResultPrivate(const QCollisionQueryResultPrivate &copy);
+
+ void setHandle(const QQueryHandle &handle);
+ void addEntityHit(const Qt3DCore::QNodeId &entity);
-class QT3DCORESHARED_EXPORT QCollisionQueryResult
+ QQueryHandle m_handle;
+ QVector<Qt3DCore::QNodeId> m_entitiesHit;
+};
+
+class QT3DRENDERSHARED_EXPORT QCollisionQueryResult
{
public:
QCollisionQueryResult();
@@ -72,7 +94,7 @@ public:
}
QQueryHandle handle() const;
- QVector<QNodeId> entitiesHit() const;
+ QVector<Qt3DCore::QNodeId> entitiesHit() const;
private:
friend class QAbstractCollisionQueryService;
@@ -88,11 +110,10 @@ private:
}
};
-} // Qt3D
+} // Qt3DRender
-Q_DECLARE_SHARED(Qt3DCore::QCollisionQueryResult)
+Q_DECLARE_SHARED(Qt3DRender::QCollisionQueryResult)
QT_END_NAMESPACE
-#endif // QT3DCORE_QCOLLISIONQUERYRESULT_H
-
+#endif // QT3DRENDER_QCOLLISIONQUERYRESULT_P_H
diff --git a/src/render/services/qraycastingservice.cpp b/src/render/raycasting/qraycastingservice.cpp
index af06b06d7..8e897ec14 100644
--- a/src/render/services/qraycastingservice.cpp
+++ b/src/render/raycasting/qraycastingservice.cpp
@@ -34,12 +34,11 @@
**
****************************************************************************/
-#include "qraycastingservice.h"
#include "qraycastingservice_p.h"
#include <Qt3DCore/qray3d.h>
#include <Qt3DRender/private/sphere_p.h>
-#include <Qt3DCore/qboundingvolumeprovider.h>
+#include <Qt3DRender/private/qboundingvolumeprovider_p.h>
#include <QMap>
#include <QtConcurrent>
@@ -116,8 +115,8 @@ struct CollisionGathererFunctor
} // anonymous
-QCollisionQueryResult QRayCastingServicePrivate::collides(const Qt3DCore::QRay3D &ray, Qt3DCore::QBoundingVolumeProvider *provider,
- Qt3DCore::QAbstractCollisionQueryService::QueryMode mode, const Qt3DCore::QQueryHandle &handle)
+QCollisionQueryResult QRayCastingServicePrivate::collides(const Qt3DCore::QRay3D &ray, QBoundingVolumeProvider *provider,
+ QAbstractCollisionQueryService::QueryMode mode, const QQueryHandle &handle)
{
Q_Q(QRayCastingService);
@@ -153,9 +152,9 @@ QRayCastingService::QRayCastingService()
{
}
-Qt3DCore::QQueryHandle QRayCastingService::query(const Qt3DCore::QRay3D &ray,
- QAbstractCollisionQueryService::QueryMode mode,
- Qt3DCore::QBoundingVolumeProvider *provider)
+QQueryHandle QRayCastingService::query(const Qt3DCore::QRay3D &ray,
+ QAbstractCollisionQueryService::QueryMode mode,
+ QBoundingVolumeProvider *provider)
{
Q_D(QRayCastingService);
@@ -171,14 +170,14 @@ Qt3DCore::QQueryHandle QRayCastingService::query(const Qt3DCore::QRay3D &ray,
return handle;
}
-Qt3DCore::QCollisionQueryResult QRayCastingService::fetchResult(const Qt3DCore::QQueryHandle &handle)
+QCollisionQueryResult QRayCastingService::fetchResult(const QQueryHandle &handle)
{
Q_D(QRayCastingService);
return d->m_results.value(handle).result();
}
-QVector<Qt3DCore::QCollisionQueryResult> QRayCastingService::fetchAllResults() const
+QVector<QCollisionQueryResult> QRayCastingService::fetchAllResults() const
{
Q_D(const QRayCastingService);
diff --git a/src/render/services/qraycastingservice_p.h b/src/render/raycasting/qraycastingservice_p.h
index 252c50bfd..b4fdc1549 100644
--- a/src/render/services/qraycastingservice_p.h
+++ b/src/render/raycasting/qraycastingservice_p.h
@@ -49,8 +49,7 @@
//
#include <Qt3DCore/qt3dcore_global.h>
-#include <Qt3DCore/qabstractcollisionqueryservice.h>
-#include <Qt3DCore/private/qabstractcollisionqueryservice_p.h>
+#include <Qt3DRender/private/qabstractcollisionqueryservice_p.h>
#include <Qt3DCore/qray3d.h>
#include <QHash>
@@ -59,35 +58,52 @@
QT_BEGIN_NAMESPACE
-namespace Qt3DCore {
+namespace Qt3DRender {
+
class QBoundingVolume;
class QBoundingVolumeProvider;
-}
+class QRayCastingServicePrivate;
-namespace Qt3DRender {
+typedef QFuture<QCollisionQueryResult> FutureQueryResult;
+
+class QT3DRENDERSHARED_EXPORT QRayCastingService : public QAbstractCollisionQueryService
+{
+public:
+ QRayCastingService();
+
+ QQueryHandle query(const Qt3DCore::QRay3D &ray, QueryMode mode, QBoundingVolumeProvider *provider) Q_DECL_OVERRIDE;
+
+ QCollisionQueryResult fetchResult(const QQueryHandle &handle) Q_DECL_OVERRIDE;
+ QVector<QCollisionQueryResult> fetchAllResults() const Q_DECL_OVERRIDE;
-typedef QFuture<Qt3DCore::QCollisionQueryResult> FutureQueryResult;
+protected:
+ QRayCastingService(QRayCastingServicePrivate &dd);
+
+private:
+ Q_DISABLE_COPY(QRayCastingService)
+ Q_DECLARE_PRIVATE(QRayCastingService)
+};
-class QRayCastingServicePrivate : public Qt3DCore::QAbstractCollisionQueryServicePrivate
+class QRayCastingServicePrivate : public QAbstractCollisionQueryServicePrivate
{
public:
QRayCastingServicePrivate(const QString &description);
- Qt3DCore::QCollisionQueryResult collides(const Qt3DCore::QRay3D &ray,
- Qt3DCore::QBoundingVolumeProvider *provider,
- Qt3DCore::QAbstractCollisionQueryService::QueryMode mode,
- const Qt3DCore::QQueryHandle &handle);
+ QCollisionQueryResult collides(const Qt3DCore::QRay3D &ray,
+ QBoundingVolumeProvider *provider,
+ QAbstractCollisionQueryService::QueryMode mode,
+ const QQueryHandle &handle);
Q_DECLARE_PUBLIC(QRayCastingService)
struct Query
{
- Qt3DCore::QQueryHandle handle;
+ QQueryHandle handle;
Qt3DCore::QRay3D ray;
QRayCastingService::QueryMode mode;
};
- QHash<Qt3DCore::QQueryHandle, FutureQueryResult> m_results;
+ QHash<QQueryHandle, FutureQueryResult> m_results;
QAtomicInt m_handlesCount;
};
diff --git a/src/render/raycasting/raycasting.pri b/src/render/raycasting/raycasting.pri
new file mode 100644
index 000000000..fdd4be17f
--- /dev/null
+++ b/src/render/raycasting/raycasting.pri
@@ -0,0 +1,17 @@
+INCLUDEPATH += $$PWD
+
+HEADERS += \
+ $$PWD/qabstractcollisionqueryservice_p.h \
+ $$PWD/qboundingsphere_p.h \
+ $$PWD/qboundingvolume_p.h \
+ $$PWD/qboundingvolumeprovider_p.h \
+ $$PWD/qcollisionqueryresult_p.h \
+ $$PWD/qraycastingservice_p.h
+
+SOURCES += \
+ $$PWD/qabstractcollisionqueryservice.cpp \
+ $$PWD/qboundingsphere.cpp \
+ $$PWD/qboundingvolume.cpp \
+ $$PWD/qboundingvolumeprovider.cpp \
+ $$PWD/qcollisionqueryresult.cpp \
+ $$PWD/qraycastingservice.cpp
diff --git a/src/render/render.pro b/src/render/render.pro
index d96c8e0ca..b7a74e48e 100644
--- a/src/render/render.pro
+++ b/src/render/render.pro
@@ -23,6 +23,7 @@ include (renderstates/renderstates.pri)
include (io/io.pri)
include (defaults/defaults.pri)
include (picking/picking.pri)
+include (raycasting/raycasting.pri)
include (services/services.pri)
include (texture/texture.pri)
diff --git a/src/render/services/qraycastingservice.h b/src/render/services/qraycastingservice.h
deleted file mode 100644
index 2982c161c..000000000
--- a/src/render/services/qraycastingservice.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL3$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or later as published by the Free
-** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
-** ensure the GNU General Public License version 2.0 requirements will be
-** met: http://www.gnu.org/licenses/gpl-2.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DRENDER_RENDER_QRAYCASTINGSERVICE_H
-#define QT3DRENDER_RENDER_QRAYCASTINGSERVICE_H
-
-#include <Qt3DRender/qt3drender_global.h>
-
-#include <Qt3DCore/qabstractcollisionqueryservice.h>
-
-QT_BEGIN_NAMESPACE
-
-namespace Qt3DCore {
-class QBoundingVolumeProvider;
-}
-
-namespace Qt3DRender {
-
-class QRayCastingServicePrivate;
-
-class QT3DRENDERSHARED_EXPORT QRayCastingService : public Qt3DCore::QAbstractCollisionQueryService
-{
-public:
- QRayCastingService();
-
- Qt3DCore::QQueryHandle query(const Qt3DCore::QRay3D &ray, QueryMode mode, Qt3DCore::QBoundingVolumeProvider *provider) Q_DECL_OVERRIDE;
-
- Qt3DCore::QCollisionQueryResult fetchResult(const Qt3DCore::QQueryHandle &handle) Q_DECL_OVERRIDE;
- QVector<Qt3DCore::QCollisionQueryResult> fetchAllResults() const Q_DECL_OVERRIDE;
-
-protected:
- QRayCastingService(QRayCastingServicePrivate &dd);
-
-private:
- Q_DISABLE_COPY(QRayCastingService)
- Q_DECLARE_PRIVATE(QRayCastingService)
-};
-
-} // namespace Qt3DRender
-
-QT_END_NAMESPACE
-
-#endif // QT3DRENDER_RENDER_QRAYCASTINGSERVICE_H
diff --git a/src/render/services/services.pri b/src/render/services/services.pri
index dbfe9db31..93483a2b0 100644
--- a/src/render/services/services.pri
+++ b/src/render/services/services.pri
@@ -1,10 +1,7 @@
INCLUDEPATH += $$PWD
HEADERS += \
- $$PWD/qraycastingservice.h \
- $$PWD/qraycastingservice_p.h \
$$PWD/vsyncframeadvanceservice_p.h \
SOURCES += \
- $$PWD/qraycastingservice.cpp \
$$PWD/vsyncframeadvanceservice.cpp
diff --git a/tests/auto/render/picking/tst_picking.cpp b/tests/auto/render/picking/tst_picking.cpp
index 54036fc74..93ff2b506 100644
--- a/tests/auto/render/picking/tst_picking.cpp
+++ b/tests/auto/render/picking/tst_picking.cpp
@@ -38,7 +38,7 @@
#include <Qt3DCore/qentity.h>
#include <Qt3DCore/qtransform.h>
#include <Qt3DCore/QScenePropertyChange>
-#include <Qt3DCore/qboundingvolumeprovider.h>
+#include <Qt3DRender/private/qboundingvolumeprovider_p.h>
#include <Qt3DRender/private/pickboundingvolumejob_p.h>
#include <Qt3DRender/private/objectpicker_p.h>
#include <Qt3DRender/qobjectpicker.h>
diff --git a/tests/auto/render/raycasting/tst_raycasting.cpp b/tests/auto/render/raycasting/tst_raycasting.cpp
index 814034b5a..ad26d8011 100644
--- a/tests/auto/render/raycasting/tst_raycasting.cpp
+++ b/tests/auto/render/raycasting/tst_raycasting.cpp
@@ -36,12 +36,11 @@
#include <QtTest/QtTest>
#include <Qt3DRender/private/entity_p.h>
-#include <Qt3DRender/qraycastingservice.h>
+#include <Qt3DRender/private/qraycastingservice_p.h>
#include <Qt3DRender/private/sphere_p.h>
#include <Qt3DRender/private/entity_p.h>
#include <Qt3DRender/private/pickboundingvolumejob_p.h>
-#include <Qt3DRender/qraycastingservice.h>
-#include <Qt3DCore/qboundingvolumeprovider.h>
+#include <Qt3DRender/private/qboundingvolumeprovider_p.h>
#include <Qt3DCore/qray3d.h>
#include <Qt3DCore/qcamera.h>
diff --git a/tests/auto/render/triangleboundingvolume/tst_triangleboundingvolume.cpp b/tests/auto/render/triangleboundingvolume/tst_triangleboundingvolume.cpp
index 2a35d06c5..5d6cd7711 100644
--- a/tests/auto/render/triangleboundingvolume/tst_triangleboundingvolume.cpp
+++ b/tests/auto/render/triangleboundingvolume/tst_triangleboundingvolume.cpp
@@ -37,11 +37,11 @@
#include <QtTest/QtTest>
#include <Qt3DRender/private/entity_p.h>
#include <Qt3DRender/private/triangleboundingvolume_p.h>
-#include <Qt3DRender/qraycastingservice.h>
+#include <Qt3DRender/private/qraycastingservice_p.h>
#include <Qt3DCore/qray3d.h>
#include <Qt3DCore/qcameralens.h>
#include <Qt3DCore/qcamera.h>
-#include <Qt3DCore/qboundingvolume.h>
+#include <Qt3DRender/private/qboundingvolume_p.h>
class tst_TriangleBoundingVolume : public QObject
{
@@ -64,7 +64,7 @@ private Q_SLOTS:
QCOMPARE(volume.a(), QVector3D());
QCOMPARE(volume.b(), QVector3D());
QCOMPARE(volume.c(), QVector3D());
- QCOMPARE(volume.type(), Qt3DCore::QBoundingVolume::Triangle);
+ QCOMPARE(volume.type(), Qt3DRender::QBoundingVolume::Triangle);
}
void transformed_data()
diff --git a/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp b/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp
index f8af202ee..5bb7a1e6f 100644
--- a/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp
+++ b/tests/auto/render/trianglesextractor/tst_trianglesextractor.cpp
@@ -380,7 +380,7 @@ private Q_SLOTS:
// WHEN
Qt3DRender::Render::TrianglesExtractor extractor(bGeomRenderer, manager);
- QVector<Qt3DCore::QBoundingVolume *> volumes = extractor.extract(Qt3DCore::QNodeId());
+ QVector<Qt3DRender::QBoundingVolume *> volumes = extractor.extract(Qt3DCore::QNodeId());
// THEN
QVERIFY(!volumes.empty());