Qt
6.x
The Qt SDK
Loading...
Searching...
No Matches
qquick3dparticleaffector_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4
#ifndef QQUICK3DPARTICLEAFFECTOR_H
5
#define QQUICK3DPARTICLEAFFECTOR_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 purely as an
12
// implementation detail. 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 <QObject>
19
#include <QList>
20
#include <QQmlListProperty>
21
#include <QtQuick3D/private/qquick3dnode_p.h>
22
#include <QtQuick3DParticles/private/qquick3dparticledata_p.h>
23
#include <QtQuick3DParticles/private/qquick3dparticlesystem_p.h>
24
#include <QtQuick3DParticles/private/qquick3dparticleemitter_p.h>
25
26
QT_BEGIN_NAMESPACE
27
28
class
Q_QUICK3DPARTICLES_EXPORT
QQuick3DParticleAffector
:
public
QQuick3DNode
29
{
30
Q_OBJECT
31
Q_PROPERTY
(
QQuick3DParticleSystem
*system READ system WRITE setSystem NOTIFY systemChanged)
32
Q_PROPERTY
(
QQmlListProperty<QQuick3DParticle>
particles READ particles)
33
Q_PROPERTY
(
bool
enabled
READ
enabled
WRITE setEnabled NOTIFY enabledChanged)
34
QML_NAMED_ELEMENT
(Affector3D)
35
QML_UNCREATABLE
(
"Affector3D is abstract"
)
36
QML_ADDED_IN_VERSION
(6, 2)
37
38
public
:
39
QQuick3DParticleAffector
(
QQuick3DNode
*
parent
=
nullptr
);
40
~QQuick3DParticleAffector
()
override
;
41
42
QQuick3DParticleSystem
*system()
const
;
43
bool
enabled
()
const
;
44
45
// Particles list handling
46
QQmlListProperty<QQuick3DParticle>
particles
();
47
void
appendParticle(
QQuick3DParticle
*);
48
qsizetype
particleCount()
const
;
49
QQuick3DParticle
*particle(
qsizetype
)
const
;
50
void
clearParticles();
51
void
replaceParticle(
qsizetype
,
QQuick3DParticle
*);
52
void
removeLastParticle();
53
54
public
Q_SLOTS
:
55
void
setSystem(
QQuick3DParticleSystem
*system);
56
void
setEnabled(
bool
enabled
);
57
58
Q_SIGNALS
:
59
void
update
();
60
void
systemChanged
();
61
void
enabledChanged
();
62
63
protected
:
64
QList<QQuick3DParticle *>
m_particles
;
65
QQuick3DNode
*m_systemSharedParent =
nullptr
;
66
67
private
:
68
friend
class
QQuick3DParticleSystem
;
69
// From QQmlParserStatus
70
void
componentComplete
()
override
;
71
72
// Called once per frame for all the enabled affectors.
73
virtual
void
prepareToAffect();
74
// Called for each living particle attached to the attractor.
75
virtual
void
affectParticle
(
const
QQuick3DParticleData
&sd,
QQuick3DParticleDataCurrent
*
d
,
float
time
) = 0;
76
77
static
void
appendParticle(
QQmlListProperty<QQuick3DParticle>
*,
QQuick3DParticle
*);
78
static
qsizetype
particleCount(
QQmlListProperty<QQuick3DParticle>
*);
79
static
QQuick3DParticle
*particle(
QQmlListProperty<QQuick3DParticle>
*,
qsizetype
);
80
static
void
clearParticles(
QQmlListProperty<QQuick3DParticle>
*);
81
static
void
replaceParticle(
QQmlListProperty<QQuick3DParticle>
*,
qsizetype
,
QQuick3DParticle
*);
82
static
void
removeLastParticle(
QQmlListProperty<QQuick3DParticle>
*);
83
84
QQuick3DParticleSystem
*m_system =
nullptr
;
85
bool
m_enabled =
true
;
86
QMap<QQuick3DParticle *, QMetaObject::Connection>
m_connections;
87
};
88
89
QT_END_NAMESPACE
90
91
#endif
// QQUICK3DPARTICLEAFFECTOR_H
QList
Definition
qlist.h:74
QMap
Definition
qmap.h:186
QQmlListProperty
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
Definition
qqmllist.h:24
QQuick3DNode
Definition
qquick3dnode_p.h:30
QQuick3DNode::componentComplete
void componentComplete() override
Invoked after the root component that caused this instantiation has completed construction.
Definition
qquick3dnode.cpp:522
QQuick3DParticleAffector
Definition
qquick3dparticleaffector_p.h:29
QQuick3DParticleAffector::systemChanged
void systemChanged()
QQuick3DParticleAffector::m_particles
QList< QQuick3DParticle * > m_particles
Definition
qquick3dparticleaffector_p.h:64
QQuick3DParticleAffector::affectParticle
virtual void affectParticle(const QQuick3DParticleData &sd, QQuick3DParticleDataCurrent *d, float time)=0
QQuick3DParticleAffector::update
void update()
QQuick3DParticleAffector::enabledChanged
void enabledChanged()
QQuick3DParticleAffector::particles
QQmlListProperty< QQuick3DParticle > particles()
QQuick3DParticleSystem
Definition
qquick3dparticlesystem_p.h:52
QQuick3DParticle
Definition
qquick3dparticle_p.h:29
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1545
enabled
GLenum GLenum GLsizei const GLuint GLboolean enabled
Definition
qopengles2ext.h:150
QML_UNCREATABLE
#define QML_UNCREATABLE(REASON)
Definition
qqmlintegration.h:55
QML_NAMED_ELEMENT
#define QML_NAMED_ELEMENT(NAME)
Definition
qqmlintegration.h:52
QML_ADDED_IN_VERSION
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
Definition
qqmlintegration.h:86
Q_PROPERTY
#define Q_PROPERTY(...)
Definition
qtmetamacros.h:56
Q_OBJECT
#define Q_OBJECT
Definition
qtmetamacros.h:117
Q_SLOTS
#define Q_SLOTS
Definition
qtmetamacros.h:44
Q_SIGNALS
#define Q_SIGNALS
Definition
qtmetamacros.h:45
qsizetype
ptrdiff_t qsizetype
Definition
qtypes.h:70
enabled
#define enabled
Definition
qopenglext.h:3098
d
double d
Definition
src_corelib_text_qlocale.cpp:9
time
QTime time
[5]
Definition
src_corelib_time_qdatetime.cpp:52
QQuick3DParticleDataCurrent
Definition
qquick3dparticledata_p.h:38
QQuick3DParticleData
Definition
qquick3dparticledata_p.h:49
parent
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent
Definition
uiaclientinterfaces_p.h:209
qtquick3d
src
quick3dparticles
qquick3dparticleaffector_p.h
Generated by
1.9.7