add save/restore camera to glwidget

git-svn-id: svn://db.shs.com.ru/libs@581 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
2019-08-01 12:10:36 +00:00
parent 7d826ee395
commit 959ad3f722
2 changed files with 45 additions and 1 deletions

View File

@@ -105,7 +105,49 @@ qreal GLWidget::selectionHaloFillAlpha() const {
void GLWidget::addObject(GLObjectBase * o) {
view_->addObject(o);
view_->addObject(o);
}
QByteArray GLWidget::saveCamera() {
ChunkStream cs;
const Camera * c = view()->camera();
cs.add(1, c->posX());
cs.add(2, c->posY());
cs.add(3, c->posZ());
cs.add(4, c->aim().x());
cs.add(5, c->aim().y());
cs.add(6, c->aim().z());
cs.add(7, c->angleZ());
cs.add(8, c->angleXY());
cs.add(9, c->angleRoll());
cs.add(10, c->FOV());
return cs.data();
}
void GLWidget::restoreCamera(const QByteArray &ba) {
if (ba.isEmpty()) return;
ChunkStream cs(ba);
QVector3D pos, aim, ang;
while (!cs.atEnd()) {
switch (cs.read()) {
case 1: pos.setX(cs.getData<float>()); break;
case 2: pos.setY(cs.getData<float>()); break;
case 3: pos.setZ(cs.getData<float>()); break;
case 4: aim.setX(cs.getData<float>()); break;
case 5: aim.setY(cs.getData<float>()); break;
case 6: aim.setZ(cs.getData<float>()); break;
case 7: ang.setZ(cs.getData<float>()); break;
case 8: ang.setY(cs.getData<float>()); break;
case 9: ang.setX(cs.getData<float>()); break;
case 10: setFOV(cs.getData<float>()); break;
default: break;
}
}
view()->camera()->setPos(pos);
view()->camera()->setAim(aim);
view()->camera()->setAngles(ang);
}

View File

@@ -50,6 +50,8 @@ public:
qreal selectionHaloFillAlpha() const;
void addObject(GLObjectBase * o);
QByteArray saveCamera();
void restoreCamera(const QByteArray & ba);
public slots:
void stop();