Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
infinitegrid.cpp
Go to the documentation of this file.
1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#include "infinitegrid_p.h"
5#include <QtQuick3D/private/qquick3dviewport_p.h>
6
8
59
63
65{
66 return m_visible;
67}
68
70{
71 if (m_visible == newVisible)
72 return;
73 m_visible = newVisible;
75 if (m_sceneEnv)
76 m_sceneEnv->setGridEnabled(m_visible);
77}
78
80{
81 return m_gridInterval;
82}
83
84void QQuick3DInfiniteGrid::setGridInterval(float newGridInterval)
85{
86 if (qFuzzyCompare(m_gridInterval, newGridInterval))
87 return;
88 m_gridInterval = newGridInterval;
90 if (m_sceneEnv && !qFuzzyIsNull(m_gridInterval))
91 m_sceneEnv->setGridScale(0.1 / m_gridInterval);
92}
93
95{
96 m_componentComplete = true;
97 auto *p = parent();
98 QQuick3DSceneEnvironment *sceneEnv = nullptr;
99 while (p && !sceneEnv) {
100 sceneEnv = qobject_cast<QQuick3DSceneEnvironment *>(p);
101 p = p->parent();
102 }
103 if (sceneEnv) {
104 m_sceneEnv = sceneEnv;
105 Q_ASSERT(m_sceneEnv);
106 m_sceneEnv->setGridEnabled(m_visible);
107 if (!qFuzzyIsNull(m_gridInterval))
108 m_sceneEnv->setGridScale(0.1 / m_gridInterval);
109 updateGridFlags();
110 } else {
111 qWarning("InfiniteGrid needs to be a child of SceneEnvironment.");
112 }
113}
114
118
120{
121 return m_gridAxes;
122}
123
125{
126 if (m_gridAxes == newGridAxes)
127 return;
128 m_gridAxes = newGridAxes;
130 if (m_sceneEnv)
131 updateGridFlags();
132}
133
134void QQuick3DInfiniteGrid::updateGridFlags()
135{
136 enum GridFlags { NoFlag = 0, DrawAxis = 1 };
137 uint newFlags = m_gridAxes ? DrawAxis : NoFlag;
138 m_sceneEnv->setGridFlags(newFlags);
139}
140
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
void setVisible(bool newVisible)
void classBegin() override
Invoked after class creation, but before any properties have been set.
~QQuick3DInfiniteGrid() override
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
void setGridInterval(float newGridInterval)
void setGridAxes(bool newGridAxes)
QQuick3DInfiniteGrid()
\qmlproperty float InfiniteGrid::gridInterval
void setGridScale(float newGridScale)
void setGridEnabled(bool newGridEnabled)
Combined button and popup list for selecting options.
bool qFuzzyCompare(qfloat16 p1, qfloat16 p2) noexcept
Definition qfloat16.h:333
bool qFuzzyIsNull(qfloat16 f) noexcept
Definition qfloat16.h:349
#define qWarning
Definition qlogging.h:166
GLfloat GLfloat p
[1]
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
#define emit
unsigned int uint
Definition qtypes.h:34