111 mStringIdMetaType{qRegisterMetaType<
StringId>() },
112 mStringMetaType{qRegisterMetaType<
std::string>() },
113 mPathMetaType{qRegisterMetaType<
std::filesystem::path>() }
115 setWindowIcon ( QIcon (
":/icons/magnifying_glass" ) );
116 setOrganizationName (
"AeonGames" );
117 setOrganizationDomain (
"aeongames.com" );
118 setApplicationName (
"AeonGames World Editor" );
121 QSettings settings{};
122 settings.beginGroup (
"Workspace" );
124 QSizeF Scale = settings.value (
"Scale", QSizeF ( 780.0f, 780.0f ) ).toSizeF();
125 QColor OddLineColor = settings.value (
"OddLineColor", QColor ( 74, 74, 74 ) ).value<QColor>();
126 QColor EvenLineColor = settings.value (
"EvenLineColor", QColor ( 74, 74, 74 ) ).value<QColor>();
127 QColor XLineColor = settings.value (
"XLineColor", QColor ( 255, 0, 0 ) ).value<QColor>();
128 QColor YLineColor = settings.value (
"YLineColor", QColor ( 0, 255, 0 ) ).value<QColor>();
129 QColor BorderLineColor = settings.value (
"BorderLineColor", QColor ( 74, 74, 74 ) ).value<QColor>();
130 uint32_t HorizontalSpacing = settings.value (
"HorizontalSpacing", uint32_t ( 16 ) ).toUInt();
131 uint32_t VerticalSpacing = settings.value (
"VerticalSpacing", uint32_t ( 16 ) ).toUInt();
136 QStringList renderer_list;
139 renderer_list.append ( QString::fromStdString ( aIdentifier ) );
143 if ( !renderer_list.size() )
145 throw std::runtime_error (
"No renderer available, cannot continue." );
147 if ( renderer_list.size() == 1 )
149 mRendererName = renderer_list.at ( 0 ).toStdString();
155 if ( select_renderer.exec() == QDialog::Accepted )
157 mRendererName = select_renderer.
GetSelected().toStdString();
161 if ( mRendererName.empty() )
163 throw std::runtime_error (
"No renderer selected, cannot continue." );
167 mGridPipeline = std::make_unique<Pipeline>();
168 mSolidColorPipeline = std::make_unique<Pipeline>();
169 mXGridMaterial = std::make_unique<Material>();
170 mYGridMaterial = std::make_unique<Material>();
171 mSolidColorMaterial = std::make_unique<Material>();
173 LoadMaterial ( *mSolidColorMaterial,
":/materials/solidcolor.mtl" );
174 LoadPipeline ( *mGridPipeline,
":/pipelines/grid.pln" );
175 LoadPipeline ( *mSolidColorPipeline,
":/pipelines/solid_color.pln" );
176 LoadMaterial ( *mXGridMaterial,
":/materials/grid.mtl" );
178 mXGridMaterial->Set ( {
"Scale",
Vector3{
static_cast<float> ( Scale.width() ),
static_cast<float> ( Scale.height() ), 1.0f} } );
179 mXGridMaterial->Set ( {
"StartingPosition",
Vector3{0.0f, -
static_cast<float> ( Scale.height() / 2 ), 0.0f} } );
180 mXGridMaterial->Set ( {
"Offset",
Vector3{0.0f,
static_cast<float> ( Scale.height() /
static_cast<float> ( HorizontalSpacing ) ), 0.0f} } );
181 mXGridMaterial->Set ( {
"LineCount",
static_cast<uint32_t
> ( HorizontalSpacing + 1 ) } );
182 mXGridMaterial->Set ( {
"OddLineColor",
185 static_cast<float> ( OddLineColor.redF() ),
186 static_cast<float> ( OddLineColor.greenF() ),
187 static_cast<float> ( OddLineColor.blueF() ),
188 static_cast<float> ( OddLineColor.alphaF() )
190 mXGridMaterial->Set ( {
"EvenLineColor",
193 static_cast<float> ( EvenLineColor.redF() ),
194 static_cast<float> ( EvenLineColor.greenF() ),
195 static_cast<float> ( EvenLineColor.blueF() ),
196 static_cast<float> ( EvenLineColor.alphaF() )
198 mXGridMaterial->Set ( {
"CentralLineColor",
201 static_cast<float> ( XLineColor.redF() ),
202 static_cast<float> ( XLineColor.greenF() ),
203 static_cast<float> ( XLineColor.blueF() ),
204 static_cast<float> ( XLineColor.alphaF() )
206 mXGridMaterial->Set ( {
"BorderLineColor",
209 static_cast<float> ( BorderLineColor.redF() ),
210 static_cast<float> ( BorderLineColor.greenF() ),
211 static_cast<float> ( BorderLineColor.blueF() ),
212 static_cast<float> ( BorderLineColor.alphaF() )
215 LoadMaterial ( *mYGridMaterial,
":/materials/grid.mtl" );
216 mYGridMaterial->Set ( {
"Scale",
Vector3{
static_cast<float> ( Scale.width() ),
static_cast<float> ( Scale.height() ), 1.0f} } );
217 mYGridMaterial->Set ( {
"StartingPosition",
Vector3{ -
static_cast<float> ( Scale.width() / 2 ), 0.0f, 0.0f} } );
218 mYGridMaterial->Set ( {
"Offset",
Vector3{ (
static_cast<float> ( Scale.width() ) / ( VerticalSpacing ) ), 0.0f, 0.0f} } );
219 mYGridMaterial->Set ( {
"LineCount",
static_cast<uint32_t
> ( VerticalSpacing + 1 ) } );
220 mYGridMaterial->Set ( {
"OddLineColor",
223 static_cast<float> ( OddLineColor.redF() ),
224 static_cast<float> ( OddLineColor.greenF() ),
225 static_cast<float> ( OddLineColor.blueF() ),
226 static_cast<float> ( OddLineColor.alphaF() )
228 mYGridMaterial->Set ( {
"EvenLineColor",
231 static_cast<float> ( EvenLineColor.redF() ),
232 static_cast<float> ( EvenLineColor.greenF() ),
233 static_cast<float> ( EvenLineColor.blueF() ),
234 static_cast<float> ( EvenLineColor.alphaF() )
236 mYGridMaterial->Set ( {
"CentralLineColor",
239 static_cast<float> ( YLineColor.redF() ),
240 static_cast<float> ( YLineColor.greenF() ),
241 static_cast<float> ( YLineColor.blueF() ),
242 static_cast<float> ( YLineColor.alphaF() )
244 mYGridMaterial->Set ( {
"BorderLineColor",
247 static_cast<float> ( BorderLineColor.redF() ),
248 static_cast<float> ( BorderLineColor.greenF() ),
249 static_cast<float> ( BorderLineColor.blueF() ),
250 static_cast<float> ( BorderLineColor.alphaF() )
254 mGridMesh = std::make_unique<Mesh>();
255 mAABBWireMesh = std::make_unique<Mesh>();
256 LoadMesh ( *mGridMesh,
":/meshes/grid.msh" );
257 LoadMesh ( *mAABBWireMesh,
":/meshes/aabb_wire.msh" );