Program Listing for File editor_system.h¶
↰ Return to documentation for file (editor/editor_system.h
)
#pragma once
#include "core/event_manager.h"
#include "script/interpreter.h"
#include "framework/system.h"
#include "utility/imgui_helpers.h"
#include "vendor/ImGUI/imgui.h"
#include "vendor/ImGUI/imgui_impl_dx11.h"
#include "vendor/ImGUI/imgui_impl_win32.h"
#include "Tracy/Tracy.hpp"
ImColor ColorToImColor(Color& c);
class SceneDock;
class OutputDock;
class ToolbarDock;
class ViewportDock;
class InspectorDock;
class FileViewer;
class FileEditor;
class ContentBrowser;
class EditorSystem : public System
{
EventBinder<EditorSystem> m_Binder;
int m_DockSpaceID;
String m_MenuAction;
String m_PopupCause;
unsigned int m_EditorStyleColorPushCount;
unsigned int m_EditorStyleVarPushCount;
bool m_WireframeMode = false;
bool m_WorldMode = true;
bool m_Autosave = false;
String m_OpenSceneName;
String m_LoadingScene;
ImFont* m_EditorFont;
ImFont* m_EditorFontItalic;
ImFont* m_EditorFontBold;
ImFont* m_EditorFontMonospace;
struct Icons
{
const char* lua = ICON_ROOTEX_FILE_CODE_O;
const char* font = ICON_ROOTEX_FONT;
const char* text = ICON_ROOTEX_FILE_TEXT;
const char* audio = ICON_ROOTEX_FILE_AUDIO_O;
const char* model = ICON_ROOTEX_FORT_AWESOME;
const char* image = ICON_ROOTEX_FILE_IMAGE_O;
} m_Icons;
Ptr<SceneDock> m_Scene;
Ptr<OutputDock> m_Output;
Ptr<ToolbarDock> m_Toolbar;
Ptr<ViewportDock> m_Viewport;
Ptr<InspectorDock> m_Inspector;
Ptr<FileViewer> m_FileViewer;
Ptr<FileEditor> m_FileEditor;
Ptr<ContentBrowser> m_ContentBrowser;
Atomic<bool> m_IsCopyFailed;
String m_CurrExportDir;
EditorSystem();
EditorSystem(const EditorSystem&) = delete;
~EditorSystem();
void drawDefaultUI(float deltaMilliseconds);
void drawProgressBar(Atomic<int>& progress, float& currentProgress, int& totalProgress);
void showDocumentation(const String& name, const sol::table& table);
Variant saveAll(const Event* event);
Variant autoSave(const Event* event);
Variant saveBeforeQuit(const Event* event);
Variant createNewScene(const Event* event);
Variant createNewFile(const Event* event);
int exportScene(const String& sceneName, const String& sceneFilePath, Atomic<int>& progress);
void postExport();
public:
static EditorSystem* GetSingleton();
bool initialize(const JSON::json& systemData) override;
void update(float deltaMilliseconds) override;
void pushRegularFont() { ImGui::PushFont(m_EditorFont); }
void pushBoldFont() { ImGui::PushFont(m_EditorFontBold); }
void pushItalicFont() { ImGui::PushFont(m_EditorFontItalic); }
void pushMonospaceFont() { ImGui::PushFont(m_EditorFontMonospace); }
void popFont() { ImGui::PopFont(); }
void openScene(String sceneName);
ImColor getWarningColor() const { return ColorToImColor((Color)ColorPresets::LightYellow); }
ImColor getFatalColor() const { return ColorToImColor((Color)ColorPresets::IndianRed); }
ImColor getSuccessColor() const { return ColorToImColor((Color)ColorPresets::LimeGreen); }
ImColor getNormalColor() const { return ColorToImColor((Color)ColorPresets::White); }
ImColor getLinkColor() const { return ColorToImColor((Color)ColorPresets::SteelBlue); }
};