Skip to content

Commit

Permalink
Release v0.8.2
Browse files Browse the repository at this point in the history
  • Loading branch information
AchimStremplat committed Jul 20, 2021
1 parent cb76ff0 commit b50201c
Show file tree
Hide file tree
Showing 140 changed files with 4,884 additions and 1,117 deletions.
32 changes: 32 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,38 @@ If a copy of the MPL was not distributed with this file, You can obtain one at h
### Known Bugs
-->

## [0.8.2]

### Added
* Error View - a new dock window that lists all editable objects' and external reference update errors in the current scene, with easy go-to functionality (double click or context menu)
* The viewport background color can now be set from the project settings.
* The Linux build no longer requires a pre-installed Qt and can be started directly with shell scripts (`RamsesComposer.sh` and `RaCoHeadless.sh`).
* Added a default project subfolder structure.
* Saving a project will now generate the following four subfolders in the project root folder: "images", "meshes", "scripts" and "shaders"
* After loading a project, file browsers for new URIs will start at one of the previously mentioned subfolders, depending on what type the URI's root object has
* The folder of the recently changed URI will be cached for next time an object of the same type needs an URI changed
* When the URI file browser can't find the resource subfolder, it will start at the project root folder instead
* The four default resource subfolders in the release folder have been moved from "resources" into "projects"
* The file loader for saving/opening projects starts at the User Projects Directory, and will be cached at the folder of the last saved/opened project.
* Added support for shared materials which are now the default for newly created MeshNodes. The MeshNode now has a "Private Material" flag which can be used
to enable per-meshnode private materials reproducing the old behaviour. Loading of old projects will set the flag to private on import.

### Changes
* Update from ramses-logic 0.6.1 to ramses-logic 0.6.2
* Update from ramses 27.0.103 to ramses 27.0.105
* Improved performance of undo/redo, in particular when deleting large numbers of objects, and of prefab updates.
* Changed "Viewport" naming in Project Setting to "Display" naming.

### Fixes
* Changes to a geometry shader are now automatically applied even if the same material uses a "Defines URI".
* The "go to referenced object" button is now also enabled for read-only objects.
* Prevent MeshNodes from becoming invisible if they have children in the scenegraph.
* Resize of the preview no longer crashes in Linux (fix in Ramses 27.0.105)
* Identical Ramses Logic errors for an object do not get regenerated in the UI all the time anymore.
* Enabled portrait sizes for project display.
* Fixed runtime errors in scene not getting updated after deleting an object that contains a runtime error.


## [0.8.1]

### Added
Expand Down
45 changes: 39 additions & 6 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 0.8.1)
project(RaCoOS VERSION 0.8.2)

SET(RACO_RELEASE_DIRECTORY ${CMAKE_BINARY_DIR}/release)

