Overte C++ Documentation
AnimStats.h
1 //
2 // Created by Anthony J. Thibault 2018/08/06
3 // Copyright 2018 High Fidelity, Inc.
4 //
5 // Distributed under the Apache License, Version 2.0.
6 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7 //
8 
9 #ifndef hifi_AnimStats_h
10 #define hifi_AnimStats_h
11 
12 #include <OffscreenQmlElement.h>
13 #include <AnimContext.h>
14 
15 class AnimStats : public QQuickItem {
16  Q_OBJECT
17  HIFI_QML_DECL
18 
19  Q_PROPERTY(QStringList animAlphaValues READ animAlphaValues NOTIFY animAlphaValuesChanged)
20  Q_PROPERTY(QStringList animVars READ animVars NOTIFY animVarsChanged)
21  Q_PROPERTY(QStringList animStateMachines READ animStateMachines NOTIFY animStateMachinesChanged)
22  Q_PROPERTY(QString positionText READ positionText NOTIFY positionTextChanged)
23  Q_PROPERTY(QString rotationText READ rotationText NOTIFY rotationTextChanged)
24  Q_PROPERTY(QString velocityText READ velocityText NOTIFY velocityTextChanged)
25  Q_PROPERTY(QString recenterText READ recenterText NOTIFY recenterTextChanged)
26  Q_PROPERTY(QString sittingText READ sittingText NOTIFY sittingTextChanged)
27  Q_PROPERTY(QString walkingText READ walkingText NOTIFY walkingTextChanged)
28  Q_PROPERTY(QString overrideJointText READ overrideJointText NOTIFY overrideJointTextChanged)
29  Q_PROPERTY(QString flowText READ flowText NOTIFY flowTextChanged)
30  Q_PROPERTY(QString networkGraphText READ networkGraphText NOTIFY networkGraphTextChanged)
31 
32 public:
33  static AnimStats* getInstance();
34 
35  AnimStats(QQuickItem* parent = nullptr);
36 
37  void updateStats(bool force = false);
38 
39  QStringList animAlphaValues() const { return _animAlphaValues; }
40  QStringList animVars() const { return _animVarsList; }
41  QStringList animStateMachines() const { return _animStateMachines; }
42 
43  QString positionText() const { return _positionText; }
44  QString rotationText() const { return _rotationText; }
45  QString velocityText() const { return _velocityText; }
46  QString recenterText() const { return _recenterText; }
47  QString sittingText() const { return _sittingText; }
48  QString walkingText() const { return _walkingText; }
49  QString overrideJointText() const { return _overrideJointText; }
50  QString flowText() const { return _flowText; }
51  QString networkGraphText() const { return _networkGraphText; }
52 
53 public slots:
54  void forceUpdateStats() { updateStats(true); }
55 
56 signals:
57 
58  void animAlphaValuesChanged();
59  void animVarsChanged();
60  void animStateMachinesChanged();
61  void positionTextChanged();
62  void rotationTextChanged();
63  void velocityTextChanged();
64  void recenterTextChanged();
65  void sittingTextChanged();
66  void walkingTextChanged();
67  void overrideJointTextChanged();
68  void flowTextChanged();
69  void networkGraphTextChanged();
70 
71 private:
72  QStringList _animAlphaValues;
73  AnimContext::DebugAlphaMap _prevDebugAlphaMap; // alpha values from previous frame
74  std::map<QString, qint64> _animAlphaValueChangedTimers; // last time alpha value has changed
75 
76  QStringList _animVarsList;
77  std::map<QString, QString> _prevAnimVars; // anim vars from previous frame
78  std::map<QString, qint64> _animVarChangedTimers; // last time animVar value has changed.
79 
80  QStringList _animStateMachines;
81 
82  QString _positionText;
83  QString _rotationText;
84  QString _velocityText;
85  QString _recenterText;
86  QString _sittingText;
87  QString _walkingText;
88  QString _overrideJointText;
89  QString _flowText;
90  QString _networkGraphText;
91 };
92 
93 #endif // hifi_AnimStats_h