Skip to content

Commit 1bfc8dc

Browse files
committed
Release v2.0.0
1 parent 7659e32 commit 1bfc8dc

File tree

512 files changed

+73244
-14600
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

512 files changed

+73244
-14600
lines changed

.gitmodules

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@
88
[submodule "third_party/Qt-Advanced-Docking-System"]
99
path = third_party/Qt-Advanced-Docking-System
1010
url = https://github.com/githubuser0xFFFF/Qt-Advanced-Docking-System.git
11-
[submodule "third_party/ramses-logic"]
12-
path = third_party/ramses-logic
13-
url = https://github.com/GENIVI/ramses-logic.git
14-
[submodule "third_party/glm"]
15-
path = third_party/glm
16-
url = https://github.com/g-truc/glm.git
1711
[submodule "third_party/tinygltf"]
1812
path = third_party/tinygltf
1913
url = https://github.com/syoyo/tinygltf.git
@@ -24,3 +18,9 @@
2418
[submodule "third_party/zip"]
2519
path = third_party/zip
2620
url = https://github.com/kuba--/zip
21+
[submodule "third_party/ramses"]
22+
path = third_party/ramses
23+
url = https://github.com/bmwcarit/ramses.git
24+
[submodule "third_party/boost"]
25+
path = third_party/boost
26+
url = https://github.com/boostorg/boost.git

CHANGELOG.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,62 @@ If a copy of the MPL was not distributed with this file, You can obtain one at h
2424
2525
-->
2626

