mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 03:04:33 +02:00
Work on Recording structure
This commit is contained in:
parent
33d646d92d
commit
96ee9e3f75
2 changed files with 99 additions and 11 deletions
|
@ -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;
|
||||
}
|
|
@ -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
|
Loading…
Reference in a new issue