17#include <QMdiSubWindow>
18#include <QSurfaceFormat>
22#include "aeongames/Renderer.hpp"
24#include "WorldEditor.h"
25#include "MainWindow.h"
26#include "SceneWindow.h"
27#include "CameraSettings.h"
36 QSurfaceFormat surface_format = QSurfaceFormat::defaultFormat();
38 surface_format.setColorSpace ( QColorSpace::SRgb );
39 surface_format.setRenderableType ( QSurfaceFormat::OpenGL );
40 surface_format.setSwapBehavior ( QSurfaceFormat::DoubleBuffer );
41 surface_format.setRedBufferSize ( 8 );
42 surface_format.setGreenBufferSize ( 8 );
43 surface_format.setBlueBufferSize ( 8 );
44 surface_format.setAlphaBufferSize ( 8 );
45 surface_format.setStencilBufferSize ( 8 );
46 surface_format.setDepthBufferSize ( 24 );
48 QSurfaceFormat::setDefaultFormat ( surface_format );
53 void MainWindow::on_actionExit_triggered()
55 mUi.mdiArea->closeAllSubWindows();
59 void MainWindow::on_actionNewScene_triggered()
61 SceneWindow* sceneWindow;
63 mdiSubWindow = mUi.mdiArea->addSubWindow ( sceneWindow =
new SceneWindow ( mUi.mdiArea ) );
64 mdiSubWindow->setAttribute ( Qt::WA_DeleteOnClose );
65 mdiSubWindow->setWindowTitle ( tr (
"Untitled Scene" ) );
66 mdiSubWindow->showMaximized();
67 mdiSubWindow->setMinimumSize ( QSize ( 128, 128 ) );
68 mUi.actionSave->setEnabled (
true );
71 void MainWindow::on_actionOpen_triggered()
73 QString filename = QFileDialog::getOpenFileName (
this,
76 tr (
"Scene Files (*.scn *.txt)" ) );
78 if ( ! ( filename.isEmpty() || filename.isNull() ) )
80 QFileInfo fileinfo ( filename );
81 SceneWindow* sceneWindow;
83 mdiSubWindow = mUi.mdiArea->addSubWindow ( sceneWindow =
new SceneWindow ( mUi.mdiArea ) );
84 mdiSubWindow->setAttribute ( Qt::WA_DeleteOnClose );
85 mdiSubWindow->setWindowTitle ( fileinfo.absoluteFilePath() );
86 mdiSubWindow->showMaximized();
87 mdiSubWindow->setMinimumSize ( QSize ( 128, 128 ) );
88 sceneWindow->Open ( fileinfo.absoluteFilePath().toStdString() );
90 mUi.actionSave->setEnabled (
true );
94 void MainWindow::on_actionSave_triggered()
97 mdiSubWindow = mUi.mdiArea->currentSubWindow ();
102 QString filename = QFileDialog::getSaveFileName (
this,
105 tr (
"Scene Files (*.scn *.txt)" ) );
106 if ( ! ( filename.isEmpty() || filename.isNull() ) )
108 SceneWindow* sceneWindow =
reinterpret_cast<SceneWindow*
> ( mdiSubWindow->widget() );
111 sceneWindow->Save ( filename.toStdString() );
116 void MainWindow::on_actionCamera_triggered()
118 if ( mCameraSettings ==
nullptr )
120 mCameraSettings =
new CameraSettings{
this};
121 connect ( mCameraSettings, SIGNAL ( fieldOfViewChanged (
double ) ),
this, SLOT ( fieldOfViewChanged (
double ) ) );
122 connect ( mCameraSettings, SIGNAL ( nearChanged (
double ) ),
this, SLOT ( nearChanged (
double ) ) );
123 connect ( mCameraSettings, SIGNAL ( farChanged (
double ) ),
this, SLOT ( farChanged (
double ) ) );
125 mCameraSettings->exec();
128 void MainWindow::on_actionNewShader_triggered()
130 QScrollArea* scrollArea{
new QScrollArea{mUi.mdiArea}};
131 NodeView* nodeView{
new NodeView{scrollArea}};
132 scrollArea->setWidget ( nodeView );
133 scrollArea->setWidgetResizable (
true );
134 QMdiSubWindow* mdiSubWindow{ mUi.mdiArea->addSubWindow ( scrollArea ) };
135 mdiSubWindow->setAttribute ( Qt::WA_DeleteOnClose );
136 mdiSubWindow->setWindowTitle ( tr (
"Untitled Shader" ) );
137 mdiSubWindow->showMaximized();
138 mdiSubWindow->setMinimumSize ( QSize ( 128, 128 ) );
139 mUi.actionSave->setEnabled (
true );
142 void MainWindow::fieldOfViewChanged (
double aFieldOfView )
145 mdiSubWindow = mUi.mdiArea->currentSubWindow ();
150 reinterpret_cast<SceneWindow *
> ( mdiSubWindow->widget() )->SetFieldOfView (
static_cast<float> ( aFieldOfView ) );
153 void MainWindow::nearChanged (
double aNear )
156 mdiSubWindow = mUi.mdiArea->currentSubWindow ();
161 reinterpret_cast<SceneWindow *
> ( mdiSubWindow->widget() )->SetNear (
static_cast<float> ( aNear ) );
164 void MainWindow::farChanged (
double aFar )
167 mdiSubWindow = mUi.mdiArea->currentSubWindow ();
172 reinterpret_cast<SceneWindow *
> ( mdiSubWindow->widget() )->SetFar (
static_cast<float> ( aFar ) );
Defines log severity levels and stream output for the AeonGames engine.
MainWindow(QWidget *parent=nullptr, Qt::WindowFlags flags=Qt::WindowFlags{})
Construct the main window.
<- This is here just for the literals