blob: 86afbe01850f051bcd968c0178104f337841a72b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "q3dlight_p.h"
QT_BEGIN_NAMESPACE
/*!
* \class Q3DLight
* \inmodule QtDataVisualization
* \brief Representation of a light source in 3D space.
* \since QtDataVisualization 1.0
*
* Q3DLight represents a monochrome light source in 3D space.
*
* \note Default light has isAutoPosition() \c true.
*/
/*!
* \qmltype Light3D
* \inqmlmodule QtDataVisualization
* \since QtDataVisualization 1.0
* \ingroup datavisualization_qml
* \instantiates Q3DLight
* \brief Representation of a light source in 3D space.
*
* Light3D represents a monochrome light source in 3D space.
*
* \note Default light has autoPosition \c true.
*/
/*!
* \qmlproperty bool Light3D::autoPosition
* \since QtDataVisualization 1.3
* Defines whether the light position follows the camera automatically.
* \note Has no effect if shadows are enabled. Remember to disable shadows before setting light's
* position, or it will be overwritten by automatic positioning if this
* property is \c false.
*/
/*!
* Constructs a new 3D light located at origin. An optional \a parent parameter can be given
* and is then passed to QObject constructor.
*/
Q3DLight::Q3DLight(QObject *parent) :
Q3DObject(parent),
d_ptr(new Q3DLightPrivate(this))
{
}
/*!
* Destroys the light object.
*/
Q3DLight::~Q3DLight()
{
}
/*!
* \property Q3DLight::autoPosition
* \since QtDataVisualization 5.9
* \brief Whether the light position follows the camera automatically.
* \note Has no effect if shadows are enabled. Remember to disable shadows before setting light's
* position, or it will be overwritten by automatic positioning if
* \c isAutoPosition() is \c false.
*/
void Q3DLight::setAutoPosition(bool enabled)
{
if (enabled != d_ptr->m_automaticLight) {
d_ptr->m_automaticLight = enabled;
setDirty(true);
emit autoPositionChanged(enabled);
}
}
bool Q3DLight::isAutoPosition()
{
return d_ptr->m_automaticLight;
}
Q3DLightPrivate::Q3DLightPrivate(Q3DLight *q) :
q_ptr(q),
m_automaticLight(false)
{
}
Q3DLightPrivate::~Q3DLightPrivate()
{
}
void Q3DLightPrivate::sync(Q3DLight &other)
{
if (q_ptr->isDirty()) {
other.setPosition(q_ptr->position());
other.setAutoPosition(q_ptr->isAutoPosition());
q_ptr->setDirty(false);
}
}
QT_END_NAMESPACE
|