paysages3d/src/interface/modeler/quickapp/ModelerCameras.cpp

65 lines
1.4 KiB
C++
Raw Normal View History

#include "ModelerCameras.h"
#include "MainModelerWindow.h"
#include "OpenGLRenderer.h"
#include "Scenery.h"
#include "CameraDefinition.h"
ModelerCameras::ModelerCameras(MainModelerWindow *parent):
QObject(parent), parent(parent)
{
render = new CameraDefinition();
topdown = new CameraDefinition();
current = new CameraDefinition();
active = render;
topdown->strafeForward(-10.0);
topdown->strafeUp(25.0);
topdown->rotatePitch(-0.8);
// Watch GUI choice
QObject *widget = parent->findQmlObject("camera_choice");
connect(widget, SIGNAL(stateChanged(QString)), this, SLOT(changeActiveCamera(QString)));
// Start update timer
startTimer(50);
}
ModelerCameras::~ModelerCameras()
{
delete current;
delete render;
delete topdown;
}
2014-09-26 15:46:39 +00:00
void ModelerCameras::processZoom(double value)
{
active->strafeForward(value);
}
void ModelerCameras::processScroll(double xvalue, double yvalue)
{
active->strafeRight(xvalue);
active->strafeUp(yvalue);
}
void ModelerCameras::timerEvent(QTimerEvent *)
{
OpenGLRenderer *renderer = parent->getRenderer();
2014-09-26 15:46:39 +00:00
current->transitionToAnother(active, 0.3);
renderer->setCamera(current);
}
void ModelerCameras::changeActiveCamera(const QString &name)
{
if (name == "Render camera")
{
active = render;
}
else if (name == "Top-down camera")
{
active = topdown;
}
}