27+
## [2.0.0] Switch to Ramses 28, Abstract Scene View, Misc UI Iprovements and Bugfixes
28+
* **This is a major version upgrade for both RamsesComposer and Ramses/LogicEngine containing changes that can break existing scenes.**
29+
* **File version number has changed. Files saved with RaCo 2.0.0 cannot be opened by previous versions.**
30+
* **Update from Ramses-Logic 1.4.2 and Ramses 27.0.130 to Ramses 28.0.0. The LogicEngine has been merged into Ramses.**
31+
* **Scenes exported with RaCo 2.0.0 can't be loaded with Ramses versions prior to 28.0.0.**
32+
* **Export will only write a single file containing both Ramses and LogicEngine objects.**
33+
* **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.**
34+
* **RamsesComposer now requires Ubuntu 20.04 and gcc 9.4.0 instead of Ubuntu 18.04 and gcc 8.4.0 to build.**
35+
36+
### Breaking Changes
37+
38+
The following changes can break existing scenes upon loading
39+
* 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.
40+
* 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.
41+
42+
The following changes may break python scripts processing a scene but existing scenes will be migrated automatically when loading them
43+
* 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.
44+
* 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.
45+
* The newly introduced array-type properties mentioned above have the indices starting at 1 as property names as for the `LuaScript` array-type properties.
46+
* 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.
47+
* Introduced generic meta data scheme.
48+
* The meta data is now stored in a new `metadata` property.
49+
* 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.
50+
* The gltfExtras meta data is now stored in the `gltfExtras` category inside the `metadata` container. The Python API `metadata` function has been removed.
51+
* Removed the `userTags` property from the `ProjectSettings` object.
52+
* The `logic_path` parameter was removed from the `export` function in the Python API.
53+
54+
55+
### Added
56+
* 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.
57+
* Added button in property browser to show objects referencing the current object.
58+
* Added prefab lookup button to the property browser.
59+
* Added texture preview in the property browser.
60+
* 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.
61+
* Added `resize` property member function to the Python API to resize array-type properties.
62+
* Added composite commands to the Python API which generate only a single undo stack entry. See Python API reference for details.
63+
* Added shortcuts for the mostly used functions.
64+
* Added warning when an opened RCA file is changed externally.
65+
* Added dialog to copy the content of scalar read-only properties into the clipboard as plain text.
66+
67+
### Changes
68+
* 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.
69+
* 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.
70+
71+
### Fixes
72+
* Prevent crash when opening invalid or broken project files and show an error dialog instead.
73+
* Fixed crash caused by a tabbed away Preview Window when closing RaCo.
74+
* Fixed crash when the folder of the currently loaded project is deleted.
75+
* Prevent directories from being added as external projects when calling the `addExternalProject` Python API function with a directory as argument.
76+
* Export of `Nodes` with `enabled`=false and `visibilty`=true is now correct.
77+
* 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`.
78+
* Fixed update of partially linked array uniform properties to avoid discarding the non-linked property values during updates.
79+
* Prevent user from taking screenshots when multisampling factor is greater than zero.
80+
* Add manual update (refresh) button to the preview which will reset the preview itself and all offscreen buffers and rerender the scene.
81+
82+
2783
## [1.10.0] Multiedit, Shader Includes, Drag-and-drop Support, Misc Usability Improvements and Bugfixes
2884

2985
### Added

CMakeGraphVizOptions.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
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)
1+
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)
22
set(GRAPHVIZ_GENERATE_PER_TARGET FALSE)
33
set(GRAPHVIZ_GENERATE_DEPENDERS FALSE)

CMakeLists.txt

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ cmake_minimum_required(VERSION 3.19)
1111

1212
SET(CMAKE_CONFIGURATION_TYPES "Debug;RelWithDebInfo")
1313

14-
project(RaCoOS VERSION 1.10.0)
14+
project(RaCoOS VERSION 2.0.0)
1515

1616
SET(RACO_RELEASE_DIRECTORY ${CMAKE_BINARY_DIR}/release)
1717

@@ -196,11 +196,10 @@ macro(deploy_dlls_and_strip_symbols exetarget dlltarget outdir)
196196
endmacro()
197197
macro(deploy_ramses_client_only_shared_dlls tgt outdir)
198198
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib-client-only "${outdir}")
199-
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-logic-lib-client-only "${outdir}")
200199
endmacro()
201200
macro(deploy_ramses_with_renderer_shared_dlls tgt)
201+
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib-client-only "$<TARGET_FILE_DIR:${tgt}>")
202202
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-lib "$<TARGET_FILE_DIR:${tgt}>")
203-
deploy_dlls_and_strip_symbols(${tgt} raco::ramses-logic-lib "$<TARGET_FILE_DIR:${tgt}>")
204203
endmacro()
205204
macro(deploy_headless_shared_dlls tgt)
206205
deploy_dlls_and_strip_symbols(${tgt} openctm "$<TARGET_FILE_DIR:${tgt}>")
@@ -210,7 +209,7 @@ macro(deploy_gui_shared_dlls tgt)
210209
deploy_dlls_and_strip_symbols(${tgt} qtadvanceddocking "$<TARGET_FILE_DIR:${tgt}>")
211210
endmacro()
212211
macro(deploy_viewer tgt)
213-
deploy_dlls_and_strip_symbols(${tgt} ramses-logic-viewer "$<TARGET_FILE_DIR:${tgt}>")
212+
deploy_dlls_and_strip_symbols(${tgt} ramses-viewer "$<TARGET_FILE_DIR:${tgt}>")
214213
endmacro()
215214
macro(deploy_python_dlls tgt)
216215
IF(WIN32)
@@ -229,10 +228,6 @@ if(PACKAGE_TESTS)
229228
enable_testing()
230229
include(GoogleTest)
231230
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) # needed to build on Windows
232-
set(raco_test_resources_base_path "${CMAKE_CURRENT_SOURCE_DIR}/resources")
233-
#if (WINDOWS)
234-
#string(REPLACE "/" "\\\\" raco_test_resources_base_path "${raco_test_resources_base_path}")
235-
#endif()
236231
add_subdirectory(third_party/googletest)
237232

238233
# See https://cmake.org/cmake/help/v3.10/module/GoogleTest.html
@@ -257,7 +252,7 @@ if(PACKAGE_TESTS)
257252
DISCOVERY_MODE PRE_TEST
258253
)
259254
set_target_properties(${TESTNAME} PROPERTIES FOLDER tests)
260-
target_compile_definitions(${TESTNAME} PRIVATE -DRACO_TEST_RESOURCES_BASE_PATH="${raco_test_resources_base_path}")
255+
target_compile_definitions(${TESTNAME} PRIVATE DEFAULT_RESOURCES_DIRECTORY="${RACO_RELEASE_DIRECTORY}/projects")
261256
# TODO: Working directory for tests (should be also config specific), required for tests which modify files
262257
endmacro()
263258
macro(raco_package_add_qt_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
@@ -277,13 +272,11 @@ if(PACKAGE_TESTS)
277272
endmacro()
278273
macro(raco_package_add_headless_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
279274
raco_package_add_qt_test(${TESTNAME} "${FILES}" "${LIBRARIES}" "${TEST_WORKING_DIRECTORY}")
280-
target_link_libraries(${TESTNAME} raco::ramses-logic-lib-client-only)
281275
deploy_headless_shared_dlls(${TESTNAME})
282276
deploy_ramses_client_only_shared_dlls(${TESTNAME} "$<TARGET_FILE_DIR:${TESTNAME}>")
283277
endmacro()
284278
macro(raco_package_add_gui_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
285279
raco_package_add_qt_test(${TESTNAME} "${FILES}" "${LIBRARIES}" "${TEST_WORKING_DIRECTORY}")
286-
target_link_libraries(${TESTNAME} raco::ramses-lib raco::ramses-logic-lib)
287280
deploy_gui_shared_dlls(${TESTNAME})
288281
deploy_ramses_with_renderer_shared_dlls(${TESTNAME} "$<TARGET_FILE_DIR:${TESTNAME}>")
289282
endmacro()

EditorApp/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ add_executable(RaCoEditor WIN32 ${SOURCES} ${APP_ICON_RESOURCE_WINDOWS})
3535
target_compile_definitions( RaCoEditor PUBLIC -DRACO_OSS_COMMIT="sha1 ${RAMSES_OSS_COMMIT_HASH}" )
3636
target_compile_definitions( RaCoEditor PUBLIC -DRACO_OSS_VERSION="${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
3737
target_compile_definitions( RaCoEditor PUBLIC -DRAMSES_VERSION="${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}" )
38-
target_compile_definitions( RaCoEditor PUBLIC -DRLOGIC_VERSION="${RLOGIC_VERSION_MAJOR}.${RLOGIC_VERSION_MINOR}.${RLOGIC_VERSION_PATCH}" )
3938
enable_warnings_as_errors(RaCoEditor)
4039

4140
set_target_properties(RaCoEditor PROPERTIES OUTPUT_NAME "RamsesComposer" RUNTIME_OUTPUT_DIRECTORY "${RACO_RELEASE_DIRECTORY}/bin/$<CONFIG>")
@@ -70,6 +69,7 @@ PUBLIC
7069
Qt5::Widgets
7170
qtadvanceddocking
7271
raco::PythonAPI
72+
raco::ApplicationLib
7373
raco::RamsesWidgets
7474
PRIVATE
7575
raco::pybind11

EditorApp/OpenRecentMenu.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
#include <fstream>
1616
#include <QSettings>
1717

18+
using namespace raco;
19+
1820
OpenRecentMenu::OpenRecentMenu(QWidget* parent) : QMenu{"Open &Recent", parent} {
1921
QObject::connect(this, &QMenu::aboutToShow, this, [this]() {
2022
refreshRecentFileMenu();
@@ -23,7 +25,7 @@ OpenRecentMenu::OpenRecentMenu(QWidget* parent) : QMenu{"Open &Recent", parent}
2325

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

4042
recentFilesStore.sync();
4143
if (recentFilesStore.status() != QSettings::NoError) {
42-
LOG_ERROR(raco::log_system::COMMON, "Saving recent files list failed: {}", raco::core::PathManager::recentFilesStorePath().string());
44+
LOG_ERROR(log_system::COMMON, "Saving recent files list failed: {}", core::PathManager::recentFilesStorePath().string());
4345
}
4446
}
4547
}
@@ -61,7 +63,7 @@ bool isOneDriveIniFile(std::filesystem::path path) {
6163
}
6264

6365
// Check whether specified path is on OneDrive.
64-
bool isOneDrivePath(raco::utils::u8path path) {
66+
bool isOneDrivePath(utils::u8path path) {
6567
auto onedriveIniFilename = "desktop.ini";
6668

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

9294
if (isOneDriveIniFile(foundPath)) {
93-
LOG_INFO(raco::log_system::COMMON, "OneDrive root found at: {}", foundPath.string());
95+
LOG_INFO(log_system::COMMON, "OneDrive root found at: {}", foundPath.string());
9496
return true;
9597
}
9698
}
@@ -103,7 +105,7 @@ bool isOneDrivePath(raco::utils::u8path path) {
103105
}
104106

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

118120
auto fileString = file.toStdString();
119-
if (!raco::utils::u8path(fileString).exists()) {
121+
if (!utils::u8path(fileString).exists()) {
120122
action->setEnabled(false);
121123
action->setText(actionText + " (unavailable)");
122-
} else if (isOneDrivePath(raco::utils::u8path(fileString))) {
124+
} else if (isOneDrivePath(utils::u8path(fileString))) {
123125
// Not touching cloud file to prevent its download.
124126
action->setText(actionText + " (OneDrive)");
125-
} else if (!raco::utils::u8path(fileString).userHasReadAccess()) {
127+
} else if (!utils::u8path(fileString).userHasReadAccess()) {
126128
action->setEnabled(false);
127129
action->setText(actionText + " (no read access)");
128130
}

0 commit comments

Comments
 (0)