Expand Down Expand Up @@ -72,9 +72,28 @@ macro(deploy_qt tgt)
COMMAND "${RACO_QT_WINDEPLOY_PATH}/windeployqt.exe" "$<$<CONFIG:Debug>:--no-plugins>" --no-opengl-sw --no-system-d3d-compiler --no-svg --no-translations --no-compiler-runtime "$<TARGET_FILE:${tgt}>"
# Qt deploys the folder imageformats which we do not need - createReadHandlerHelper in C:\Qt\5.15.2\Src\qtbase\src\gui\image\qimagereader.cpp contains hardcoded support for the extensions png, bmp, dib, xpm, xbm, pbm, pbmraw, pgm, pgmraw, ppm and ppmraw (which is more than we need).
COMMAND ${CMAKE_COMMAND} -E rm -fr "$<TARGET_FILE_DIR:${tgt}>/imageformats"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${RACO_QT_BASE}/../Src/LICENSE.LGPLv3" "$<TARGET_FILE_DIR:${tgt}>/QtDllLicense.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/License.txt" "$<TARGET_FILE_DIR:${tgt}>/License.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/third_party/qtsharedlibs_license.txt" "$<TARGET_FILE_DIR:${tgt}>/qtsharedlibs_license.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/LICENSE.txt" "$<TARGET_FILE_DIR:${tgt}>/LICENSE.txt"
)
ELSE()
set(LINUXDEPLOYQTREQUIRED $ENV{LINUXDEPLOYQTREQUIRED})
find_program(LINUXDEPLOYQT linuxdeployqt)
if(EXISTS "${LINUXDEPLOYQT}")
add_custom_command(TARGET ${tgt} POST_BUILD
COMMAND "${LINUXDEPLOYQT}" "$<TARGET_FILE:${tgt}>" -qmake="${RACO_QT_BASE}/bin/qmake" -no-copy-copyright-files -no-strip -no-translations
COMMAND ${CMAKE_COMMAND} -E rm -f "$<TARGET_FILE_DIR:${tgt}>/AppRun" "$<TARGET_FILE:${tgt}>.sh"
COMMAND ${CMAKE_COMMAND} -D TARGET_FILE=$<TARGET_FILE:${tgt}> -D ROOT_DIR=${CMAKE_SOURCE_DIR} -P "${CMAKE_SOURCE_DIR}/ubuntustartscript.cmake"
COMMAND chmod +x "$<TARGET_FILE:${tgt}>.sh"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/third_party/qtsharedlibs_license.txt" "$<TARGET_FILE_DIR:${tgt}>/lib/qtsharedlibs_license.txt"
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/LICENSE.txt" "$<TARGET_FILE_DIR:${tgt}>/LICENSE.txt"
WORKING_DIRECTORY "$<TARGET_FILE_DIR:${tgt}>"
)

elseif(LINUXDEPLOYQTREQUIRED)
message(SEND_ERROR "Cannot find linuxdeployqt in the path, will not deploy Qt shared libraries. This is an error because the environment variable 'LINUXDEPLOYQTREQUIRED' is set, indicating that this build is used to create a release (which will need the Qt shared libs deployed to work properly).")
else()
message(WARNING "Cannot find linuxdeployqt in the path, will not deploy Qt shared libraries. You can ignore this message on a developer machine, but not if you want to build a release. If you have linuxdeployqt, you can either add its path to your system path or to the CMAKE_PROGRAM_PATH environment variable")
endif()
ENDIF()
endmacro()
macro(deploy_raco_cppruntime_dlls tgt)
Expand Down Expand Up @@ -111,7 +130,6 @@ macro(deploy_ramses_with_renderer_shared_dlls tgt)
)
endmacro()
macro(deploy_headless_shared_dlls tgt)
deploy_qt(${tgt}) # this automatically figures out if the target is headless or not
add_custom_command(TARGET ${tgt} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:openctm> "$<TARGET_FILE_DIR:${tgt}>"
)
Expand Down Expand Up @@ -158,14 +176,29 @@ if(PACKAGE_TESTS)
target_compile_definitions(${TESTNAME} PRIVATE -DRACO_TEST_RESOURCES_BASE_PATH="${raco_test_resources_base_path}")
# TODO: Working directory for tests (should be also config specific), required for tests which modify files
endmacro()
macro(raco_package_add_headless_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
macro(raco_package_add_qt_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
raco_package_add_test(${TESTNAME} "${FILES}" "${LIBRARIES}" "${TEST_WORKING_DIRECTORY}")
IF(WIN32)
# In Windows we need the DLLs to be next to the executable to start Qt.
# In Linux even if we deploy the DLLs next to the tests, we would have to start the
# executable with the correct LD_LIBRARY_PATH environment variable (or the shell script
# deploy_qt generates) for the test to start without Qt in the path. We also
# would have to deploy the "offscreen" plug-in to allow the GUI tests to run
# on a machine without OpenGL. And deploying Qt causes a qt.conf to be created
# which messes with Qt setup even if the paths are all there.
# So do not deploy Qt in Linux for the tests. If you want to run the tests,
# make sure Qt is installed and in the path.
deploy_qt(${TESTNAME})
ENDIF()
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-lib-client-only raco::ramses-logic-lib-client-only)
deploy_headless_shared_dlls(${TESTNAME})
deploy_ramses_client_only_shared_dlls(${TESTNAME})
endmacro()
macro(raco_package_add_gui_test TESTNAME FILES LIBRARIES TEST_WORKING_DIRECTORY)
raco_package_add_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-client-only raco::ramses-logic-lib-client-only)
deploy_gui_shared_dlls(${TESTNAME})
deploy_ramses_client_only_shared_dlls(${TESTNAME})
Expand Down
1 change: 1 addition & 0 deletions EditorApp/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,5 @@ add_compile_definitions(RaCoEditor PRIVATE CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}

