Files
PrimeWorldEditor/src/Editor/CEditorApplication.h
Lioncache 43eae548ac Editor: Convert QVector over to QList
In Qt 6 QVector is now a typedef alias for QList, so we can convert these over
to make the semantics explicit.
2025-11-30 15:44:23 -05:00

77 lines
2.2 KiB
C++

#ifndef CEDITORAPPLICATION_H
#define CEDITORAPPLICATION_H
#include <Core/GameProject/CGameProject.h>
#include <QApplication>
#include <QList>
#include <QTimer>
#include <memory>
class CBasicViewport;
class CProjectSettingsDialog;
class CResourceBrowser;
class CResourceEntry;
class CWorldEditor;
class IEditor;
constexpr int gkTickFrequencyMS = 8;
class CEditorApplication : public QApplication
{
Q_OBJECT
std::unique_ptr<CGameProject> mpActiveProject;
CWorldEditor *mpWorldEditor = nullptr;
CResourceBrowser *mpResourceBrowser = nullptr;
CProjectSettingsDialog *mpProjectDialog = nullptr;
QList<IEditor*> mEditorWindows;
QMap<CResourceEntry*,IEditor*> mEditingMap;
bool mInitialized = false;
QTimer mRefreshTimer;
double mLastUpdate;
public:
CEditorApplication(int& rArgc, char **ppArgv);
~CEditorApplication() override;
void InitEditor();
bool CloseAllEditors();
bool CloseProject();
bool OpenProject(const QString& rkProjPath);
void EditResource(CResourceEntry *pEntry);
void NotifyAssetsModified();
bool CookPackage(CPackage *pPackage);
bool CookAllDirtyPackages();
bool CookPackageList(QList<CPackage*> PackageList);
bool HasAnyDirtyPackages();
bool RebuildResourceDatabase();
CResourceBrowser* ResourceBrowser() const { return mpResourceBrowser; }
// Accessors
CGameProject* ActiveProject() const { return mpActiveProject.get(); }
CWorldEditor* WorldEditor() const { return mpWorldEditor; }
CProjectSettingsDialog* ProjectDialog() const { return mpProjectDialog; }
EGame CurrentGame() const { return mpActiveProject ? mpActiveProject->Game() : EGame::Invalid; }
void SetEditorTicksEnabled(bool Enabled) { Enabled ? mRefreshTimer.start(gkTickFrequencyMS) : mRefreshTimer.stop(); }
bool AreEditorTicksEnabled() const { return mRefreshTimer.isActive(); }
public slots:
void AddEditor(IEditor *pEditor);
void TickEditors();
void OnEditorClose();
signals:
void ActiveProjectChanged(CGameProject *pNewProj);
void AssetsModified();
void PackagesCooked();
};
#define gpEdApp static_cast<CEditorApplication*>(qApp)
#endif // CEDITORAPPLICATION_H