Commit Graph

5850 Commits (8179a097f837a9593d738a8567d95f9f40aaa1b3)

Author SHA1 Message Date
elsid 8b4362ece7
Disable navmesh disk cache when db is failed to open 3 years ago
elsid 5913036638
Use SQLITE_OPEN_NOMUTEX 3 years ago
Alexei Dobrohotov 76ba5025e3 Clarify root node transformation discard 3 years ago
elsid ab1a6e034e
Add navmeshtool flag to remove unused tiles from navmesh disk cache
* Remove tiles outside processing range. Useful when new content profile map
  has different bounds.
* Remove ignored tiles. For a case when content profile maps have intersection
  but there is no more data for navmesh.
* Remove older tiles at the same worldspace position. If navmesh tile data has
  changed with new content, the old ones unlikely to be used.
* Vacuum the database when there are modifications. SQLite leaves empty pages
  in the file on database modification. Vacuum cleans up unused pages reducing
  the file size.
3 years ago
elsid 67741402b5
Replace reference to const std::string by std::string_view for navmeshdb related arguments 3 years ago
elsid 52b3a87dae
Make constexpr variable defined in header inline 3 years ago
elsid 9584cb7ac2
Use fixed size types for serialization 3 years ago
Alexei Dobrohotov dd473d06df Implement gloss-mapping (feature #6541) 3 years ago
psi29a b011809056 Merge branch 'master' into 'sort_me_baby_one_more_time'
# Conflicts:
#   components/nif/niffile.cpp
3 years ago
psi29a b73eaadf20 Merge branch 'use_utf8_string_view' into 'master'
Avoid extra copy for Utf8Encoder::getUtf8 result

See merge request OpenMW/openmw!1661
3 years ago
psi29a 3af037d2ae Merge branch 'esm4' into 'master'
ESM4 Support

See merge request OpenMW/openmw!1610
3 years ago
elsid b96c41df07
Initialize string_view with explicit size
Otherwise size is detected by null terminating character.
3 years ago
Bret Curtis 0f43455dc3 merge in master 3 years ago
elsid 139ae9325a Fix compile errors by using StatelessUtf8Encoder 3 years ago
elsid 4a06351c3b update to_utf8 and translation to make use of new stateless utf8 3 years ago
elsid 875d9dcead
Fix buffer resizing by StatelessUtf8Encoder 3 years ago
psi29a 8a0fb4d633 Merge branch 'stateless_utf8_encoder' into 'master'
Add StatelessUtf8Encoder to support caller provided buffer for output

See merge request OpenMW/openmw!1660
3 years ago
psi29a 776b286286 Merge branch 'esm_name' into 'master'
Use ESM::NAME instead of const char* and std::string as argument type

See merge request OpenMW/openmw!1659
3 years ago
elsid 3305b400dc
Use ESM::NAME instead of const char* and std::string as argument type 3 years ago
elsid c044bef6a7
Add StatelessUtf8Encoder to support caller provided buffer for output 3 years ago
elsid fbbf871067
Avoid extra copy for Utf8Encoder::getUtf8 result 3 years ago
elsid b617d0aec4 Merge branch 'fix_empty_utf8' into 'master'
Fix out of bounds access for std::string_view

See merge request OpenMW/openmw!1658
3 years ago
elsid 071ab3f650
Fix out of bounds access for std::string_view 3 years ago
Evil Eye 649c2f8286 Fix stats not working right for saves started before version 17 3 years ago
psi29a 149ef56b60 Merge branch 'utf8_encoder_tests' into 'master'
Add tests for Utf8Encoder

See merge request OpenMW/openmw!1654
3 years ago
elsid 7884a01026
Add tests for Utf8Encoder 3 years ago
psi29a a2a741c71f Merge branch 'lua_require' into 'master'
Allow `require` to return not a table in Lua

See merge request OpenMW/openmw!1650
3 years ago
psi29a cd8967e265 Merge branch 'utf8_encoder_string_view' into 'master'
Use std::string_view for argument and return type of Utf8Encoder functions

See merge request OpenMW/openmw!1652
3 years ago
elsid c75e938c46
Return string_view from Utf8Encoder functions
To avoid redundant std::string constructions.
3 years ago
elsid c9c7fb7e49
Remove redundant functions from Utf8Encoder interface 3 years ago
Petr Mikheev 6876851766 Allow `require` to return not a table in Lua 3 years ago
elsid 2a87cf1720
Replace unordered_map by switch statement
Add handling for missing Nif::BSLightingShaderType::ShaderType_SkinTint. Use
string_view instead of string to avoid lifetime issues for returning value.
osg::Object::setUserValue will anyway copy string.
3 years ago
elsid e1fe501013
Use proper type for Record::recType 3 years ago
elsid 283b68025c
Avoid possible race condition on NIFFile::sLoadUnsupportedFiles
Its value is written from the main thread but other threads read it.
3 years ago
elsid fbd95516f4
Repalce raw for-loops by corresponding algorithms 3 years ago
elsid 082810f924
Store record type as a part of construct function type 3 years ago
elsid d097c16206
Use unique_ptr to manage nif record lifetime 3 years ago
glassmancody.info 712107de2d nisortadjust support 3 years ago
uramer ede9d27437 Element-wise multiplication and division of Lua vectors 3 years ago
Alexei Dobrohotov 85053941b3 Properly postprocess NiSortAdjustNode 3 years ago
psi29a 9183fa897e Merge branch 'particle_vertex_palooza' into 'master'
Support vertex emitters (#6592)

Closes #6592

See merge request OpenMW/openmw!1638
3 years ago
glassmancody.info 27d2daabc1 move depth define to header, missing on mac 3 years ago
glassmancody.info a05e029aa0 search for stencil enabled flag correctly 3 years ago
glassmancody.info 88f02913d5 use vertex emitters on array particle controllers when appropriate 3 years ago
glassmancody.info 8c2c322d92 add stencil to water RTTs, reword some comments 3 years ago
glassmancody.info bbc9c53423 support morrowind stenciling 3 years ago
Evil Eye 7a7a95407a Merge branch 'lua_pairs' into 'master'
Proper support of `pairs` and `ipairs` in Lua; fix bug in `makeReadOnly`.

See merge request OpenMW/openmw!1628
3 years ago
Petr Mikheev a294adcdaf Proper support of `pairs` and `ipairs` in Lua; fix bug in `makeReadOnly`. 3 years ago
Petr Mikheev 5f74df75c6 Add default value for `config`. 3 years ago
uramer 581c3f4882 Update and document Lua Text and TextEdit widget types, fix some issues with Lua UI 3 years ago
Petr Mikheev ac5cd6c80a Add default value for `user-data` in openmw.cfg 3 years ago
elsid e7f3524924
Add a tool to load and print information about all bullet objects in all cells 3 years ago
psi29a becffef142 Merge branch 'cull_navmesh_objects' into 'master'
Cull navmesh objects by scene bounds (#5858)

Closes #5858

See merge request OpenMW/openmw!1625
3 years ago
elsid 0b644a897e
Explicitly bind TileCachedRecastMeshManager with mutex 3 years ago
elsid 05b54cbfb8
Cull navmesh objects by scene bounds
If object is too big iteration over all tiles covering it can take too much
time. Limit bounds to a square around a player position to cover only tiles
that will be present in navmesh based on max tiles number option.

Each object is associated with a set of tiles its present in. Culling can
reduce this set but it has to be update when bounds change position. Do this
in TileCachedRecastMeshManager::setBounds updating the set and adding/removing
objects to the corresponding CachedRecastMeshManagers.
3 years ago
elsid 563f3f87dd
Reduce critical sections size 3 years ago
elsid a5b078e9a7
Allow to represent empty range with TilesPositionsRange 3 years ago
elsid 1b2954f2db
Remove unused z coordinate 3 years ago
elsid 1a52a2a029
Clamp tile position 3 years ago
elsid 542717394a
Remove objects, water and heightfields when no longer required 3 years ago
Petr Mikheev 6084dbfc3a Add a warning if replace==config is used. 3 years ago
Petr Mikheev 5b23ba3faf Fix `defaulted` in ConfigurationManager::mergeComposingVariables 3 years ago
Petr Mikheev 9c1ff16b62 Add config variable `user-data="?userdata?"`. Allows to override paths to saves and screenshots. 3 years ago
Petr Mikheev 5ff2fc55ac Make ConfigurationManager::getUserConfigPath to return the actual config path where the settings, logs, and Lua storage are stored. 3 years ago
Petr Mikheev a453e5c198 Reuse the same code to load settings in apps/openmw, apps/launcher, apps/opencs 3 years ago
Petr Mikheev 1bcc4a8bcc Read settings.cfg from all active config dirs 3 years ago
Petr Mikheev 5ca56a4f8a New option "config" for specifying additional config directories. 3 years ago
Petr Mikheev dd5ba5c57b Redirect log only after parsing configuration 3 years ago
psi29a cf8d49bb9a Merge branch 'lua_settings_ui' into 'master'
Lua settings UI

Closes #6454

See merge request OpenMW/openmw!1595
3 years ago
Alexei Dobrohotov 142b6fdf2f Fix double precision bound issues in std::max/std::clamp 3 years ago
Alexei Dobrohotov aaea2bc0f6 Implement transformBoundingSphere for both sphere types (bug #6579) 3 years ago
uramer ef1e72dc17 Revert from settings description to searchHints 3 years ago
uramer 7f796d148e Clean up 3 years ago
uramer 67641dcdb7 Fix compile errors 3 years ago
uramer f07f05ddd3 Add Container widget type, use it to make Adapter code less hacky 3 years ago
uramer 086a7d9bc5 Wrap Lua settings widgets into an Adapter widget 3 years ago
uramer 1455aa3e02 Allow changing script settings pages after registering them 3 years ago
uramer 5f7ab49880 Implement script setting pages' descriptions 3 years ago
uramer a005f25c4b Use page terminology for script settings 3 years ago
uramer e78b8402fa Fix warnings 3 years ago
uramer a972a54ea9 Allow changing element root widget type, prevent use after free in script settings 3 years ago
uramer fba82eb1a7 Script settings tab 3 years ago
Bret Curtis 8113620dce handle a few wearnings raised as errors 3 years ago
cc9cii ba3ae448d4 Initial import of esm4 by cc9cii 3 years ago
elsid 7ea5aa250b
Revert "Cull navmesh objects by scene bounds"
This reverts commit b0ef20c303.
3 years ago
jvoisin d291b17c68 Merge branch 'refactor/script-cleanup' into 'master'
Use pop_back to shrink the stack

See merge request OpenMW/openmw!1597
3 years ago
jvoisin 4cd6d2dacf Merge branch 'rework_fixed_string' into 'master'
Rework fixed string

See merge request OpenMW/openmw!1596
3 years ago
psi29a e18393d7d6 Merge branch 'prevent_wrong_use_of_write' into 'master'
Disallow to call ESMWriter::writeT with pointer type

See merge request OpenMW/openmw!1609
3 years ago
psi29a ff11377bc0 Merge branch 'sanitizers' into 'master'
Add gitlab jobs to run tests and benchmarks with ASAN, TSAN and UBSAN

See merge request OpenMW/openmw!1608
3 years ago
elsid b17c9a22ff
Disallow to call ESMWriter::writeT with pointer type
This will make ESMWriter to use a pointer to this pointer to access the data
that is unlikely an intent. For example:
68ef96410c.
3 years ago
Petr Mikheev 4554a075e7 Merge branch 'fix_save_corruption' into 'master'
Fix save corruption introduced by https://gitlab.com/OpenMW/openmw/-/merge_requests/1600

See merge request OpenMW/openmw!1607
3 years ago
uramer de2383ec98 Fix save corruption introduced by https://gitlab.com/OpenMW/openmw/-/merge_requests/1600 3 years ago
elsid bebeff8881
Fix build with libc++
/home/elsid/dev/openmw/components/esm3/objectstate.cpp:33:30: error: implicit instantiation of undefined template 'std::array<float, 6>'
        std::array<float, 6> pos;
                             ^
/usr/bin/../include/c++/v1/__tuple:219:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
                                                               ^
/home/elsid/dev/openmw/components/esm3/objectstate.cpp:78:30: error: implicit instantiation of undefined template 'std::array<float, 6>'
        std::array<float, 6> pos;
                             ^
/usr/bin/../include/c++/v1/__tuple:219:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
                                                               ^
3 years ago
elsid b0f192d878
Fix warning: maybe-uninitialized
../../components/misc/color.cpp: In static member function 'static Misc::Color Misc::Color::fromHex(std::string_view)':
../../components/misc/color.cpp:36:24: error: 'v' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   36 |             rgb[i] = v / 255.0f;
      |                      ~~^~~~~~~~
3 years ago
psi29a 7bab714825 Merge branch 'fix_circling_fargoth' into 'master'
Remove unnecessary loops from path (#6510)

Closes #6510

See merge request OpenMW/openmw!1584
3 years ago
psi29a a0c0ea09b2 Merge branch 'youwe' into 'master'
Fix unavailable UV set handling in NIF models

See merge request OpenMW/openmw!1594
3 years ago
psi29a cb4c96b155 Merge branch 'unpack_position' into 'master'
Make ESM::Position not packed (should fix #6566)

Closes #6566

See merge request OpenMW/openmw!1600
3 years ago
elsid ecbcdd0e54
Add missing initialization 3 years ago
Petr Mikheev 68ef96410c Make ESM::Position not packed (should fix #6566) 3 years ago
elsid 45db56b382
Rework fixed string
* Avoid inheritance.
* Define equality operators out of the class definition.
* Replace toString with toStringView where it doesn't make sense to create a string.
3 years ago
ζeh Matt 1832ed6a48
Use pop_back to shrink the stack 3 years ago
Petr Mikheev 53f2dfd1c0 Merge branch 'lua_ui_templates' into 'master'
Lua UI templates

See merge request OpenMW/openmw!1475
3 years ago
uramer 960dd1f708 Lua UI templates 3 years ago
elsid 3877d227f4
Avoid unnecessary copies 3 years ago
Alexei Dobrohotov 4521d3987c Fix out of bounds UV set handling 3 years ago
psi29a 84e209308d Merge branch 'refactor/interpreter' into 'master'
Cleanup interpreter code a bit

Closes #6553

See merge request OpenMW/openmw!1556
3 years ago
Matt 34723c8ea8 Cleanup interpreter code a bit 3 years ago
psi29a 6f7a067e0c Merge branch 'esmrename' into 'master'
esm refactor work

See merge request OpenMW/openmw!1575
3 years ago
psi29a 21ef9d4058 Merge branch 'nif_multi_parents' into 'master'
Support multiple parents for NIF nodes (#6552)

Closes #6552

See merge request OpenMW/openmw!1577
3 years ago
elsid 9069e97dce
Filter out triangles with NaN coordinates
Sorting a vector with such values gives invalid result because comparison with
NaN is always false.
3 years ago
elsid b0ef20c303
Cull navmesh objects by scene bounds
If object is too big iteration over all tiles covering it can take too much
time. Limit bounds to a square around a player position to cover only tiles
that will be present in navmesh based on max tiles number option.
3 years ago
elsid bba7beb0c5
Split tiles position range creation and iteration over 3 years ago
elsid 12ce82980c
Revert "Limit and filter navmesh input (#5858)"
This reverts commit ecc654a369.
3 years ago
Evil Eye 903ef60f9d Merge branch 'navmesh_scene_bounds' into 'master'
Limit and filter navmesh input (#5858)

Closes #5858

See merge request OpenMW/openmw!1583
3 years ago
elsid ecc654a369 Limit and filter navmesh input (#5858) 3 years ago
elsid 7ec7c57879
Remove unnecessary loops from path
This prevents actors going back when a new shortest path includes a point
behind them where they were right before. Such situation can happen when path
includes off mesh connection. Resulting cost of such path can be lower than
the real one because off mesh connections are straight lines and walking
surface usually is not a plane but a surface.

Skip to path point where distance from current position to the line between
previous and this point is less than point tolerance. Which means actor is
standing very close to the edge between those points. Additionally check by
navmesh raycasting to make sure there is actually a valid path.
3 years ago
Petr Mikheev 067d71f7eb Fix heap use after free in components/lua/storage.cpp 3 years ago
Bret Curtis 74e7cfc023 remove unused includes: part1
remove unused imports: part2

revert one tidy we will keep for c++20
3 years ago
Bret Curtis cdbab2325f rename esmterrain to esm3terrain 3 years ago
Bret Curtis a126e29a19 relative to absolute path 3 years ago
Bret Curtis d1fb854521 move most of the files from esm to esm3, keep common code in esm; this is make space for a future with esm4
esm typo

esm typo
3 years ago
elsid 3f14011087
Support multiple parents for NIF nodes
Choose a parent base on which node is used to iterate over children nodes.
This leads to duplicate handing of child nodes. A node will be handled so many
times how many parents it has.

For example:
p1 p2
 \ /
  c

Will be handled as:
p1 p2
|  |
c  c

If c has children they will be handled X times c is handled.
3 years ago
psi29a 6eb36c6b76 Merge branch 'ripple_fix' into 'master'
Restore ripples with soft particles

See merge request OpenMW/openmw!1566
3 years ago
Cody Glassman 9cafc31c0d Restore ripples with soft particles 3 years ago
elsid a2002bc983
Support frequency of ProgressReporter calls lower than interval 3 years ago
Petr Mikheev 9d0e427ec1 Merge branch 'dispose_lua_ui_correctly' into 'master'
Dispose Lua UI elements correctly

See merge request OpenMW/openmw!1561
3 years ago
uramer cc528d2e08 Dispose Lua UI elements correctly 3 years ago
uramer d1d8f058ac Lua bindings for Colours 3 years ago
uramer c07fb75bf7 Merge branch 'lua_settings' into 'master'
Permanent storage for Lua

See merge request OpenMW/openmw!1489
3 years ago
Petr Mikheev 97d56e198f Use double precision for vectors serialization in Lua 3 years ago
ζeh Matt ba30b37bb4
Add missing include to unordered_map 3 years ago
Petr Mikheev a182fdeea1 Permanent storage for Lua data 3 years ago
Petr Mikheev 2d1b100239 Change terminology of gameSecond/gameHour to simulationTime/gameTime 3 years ago
Josquin Frei d9672f7d46 Add serialization for TransformM and TransformQ 3 years ago
Alexei Dobrohotov b5a7ad6d62 Fix multilayer parallax parameter reading 3 years ago
psi29a d8d7a3b372 Merge branch 'softparticles_patch' into 'master'
Shadervisitor adjustments and Mac OS fix for soft particles

See merge request OpenMW/openmw!1380
3 years ago
psi29a 1d4de71d35 Merge branch 'fix2' into 'master'
Fixes in components/lua

Closes #6535

See merge request OpenMW/openmw!1538
3 years ago
psi29a 555e0b1f53 Merge branch 'brainfreeze' into 'master'
Attempt to catch freezes on Windows

See merge request OpenMW/openmw!1493
3 years ago
Petr Mikheev 6a19a66ae5 Fix #6535 3 years ago
Petr Mikheev 5eca122f04 Avoid creating multiple i18n contexts with the same name. 3 years ago
psi29a bafde5c9c4 Merge branch 'cleanup' into 'master'
Remove constant conditions

See merge request OpenMW/openmw!1527
3 years ago
psi29a 8355153047 Merge branch 'const_looop' into 'master'
Fix "warning: loop variable is copied but only used as const reference;...

See merge request OpenMW/openmw!1530
3 years ago
jvoisin 1a6be08149 Fix "warning: loop variable is copied but only used as const reference;... 3 years ago
psi29a 24b9c91ef8 Merge branch 'fix_copy_init' into 'master'
Fix unnecessary-copy-initialization

See merge request OpenMW/openmw!1531
3 years ago
glassmancody.info 2c52695361 fix regression where LEQUAL was used instead of LESS for depth function 3 years ago
jvoisin 421e6629ad Fix unnecessary-copy-initialization
> warning: the variable 'key' is copy-constructed from a const reference but is
only used as const reference; consider making it a const reference
[performance-unnecessary-copy-initialization]

Found by clang-tidy.
3 years ago
Evil Eye 5a7a3a0d2d Silence a signed/unsigned mismatch warning 3 years ago
Evil Eye bdfad27e05 Remove constant conditions 3 years ago
psi29a 0766e1310b Merge branch 'lunacy' into 'master'
Don't touch base stats when turning into a werewolf

Closes #6333

See merge request OpenMW/openmw!1511
3 years ago
Petr Mikheev 0f246e7365 Use a separate instance of Lua i18n for every context 3 years ago