Commit Graph

17422 Commits (873b3b480055e00006837789cee83e525db5f646)

Author SHA1 Message Date
elsid e9433a91fb
Add more tests for TileCachedRecastMeshManager 4 years ago
psi29a 825ac6100f Merge branch 'fix_loading_screen' into 'master'
Always center loading screen progress bar by height when there is active message box (#6059)

See merge request OpenMW/openmw!910
4 years ago
Evil Eye 1a1085272a Use ciEqual to determine actor-specific answers 4 years ago
elsid 4a6961b365
Trigger navmesh update on moved player only when player tile has been changed 4 years ago
elsid d122e184cc
Report navmesh change for not posted tiles
Corresponding recast mesh tiles can be updated but navmesh tiles may never
appear for them. Report back zero navmesh version to allow oscillating recast
objects detection to work. This version is always less than any generated
navmesh tile version so any report for generated navmesh will override it.
If zero navmesh version is reported after recast mesh tile got report about
generated navmesh tile it is a no-op since generated version is always greater
than zero.
4 years ago
elsid 3915e5d2cc
Always center loading screen progress bar by height when there is active message box
To fix all possible situations when active message box overlaps with loading
screen progress.

The only used condition to center loading screen progress by height is
number of message boxes > 0. No need to pass it through interface.
LoadingScreen can check it inside setLabel function.
4 years ago
Mads Buvik Sandvei d906ec773a Fix hangup on savegame after manual screenshots. 4 years ago
psi29a dff4b83d9d Merge branch 'stop_threading' into 'master'
Stop osg viewer threading before destructing engine

See merge request OpenMW/openmw!901
4 years ago
elsid 375372981c
Stop osg viewer threading before destructing engine
To avoid rendering while engine parts are destructing.
4 years ago
elsid 105cd5b06f
Add more checks to NavMeshTilesCache tests 4 years ago
fredzio b13afd758c Remove both racy and useless code.
Actor's position can be determined in 3 ways:
1/ as a result of physics simulation
2/ after a script require a relative position change (SetPos, Move)
3/ absolutely set from games mechanics event (teleport) or script
(PositionCell)

In case 1/, RefData::mPosition is updated with the physics simulation result
In case 2/, when RefData::mPosition is updated, physics simulation is informed of the change and update accordingly
In case 3/, when RefData::mPosition is updated, the physics simulation state is reset

In all 3 cases, we don't need to check the RefData::mPosition to get a
correct behaviour.

TSAN reported the following data race:
  Read of size 4 at 0x7b50005b75b0 by thread T12 (mutexes: write M656173, write M84859534346343880):
    #0 ESM::Position::asVec3() const /build/openmw/openmw/master2/.build/freebsd/TSAN/../../.././components/esm/defs.hpp:55:27 (openmw+0xb809d5)
    #1 MWPhysics::Actor::updateWorldPosition() /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/actor.cpp:131:59 (openmw+0xb809d5)
    #2 MWPhysics::Actor::setPosition(osg::Vec3f const&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/actor.cpp:177:5 (openmw+0xb809d5)
    #3 MWPhysics::PhysicsTaskScheduler::updateActorsPositions() /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/mtphysics.cpp:524:28 (openmw+0xb91ac0)
    #4 MWPhysics::PhysicsTaskScheduler::afterPostStep() /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/mtphysics.cpp:614:13 (openmw+0xb915e7)
    #5 MWPhysics::PhysicsTaskScheduler::worker()::$_5::operator()() const /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/mtphysics.cpp:498:45 (openmw+0xb915e7)
    #6 void Misc::Barrier::wait<MWPhysics::PhysicsTaskScheduler::worker()::$_5>(MWPhysics::PhysicsTaskScheduler::worker()::$_5&&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../.././components/misc/barrier.hpp:30:21 (openmw+0xb915e7)
    #7 MWPhysics::PhysicsTaskScheduler::worker() /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/mtphysics.cpp:498:31 (openmw+0xb915e7)
    #8 MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0::operator()() const /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwphysics/mtphysics.cpp:162:45 (openmw+0xb92630)
    #9 decltype(std::__1::forward<MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0>(fp)()) std::__1::__invoke<MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0>(MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0&&) /usr/include/c++/v1/type_traits:3899:1 (openmw+0xb92630)
    #10 void std::__1::__thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0>(std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0>&, std::__1::__tuple_indices<>) /usr/include/c++/v1/thread:280:5 (openmw+0xb92630)
    #11 void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, MWPhysics::PhysicsTaskScheduler::PhysicsTaskScheduler(float, btCollisionWorld*, MWRender::DebugDrawer*)::$_0> >(void*) /usr/include/c++/v1/thread:291:5 (openmw+0xb92630)

  Previous write of size 8 at 0x7b50005b75b0 by main thread:
    #0 memcpy /wrkdirs/usr/ports/devel/llvm-devel/work-default/llvm-project-3f6753efe1990a928ed120bd907940a9fb3e2fc3/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:827:5 (openmw+0x55a057)
    #1 MWWorld::RefData::setPosition(ESM::Position const&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwworld/refdata.cpp:216:19 (openmw+0xa3de1c)
    #2 MWWorld::World::moveObject(MWWorld::Ptr const&, MWWorld::CellStore*, float, float, float, bool) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwworld/worldimp.cpp:1130:26 (openmw+0xa57300)
    #3 MWWorld::World::moveObject(MWWorld::Ptr const&, float, float, float, bool, bool) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwworld/worldimp.cpp:1253:16 (openmw+0xa580c8)
    #4 MWWorld::World::doPhysics(float, unsigned long long, unsigned int, osg::Stats&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwworld/worldimp.cpp:1530:17 (openmw+0xa5af8f)
    #5 MWWorld::World::updatePhysics(float, bool, unsigned long long, unsigned int, osg::Stats&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/mwworld/worldimp.cpp:1862:13 (openmw+0xa61a7c)
    #6 OMW::Engine::frame(float) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/engine.cpp:333:42 (openmw+0xcce9e7)
    #7 OMW::Engine::go() /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/engine.cpp:935:14 (openmw+0xcd86ed)
    #8 runApplication(int, char**) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/main.cpp:296:17 (openmw+0xcbffac)
    #9 wrapApplication(int (*)(int, char**), int, char**, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../components/debug/debugging.cpp:205:15 (openmw+0x1335442)
    #10 main /build/openmw/openmw/master2/.build/freebsd/TSAN/../../../apps/openmw/main.cpp:308:12 (openmw+0xcc008a)
:wqa
4 years ago
psi29a 3920477618 Merge branch 'moving_lighting_method_to_graphics' into 'master'
Moving Lighting Method from Advanced -> Visuals to Graphics -> Lighting

See merge request OpenMW/openmw!883
4 years ago
psi29a c4fde03542 Merge branch 'ObjectPagingMergeIssue' into 'master'
Share state

See merge request OpenMW/openmw!879
4 years ago
Thunderforge 945f1aad20 Using override keyword in OpenMW CS
Detected by clang-tidy's modernize-use-override
4 years ago
Thunderforge efcdb2dfdd Using override keyword in most apps
Detected by clang-tidy's modernize-use-override

Future MRs can be created to run this on OpenMW and OpenMW CS
4 years ago
Thunderforge 4a15868c0e Moving Lighting Method from Advanced -> Visuals to Graphics -> Lighting
The plan is to add additional options to this new tab, and since it's of similar status as the Shaders settings, it makes sense to put them next to them on the Graphics page.
4 years ago
CedricMocquillon d11a6bd92c Share state 4 years ago
Atahualpa 3a1243a5d0 Rebased branch, reduced code duplication, added comments, adjusted formatting. 4 years ago
Atahualpa ca80aeaaea Fix vertex calculation for cell-border drawing. 4 years ago
Atahualpa 356efa15a2 Fixes #6035 (circle brush selects outside of circle) and #6036 (some corner vertices not selected). 4 years ago
Atahualpa 7be891b440 Directly use Geometry instead of Geode; fix for loop; add size_t type-cast. 4 years ago
Atahualpa 73949d5bd0 Updating the CMake file isn't a bad idea either... 4 years ago
Atahualpa 6c49074765 Remove old references to Cell class. 4 years ago
Atahualpa 008bf64dd9 Second step toward fixing terrain selection issues. 4 years ago
Atahualpa 18ea4d8eb2 First step toward fixing terrain selection issues. 4 years ago
Bret Curtis 373f8636b7
Merge pull request #3092 from akortunov/master
Do not trigger in-game bindings via mouse buttons when controls are disabled
4 years ago
psi29a ae66afb219 Merge branch 'less_verbose' into 'master'
Make the code less verbose.

See merge request OpenMW/openmw!874
4 years ago
psi29a e9fbd76e9b Merge branch 'windows_tests' into 'master'
Support running tests and benchmarks for windows

See merge request OpenMW/openmw!839
4 years ago
psi29a 4bc7012104 Merge branch 'pack-default-settings' into 'master'
Pack default settings

Closes #5925

See merge request OpenMW/openmw!822
4 years ago
elsid 3ef1b27099
Add missing includes 4 years ago
psi29a f1f1703441 Merge branch 'fix_navmesh_wait' into 'master'
Fix redundant waiting until navmesh is generated

See merge request OpenMW/openmw!861
4 years ago
Andrei Kortunov c11774f278 Do not trigger in-game bindings via mouse buttons when controls are disabled (bug #6047) 4 years ago
AnyOldName3 c2e4eda825 Merge branch '6013-fix' into 'master'
Retain draw callback

Closes #6013 and #5967

See merge request OpenMW/openmw!875
4 years ago
madsbuvi f3e17e7c52 Don't redundantly call notify on every frame. 4 years ago
Frederic Chardon 62c7adc87b Merge branch 'no_at_boundaries' into 'master'
Don't use at() instead [] when length is checked/known

See merge request OpenMW/openmw!866
4 years ago
Frederic Chardon 38db2f8810 Merge branch 'includes_mwgui' into 'master'
Remove some useless includes from apps/openmw/mwgui

See merge request OpenMW/openmw!870
4 years ago
madsbuvi 5b9a2b73b0 Retain final draw callback as a member variable in ScreenshotManager, and do not call setFinalDrawCallback after init. 4 years ago
Frederic Chardon 807c7a2025 Merge branch 'useless_includes_mwmechanics' into 'master'
Remove some useless headers in apps/openmw/mwmechanics

See merge request OpenMW/openmw!871
4 years ago
fredzio 5b63019719 Embed actor velocity inside its class. It makes the code simpler. 4 years ago
fredzio c55db790f3 Make the code less verbose / more readable using for range loop and
structured binding.

No functional changes.
4 years ago
Frederic Chardon 730f1fe2a7 Merge branch 'useless_includes_mwphysics' into 'master'
Remove some useless includes in apps/openmw/mwphysics

See merge request OpenMW/openmw!872
4 years ago
jvoisin 9373e4ada7 Remove some useless includes in apps/openmw/mwphysics 4 years ago
jvoisin 9522a64e7d Remove some useless includes from apps/openmw/mwgui 4 years ago
jvoisin 1cd15613a6 Remove some useless headers in apps/openmw/mwmechanics 4 years ago
psi29a 3d61d7ec9a Merge branch 'optimize_initial_load' into 'master'
Optimize engine initial loading time

See merge request OpenMW/openmw!867
4 years ago
Evil Eye 6cb6461cba Merge branch 'const_ref_it' into 'master'
Use const references when possible in for loops

See merge request OpenMW/openmw!869
4 years ago
jvoisin 7deb6a6ffd Use const references when possible in for loops
No need for useless copies.
4 years ago
jvoisin c1e3869f25 Remove an unused struct 4 years ago
elsid 1e2aae8095
Use stable sort+unique to collect RefIDs for ESMStore records counting
The idea is to avoid std::map lookup for each CellRef. Instead generate a
sequence of added and removed RefNums into a vector then order them by RefNum
using a stable sort that preserves relative order of elements with the same
RefNum. RefIDs are stored in a different vector to avoid std::string move ctor
calls when swapping elements while sorting. Reversed iteration over added and
removed RefNums for each unique RefNum is an equivalent to what map-based
algorithm produces. The main benefit from sorting a vector is a data locality
that means less cache misses for each access. Reduces ESMStore::countRecords
perf cycles by 25%.
4 years ago
elsid 9938af2289
Use unordered_map for ref count
Reduces ESMStore::countRecords time by 8%.
4 years ago
elsid 6248dc72cb
Convert to lower case only when needed 4 years ago
elsid f2188d2533
Reduce temporary allocations on ESM loading
By moving objects instead of copying when possible.
4 years ago
Bret Curtis 8a315b01ae
Merge pull request #3089 from xyzz/fix-journalbooks-ub
Fix out-of-bounds access in JournalBooks::createCyrillicJournalIndex
4 years ago
Ilya Zhuravlev 13f060623f Fix out-of-bounds access in JournalBooks::createCyrillicJournalIndex 4 years ago
jvoisin 690d85d0e9 Don't use at() instead [] when length is checked/known 4 years ago
Andrei Kortunov b63f53f5bb Disable shield animation when we launch a torch one (bug #6043) 4 years ago
AnyOldName3 5d83de189a Merge branch 'insert_or_assign' into 'master'
Use insert_or_assign() instead of hand rolled version.

See merge request OpenMW/openmw!862
4 years ago
fredzio fb344d27e0 Use insert_or_assign() instead of hand rolled version. 4 years ago
elsid 59f89d22f8
Apply min distance only for not present tiles
To avoid waiting when navmesh update is triggered by transformed object for
already present tiles.
4 years ago
Bret Curtis 66a527c3de
Merge pull request #3075 from akortunov/warnfix
Fix MSVC's C4244 and C4267 warnings
4 years ago
psi29a 3944648f0b Merge branch 'opencs_remove_inclde' into 'master'
Remove some superfluous includes in the opencs

See merge request OpenMW/openmw!829
4 years ago
jvoisin 06ae26037f Remove some superfluous includes in the opencs 4 years ago
CedricMocquillon 1d362029ce Do not copy full dialogue as we only want ot return its id 4 years ago
CedricMocquillon ccaa581f39 According to the comment, an interior cell must have (0,0) but as there is an exterior cell
with these coordinates it is not sufficient but it is necessary so I added it
4 years ago
psi29a 6a5a9fbde4 Merge branch 'static-access' into 'master'
[Launcher] Replacing static method access through instances

See merge request OpenMW/openmw!834
4 years ago
psi29a fd89582e0c Merge branch 'navmesh_wait' into 'master'
Wait until navmesh is generated within given distance around player (#5500)

Closes #5500

See merge request OpenMW/openmw!819
4 years ago
Andrei Kortunov 963e1b8b3f Fix MSVC's C4244 warnings 4 years ago
Andrei Kortunov f9d42ed396 Fix MSVC's C4267 warnings 4 years ago
Andrei Kortunov 49a744b65a Make groundcover to use rendering distance in units instead of cells 4 years ago
elsid 4d7e5245a3
Support benchmarks for windows
Don't run the binary because gitlab can't execute it successfully due to
unknown reason.
4 years ago
psi29a f7b8c817f8 Merge branch 'performance-faster-string-find' into 'master'
Fixing performance-faster-string-find issues

See merge request OpenMW/openmw!842
4 years ago
Thunderforge 339d347aea Fixing performance-faster-string-find issues
This addresses the Clang Tidy check [performance-faster-string-find](https://clang.llvm.org/extra/clang-tidy/checks/performance-faster-string-find.html).
4 years ago
Bret Curtis 08059247b8
Merge pull request #3081 from akortunov/master
Skip hidden nodes for ObjectPaging
4 years ago
psi29a 13fd0e11ff Merge branch 'no_time_to_talk' into 'master'
Don't stop and turn to the player while sneaking or jumping

Closes #6016

See merge request OpenMW/openmw!838
4 years ago
AnyOldName3 09f39b29f0 Load defaults.bin instead of settings-default.cfg. Do not decode yet. 4 years ago
AnyOldName3 92325976e9 Update documentation to refer to defaults.bin 4 years ago
AnyOldName3 0d737a3501 Create defaults.bin at configure time 4 years ago
Evil Eye c5aa3d4f77 Don't stop and turn to the player while sneaking or jumping 4 years ago
Evil Eye ffd84502f9 Remove unimplemented method declaration 4 years ago
Andrei Kortunov 132fedf290 Analyze only used LOD levels in ObjectPaging 4 years ago
Andrei Kortunov a939cb6692 Skip hidden nodes for ObjectPaging 4 years ago
Thunderforge ead51784dc [Launcher] Replacing static method access through instances
This addresses the Clang Tidy check [readability-static-accessed-through-instance](https://clang.llvm.org/extra/clang-tidy/checks/readability-static-accessed-through-instance.html). It also simplifies the code by reducing the number of parameters we're passing around.
4 years ago
Frederic Chardon caf382c19f Merge branch 'barrier' into 'master'
Do not store callback inside Misc::Barrier

See merge request OpenMW/openmw!821
4 years ago
psi29a 08e1a8e0fb Merge branch 'esm_opti' into 'master'
Teensy optimisation for esmtool

See merge request OpenMW/openmw!826
4 years ago
psi29a 9b017ef04d Merge branch 'internal_includes_openmw' into 'master'
Clean up some internal includes of the openmw component

See merge request OpenMW/openmw!796
4 years ago
Andrei Kortunov a0582caa26 Fix uninitialized variable 4 years ago
jvoisin e97e4d07dd Teensy optimisation for esmtool
- Use an unordered_set instead of a list to
  keep track of skipped records.
- Reduce the number of conditions when parsing 4-letters
  records by using a switch-case instead of cascading conditions.
- Add a const
4 years ago
elsid 00de80c884 Merge branch 'deadcode' into 'master'
GC some unused code, simplify some other

See merge request OpenMW/openmw!820
4 years ago
fredzio e99b61d362 Simplify the code 4 years ago
elsid 626e032931
Do not store callback inside Misc::Barrier
The only wait method can be provided with it so pass it as a template
parameter there.
4 years ago
fredzio 00de540a31 Remove unused function. 4 years ago
elsid 7a51d0db18
Wait until navmesh is generated within given distance around player
Add a setting to change this distance.

To prevent situations when there is not enough navmesh generated and actors
can't find path correctly.
4 years ago
elsid f169f8e6f0
Wait until navmesh is generated for interior cells
Add special loading progress bar.

It should be fast enough to not keep loading screen for noticably long but
will provide better pathfinding for actors inside interior cells.
4 years ago
psi29a b8128d09f9 Merge branch 'enchanted-item-selected-fix' into 'master'
Fix for enchanted items being removed on item equip cycling when they are re-equipped

See merge request OpenMW/openmw!714
4 years ago
psi29a 9eb876cc17 Merge branch 'read_me' into 'master'
Allow activation of inventory items

Closes #5991

See merge request OpenMW/openmw!788
4 years ago
psi29a 6ac4dfbeb7 Merge branch '9001st_time_the_charm' into 'master'
Rework again scripted movements

See merge request OpenMW/openmw!799
4 years ago
psi29a 15f6932aaa Merge branch 'openmwizzrd_include' into 'master'
Remove some useless includes from the wizzard

See merge request OpenMW/openmw!767
4 years ago
psi29a 6513c38875 Merge branch 'clean_navigator' into 'master'
Remove redundant and useless code from navigator

See merge request OpenMW/openmw!815
4 years ago
psi29a b10a817f7e Merge branch 'useuless_launcher' into 'master'
Remove some useless includes from the launcher

See merge request OpenMW/openmw!775

(cherry picked from commit a84bd643b334eb6ac715681c497184ac22212ced)

d3fff8cf Remove some useless includes from the launcher
4 years ago
elsid ec87b3f8f7
Remove redundant ChunkyTriMesh
This AABB tree required when need to filter out input mesh that has not
influence navmesh tile output. This filtering is already done before. Each
recast mesh corresponds to a single navmesh tile and has appropriate bounds.
4 years ago