diff --git a/interface/src/Recorder.cpp b/interface/src/Recorder.cpp index 85e2535141..87352fed98 100644 --- a/interface/src/Recorder.cpp +++ b/interface/src/Recorder.cpp @@ -11,6 +11,18 @@ #include "Recorder.h" +void RecordingFrame::setBlendshapeCoefficients(QVector blendshapeCoefficients) { + _blendshapeCoefficients = blendshapeCoefficients; +} + +void RecordingFrame::setJointRotations(QVector jointRotations) { + _jointRotations = jointRotations; +} + +void RecordingFrame::setTranslation(glm::vec3 translation) { + _translation = translation; +} + void Recording::addFrame(int timestamp, RecordingFrame &frame) { _timestamps << timestamp; _frames << frame; @@ -21,16 +33,9 @@ void Recording::clear() { _frames.clear(); } -void writeRecordingToFile(Recording& recording, QString file) { - qDebug() << "Writing recording to " << file; +Recorder::Recorder(AvatarData* avatar) : _avatar(avatar) { } -Recording& readRecordingFromFile(QString file) { - qDebug() << "Reading recording from " << file; - return *(new Recording()); -} - - bool Recorder::isRecording() const { return _timer.isValid(); } @@ -58,4 +63,53 @@ void Recorder::saveToFile(QString file) { } writeRecordingToFile(_recording, file); +} + +void Recorder::record() { + qDebug() << "Recording " << _avatar; + RecordingFrame frame; + frame.setBlendshapeCoefficients(_avatar->_) +} + +Player::Player(AvatarData* avatar) : _avatar(avatar) { +} + +bool Player::isPlaying() const { + return _timer.isValid(); +} + +qint64 Player::elapsed() const { + if (isPlaying()) { + return _timer.elapsed(); + } else { + return 0; + } +} + +void Player::startPlaying() { + _timer.start(); +} + +void Player::stopPlaying() { + _timer.invalidate(); +} + +void Player::loadFromFile(QString file) { + _recording.clear(); + readRecordingFromFile(_recording, file); +} + +void Player::play() { + qDebug() << "Playing " << _avatar; +} + +void writeRecordingToFile(Recording& recording, QString file) { + // TODO + qDebug() << "Writing recording to " << file; +} + +Recording& readRecordingFromFile(Recording& recording, QString file) { + // TODO + qDebug() << "Reading recording from " << file; + return recording; } \ No newline at end of file diff --git a/interface/src/Recorder.h b/interface/src/Recorder.h index ffb013723c..2d32e4a9b0 100644 --- a/interface/src/Recorder.h +++ b/interface/src/Recorder.h @@ -17,8 +17,14 @@ #include #include +#include +#include + +#include #include +class Recording; + /// Stores the different values associated to one recording frame class RecordingFrame { public: @@ -26,11 +32,19 @@ public: QVector getJointRotations() const { return _jointRotations; } glm::vec3 getTranslation() const { return _translation; } -private: +protected: + void setBlendshapeCoefficients(QVector blendshapeCoefficients); + void setJointRotations(QVector jointRotations); + void setTranslation(glm::vec3 translation); +private: QVector _blendshapeCoefficients; QVector _jointRotations; glm::vec3 _translation; + + friend class Recorder; + friend void writeRecordingToFile(Recording& recording, QString file); + friend Recording* readRecordingFromFile(QString file); }; /// Stores a recording @@ -51,15 +65,16 @@ private: QVector _frames; friend class Recorder; + friend class Player; friend void writeRecordingToFile(Recording& recording, QString file); - friend Recording& readRecordingFromFile(QString file); + friend Recording* readRecordingFromFile(QString file); }; /// Records a recording class Recorder { public: - Recorder(); + Recorder(AvatarData* avatar); bool isRecording() const; qint64 elapsed() const; @@ -68,18 +83,37 @@ public slots: void startRecording(); void stopRecording(); void saveToFile(QString file); + void record(); private: QElapsedTimer _timer; Recording _recording; + + AvatarData* _avatar; }; /// Plays back a recording class Player { public: + Player(AvatarData* avatar); + + bool isPlaying() const; + qint64 elapsed() const; + +public slots: + void startPlaying(); + void stopPlaying(); + void loadFromFile(QString file); + void play(); private: + QElapsedTimer _timer; Recording _recording; + + AvatarData* _avatar; }; +void writeRecordingToFile(Recording& recording, QString file); +Recording& readRecordingFromFile(Recording& recording, QString file); + #endif // hifi_Recorder_h \ No newline at end of file