// Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef CUSTOMGEOMETRY_H #define CUSTOMGEOMETRY_H #include #include #include #include class CustomGeometry : public QQuick3DGeometry { //! [geometry] Q_OBJECT QML_NAMED_ELEMENT(CustomGeometry) Q_PROPERTY(QList positions READ positions WRITE setPositions NOTIFY positionsChanged) Q_PROPERTY(QList joints READ joints WRITE setJoints NOTIFY jointsChanged) Q_PROPERTY(QList weights READ weights WRITE setWeights NOTIFY weightsChanged) Q_PROPERTY(QList indexes READ indexes WRITE setIndexes NOTIFY indexesChanged) //! [geometry] public: CustomGeometry(QQuick3DObject *parent = nullptr); QList positions() const; QList joints() const; QList weights() const; QList indexes() const; public Q_SLOTS: void setPositions(const QList &positions); void setJoints(const QList &joints); void setWeights(const QList &weights); void setIndexes(const QList &indexes); Q_SIGNALS: void positionsChanged(); void jointsChanged(); void weightsChanged(); void indexesChanged(); protected: QSSGRenderGraphObject *updateSpatialNode(QSSGRenderGraphObject *node) override; private: QList m_positions; QList m_joints; QList m_weights; QList m_indexes; bool m_vertexDirty = true; bool m_indexDirty = false; QByteArray m_vertexBuffer; QByteArray m_indexBuffer; }; #endif // CUSTOMGEOMETRY_H