Skip to content

Commit

Permalink
Release v2.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
webermm committed Feb 14, 2024
1 parent 7659e32 commit 1bfc8dc
Show file tree
Hide file tree
Showing 512 changed files with 73,244 additions and 14,600 deletions.
12 changes: 6 additions & 6 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@
[submodule "third_party/Qt-Advanced-Docking-System"]
path = third_party/Qt-Advanced-Docking-System
url = https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
[submodule "third_party/ramses-logic"]
path = third_party/ramses-logic
url = https://github.com/GENIVI/ramses-logic.git
[submodule "third_party/glm"]
path = third_party/glm
url = https://github.com/g-truc/glm.git
[submodule "third_party/tinygltf"]
path = third_party/tinygltf
url = https://github.com/syoyo/tinygltf.git
Expand All @@ -24,3 +18,9 @@
[submodule "third_party/zip"]
path = third_party/zip
url = https://github.com/kuba--/zip
[submodule "third_party/ramses"]
path = third_party/ramses
url = https://github.com/bmwcarit/ramses.git
[submodule "third_party/boost"]
path = third_party/boost
url = https://github.com/boostorg/boost.git
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,62 @@ If a copy of the MPL was not distributed with this file, You can obtain one at h
-->

## [2.0.0] Switch to Ramses 28, Abstract Scene View, Misc UI Iprovements and Bugfixes
* **This is a major version upgrade for both RamsesComposer and Ramses/LogicEngine containing changes that can break existing scenes.**
* **File version number has changed. Files saved with RaCo 2.0.0 cannot be opened by previous versions.**
* **Update from Ramses-Logic 1.4.2 and Ramses 27.0.130 to Ramses 28.0.0. The LogicEngine has been merged into Ramses.**
* **Scenes exported with RaCo 2.0.0 can't be loaded with Ramses versions prior to 28.0.0.**
* **Export will only write a single file containing both Ramses and LogicEngine objects.**
* **The feature level will start counting up from 1 in RaCo 2.0.0 and Ramses 28.0.0 again. The RaCo 2.0.0 feature level 1 does include all features from any feature level in RaCo <2.0.0 or Ramses 27.0.130 though. This implies that scenes of any feature level saved with RaCo <2.0.0 are automatically upgraded and all previously available features will be enabled upon loading.**
* **RamsesComposer now requires Ubuntu 20.04 and gcc 9.4.0 instead of Ubuntu 18.04 and gcc 8.4.0 to build.**

### Breaking Changes

The following changes can break existing scenes upon loading
* Bool uniforms are now represented by `bool` instead of `int32` properties in `Materials`. Due to the change in the property type the property value will be lost. In addition links ending on bool uniform properties will break.
* Module statements in `LuaInterface` objects are never ignored anymore. They were ignored at feature levels <5 in Raco <2.0.0. See also changes for v.1.6.0.

The following changes may break python scripts processing a scene but existing scenes will be migrated automatically when loading them
* Conversion of the fixed number of `layer` properties in the `RenderPass` and `buffer` and `bufferMS` properties in the `RenderTarget` into array-type containers. Breaking python scripts due to the changes in the property names.
* Conversion of the `targets` and `joints` properties in the `Skin` and `animationChannels` in the `Animation` to array-type properties. Breaking python scripts due to the changes in the property names.
* The newly introduced array-type properties mentioned above have the indices starting at 1 as property names as for the `LuaScript` array-type properties.
* Split the `RenderTarget` type into separate `RenderTarget` and `RenderTargetMS` types with only a single `buffers` array-type property which can contain only `RenderBuffer`s or `RenderBufferMS`s.
* Introduced generic meta data scheme.
* The meta data is now stored in a new `metadata` property.
* Each category of meta data has a named container property inside the `metadata` property and can be accessed from the Python API like any other property.
* The gltfExtras meta data is now stored in the `gltfExtras` category inside the `metadata` container. The Python API `metadata` function has been removed.
* Removed the `userTags` property from the `ProjectSettings` object.
* The `logic_path` parameter was removed from the `export` function in the Python API.