deploy_gui_shared_dlls(RaCoEditor)
deploy_ramses_with_renderer_shared_dlls(RaCoEditor)
deploy_qt(RaCoEditor)
deploy_raco_cppruntime_dlls(RaCoEditor)
8 changes: 4 additions & 4 deletions EditorApp/DebugActions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,15 @@ void configureDebugActions(Ui::MainWindow* ui, QWidget* widget, raco::core::Comm
auto mesh = commandInterface->createObject(raco::user_types::Mesh::typeDescription.typeName, Naming::format("DuckMesh"));
commandInterface->set(raco::core::ValueHandle{mesh, {"bakeMeshes"}}, true);
commandInterface->set(raco::core::ValueHandle{mesh, {"uri"}},
(raco::core::PathManager::defaultResourceDirectory() / "meshes" / "Duck.glb").generic_string());
(raco::core::PathManager::defaultResourceDirectory() / raco::core::PathManager::MESH_SUB_DIRECTORY / "Duck.glb").generic_string());
auto material = commandInterface->createObject(raco::user_types::Material::typeDescription.typeName, Naming::format("DuckMaterial"));
commandInterface->set(raco::core::ValueHandle{material, {"uriVertex"}},
(raco::core::PathManager::defaultResourceDirectory() / "shaders" / "simple_texture.vert").generic_string());
(raco::core::PathManager::defaultResourceDirectory() / raco::core::PathManager::SHADER_SUB_DIRECTORY / "simple_texture.vert").generic_string());
commandInterface->set(raco::core::ValueHandle{material, {"uriFragment"}},
(raco::core::PathManager::defaultResourceDirectory() / "shaders" / "simple_texture.frag").generic_string());
(raco::core::PathManager::defaultResourceDirectory() / raco::core::PathManager::SHADER_SUB_DIRECTORY / "simple_texture.frag").generic_string());
auto texture = commandInterface->createObject(raco::user_types::Texture::typeDescription.typeName, Naming::format("DuckTexture"));
commandInterface->set(raco::core::ValueHandle{texture, {"uri"}},
(raco::core::PathManager::defaultResourceDirectory() / "images" / "DuckCM.png").generic_string());
(raco::core::PathManager::defaultResourceDirectory() / raco::core::PathManager::IMAGE_SUB_DIRECTORY / "DuckCM.png").generic_string());

auto node = commandInterface->createObject(raco::user_types::Node::typeDescription.typeName, Naming::format("DuckNode"));
auto meshNode = commandInterface->createObject(raco::user_types::MeshNode::typeDescription.typeName, Naming::format("DuckMeshNode"));
Expand Down
4 changes: 2 additions & 2 deletions EditorApp/EditMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ EditMenu::EditMenu(raco::application::RaCoApplication* racoApplication, QMenu* m
try {
racoApplication->activeRaCoProject().undoStack()->undo();
} catch (raco::core::ExtrefError& error) {
QMessageBox::warning(menu, "Undo Error", fmt::format("External reference update failed.\n\n{}", error.what()).c_str(), QMessageBox::Close);
// This ext ref update error message will be shown in the Error View.
}
});

Expand All @@ -33,7 +33,7 @@ EditMenu::EditMenu(raco::application::RaCoApplication* racoApplication, QMenu* m
try {
racoApplication->activeRaCoProject().undoStack()->redo();
} catch (raco::core::ExtrefError& error) {
QMessageBox::warning(menu, "Undo Error", fmt::format("External reference update failed.\n\n{}", error.what()).c_str(), QMessageBox::Close);
// This ext ref update error message will be shown in the Error View.
}
});

Expand Down
Loading

0 comments on commit b50201c

Please sign in to comment.