// // Created by Anthony J. Thibault 2018/08/06 // Copyright 2018 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_AnimStats_h #define hifi_AnimStats_h #include #include class AnimStats : public QQuickItem { Q_OBJECT HIFI_QML_DECL Q_PROPERTY(QStringList animAlphaValues READ animAlphaValues NOTIFY animAlphaValuesChanged) Q_PROPERTY(QStringList animVars READ animVars NOTIFY animVarsChanged) Q_PROPERTY(QStringList animStateMachines READ animStateMachines NOTIFY animStateMachinesChanged) Q_PROPERTY(QString positionText READ positionText NOTIFY positionTextChanged) Q_PROPERTY(QString rotationText READ rotationText NOTIFY rotationTextChanged) Q_PROPERTY(QString velocityText READ velocityText NOTIFY velocityTextChanged) Q_PROPERTY(QString recenterText READ recenterText NOTIFY recenterTextChanged) Q_PROPERTY(QString sittingText READ sittingText NOTIFY sittingTextChanged) Q_PROPERTY(QString walkingText READ walkingText NOTIFY walkingTextChanged) Q_PROPERTY(QString overrideJointText READ overrideJointText NOTIFY overrideJointTextChanged) Q_PROPERTY(QString flowText READ flowText NOTIFY flowTextChanged) Q_PROPERTY(QString networkGraphText READ networkGraphText NOTIFY networkGraphTextChanged) public: static AnimStats* getInstance(); AnimStats(QQuickItem* parent = nullptr); void updateStats(bool force = false); QStringList animAlphaValues() const { return _animAlphaValues; } QStringList animVars() const { return _animVarsList; } QStringList animStateMachines() const { return _animStateMachines; } QString positionText() const { return _positionText; } QString rotationText() const { return _rotationText; } QString velocityText() const { return _velocityText; } QString recenterText() const { return _recenterText; } QString sittingText() const { return _sittingText; } QString walkingText() const { return _walkingText; } QString overrideJointText() const { return _overrideJointText; } QString flowText() const { return _flowText; } QString networkGraphText() const { return _networkGraphText; } public slots: void forceUpdateStats() { updateStats(true); } signals: void animAlphaValuesChanged(); void animVarsChanged(); void animStateMachinesChanged(); void positionTextChanged(); void rotationTextChanged(); void velocityTextChanged(); void recenterTextChanged(); void sittingTextChanged(); void walkingTextChanged(); void overrideJointTextChanged(); void flowTextChanged(); void networkGraphTextChanged(); private: QStringList _animAlphaValues; AnimContext::DebugAlphaMap _prevDebugAlphaMap; // alpha values from previous frame std::map _animAlphaValueChangedTimers; // last time alpha value has changed QStringList _animVarsList; std::map _prevAnimVars; // anim vars from previous frame std::map _animVarChangedTimers; // last time animVar value has changed. QStringList _animStateMachines; QString _positionText; QString _rotationText; QString _velocityText; QString _recenterText; QString _sittingText; QString _walkingText; QString _overrideJointText; QString _flowText; QString _networkGraphText; }; #endif // hifi_AnimStats_h