### Added
* Added abstract scene view which shows a 3d representation of all objects in the scene in world space. This has a separate camera which can be moved around freely and also allows to manipulate the transformation proerties of objects using the mouse and/or the keyboard.
* Added button in property browser to show objects referencing the current object.
* Added prefab lookup button to the property browser.
* Added texture preview in the property browser.
* Added controls to allow the resizing of array-of-reference properties. This applies to the `animationChannels` property in `Animation`, the `layer` property in `RenderPass`, the `buffers` property in `RenderTarget` and `RenderTargetMS`, and the `targets` property in `Skin` objects.
* Added `resize` property member function to the Python API to resize array-type properties.
* Added composite commands to the Python API which generate only a single undo stack entry. See Python API reference for details.
* Added shortcuts for the mostly used functions.
* Added warning when an opened RCA file is changed externally.
* Added dialog to copy the content of scalar read-only properties into the clipboard as plain text.

### Changes
* After starting a new instance of RaCo with "Load external project" via the context menu of an object, that object will be automatically selected in the new instance.
* Object filtering in the tree views now can be done using complex boolean expressions. The search syntax is described in the `User interface overview` section of the `Introduction` chapter in the documentation.

### Fixes
* Prevent crash when opening invalid or broken project files and show an error dialog instead.
* Fixed crash caused by a tabbed away Preview Window when closing RaCo.
* Fixed crash when the folder of the currently loaded project is deleted.
* Prevent directories from being added as external projects when calling the `addExternalProject` Python API function with a directory as argument.
* Export of `Nodes` with `enabled`=false and `visibilty`=true is now correct.
* Fixed generation of multiple undo stack entries when a property inside a `Prefab` is changed multiple times. The undo stack entries are now merged as for properties outside `Prefabs`.
* Fixed update of partially linked array uniform properties to avoid discarding the non-linked property values during updates.
* Prevent user from taking screenshots when multisampling factor is greater than zero.
* Add manual update (refresh) button to the preview which will reset the preview itself and all offscreen buffers and rerender the scene.


## [1.10.0] Multiedit, Shader Includes, Drag-and-drop Support, Misc Usability Improvements and Bugfixes

### Added
Expand Down
2 changes: 1 addition & 1 deletion CMakeGraphVizOptions.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
set(GRAPHVIZ_IGNORE_TARGETS "^.+test$" "Qt5" "absl_.*" "^ramses-" "platform-" fmt lz4 psapi flatbuffers lua sol2 "rlogic-" imgui flatc "gtest_" "gmock" "harfbuzz" "Surface_" "Context_" "Window_" "Device_" opengl32 qtadvanceddocking AdvancedDockingSystemDemo CentralWidgetExample DeleteOnCloseTest EmptyDockAreaExample SidebarExample SimpleExample benchmark_main freetype "-ignore" lzma "spdlog" "Threads::Threads" zlibstatic assimp openctm libLodepng)
set(GRAPHVIZ_IGNORE_TARGETS "^.+test$" "Qt5" "absl_.*" "^ramses-" "platform-" fmt lz4 psapi flatbuffers lua sol2 zip "rlogic-" imgui flatc "gtest_" "gmock" "harfbuzz" "Surface_" "Context_" "Window_" "Device_" opengl32 qtadvanceddocking AdvancedDockingSystemDemo CentralWidgetExample DeleteOnCloseTest EmptyDockAreaExample SidebarExample SimpleExample benchmark_main freetype "-ignore" lzma "spdlog" "Threads::Threads" zlibstatic assimp openctm libLodepng "boost_" "test_" lodepng cityhash ProjectConfig synchronization Platform test-asset-producer "absl::" "pybind11::" pybind11_headers FlatBuffers CLI11 Python::Python tinygltf glm)
set(GRAPHVIZ_GENERATE_PER_TARGET FALSE)
set(GRAPHVIZ_GENERATE_DEPENDERS FALSE)
15 changes: 4 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.19)

