初始提交: UE5.3项目基础框架

This commit is contained in:
2025-10-14 11:14:54 +08:00
commit 721d9fd98e
5334 changed files with 316782 additions and 0 deletions

View File

@ -0,0 +1,44 @@
// Copyright 2020-2024 CesiumGS, Inc. and Contributors
#include "SpdlogUnrealLoggerSink.h"
#include "CesiumRuntime.h"
#include "CoreMinimal.h"
void SpdlogUnrealLoggerSink::sink_it_(const spdlog::details::log_msg& msg) {
switch (msg.level) {
case SPDLOG_LEVEL_TRACE:
UE_LOG(LogCesium, VeryVerbose, TEXT("%s"), *this->formatMessage(msg));
break;
case SPDLOG_LEVEL_DEBUG:
UE_LOG(LogCesium, Verbose, TEXT("%s"), *this->formatMessage(msg));
break;
case SPDLOG_LEVEL_INFO:
UE_LOG(LogCesium, Display, TEXT("%s"), *this->formatMessage(msg));
break;
case SPDLOG_LEVEL_WARN:
UE_LOG(LogCesium, Warning, TEXT("%s"), *this->formatMessage(msg));
break;
case SPDLOG_LEVEL_ERROR:
UE_LOG(LogCesium, Error, TEXT("%s"), *this->formatMessage(msg));
break;
case SPDLOG_LEVEL_CRITICAL:
UE_LOG(LogCesium, Fatal, TEXT("%s"), *this->formatMessage(msg));
break;
}
}
void SpdlogUnrealLoggerSink::flush_() {
// Nothing to do here
}
FString SpdlogUnrealLoggerSink::formatMessage(
const spdlog::details::log_msg& msg) const {
// Frustratingly, spdlog::formatter isn't thread safe. So even though our sink
// itself doesn't need to be protected by a mutex, the formatter does.
// See https://github.com/gabime/spdlog/issues/897
std::scoped_lock<std::mutex> lock(this->_formatMutex);
spdlog::memory_buf_t formatted;
this->formatter_->format(msg, formatted);
return UTF8_TO_TCHAR(fmt::to_string(formatted).c_str());
}