Work on Recording structure

This commit is contained in:
Atlante45 2014-08-11 13:54:36 -07:00
parent 33d646d92d
commit 96ee9e3f75
2 changed files with 99 additions and 11 deletions

View file

@ -11,6 +11,18 @@
#include "Recorder.h"
void RecordingFrame::setBlendshapeCoefficients(QVector<float> blendshapeCoefficients) {
_blendshapeCoefficients = blendshapeCoefficients;
}
void RecordingFrame::setJointRotations(QVector<glm::quat> 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;
}

View file

@ -17,8 +17,14 @@
#include <QHash>
#include <QVector>
#include <glm/glm.hpp>
#include <glm/gtx/quaternion.hpp>
#include <AvatarData.h>
#include <SharedUtil.h>
class Recording;
/// Stores the different values associated to one recording frame
class RecordingFrame {
public:
@ -26,11 +32,19 @@ public:
QVector<glm::quat> getJointRotations() const { return _jointRotations; }
glm::vec3 getTranslation() const { return _translation; }
private:
protected:
void setBlendshapeCoefficients(QVector<float> blendshapeCoefficients);
void setJointRotations(QVector<glm::quat> jointRotations);
void setTranslation(glm::vec3 translation);
private:
QVector<float> _blendshapeCoefficients;
QVector<glm::quat> _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<RecordingFrame> _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