SET(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo")

project(RaCoOS VERSION 1.10.0)
project(RaCoOS VERSION 2.0.0)

SET(RACO_RELEASE_DIRECTORY ${CMAKE_BINARY_DIR}/release)

Expand Down Expand Up @@ -196,11 +196,10 @@ macro(deploy_dlls_and_strip_symbols exetarget dlltarget outdir)
endmacro()
macro(deploy_ramses_client_only_shared_dlls tgt outdir)
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib-client-only "${outdir}")
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-logic-lib-client-only "${outdir}")
endmacro()
macro(deploy_ramses_with_renderer_shared_dlls tgt)
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib-client-only "$<TARGET_FILE_DIR:${tgt}>")
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib "$<TARGET_FILE_DIR:${tgt}>")
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-logic-lib "$<TARGET_FILE_DIR:${tgt}>")
endmacro()
macro(deploy_headless_shared_dlls tgt)
deploy_dlls_and_strip_symbols(${tgt} openctm "$<TARGET_FILE_DIR:${tgt}>")
Expand All @@ -210,7 +209,7 @@ macro(deploy_gui_shared_dlls tgt)
deploy_dlls_and_strip_symbols(${tgt} qtadvanceddocking "$<TARGET_FILE_DIR:${tgt}>")
endmacro()
macro(deploy_viewer tgt)
deploy_dlls_and_strip_symbols(${tgt} ramses-logic-viewer "$<TARGET_FILE_DIR:${tgt}>")
deploy_dlls_and_strip_symbols(${tgt} ramses-viewer "$<TARGET_FILE_DIR:${tgt}>")
endmacro()
macro(deploy_python_dlls tgt)
IF(WIN32)
Expand All @@ -229,10 +228,6 @@ if(PACKAGE_TESTS)
enable_testing()
include(GoogleTest)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) # needed to build on Windows
set(raco_test_resources_base_path "${CMAKE_CURRENT_SOURCE_DIR}/resources")
#if (WINDOWS)
#string(REPLACE "/" "\\\\" raco_test_resources_base_path "${raco_test_resources_base_path}")
#endif()
add_subdirectory(third_party/googletest)

