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:
@@ -105,7 +105,49 @@ qreal GLWidget::selectionHaloFillAlpha() const {
|
|||||||
|
|
||||||
|
|
||||||
void GLWidget::addObject(GLObjectBase * o) {
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,8 @@ public:
|
|||||||
qreal selectionHaloFillAlpha() const;
|
qreal selectionHaloFillAlpha() const;
|
||||||
|
|
||||||
void addObject(GLObjectBase * o);
|
void addObject(GLObjectBase * o);
|
||||||
|
QByteArray saveCamera();
|
||||||
|
void restoreCamera(const QByteArray & ba);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void stop();
|
void stop();
|
||||||
|
|||||||
Reference in New Issue
Block a user