diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 20b233c66..ceba2841f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,6 +25,7 @@ stages:
- cmake --build . -- -j $(nproc)
- cmake --install .
- if [[ "${BUILD_TESTS_ONLY}" ]]; then ./openmw_test_suite; fi
+ - if [[ "${BUILD_TESTS_ONLY}" ]]; then ./openmw_detournavigator_navmeshtilescache_benchmark; fi
- ccache -s
artifacts:
paths:
@@ -169,6 +170,10 @@ variables: &cs-targets
targets: "openmw-cs,bsatool,esmtool,niftest"
package: "CS"
+variables: &tests-targets
+ targets: "openmw_test_suite,openmw_detournavigator_navmeshtilescache_benchmark"
+ package: "Tests"
+
.Windows_Ninja_Base:
tags:
- windows
@@ -187,7 +192,7 @@ variables: &cs-targets
- $time = (Get-Date -Format "HH:mm:ss")
- echo ${time}
- echo "started by ${GITLAB_USER_NAME}"
- - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V -N
+ - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V -N -b -t
- cd MSVC2019_64_Ninja
- .\ActivateMSVC.ps1
- cmake --build . --config $config --target ($targets.Split(','))
@@ -199,6 +204,7 @@ variables: &cs-targets
Get-ChildItem -Recurse *.pdb | Remove-Item
}
- 7z a -tzip ..\..\OpenMW_MSVC2019_64_${package}_${config}_${CI_COMMIT_REF_NAME}.zip '*'
+ - if ($executables) { foreach ($exe in $executables.Split(',')) { & .\$exe } }
after_script:
- Copy-Item C:\ProgramData\chocolatey\logs\chocolatey.log
cache:
@@ -262,6 +268,15 @@ Windows_Ninja_CS_RelWithDebInfo:
<<: *cs-targets
config: "RelWithDebInfo"
+Windows_Ninja_Tests_RelWithDebInfo:
+ extends: .Windows_Ninja_Base
+ stage: build
+ variables:
+ <<: *tests-targets
+ config: "RelWithDebInfo"
+ # Gitlab can't successfully execute following binaries due to unknown reason
+ # executables: "openmw_test_suite.exe,openmw_detournavigator_navmeshtilescache_benchmark.exe"
+
.Windows_MSBuild_Base:
tags:
- windows
@@ -279,7 +294,7 @@ Windows_Ninja_CS_RelWithDebInfo:
- $time = (Get-Date -Format "HH:mm:ss")
- echo ${time}
- echo "started by ${GITLAB_USER_NAME}"
- - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V
+ - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V -b -t
- cd MSVC2019_64
- cmake --build . --config $config --target ($targets.Split(','))
- cd $config
@@ -290,6 +305,7 @@ Windows_Ninja_CS_RelWithDebInfo:
Get-ChildItem -Recurse *.pdb | Remove-Item
}
- 7z a -tzip ..\..\OpenMW_MSVC2019_64_${package}_${config}_${CI_COMMIT_REF_NAME}.zip '*'
+ - if ($executables) { foreach ($exe in $executables.Split(',')) { & .\$exe } }
after_script:
- Copy-Item C:\ProgramData\chocolatey\logs\chocolatey.log
cache:
@@ -353,6 +369,15 @@ Windows_MSBuild_CS_RelWithDebInfo:
<<: *cs-targets
config: "RelWithDebInfo"
+Windows_MSBuild_Tests_RelWithDebInfo:
+ extends: .Windows_MSBuild_Base
+ stage: build
+ variables:
+ <<: *tests-targets
+ config: "RelWithDebInfo"
+ # Gitlab can't successfully execute following binaries due to unknown reason
+ # executables: "openmw_test_suite.exe,openmw_detournavigator_navmeshtilescache_benchmark.exe"
+
Debian_AndroidNDK_arm64-v8a:
tags:
- linux
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba8081dae..e11d05d3d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -64,6 +64,7 @@
Bug #5452: Autowalk is being included in savegames
Bug #5469: Local map is reset when re-entering certain cells
Bug #5472: Mistify mod causes CTD in 0.46 on Mac
+ Bug #5473: OpenMW-CS: Cell border lines don't update properly on terrain change
Bug #5479: NPCs who should be walking around town are standing around without walking
Bug #5484: Zero value items shouldn't be able to be bought or sold for 1 gold
Bug #5485: Intimidate doesn't increase disposition on marginal wins
@@ -80,6 +81,7 @@
Bug #5603: Setting constant effect cast style doesn't correct effects view
Bug #5604: Only one valid NIF root node is loaded from a single file
Bug #5611: Usable items with "0 Uses" should be used only once
+ Bug #5619: Input events are queued during save loading
Bug #5622: Can't properly interact with the console when in pause menu
Bug #5627: Bookart not shown if it isn't followed by
statement
Bug #5633: Damage Spells in effect before god mode is enabled continue to hurt the player character and can kill them
@@ -121,6 +123,15 @@
Bug #5975: NIF controllers from sheath meshes are used
Bug #5991: Activate should always be allowed for inventory items
Bug #5995: NiUVController doesn't calculate the UV offset properly
+ Bug #6007: Crash when ending cutscene is playing
+ Bug #6016: Greeting interrupts Fargoth's sneak-walk
+ Bug #6022: OpenMW-CS: Terrain selection is not updated when undoing/redoing terrain changes
+ Bug #6023: OpenMW-CS: Clicking on a reference in "Terrain land editing" mode discards corresponding select/edit action
+ Bug #6028: Particle system controller values are incorrectly used
+ Bug #6035: OpenMW-CS: Circle brush in "Terrain land editing" mode sometimes includes vertices outside its radius
+ Bug #6036: OpenMW-CS: Terrain selection at the border of cells omits certain corner vertices
+ Bug #6043: Actor can have torch missing when torch animation is played
+ Bug #6047: Mouse bindings can be triggered during save loading
Feature #390: 3rd person look "over the shoulder"
Feature #832: OpenMW-CS: Handle deleted references
Feature #1536: Show more information about level on menu
@@ -141,6 +152,7 @@
Feature #5456: Basic collada animation support
Feature #5457: Realistic diagonal movement
Feature #5486: Fixes trainers to choose their training skills based on their base skill points
+ Feature #5500: Prepare enough navmesh tiles before scene loading ends
Feature #5511: Add in game option to toggle HRTF support in OpenMW
Feature #5519: Code Patch tab in launcher
Feature #5524: Resume failed script execution after reload
@@ -159,6 +171,9 @@
Feature #5814: Bsatool should be able to create BSA archives, not only to extract it
Feature #5828: Support more than 8 lights
Feature #5910: Fall back to delta time when physics can't keep up
+ Feature #6024: OpenMW-CS: Selecting terrain in "Terrain land editing" should support "Add to selection" and "Remove from selection" modes
+ Feature #6033: Include pathgrid to navigation mesh
+ Feature #6034: Find path based on area cost depending on NPC stats
Task #5480: Drop Qt4 support
Task #5520: Improve cell name autocompleter implementation
Task #5844: Update 'toggle sneak' documentation
diff --git a/CHANGELOG_PR.md b/CHANGELOG_PR.md
index cfe709e97..100bc376f 100644
--- a/CHANGELOG_PR.md
+++ b/CHANGELOG_PR.md
@@ -38,9 +38,15 @@ Editor Bug Fixes:
- Disabled record sorting in Topic and Journal Info tables, implemented drag-move for records (#4357)
- Topic and Journal Info records can now be cloned with a different parent Topic/Journal Id (#4363)
- Verifier no longer checks for alleged 'race' entries in clothing body parts (#5400)
+- Cell borders are now properly redrawn when undoing/redoing terrain changes (#5473)
- Loading mods now keeps the master index (#5675)
- Flicker and crashing on XFCE4 fixed (#5703)
- Collada models render properly in the Editor (#5713)
+- Terrain-selection grid is now properly updated when undoing/redoing terrain changes (#6022)
+- Tool outline and select/edit actions in "Terrain land editing" mode now ignore references (#6023)
+- Primary-select and secondary-select actions in "Terrain land editing" mode now behave like in "Instance editing" mode (#6024)
+- Using the circle brush to select terrain in the "Terrain land editing" mode no longer selects vertices outside the circle (#6035)
+- Vertices at the NW and SE corners of a cell can now also be selected in "Terrain land editing" mode if the adjacent cells aren't loaded yet (#6036)
Miscellaneous:
- Prevent save-game bloating by using an appropriate fog texture format (#5108)
diff --git a/CI/before_script.linux.sh b/CI/before_script.linux.sh
index f648bee51..44fce54b5 100755
--- a/CI/before_script.linux.sh
+++ b/CI/before_script.linux.sh
@@ -4,9 +4,14 @@ set -xeo pipefail
free -m
+BUILD_UNITTESTS=OFF
+BUILD_BENCHMARKS=OFF
+
if [[ "${BUILD_TESTS_ONLY}" ]]; then
export GOOGLETEST_DIR="${PWD}/googletest/build/install"
env GENERATOR='Unix Makefiles' CONFIGURATION=Release CI/build_googletest.sh
+ BUILD_UNITTESTS=ON
+ BUILD_BENCHMARKS=ON
fi
declare -a CMAKE_CONF_OPTS=(
@@ -54,7 +59,8 @@ if [[ "${BUILD_TESTS_ONLY}" ]]; then
-DBUILD_ESSIMPORTER=OFF \
-DBUILD_OPENCS=OFF \
-DBUILD_WIZARD=OFF \
- -DBUILD_UNITTESTS=ON \
+ -DBUILD_UNITTESTS=${BUILD_UNITTESTS} \
+ -DBUILD_BENCHMARKS=${BUILD_BENCHMARKS} \
-DGTEST_ROOT="${GOOGLETEST_DIR}" \
-DGMOCK_ROOT="${GOOGLETEST_DIR}" \
..
diff --git a/CI/before_script.msvc.sh b/CI/before_script.msvc.sh
index d98c28038..bb662c9de 100644
--- a/CI/before_script.msvc.sh
+++ b/CI/before_script.msvc.sh
@@ -73,6 +73,7 @@ CONFIGURATIONS=()
TEST_FRAMEWORK=""
GOOGLE_INSTALL_ROOT=""
INSTALL_PREFIX="."
+BUILD_BENCHMARKS=""
ACTIVATE_MSVC=""
SINGLE_CONFIG=""
@@ -133,6 +134,9 @@ while [ $# -gt 0 ]; do
INSTALL_PREFIX=$(echo "$1" | sed 's;\\;/;g' | sed -E 's;/+;/;g')
shift ;;
+ b )
+ BUILD_BENCHMARKS=true ;;
+
h )
cat </dev/null 2>&1 || { echo "Error: vswhere is not on the path."; wrappedExit 1; }
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 607a5d56b..4d66eea7b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -480,8 +480,8 @@ configure_resource_file(${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp-client-default.
configure_resource_file(${OpenMW_SOURCE_DIR}/files/tes3mp/tes3mp-server-default.cfg
"${OpenMW_BINARY_DIR}" "tes3mp-server-default.cfg")
-configure_resource_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg
- "${OpenMW_BINARY_DIR}" "settings-default.cfg")
+pack_resource_file(${OpenMW_SOURCE_DIR}/files/settings-default.cfg
+ "${OpenMW_BINARY_DIR}" "defaults.bin")
configure_resource_file(${OpenMW_SOURCE_DIR}/files/openmw.appdata.xml
"${OpenMW_BINARY_DIR}" "openmw.appdata.xml")
@@ -564,6 +564,7 @@ IF(BUILD_OPENMW OR BUILD_OPENCS)
# End of tes3mp addition
add_subdirectory (extern/osg-ffmpeg-videoplayer)
add_subdirectory (extern/oics)
+add_subdirectory (extern/Base64)
if (BUILD_OPENCS)
add_subdirectory (extern/osgQt)
endif()
@@ -668,11 +669,8 @@ if (WIN32)
set(WARNINGS "/W4")
set(WARNINGS_DISABLE
- # OpenMW specific warnings
4100 # Unreferenced formal parameter (-Wunused-parameter)
4127 # Conditional expression is constant
- 4244 # Storing value of one type in variable of another (size_t in int, for example)
- 4267 # Conversion from 'size_t' to 'int', possible loss of data
4996 # Function was declared deprecated
)
@@ -741,6 +739,10 @@ if (WIN32)
if (BUILD_WIZARD)
set_target_properties(openmw-wizard PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
+
+ if (BUILD_BENCHMARKS)
+ set_target_properties(openmw_detournavigator_navmeshtilescache_benchmark PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
+ endif()
endif(MSVC)
# TODO: At some point release builds should not use the console but rather write to a log file
@@ -880,7 +882,7 @@ elseif(NOT APPLE)
INSTALL(FILES "${OpenMW_SOURCE_DIR}/README.md" DESTINATION "." RENAME "README.txt")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/LICENSE" DESTINATION "." RENAME "LICENSE.txt")
INSTALL(FILES "${OpenMW_SOURCE_DIR}/files/mygui/DejaVuFontLicense.txt" DESTINATION ".")
- INSTALL(FILES "${INSTALL_SOURCE}/settings-default.cfg" DESTINATION ".")
+ INSTALL(FILES "${INSTALL_SOURCE}/defaults.bin" DESTINATION ".")
# Start of tes3mp addition
INSTALL(FILES "${INSTALL_SOURCE}/tes3mp-client-default.cfg" DESTINATION ".")
INSTALL(FILES "${INSTALL_SOURCE}/tes3mp-server-default.cfg" DESTINATION ".")
@@ -933,13 +935,13 @@ elseif(NOT APPLE)
SET(VCREDIST32 "${OpenMW_BINARY_DIR}/vcredist_x86.exe")
if(EXISTS ${VCREDIST32})
INSTALL(FILES ${VCREDIST32} DESTINATION "redist")
- SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x86.exe\\\" /q'" )
+ SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x86.exe\\\" /q /norestart'" )
endif(EXISTS ${VCREDIST32})
SET(VCREDIST64 "${OpenMW_BINARY_DIR}/vcredist_x64.exe")
if(EXISTS ${VCREDIST64})
INSTALL(FILES ${VCREDIST64} DESTINATION "redist")
- SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x64.exe\\\" /q'" )
+ SET(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "ExecWait '\\\"$INSTDIR\\\\redist\\\\vcredist_x64.exe\\\" /q /norestart'" )
endif(EXISTS ${VCREDIST64})
SET(OALREDIST "${OpenMW_BINARY_DIR}/oalinst.exe")
@@ -1022,7 +1024,7 @@ elseif(NOT APPLE)
ENDIF(BUILD_OPENCS)
# Install global configuration files
- INSTALL(FILES "${INSTALL_SOURCE}/settings-default.cfg" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
+ INSTALL(FILES "${INSTALL_SOURCE}/defaults.bin" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${INSTALL_SOURCE}/openmw.cfg.install" DESTINATION "${SYSCONFDIR}" RENAME "openmw.cfg" COMPONENT "openmw")
INSTALL(FILES "${INSTALL_SOURCE}/resources/version" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
INSTALL(FILES "${INSTALL_SOURCE}/gamecontrollerdb.txt" DESTINATION "${SYSCONFDIR}" COMPONENT "openmw")
diff --git a/apps/benchmarks/CMakeLists.txt b/apps/benchmarks/CMakeLists.txt
index b7170003e..f9aa9aad4 100644
--- a/apps/benchmarks/CMakeLists.txt
+++ b/apps/benchmarks/CMakeLists.txt
@@ -19,16 +19,9 @@ FetchContent_MakeAvailableExcludeFromAll(benchmark)
set(CMAKE_CXX_FLAGS "${SAVED_CMAKE_CXX_FLAGS}")
openmw_add_executable(openmw_detournavigator_navmeshtilescache_benchmark detournavigator/navmeshtilescache.cpp)
-target_compile_options(openmw_detournavigator_navmeshtilescache_benchmark PRIVATE -Wall)
target_compile_features(openmw_detournavigator_navmeshtilescache_benchmark PRIVATE cxx_std_17)
target_link_libraries(openmw_detournavigator_navmeshtilescache_benchmark benchmark::benchmark components)
if (UNIX AND NOT APPLE)
target_link_libraries(openmw_detournavigator_navmeshtilescache_benchmark ${CMAKE_THREAD_LIBS_INIT})
endif()
-
-if (MSVC)
- if (CMAKE_CL_64)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /bigobj")
- endif (CMAKE_CL_64)
-endif (MSVC)
diff --git a/apps/browser/main.cpp b/apps/browser/main.cpp
index 951685ad0..1fbf36867 100644
--- a/apps/browser/main.cpp
+++ b/apps/browser/main.cpp
@@ -13,9 +13,9 @@ std::string loadSettings (Settings::Manager & settings)
// prefer local
if (boost::filesystem::exists(localdefault))
- settings.loadDefault(localdefault);
+ settings.loadDefault(localdefault, false);
else if (boost::filesystem::exists(globaldefault))
- settings.loadDefault(globaldefault);
+ settings.loadDefault(globaldefault, false);
else
throw std::runtime_error ("No default settings file found! Make sure the file \"tes3mp-client-default.cfg\" was properly installed.");
diff --git a/apps/esmtool/esmtool.cpp b/apps/esmtool/esmtool.cpp
index 579f5f67d..60483f981 100644
--- a/apps/esmtool/esmtool.cpp
+++ b/apps/esmtool/esmtool.cpp
@@ -2,6 +2,7 @@
#include
#include
#include
+#include
#include