# See https://cmake.org/cmake/help/v3.10/module/GoogleTest.html
Expand All @@ -257,7 +252,7 @@ if(PACKAGE_TESTS)
DISCOVERY_MODE PRE_TEST
)
set_target_properties(${TESTNAME} PROPERTIES FOLDER tests)
target_compile_definitions(${TESTNAME} PRIVATE -DRACO_TEST_RESOURCES_BASE_PATH="${raco_test_resources_base_path}")
target_compile_definitions(${TESTNAME} PRIVATE DEFAULT_RESOURCES_DIRECTORY="${RACO_RELEASE_DIRECTORY}/projects")
# TODO: Working directory for tests (should be also config specific), required for tests which modify files
endmacro()
macro(raco_package_add_qt_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
Expand All @@ -277,13 +272,11 @@ if(PACKAGE_TESTS)
endmacro()
macro(raco_package_add_headless_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
raco_package_add_qt_test(${TESTNAME} "${FILES}" "${LIBRARIES}" "${TEST_WORKING_DIRECTORY}")
target_link_libraries(${TESTNAME} raco::ramses-logic-lib-client-only)
deploy_headless_shared_dlls(${TESTNAME})
deploy_ramses_client_only_shared_dlls(${TESTNAME} "$<TARGET_FILE_DIR:${TESTNAME}>")
endmacro()
macro(raco_package_add_gui_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
raco_package_add_qt_test(${TESTNAME} "${FILES}" "${LIBRARIES}" "${TEST_WORKING_DIRECTORY}")
target_link_libraries(${TESTNAME} raco::ramses-lib raco::ramses-logic-lib)
deploy_gui_shared_dlls(${TESTNAME})
deploy_ramses_with_renderer_shared_dlls(${TESTNAME} "$<TARGET_FILE_DIR:${TESTNAME}>")
endmacro()
Expand Down
2 changes: 1 addition & 1 deletion EditorApp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ add_executable(RaCoEditor WIN32 ${SOURCES} ${APP_ICON_RESOURCE_WINDOWS})
target_compile_definitions( RaCoEditor PUBLIC -DRACO_OSS_COMMIT="sha1 ${RAMSES_OSS_COMMIT_HASH}" )
target_compile_definitions( RaCoEditor PUBLIC -DRACO_OSS_VERSION="${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
target_compile_definitions( RaCoEditor PUBLIC -DRAMSES_VERSION="${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}" )
target_compile_definitions( RaCoEditor PUBLIC -DRLOGIC_VERSION="${RLOGIC_VERSION_MAJOR}.${RLOGIC_VERSION_MINOR}.${RLOGIC_VERSION_PATCH}" )
enable_warnings_as_errors(RaCoEditor)

set_target_properties(RaCoEditor PROPERTIES OUTPUT_NAME "RamsesComposer" RUNTIME_OUTPUT_DIRECTORY "${RACO_RELEASE_DIRECTORY}/bin/$<CONFIG>")
Expand Down Expand Up @@ -70,6 +69,7 @@ PUBLIC
Qt5::Widgets
qtadvanceddocking
raco::PythonAPI
raco::ApplicationLib
raco::RamsesWidgets
PRIVATE
raco::pybind11
Expand Down
18 changes: 10 additions & 8 deletions EditorApp/OpenRecentMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#include <fstream>
#include <QSettings>

using namespace raco;

OpenRecentMenu::OpenRecentMenu(QWidget* parent) : QMenu{"Open &Recent", parent} {
QObject::connect(this, &QMenu::aboutToShow, this, [this]() {
refreshRecentFileMenu();
Expand All @@ -23,7 +25,7 @@ OpenRecentMenu::OpenRecentMenu(QWidget* parent) : QMenu{"Open &Recent", parent}

void OpenRecentMenu::addRecentFile(const QString& file) {
if (file.size()) {
auto recentFilesStore = raco::core::PathManager::recentFilesStoreSettings();
auto recentFilesStore = core::PathManager::recentFilesStoreSettings();
QStringList recentFiles{recentFilesStore.value("recent_files").toStringList()};
auto it = std::find(recentFiles.begin(), recentFiles.end(), file);
if (it != recentFiles.end()) {
Expand All @@ -39,7 +41,7 @@ void OpenRecentMenu::addRecentFile(const QString& file) {

recentFilesStore.sync();
if (recentFilesStore.status() != QSettings::NoError) {
LOG_ERROR(raco::log_system::COMMON, "Saving recent files list failed: {}", raco::core::PathManager::recentFilesStorePath().string());
LOG_ERROR(log_system::COMMON, "Saving recent files list failed: {}", core::PathManager::recentFilesStorePath().string());
}
}
}
Expand All @@ -61,7 +63,7 @@ bool isOneDriveIniFile(std::filesystem::path path) {
}

// Check whether specified path is on OneDrive.
bool isOneDrivePath(raco::utils::u8path path) {
bool isOneDrivePath(utils::u8path path) {
auto onedriveIniFilename = "desktop.ini";

auto fsPath = std::filesystem::path(path.internalPath());
Expand Down Expand Up @@ -90,7 +92,7 @@ bool isOneDrivePath(raco::utils::u8path path) {
std::filesystem::path foundPath(*itFound);

if (isOneDriveIniFile(foundPath)) {
LOG_INFO(raco::log_system::COMMON, "OneDrive root found at: {}", foundPath.string());
LOG_INFO(log_system::COMMON, "OneDrive root found at: {}", foundPath.string());
return true;
}
}
Expand All @@ -103,7 +105,7 @@ bool isOneDrivePath(raco::utils::u8path path) {
}

void OpenRecentMenu::refreshRecentFileMenu() {
auto recentFilesStore = raco::core::PathManager::recentFilesStoreSettings();
auto recentFilesStore = core::PathManager::recentFilesStoreSettings();
QStringList recentFiles{recentFilesStore.value("recent_files").toStringList()};
setDisabled(recentFiles.size() == 0);
while (actions().size() > 0) {
Expand All @@ -116,13 +118,13 @@ void OpenRecentMenu::refreshRecentFileMenu() {
auto* action = addAction(actionText);

auto fileString = file.toStdString();
if (!raco::utils::u8path(fileString).exists()) {
if (!utils::u8path(fileString).exists()) {
action->setEnabled(false);
action->setText(actionText + " (unavailable)");
} else if (isOneDrivePath(raco::utils::u8path(fileString))) {
} else if (isOneDrivePath(utils::u8path(fileString))) {
// Not touching cloud file to prevent its download.
action->setText(actionText + " (OneDrive)");
} else if (!raco::utils::u8path(fileString).userHasReadAccess()) {
} else if (!utils::u8path(fileString).userHasReadAccess()) {
action->setEnabled(false);
action->setText(actionText + " (no read access)");
}
Expand Down
Loading

0 comments on commit 1bfc8dc

Please sign in to comment.