git-svn-id: svn://db.shs.com.ru/libs@599 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -110,44 +110,12 @@ void GLWidget::addObject(GLObjectBase * o) {
|
|||||||
|
|
||||||
|
|
||||||
QByteArray GLWidget::saveCamera() {
|
QByteArray GLWidget::saveCamera() {
|
||||||
ChunkStream cs;
|
return view_->saveCamera();
|
||||||
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) {
|
void GLWidget::restoreCamera(const QByteArray &ba) {
|
||||||
if (ba.isEmpty()) return;
|
view_->restoreCamera(ba);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -768,3 +768,46 @@ void QGLView::mouseDoubleClickEvent(QMouseEvent * e) {
|
|||||||
if (e->buttons().testFlag(Qt::MidButton))
|
if (e->buttons().testFlag(Qt::MidButton))
|
||||||
emit doubleClick();
|
emit doubleClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QByteArray QGLView::saveCamera() {
|
||||||
|
ChunkStream cs;
|
||||||
|
const Camera * c = 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 QGLView::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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
camera()->setPos(pos);
|
||||||
|
camera()->setAim(aim);
|
||||||
|
camera()->setAngles(ang);
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -172,6 +172,9 @@ public:
|
|||||||
GLObjectBase * selectedObject() const {return sel_obj;}
|
GLObjectBase * selectedObject() const {return sel_obj;}
|
||||||
|
|
||||||
void glReleaseTextures(int channels = 8);
|
void glReleaseTextures(int channels = 8);
|
||||||
|
QByteArray saveCamera();
|
||||||
|
void restoreCamera(const QByteArray & ba);
|
||||||
|
|
||||||
|
|
||||||
GLfloat aspect, iaspect;
|
GLfloat aspect, iaspect;
|
||||||
QMatrix4x4 cur_mvpm;
|
QMatrix4x4 cur_mvpm;
|
||||||
|
|||||||
Reference in New Issue
Block a user