50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "Core/IEditorContext.h"
|
|
#include "Core/ISceneManager.h"
|
|
|
|
#include <filesystem>
|
|
#include <string>
|
|
|
|
namespace XCEngine {
|
|
namespace Editor {
|
|
|
|
inline std::string BuildEditorWindowTitle(IEditorContext& context) {
|
|
auto& sceneManager = context.GetSceneManager();
|
|
std::string modePrefix;
|
|
switch (context.GetRuntimeMode()) {
|
|
case EditorRuntimeMode::Play:
|
|
modePrefix = "[Play] ";
|
|
break;
|
|
case EditorRuntimeMode::Paused:
|
|
modePrefix = "[Paused] ";
|
|
break;
|
|
case EditorRuntimeMode::Simulate:
|
|
modePrefix = "[Simulate] ";
|
|
break;
|
|
case EditorRuntimeMode::Edit:
|
|
default:
|
|
break;
|
|
}
|
|
|
|
std::string sceneName = sceneManager.HasActiveScene() ? sceneManager.GetCurrentSceneName() : "No Scene";
|
|
if (sceneName.empty()) {
|
|
sceneName = "Untitled Scene";
|
|
}
|
|
|
|
if (sceneManager.IsSceneDirty()) {
|
|
sceneName += " *";
|
|
}
|
|
if (sceneManager.GetCurrentScenePath().empty()) {
|
|
sceneName += " (Unsaved)";
|
|
} else {
|
|
sceneName += " - ";
|
|
sceneName += std::filesystem::path(sceneManager.GetCurrentScenePath()).filename().string();
|
|
}
|
|
|
|
return modePrefix + sceneName + " - XCEngine Editor";
|
|
}
|
|
|
|
} // namespace Editor
|
|
} // namespace XCEngine
|