1// Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QT3DRENDER_RENDER_COMPUTEFILTEREDBOUNDINGVOLUMEJOB_H
5#define QT3DRENDER_RENDER_COMPUTEFILTEREDBOUNDINGVOLUMEJOB_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists for the convenience
12// of other Qt classes. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <Qt3DCore/qaspectjob.h>
19#include <private/qt3drender_global_p.h>
20
21#include <QtCore/QSharedPointer>
22
23QT_BEGIN_NAMESPACE
24
25namespace Qt3DCore {
26class QAspectManager;
27}
28
29namespace Qt3DRender {
30namespace Render {
31
32class Entity;
33class NodeManagers;
34class Sphere;
35class ComputeFilteredBoundingVolumeJobPrivate;
36
37class Q_3DRENDERSHARED_PRIVATE_EXPORT ComputeFilteredBoundingVolumeJob : public Qt3DCore::QAspectJob
38{
39public:
40 ComputeFilteredBoundingVolumeJob();
41
42 void setRoot(Entity *root);
43 void setManagers(NodeManagers *manager);
44 void ignoreSubTree(Entity *node);
45 void run() override;
46
47protected:
48 virtual void finished(Qt3DCore::QAspectManager *aspectManager, const Qt3DRender::Render::Sphere &sphere); // called in main thread
49
50private:
51 Q_DECLARE_PRIVATE(ComputeFilteredBoundingVolumeJob)
52 Entity *m_root;
53 Entity *m_ignoreSubTree;
54 NodeManagers *m_manager;
55};
56
57typedef QSharedPointer<ComputeFilteredBoundingVolumeJob> ComputeFilteredBoundingVolumeJobPtr;
58
59} // namespace Render
60} // namespace Qt3DRender
61
62QT_END_NAMESPACE
63
64#endif // QT3DRENDER_RENDER_COMPUTEFILTEREDBOUNDINGVOLUMEJOB_H
65

source code of qt3d/src/render/jobs/computefilteredboundingvolumejob_p.h