diff --git a/CHANGELOG.md b/CHANGELOG.md
index b464881e1..d48377e8d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
# Ramses Changelog
+28.0.0-rc5
+-------------------
+### Fixed
+- Fixed renderer logging configuration caused by 2 logger instances
+
28.0.0-rc4
-------------------
### Changed
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 417d670c0..19b1b0a1b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.13)
set(RAMSES_VERSION_MAJOR 28)
set(RAMSES_VERSION_MINOR 0)
set(RAMSES_VERSION_PATCH 0)
-set(RAMSES_VERSION_POSTFIX "-rc4")
+set(RAMSES_VERSION_POSTFIX "-rc5")
set(RAMSES_VERSION "${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}${RAMSES_VERSION_POSTFIX}")
project(ramses-sdk
diff --git a/scripts/ci/installation-check/check-build-with-install-shared-lib.bat b/scripts/ci/installation-check/check-build-with-install-shared-lib.bat
index a2c1f8a3d..005d3377f 100644
--- a/scripts/ci/installation-check/check-build-with-install-shared-lib.bat
+++ b/scripts/ci/installation-check/check-build-with-install-shared-lib.bat
@@ -41,7 +41,7 @@ cd test-cmake.config
SET PATH=%INSTALL_DIR%/bin;%PATH%
-cmake -G%CMAKE_GENERATOR% -DCMAKE_PREFIX_PATH="%INSTALL_DIR%/lib" --build test-cmake.config %SCRIPT_DIR%/shared-lib-check/
+cmake -G%CMAKE_GENERATOR% -DCMAKE_PREFIX_PATH="%INSTALL_DIR%/lib" %SCRIPT_DIR%/shared-lib-check/
cmake --build . --config %BUILD_CONFIG% --target run-all
::check for errors
diff --git a/scripts/ci/installation-check/check-shared-lib-symbols.py b/scripts/ci/installation-check/check-shared-lib-symbols.py
index 0b93766f1..2c7cd7959 100755
--- a/scripts/ci/installation-check/check-shared-lib-symbols.py
+++ b/scripts/ci/installation-check/check-shared-lib-symbols.py
@@ -40,8 +40,9 @@ def file_to_symbols(lib_file, is_shared_lib):
# run c++filt to demangle output from nm
cppfilt_command = ['c++filt', '-r']
cppfilt_process_result = subprocess.run(cppfilt_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, input=nm_process_result.stdout)
- cppfilt_process_output_std = cppfilt_process_result.stdout.decode('utf-8')
+ return cppfilt_process_result.stdout.decode('utf-8')
+ def find_api_symbols(symbols):
ignore_list = [
# ignore ramses internal and Impl
r'ramses::internal::',
@@ -53,22 +54,44 @@ def file_to_symbols(lib_file, is_shared_lib):
# 0000000000001d30 T ramses::Appearance::unbindInput(ramses::UniformInput const&)
symbol_regex = re.compile(rf"^([0-9A-Fa-f]+)(\s+)[TB](\s+)({ignore_regex}.*)", re.MULTILINE)
- lib_symbols = [s.group(4) for s in re.finditer(symbol_regex, cppfilt_process_output_std)]
+ return [s.group(4) for s in re.finditer(symbol_regex, symbols)]
+
+ def check_missing_api_symbols(static_lib_symbols, shared_lib_symbols):
+ static_lib_symbols = find_api_symbols(static_lib_symbols)
+ shared_lib_symbols = find_api_symbols(shared_lib_symbols)
+ missing_symbols = [s for s in static_lib_symbols if s not in shared_lib_symbols]
+ if len(static_lib_symbols) == 0:
+ raise Exception("No API symbols found in static lib (internal error)")
+ if len(shared_lib_symbols) == 0:
+ raise Exception("No API symbols found in shared lib (internal error)")
+ if len(missing_symbols) > 0:
+ raise Exception(f"FOUND MISSING SYMBOLS: {missing_symbols}")
+
+ def check_unique_exports(headless, full):
+ # check interface between headless and full shared lib
+ symbols = [
+ 'ramses::internal::ErrorReporting',
+ 'ramses::internal::FrameworkFactoryRegistry',
+ 'ramses::internal::RamsesFrameworkImpl',
+ 'ramses::internal::GetRamsesLogger',
+ ]
+ for s in symbols:
+ if s not in headless:
+ raise Exception(f"Symbol missing in headless-shared-lib: {s}")
+ if s in full:
+ raise Exception(f"Unexpected symbol in full-shared-lib:: {s}")
- return lib_symbols
+ static_lib_headless_symbols = file_to_symbols(client_static_lib_dir, False)
+ static_lib_headless_symbols += file_to_symbols(framework_static_lib_dir, False)
+ shared_lib_headless_symbols = file_to_symbols(headless_shared_lib_dir, True)
- static_lib_symbols = file_to_symbols(client_static_lib_dir, False)
- static_lib_symbols += file_to_symbols(framework_static_lib_dir, False)
- if not headless_only:
- static_lib_symbols += file_to_symbols(renderer_static_lib_dir, False)
+ check_missing_api_symbols(static_lib_headless_symbols, shared_lib_headless_symbols)
- shared_lib_symbols = file_to_symbols(headless_shared_lib_dir, True)
if not headless_only:
- shared_lib_symbols += file_to_symbols(full_shared_lib_dir, True)
-
- missing_symbols = [s for s in static_lib_symbols if s not in shared_lib_symbols]
- if len(missing_symbols) > 0:
- raise Exception(f"FOUND MISSING SYMBOLS: {missing_symbols}")
+ static_lib_symbols = file_to_symbols(renderer_static_lib_dir, False)
+ shared_lib_symbols = file_to_symbols(full_shared_lib_dir, True)
+ check_missing_api_symbols(static_lib_symbols, shared_lib_symbols)
+ check_unique_exports(shared_lib_headless_symbols, shared_lib_symbols)
if __name__ == "__main__":
diff --git a/src/client/impl/RamsesClientImpl.cpp b/src/client/impl/RamsesClientImpl.cpp
index 35ce6af41..fee9e5c97 100644
--- a/src/client/impl/RamsesClientImpl.cpp
+++ b/src/client/impl/RamsesClientImpl.cpp
@@ -47,7 +47,6 @@
#include "internal/PlatformAbstraction/Collections/HashMap.h"
#include "internal/PlatformAbstraction/PlatformTime.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
#include "ClientFactory.h"
#include "impl/FrameworkFactoryRegistry.h"
#include "internal/Ramsh/Ramsh.h"
diff --git a/src/framework/impl/RamsesFrameworkConfigImpl.h b/src/framework/impl/RamsesFrameworkConfigImpl.h
index 3c04e5511..0ea3172d0 100644
--- a/src/framework/impl/RamsesFrameworkConfigImpl.h
+++ b/src/framework/impl/RamsesFrameworkConfigImpl.h
@@ -9,7 +9,7 @@
#pragma once
#include "TCPConfig.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "ramses/framework/IThreadWatchdogNotification.h"
#include "ramses/framework/EFeatureLevel.h"
#include "impl/ThreadWatchdogConfig.h"
diff --git a/src/framework/impl/RamsesFrameworkImpl.cpp b/src/framework/impl/RamsesFrameworkImpl.cpp
index aea1d5d3b..896b829da 100644
--- a/src/framework/impl/RamsesFrameworkImpl.cpp
+++ b/src/framework/impl/RamsesFrameworkImpl.cpp
@@ -13,7 +13,7 @@
#include "ramses-sdk-build-config.h"
#include "internal/Communication/TransportCommon/CommunicationSystemFactory.h"
#include "internal/Communication/TransportCommon/ICommunicationSystem.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "impl/RamsesFrameworkConfigImpl.h"
#include "ramses/framework/RamsesFrameworkConfig.h"
#include "internal/Ramsh/RamshStandardSetup.h"
diff --git a/src/framework/impl/RamsesLoggerImpl.cpp b/src/framework/impl/RamsesLoggerImpl.cpp
new file mode 100644
index 000000000..b67f633a5
--- /dev/null
+++ b/src/framework/impl/RamsesLoggerImpl.cpp
@@ -0,0 +1,18 @@
+// -------------------------------------------------------------------------
+// Copyright (C) 2023 BMW AG
+// -------------------------------------------------------------------------
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at https://mozilla.org/MPL/2.0/.
+// -------------------------------------------------------------------------
+
+#include "impl/RamsesLoggerImpl.h"
+
+namespace ramses::internal
+{
+ RamsesLogger& GetRamsesLogger()
+ {
+ static RamsesLogger logger;
+ return logger;
+ }
+}
diff --git a/src/framework/impl/RamsesLoggerImpl.h b/src/framework/impl/RamsesLoggerImpl.h
new file mode 100644
index 000000000..8c0e1aa82
--- /dev/null
+++ b/src/framework/impl/RamsesLoggerImpl.h
@@ -0,0 +1,19 @@
+// -------------------------------------------------------------------------
+// Copyright (C) 2023 BMW AG
+// -------------------------------------------------------------------------
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at https://mozilla.org/MPL/2.0/.
+// -------------------------------------------------------------------------
+
+#pragma once
+
+#include "ramses/framework/APIExport.h"
+#include "internal/Core/Utils/RamsesLogger.h"
+
+namespace ramses::internal
+{
+ class RamsesLogger;
+
+ RAMSES_IMPL_EXPORT RamsesLogger& GetRamsesLogger();
+}
diff --git a/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp b/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp
index 651152379..fcaded538 100644
--- a/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp
+++ b/src/framework/internal/Core/Utils/AndroidLogger/AndroidLogAppender.cpp
@@ -9,7 +9,7 @@
#include "internal/Core/Utils/AndroidLogger/AndroidLogAppender.h"
#include "internal/Core/Utils/LogMessage.h"
#include "internal/Core/Utils/LogContext.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/Core/Utils/InplaceStringTokenizer.h"
#include
diff --git a/src/framework/internal/Core/Utils/LogMacros.cpp b/src/framework/internal/Core/Utils/LogMacros.cpp
index 5c6c2e2d6..664fd3c2e 100644
--- a/src/framework/internal/Core/Utils/LogMacros.cpp
+++ b/src/framework/internal/Core/Utils/LogMacros.cpp
@@ -7,7 +7,6 @@
// -------------------------------------------------------------------------
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
namespace ramses::internal
{
diff --git a/src/framework/internal/Core/Utils/LogMacros.h b/src/framework/internal/Core/Utils/LogMacros.h
index 8db739ced..979f37a97 100644
--- a/src/framework/internal/Core/Utils/LogMacros.h
+++ b/src/framework/internal/Core/Utils/LogMacros.h
@@ -10,7 +10,7 @@
#include "internal/Core/Utils/LogMessage.h"
#include "internal/Core/Utils/LogContext.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/PlatformAbstraction/Collections/StringOutputStream.h"
#include "internal/PlatformAbstraction/FmtBase.h"
diff --git a/src/framework/internal/Core/Utils/RamsesLogger.h b/src/framework/internal/Core/Utils/RamsesLogger.h
index db31b1791..0cfe756f4 100644
--- a/src/framework/internal/Core/Utils/RamsesLogger.h
+++ b/src/framework/internal/Core/Utils/RamsesLogger.h
@@ -104,10 +104,4 @@ namespace ramses::internal
std::vector m_logAppenders;
LogContext& m_fileTransferContext;
};
-
- inline RamsesLogger& GetRamsesLogger()
- {
- static RamsesLogger logger;
- return logger;
- }
}
diff --git a/src/framework/internal/PlatformAbstraction/PlatformThread.h b/src/framework/internal/PlatformAbstraction/PlatformThread.h
index 77bf46f5b..e60420a6e 100644
--- a/src/framework/internal/PlatformAbstraction/PlatformThread.h
+++ b/src/framework/internal/PlatformAbstraction/PlatformThread.h
@@ -9,7 +9,7 @@
#pragma once
#include "internal/PlatformAbstraction/Runnable.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include
#include
diff --git a/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp b/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp
index d4d85dd7a..21f330b4a 100644
--- a/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp
+++ b/src/framework/internal/Ramsh/RamshCommandPrintLogLevels.cpp
@@ -10,7 +10,7 @@
#include "internal/Ramsh/RamshCommandPrintLogLevels.h"
#include "internal/Ramsh/Ramsh.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
namespace ramses::internal
{
diff --git a/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp b/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp
index 84eae3477..668793ebd 100644
--- a/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp
+++ b/src/framework/internal/Ramsh/RamshCommandSetConsoleLogLevel.cpp
@@ -9,7 +9,7 @@
#include "internal/Ramsh/RamshCommandSetConsoleLogLevel.h"
#include "internal/Ramsh/Ramsh.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/Core/Utils/LogHelper.h"
namespace ramses::internal
diff --git a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp
index edb0b027e..966ddd09f 100644
--- a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp
+++ b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevel.cpp
@@ -9,7 +9,7 @@
#include "internal/Ramsh/RamshCommandSetContextLogLevel.h"
#include "internal/Ramsh/Ramsh.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/Core/Utils/LogHelper.h"
namespace ramses::internal
diff --git a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp
index fbd75960a..005af73e5 100644
--- a/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp
+++ b/src/framework/internal/Ramsh/RamshCommandSetContextLogLevelFilter.cpp
@@ -9,7 +9,7 @@
#include "internal/Ramsh/RamshCommandSetContextLogLevelFilter.h"
#include "internal/Ramsh/Ramsh.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
namespace ramses::internal
{
diff --git a/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp b/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp
index 3d36175e5..b75fb61a9 100644
--- a/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp
+++ b/src/framework/internal/Ramsh/RamshCommunicationChannelConsole.cpp
@@ -12,7 +12,7 @@
#include "internal/Ramsh/RamshCommunicationChannelConsoleSignalHandler.h"
#include "internal/Ramsh/Ramsh.h"
#include "internal/Ramsh/RamshTools.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/PlatformAbstraction/PlatformEnvironmentVariables.h"
#include "internal/Core/Utils/LogMacros.h"
#include "internal/PlatformAbstraction/ConsoleInput.h"
diff --git a/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp b/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp
index 8f719d575..d353d978e 100644
--- a/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp
+++ b/src/framework/internal/Ramsh/RamshCommunicationChannelDLT.cpp
@@ -10,7 +10,7 @@
#include "internal/Ramsh/Ramsh.h"
#include "internal/Ramsh/RamshTools.h"
#include "internal/Core/Utils/LogMacros.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include
diff --git a/tests/benchmarks/logic/serialization.cpp b/tests/benchmarks/logic/serialization.cpp
index 81e940927..d40cb87b2 100644
--- a/tests/benchmarks/logic/serialization.cpp
+++ b/tests/benchmarks/logic/serialization.cpp
@@ -9,7 +9,7 @@
#include "benchmarksetup.h"
#include "ramses/client/logic/LuaScript.h"
#include "ramses/client/logic/Property.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "fmt/format.h"
#include
diff --git a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp
index 936bc4780..bd5359f33 100644
--- a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp
+++ b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/EmbeddedCompositingTestFramework/TestForkingController.cpp
@@ -9,7 +9,7 @@
#include "TestForkingController.h"
#include "TestForkerApplication.h"
#include "EmbeddedCompositingTestMessages.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include
diff --git a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp
index 3cab1a3a6..97aadca7e 100644
--- a/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp
+++ b/tests/integration/renderer-tests/embedded-compositing-rendering-tests/TestCases/main.cpp
@@ -9,7 +9,7 @@
#include "RendererTestUtils.h"
#include "internal/Core/Utils/StringUtils.h"
#include "EmbeddedCompositingTests.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "EmbeddedCompositingTestFramework/TestForkingController.h"
#include "ramses/framework/RamsesFrameworkConfig.h"
#include
diff --git a/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h b/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h
index ee5833daf..253358a95 100644
--- a/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h
+++ b/tests/unittests/framework-test-utils/include/ScopedConsoleLogDisable.h
@@ -8,7 +8,7 @@
#pragma once
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
namespace ramses::internal
{
diff --git a/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h b/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h
index 2eae75cd5..49f988704 100644
--- a/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h
+++ b/tests/unittests/framework-test-utils/include/ScopedLogContextLevel.h
@@ -9,7 +9,7 @@
#pragma once
#include "internal/Core/Utils/LogContext.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
namespace ramses::internal
{
diff --git a/tests/unittests/framework/Ramsh/RamshTest.cpp b/tests/unittests/framework/Ramsh/RamshTest.cpp
index 2ad065607..8335f7523 100644
--- a/tests/unittests/framework/Ramsh/RamshTest.cpp
+++ b/tests/unittests/framework/Ramsh/RamshTest.cpp
@@ -15,7 +15,7 @@
#include
#include "internal/Ramsh/RamshTools.h"
#include "internal/PlatformAbstraction/PlatformThread.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
namespace ramses::internal
{
diff --git a/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp b/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp
index 8d813298c..998bfe8a4 100644
--- a/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp
+++ b/tests/unittests/framework/ramses-framework/ErrorReportingTest.cpp
@@ -11,7 +11,7 @@
#include "impl/ErrorReporting.h"
#include "impl/RamsesObjectImpl.h"
#include "ramses/framework/RamsesObject.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/Core/Utils/LogMacros.h"
#include "internal/Core/Utils/ThreadBarrier.h"
#include "LogTestUtils.h"
diff --git a/tools/ramses-daemon/main.cpp b/tools/ramses-daemon/main.cpp
index d7bc1a920..7415c3682 100644
--- a/tools/ramses-daemon/main.cpp
+++ b/tools/ramses-daemon/main.cpp
@@ -13,7 +13,7 @@
#include "impl/RamsesFrameworkConfigImpl.h"
#include "internal/Ramsh/RamshStandardSetup.h"
#include "internal/Ramsh/RamshCommandExit.h"
-#include "internal/Core/Utils/RamsesLogger.h"
+#include "impl/RamsesLoggerImpl.h"
#include "internal/Core/Utils/StatisticCollection.h"
#include "internal/Core/Utils/LogMacros.h"
#include
diff --git a/tools/ramses-viewer/ViewerGui.cpp b/tools/ramses-viewer/ViewerGui.cpp
index 36aeb861a..15418137b 100644
--- a/tools/ramses-viewer/ViewerGui.cpp
+++ b/tools/ramses-viewer/ViewerGui.cpp
@@ -148,7 +148,7 @@ namespace ramses::internal
{
ImGui::MenuItem("Show Scene Window", "F11", &m_settings.showWindow);
if (m_app.getLogicViewer())
- ImGui::MenuItem("Show Logic Window", "F10", &m_settings.showLogicWindow);
+ ImGui::MenuItem(m_settings.showWindow ? "Undock Logic Window" : "Show Logic Window", "F10", &m_settings.showLogicWindow);
if (m_app.getGuiMode() == ViewerGuiApp::GuiMode::On)
{
ImGui::MenuItem("Show Scene in Window", nullptr, &m_settings.showSceneInWindow);