1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-03 20:45:33 +00:00
Commit graph

19840 commits

Author SHA1 Message Date
psi29a
a707f5b0e0 Merge branch 'portable' into 'master'
Make OpenMW more portable (follow up of !1555)

See merge request OpenMW/openmw!1805
2022-04-28 19:35:29 +00:00
Mads Buvik Sandvei
606a795a54 multiview linker-method 2022-04-28 21:09:06 +02:00
madsbuvi
dd5901d351 Initial commit
Multiview shaders.

Refactor Frustum management

Rewrite shared shadow map

cull mask should respect stereo

Stereo savegame screencap

LocalMap refactoring

use the vertex buffer hint instead of the display list patch to enable/disable display lists

Character preview fixes
2022-04-28 21:05:34 +02:00
fredzio
bab5e56768 Make the launcher dara directory and bsa list play nicer with dark
themes.

Known issue: the padding icon for disabled data directories is of wrong
color.
2022-04-28 15:19:54 +02:00
Petr Mikheev
c7ab67c2c1 Allow relative paths in openmw.cfg; support --replace=config. 2022-04-28 00:39:41 +02:00
psi29a
07056802eb Merge branch 'esmtool_tes4' into 'master'
Support esmtool dump for TES4

See merge request OpenMW/openmw!1800
2022-04-27 21:07:25 +00:00
psi29a
dad9f24867 Merge branch 'link-shaders' into 'master'
Shader linking

See merge request OpenMW/openmw!1803
2022-04-27 21:04:08 +00:00
Frederic Chardon
ad1ab1c880 Follow up to !192 2022-04-27 19:51:54 +00:00
psi29a
66a96bfa5e Merge branch 'launcher-datadirs' into 'master'
Make launcher handle data dirs #2858 and BSA

See merge request OpenMW/openmw!192
2022-04-27 17:31:52 +00:00
madsbuvi
dc3045c970 mono-only version of the shader linking system introduced in the stereo MR 2022-04-26 19:54:24 +02:00
elsid
d2510284ec
Support TES4 in esmtool dump 2022-04-25 17:35:26 +02:00
elsid
43b2892cc3
Move ESMData, reader and writer out of esmtool Arguments 2022-04-25 17:35:25 +02:00
psi29a
c930aabf17 Merge branch 'fix_windows_build' into 'master'
Fix build on Windows

See merge request OpenMW/openmw!1796
2022-04-25 06:38:33 +00:00
elsid
0dcb1f5aac
Fix build on Windows
Use wrapper header over Windows.h to undefine far and near in a single place.
2022-04-25 00:25:46 +02:00
psi29a
eceb7406aa Merge branch 'lua_storage' into 'master'
[Lua] Update openmw.storage

See merge request OpenMW/openmw!1795
2022-04-24 20:13:59 +00:00
jvoisin
3621b9a759 Merge branch 'clean' into 'master'
Appease some clang warnings

See merge request OpenMW/openmw!1794
2022-04-24 11:34:29 +00:00
Petr Mikheev
eae1e87081 [Lua] Update openmw.storage 2022-04-23 18:55:12 +02:00
psi29a
f99f818c0c Merge branch 'esm4_cleanup' into 'master'
ESM4 cleanup

See merge request OpenMW/openmw!1792
2022-04-23 15:27:28 +00:00
psi29a
cfcc88f64c Merge branch 'istream_unique_ptr' into 'master'
Use unique_ptr to store istream

See merge request OpenMW/openmw!1793
2022-04-23 11:19:27 +00:00
fredzio
b88d32ff5b Add 3 tabs in the "Data Files" page
1 with the data directories
2 with the BSA archives
3 with the content selector

When user select a directory to be added, first we walk the directory
hierarchy to make a list of all potential data= entries. If we find
none, the selected directory is added.

If more than one data directory is found, user is presented with a
directory list to check which one(s) are to be added.

Directories containing one or more content file are marked with an icon.

data= and fallback-archive= lines are handled like content= lines:
- they are part of the profile in launcher.cfg, prefixed by the profile
name
- they are updated in openmw.cfg when profile is selected / created

Directories can be moved in the list by drag and drop or by buttons.
Insertion is possible anywhere in the list.
Global data path and data local are shown but are greyed out, as they
are always included.

No attempt is made to ensure that the user choice are valid
(dependencies, overwrite of content).

After a profile is loaded, any added content is highlighted in green.
2022-04-23 09:54:45 +02:00
fredzio
5a1a987f6c Remove write-only variable. 2022-04-23 09:13:22 +02:00
elsid
d71a1efa92
Rename components/esm4/acti.hpp -> components/esm4/loadacti.hpp 2022-04-23 00:40:45 +02:00
elsid
94c1d0cced
Use unique_ptr to store istream 2022-04-22 18:27:17 +02:00
Petr Mikheev
88d09c336c Lua console 2022-04-21 21:57:07 +02:00
Alexei Kotov
6d794cf9ca Merge branch 'fix-savegamerecords' into 'master'
Include random state record in count of saved records

See merge request OpenMW/openmw!1790
2022-04-21 10:38:49 +00:00
ζeh Matt
51a84aaef8
Include random state record in count of saved records 2022-04-21 11:51:10 +03:00
elsid
a2d596dbc7
Prepare navmesh scene asynchronously
It is expensive operation to generate new osg::Group for updated navmesh tile
which noticeably slows down main thread primarily because of
SceneManager::recreateShaders call. Move it to the preload work queue that is
used by RenderingManager. Leave to main thread only manipulations on the root
node.

Also move deallocation of no more needed data to the work queue. It's also
quite expensive operation because SceneManager::recreateShaders allocates a
new state set for each osg::Geometry. Deallocating them takes time.

Avoid creating another work item if there is existing one that is not started
yet.

Make sure results are accepted in the proper serialized order by selecting
completed work item with maximum {id, version}.
2022-04-20 23:14:31 +02:00
psi29a
c14796fc57 Merge branch 'ncc' into 'master'
#6496 Handle NCC flag in Nif files

See merge request OpenMW/openmw!1516
2022-04-17 20:29:41 +00:00
psi29a
4e723cad59 Merge branch 'issue-6667-pressing_escape_during_wait_causes_black_screen' into 'master'
issue-6667 pressing escape during wait causes black screen

See merge request OpenMW/openmw!1783
2022-04-17 20:26:23 +00:00
Eris Caffee
627656ace0 issue-6667 pressing escape during wait causes black screen 2022-04-17 20:26:23 +00:00
psi29a
58f77ab3ef Merge branch 'issue-5279-console_stops_scrolling_properly_after_selection' into 'master'
issue-5279 console stops scrolling properly after selection

See merge request OpenMW/openmw!1781
2022-04-17 20:25:10 +00:00
Eris Caffee
b2c6c49999 issue-5279 console stops scrolling properly after selection 2022-04-17 20:25:09 +00:00
fredzio
d05a2facf3 Handle NCC flag in Nif files. Objects with this flag will collide only with camera.
Expose objects with NC flag to be used by Lua mods.
2022-04-17 20:03:00 +02:00
psi29a
c17b6de787 Merge branch 'refactor/cache-target' into 'master'
Cache the target for ai packages instead of looking for it every frame

See merge request OpenMW/openmw!1772
2022-04-17 17:15:01 +00:00
Matt
56a1505885 Cache the target for ai packages instead of looking for it every frame 2022-04-17 17:15:00 +00:00
psi29a
4575df957e Merge branch 'issue-6685' into 'master'
issue 6685 - wizard failure if config dir does not exist

See merge request OpenMW/openmw!1735
2022-04-17 17:13:31 +00:00
Eris Caffee
ba57d0651f issue 6685 - wizard failure if config dir does not exist 2022-04-17 17:13:31 +00:00
psi29a
8f02cd7d17 Merge branch 'fix_6627' into 'master'
Fix #6627

Closes #6627

See merge request OpenMW/openmw!1762
2022-04-17 17:13:13 +00:00
psi29a
517bca803c Merge branch 'issue-2766-warn_user_if_old_MW_version_installed' into 'master'
Issue 2766 Warn user of old MW version detected

See merge request OpenMW/openmw!1748
2022-04-17 16:28:15 +00:00
Eris Caffee
db84d9e649 Issue 2766 Warn user of old MW version detected 2022-04-17 16:28:14 +00:00
psi29a
a0d0f60490 Merge branch 'dont_look_at_me_im_hideous' into 'master'
Ignored flag part 2

Closes #6699

See merge request OpenMW/openmw!1782
2022-04-17 09:42:49 +00:00
Evil Eye
6c87219ba3 Print record flags in esmtool 2022-04-17 09:00:58 +02:00
psi29a
e66008c4e2 Merge branch 'dont_look_at_me_im_hideous' into 'master'
Implement ignored records

Closes #6699

See merge request OpenMW/openmw!1779
2022-04-16 22:15:00 +00:00
Evil Eye
86d7f5a988 Fix tests 2022-04-16 22:58:08 +02:00
Evil Eye
61ea678a96 Implement ignored records 2022-04-16 16:28:39 +02:00
Evil Eye
68799cfd2b Merge branch 'cleancmakelist' into 'master'
Update CMakeLists.txt after a file was removed.

See merge request OpenMW/openmw!1778
2022-04-16 10:58:30 +00:00
elsid
fbc853804d
Fix recover from errors in Files::getHash 2022-04-15 21:43:54 +02:00
fredzio
3e4c683ba9 Update CMakeLists.txt after a file was removed. 2022-04-15 19:14:18 +02:00
elsid
b09570692e
Use ifstream for ESMReader
ESMReader reads the whole file, there is no need in the ConstrainedFileStream.
2022-04-15 02:58:57 +02:00
elsid
194c11f214
Fix loading order in EsmLoader
Need to load the last present record from a sequence of loaded records. That
means reverse should be called before unique or unique should be applied for
a reversed range. Since unique keeps only the first element from a sub
sequence of equal elements.

Use forEachUnique with reversed range to avoid redundant container
modifications.
2022-04-13 09:33:24 +02:00
psi29a
d3d9abede4 Merge branch 'refactor/predictAndAvoidCollisions' into 'master'
Use active package in predictAndAvoidCollisions

See merge request OpenMW/openmw!1770
2022-04-12 19:20:33 +00:00
uramer
5aa8e475a4 Merge branch 'rendering_raycast' into 'master'
Rendering raycasts in Lua

See merge request OpenMW/openmw!1768
2022-04-12 19:15:28 +00:00
ζeh Matt
b2739dc84a
Avoid looking up settings from gmst each frame 2022-04-12 18:58:13 +03:00
ζeh Matt
1a41cefab3
Use active package in predictAndAvoidCollisions 2022-04-12 18:32:58 +03:00
psi29a
9809b873a0 Merge branch 'esm_namespace_qualifiers' into 'master'
Remove ESM:: namespace qualifier in components/esm3/ and tests

See merge request OpenMW/openmw!1769
2022-04-12 08:08:31 +00:00
elsid
4447ab0ed7
Remove ESM:: namespace qualifier in components/esm3/ and tests 2022-04-12 02:04:24 +02:00
Petr Mikheev
51845e9553 Rendering raycasts in Lua 2022-04-11 23:36:54 +02:00
Petr Mikheev
a65f8ebbc6 Reorganize delayed Lua actions 2022-04-11 22:19:51 +02:00
elsid
39da3bfef8
Ignore player when checking whether AiTravel destination is occupied by other actor 2022-04-11 19:30:54 +02:00
psi29a
84458baa8b Merge branch 'VA_OpenMW-CS' into 'master'
OpenMW-CS: Issue #3245 Add configurable instance grid, angle, and scale snapping

Closes #3245

See merge request OpenMW/openmw!1737
2022-04-11 16:03:30 +00:00
Vidi_Aquam
035fe778b2 Temporary workaround for angle snapping
Made the angle snap only apply to an object when the drag is finished, which is much more usable until the rotation system can be fixed completely
2022-04-11 08:12:38 -05:00
psi29a
03806eb75e Merge branch 'esm_rm_redundant_include' into 'master'
Remove redundant include from esm3/esmreader.hpp

See merge request OpenMW/openmw!1761
2022-04-11 07:47:48 +00:00
elsid
5eb8c4aebe
Avoid redundant conversion to const char* and use make_shared 2022-04-10 22:33:08 +02:00
Petr Mikheev
fa29b9d6f7 Fix #6627 2022-04-10 22:31:09 +02:00
elsid
db44f91fd5
Remove redundant include from esm3/esmreader.hpp 2022-04-10 22:16:32 +02:00
elsid
6b464a9330
Check ESMReader value size in compile time 2022-04-10 19:16:11 +02:00
Benjamin Winger
21ffbcc4b4 Lua i18n updates 2022-04-10 07:57:02 +00:00
ζeh Matt
058da82823
Reduce calls in CharacterController::updateState 2022-04-09 01:52:52 +03:00
ζeh Matt
dd222b9ef1
Reduce calls in CharacterController::updateIdleStormState 2022-04-09 01:21:34 +03:00
ζeh Matt
e85a979f10
Reduce calls in CharacterController::handleTextKey 2022-04-09 01:20:53 +03:00
ζeh Matt
25b26f6fa7
Reduce calls in CharacterController::refreshHitRecoilAnims 2022-04-09 01:06:15 +03:00
psi29a
9275b3c08f Merge branch 'make_shared' into 'master'
Use std::make_shared instead of new

See merge request OpenMW/openmw!1753
2022-04-08 21:35:55 +00:00
elsid
4509b05bc8
Use std::make_shared instead of new
make_shared allocates single storage for ref counter and the object.
std::shared_ptr<T>(new T) allocates 2 storages.
2022-04-08 22:50:09 +02:00
elsid
df092b558b
Replace shared_ptr by unique_ptr 2022-04-08 22:42:22 +02:00
elsid
bbfdb347bd
Skip load cell ref when there is no need
Primarily to avoid temporary allocations by ESMReader::getHString.
2022-04-08 19:16:38 +02:00
elsid
ec3674b40a
Use unique_ptr instead of shared_ptr
for MWWorld::Action, ProjectileManager and ESSImport::Converter.

shared_ptr has additional cost of reference counter and requires additional
allocation when constructed as shared_ptr<T>(new T).
2022-04-08 16:12:36 +02:00
psi29a
320e86156e Merge branch 'registered_class' into 'master'
Use static object to register classes

See merge request OpenMW/openmw!1746
2022-04-08 08:36:24 +00:00
elsid
5156ee94be
Store static id key in lower case 2022-04-08 01:22:48 +02:00
elsid
7038c82690
Configure mav navmeshdb file size from the launcher 2022-04-07 16:38:01 +02:00
elsid
1baee5ddba
Add check box to remove unused tiles 2022-04-07 15:55:12 +02:00
psi29a
1ac7eaa6b0 Merge branch 'NiFltAnimationNode' into 'master'
Add NiFltAnimationNode support

Closes #6684

See merge request OpenMW/openmw!1732
2022-04-06 23:59:04 +00:00
psi29a
fc5605fc7f Merge branch 'navmeshtool_binary_log' into 'master'
Send status of navmeshtool to launcher using type binary messages

See merge request OpenMW/openmw!1630
2022-04-06 23:40:45 +00:00
Bret Curtis
c376f3793e check that the index is now -1; otherwise bad things happen 2022-04-07 00:09:11 +02:00
Bret Curtis
0db5415976 refactor to use mInternal, support Flag_Reverse and updated changelog/authors.md 2022-04-07 00:09:11 +02:00
Wolfgang Lieff
ead73fce31 initial NiFltAnimationNode support 2022-04-07 00:09:11 +02:00
psi29a
8b2c5e4801 Merge branch 'replace_boost_variant' into 'master'
Replace boost::variant by std::variant

See merge request OpenMW/openmw!1747
2022-04-06 22:07:44 +00:00
elsid
a46714df67
Replace boost::variant by std::variant 2022-04-06 23:01:58 +02:00
Petr Mikheev
3af8ea5dfc Update Lua bindings for the camera 2022-04-06 21:55:05 +02:00
Petr Mikheev
7186ea8ab4 [Lua] New overload Actor.equipment(actor, slot). 2022-04-06 21:55:05 +02:00
Petr Mikheev
5ed22c4c7a Minor fix in actors.cpp 2022-04-06 21:55:05 +02:00
elsid
dc20e799e1
Use static object to register classes 2022-04-06 16:49:25 +02:00
Matt
49e21e121a Revert "Merge branch 'refactor/6677-2' into 'master'"
This reverts merge request !1733
2022-04-04 17:09:52 +00:00
psi29a
ca77ae336f Merge branch 'refactor/6677-2' into 'master'
Introduce IndexedVector

See merge request OpenMW/openmw!1733
2022-04-04 13:56:20 +00:00
Matt
21e4c10fa9 Introduce IndexedVector 2022-04-04 13:56:19 +00:00
psi29a
e510612e46 Merge branch 'issue-6558-move_away_from_md5_in_cmake' into 'master'
Issue 6558 Move away from md5 in cmake

See merge request OpenMW/openmw!1740
2022-04-04 13:47:21 +00:00
Eris Caffee
14b5bef64f Issue 6558 Move away from md5 in cmake
Updated CMakeLists.txt files to use sha512 instead of md5 to verify downloads
2022-04-03 22:46:39 -05:00
elsid
6e0d660dd5 Check whether model is empty before trying to insert object 2022-04-03 17:38:33 +00:00
Vidi_Aquam
abf0c8048e Change reading of settings and add missing logic to mouse wheel drag 2022-04-03 09:04:12 -05:00
Vidi_Aquam
6d7c8f25fc Implement grid snapping and angle snapping in OpenMW-CS
Adds configurable snap settings for instance movement, rotation and scaling, used with the secondary edit button
2022-04-02 19:25:57 -05:00
elsid
3878a12ed3
Delay cell grid change until scene update
This allows proper profiling. Changing cell grid is not a part of physics
system, it's a part of world system.
2022-04-01 21:46:20 +02:00
elsid
2d5ccc804b
Exchange binary messages between navmeshtool and launcher 2022-03-30 19:24:54 +02:00
elsid
a21c17ab26
Use crash catcher in launcher 2022-03-30 19:23:10 +02:00
Petr Mikheev
fbc84465c5 Merge branch 'futureproof_layers' into 'master'
Add layer size, make layers API more flexible

See merge request OpenMW/openmw!1724
2022-03-29 20:11:11 +00:00
ζeh Matt
c3d02492df
Cleanup stopMovement 2022-03-29 19:49:02 +03:00
ζeh Matt
33706923a3
Restructure function updateCrimePursuit 2022-03-28 17:25:22 +03:00
ζeh Matt
9821982944
Restructure function updateEquippedLight 2022-03-28 16:48:16 +03:00
ζeh Matt
127366a948
Restructure function updateDrowning 2022-03-28 16:38:39 +03:00
ζeh Matt
0b306bc1ea
Restructure function engageCombat 2022-03-28 16:32:56 +03:00
ζeh Matt
8631b96680
Restructure function updateGreetingState 2022-03-28 16:25:33 +03:00
ζeh Matt
5e44dd41eb
Restructure function updateMovementSpeed 2022-03-28 16:20:24 +03:00
ζeh Matt
23615e653a
Mark getActivePackage const 2022-03-28 16:17:42 +03:00
ζeh Matt
cba51e5e1c
Restructure function updateHeadTracking 2022-03-28 16:13:40 +03:00
ζeh Matt
f5b527e445
Restructure function isCommanded 2022-03-28 16:07:20 +03:00
psi29a
1c70b9790c Merge branch 'covid_wont_stop_me' into 'master'
Don't reset last hit object if the ID doesn't match

Closes #6682

See merge request OpenMW/openmw!1727
2022-03-28 11:40:46 +00:00
Evil Eye
c1d700f770 Don't reset last hit object if the ID doesn't match 2022-03-28 11:40:46 +00:00
Evil Eye
7695f03c4c Remove unused variable 2022-03-27 17:20:22 +02:00
psi29a
2b83df09b6 Merge branch 'refactor/spell-vector' into 'master'
Refactor mUsedPowers to use vector

See merge request OpenMW/openmw!1725
2022-03-27 09:56:22 +00:00
psi29a
1f14f97d17 Merge branch 'navmeshdb_max_file_size' into 'master'
Limit max navmeshdb file size (#6649)

Closes #6649

See merge request OpenMW/openmw!1716
2022-03-27 09:07:56 +00:00
Nelsson Huotari
6869fa18e4 Fix unsafe memory access at object.cpp 2022-03-26 15:16:22 +00:00
Evil Eye
93d195646c Lua stats 2022-03-25 20:03:13 +00:00
ζeh Matt
edca5ac0b8
Rename hasDisease to hasSpellType and refactor function 2022-03-25 20:47:43 +02:00
ζeh Matt
dcdba227f7
Use vector for mUsedPowers for deterministic order 2022-03-25 20:42:01 +02:00
uramer
5d1fe6c2bc Add layer size, make layers API more flexible 2022-03-23 15:04:49 +01:00
psi29a
6d55317d57 Merge branch 'refactor/prng-2' into 'master'
Save random state and refactor usage of generators

See merge request OpenMW/openmw!1715
2022-03-23 09:50:54 +00:00
ζeh Matt
769be88d43
Adjust DetourNavigatorNavigatorTest to the new prng values 2022-03-21 17:49:42 +02:00
ζeh Matt
8103ff2e6f
Make the CI happy 2022-03-21 17:49:42 +02:00
ζeh Matt
f8f3bb2421
Use std::minstd_rand and split serialization from save/load 2022-03-21 17:49:42 +02:00
ζeh Matt
0611a8c3a7
Start new game with specified seed in options 2022-03-21 17:49:42 +02:00
ζeh Matt
151770ccf1
Separate global vs world rng functions and use custom prng 2022-03-21 17:49:42 +02:00
ζeh Matt
08fae7be6e
Pass the prng from world where appropriate 2022-03-21 17:49:42 +02:00
ζeh Matt
b502dc12f0
Add prng to World instance and serialize state in Save 2022-03-21 17:49:42 +02:00
jvoisin
eb46bde75e Merge branch 'lua_records' into 'master'
Lua bindings for ESM::Door and ESM::Weapon records

See merge request OpenMW/openmw!1717
2022-03-20 15:39:48 +00:00
Petr Mikheev
1b1e81b90e Lua bindings for ESM::Door and ESM::Weapon records 2022-03-20 15:39:48 +00:00
Petr Mikheev
d185cb6dce Add Lua function ui.screenSize() 2022-03-20 00:16:41 +01:00
Evil Eye
d7d1a85143 Restore dialogue autocompletion in the console 2022-03-19 12:02:26 +01:00
elsid
5b9dd10cbe
Limit max navmeshdb file size
Use "pragma max_page_count" to define max allowed file size in combination with
"pragma page_size" based on a new setting "max navmeshdb file size".

* Stop navmeshtool on the first db error.
* Disable writes to db in the engine on first "database or disk is full"
  SQLite3 error. There is no special error code for this error.
* Change default "write to navmeshdb" to true.
* Use time intervals for transaction duration instead of number of changes.
2022-03-18 19:08:46 +01:00
Petr Mikheev
fa115418eb [Lua] Remove queries 2022-03-15 23:35:36 +01:00
Petr Mikheev
0f84bfde51 [Lua] Replace cell.selectObjects with cell.getAll 2022-03-15 23:35:36 +01:00
Petr Mikheev
43bed7f0d2 [Lua] Split obj.inventory into Actor.inventory(obj) and Container.content(obj) 2022-03-15 23:35:36 +01:00
Petr Mikheev
d251c4e2a1 [Lua] Change behavior of obj.type 2022-03-15 23:35:36 +01:00
Petr Mikheev
af93ebf433 [Lua] Move class-specific functions to openmw.types 2022-03-15 19:23:26 +01:00
AnyOldName3
696be1cc39 Merge branch 'fix_6589' into 'master'
Add default value for `user-data` in openmw.cfg

Closes #6589

See merge request OpenMW/openmw!1632
2022-03-13 18:51:34 +00:00
duncanspumpkin
3a117cac22 Switch to a constexpr for FourCC constant
Add static asssert on wrong size
2022-03-08 14:48:37 +00:00
jvoisin
8a182c130a Merge branch 'refactor/prng' into 'master'
Refactor and rename some things around Misc::Rng

See merge request OpenMW/openmw!1710
2022-03-07 10:19:41 +00:00
Matt
54e114d83e Avoid string copies for ESM::Variant::getString 2022-03-06 17:38:58 +00:00
ζeh Matt
d83a381f79
Refactor and rename some things around Misc::Rng 2022-03-06 17:28:28 +02:00
Petr Mikheev
696c2135ef Merge branch 'FixSettingsLoaderForEditor' into 'master'
Make settings loader differentiate between engine and editor (fixes #6658).

Closes #6658

See merge request OpenMW/openmw!1706
2022-03-04 09:44:52 +00:00
Martin Otto
96e48e5492 Make settings loader differentiate between engine and editor (fixes #6658). 2022-03-04 09:44:52 +00:00
Petr Mikheev
df41b4080d Merge branch 'refactor/headtracking' into 'master'
Small improvement for headtracking

See merge request OpenMW/openmw!1683
2022-03-03 20:39:53 +00:00
Matt
0b528d3bfb Small improvement for headtracking 2022-03-03 20:39:53 +00:00
ζeh Matt
129d68e299
Fix #6660: Crash during intro video when closing the game 2022-03-03 20:25:35 +02:00
psi29a
3afa46b25e Merge branch 'CPP20_support' into 'master'
Support C++20

See merge request OpenMW/openmw!1705
2022-03-01 11:11:37 +00:00
Bret Curtis
32fd6f297a static_cast bitwise operation between different enumeration types 2022-03-01 10:53:01 +01:00
Bret Curtis
1927b1c6d9 use static cast to handle: deprecated between enumerations of different types 2022-03-01 10:53:01 +01:00
Bret Curtis
ad11cc8d8a reinstall fontconfig as needed; const an imbigious == operator 2022-03-01 10:53:01 +01:00
Bret Curtis
4b742dd461 explicit capture for lamda 2022-03-01 09:43:08 +01:00
psi29a
3558196098 Merge branch 'Newer-Bsa-formats-no-longer-load' into 'master'
#6651 Newer bsa formats no longer load

Closes #6651

See merge request OpenMW/openmw!1703
2022-03-01 07:22:04 +00:00
Evil Eye
25feea9b16 Prevent write to empty vector element 2022-02-28 16:42:22 +01:00
psi29a
ceae2d664d Merge branch 'refactor/stdlist' into 'master'
Use std::vector instead of std::list for some functions

See merge request OpenMW/openmw!1699
2022-02-28 07:40:21 +00:00
Cédric Mocquillon
ff7ad93bac Avoid missusing of CompressedBSAFile with private inheritance 2022-02-27 20:40:35 +01:00
uramer
6845d681f2 Update hardcoded layers (hotfix for https://gitlab.com/OpenMW/openmw/-/merge_requests/1681) 2022-02-27 11:59:55 +00:00
psi29a
2d4e9b38ae Merge branch 'lua_ui_image' into 'master'
Document the Lua Image widget, add UI texture resources

See merge request OpenMW/openmw!1637
2022-02-26 17:48:50 +00:00
uramer
67879bac55 MR feedack 2022-02-26 17:01:46 +01:00
Petr Mikheev
6afafbbe30 Merge branch 'refactor_layers' into 'master'
Refactor UI layers

See merge request OpenMW/openmw!1681
2022-02-26 13:54:42 +00:00
uramer
21a363d96f Refactor UI layers 2022-02-26 13:54:42 +00:00
uramer
fc50724f5c Render text and images correctly in templates with slots 2022-02-25 18:18:26 +01:00
uramer
e092ee2624 Document the Lua Image widget, add UI texture resources 2022-02-25 18:18:26 +01:00
jvoisin
7f3058d501 Use toStringView in esmtool instead of toString 2022-02-25 17:40:27 +01:00
ζeh Matt
eca405e5c7
Use std::vector instead of std::list 2022-02-25 04:02:21 +02:00
elsid
42d6032c8b
Support compilation with c++20 2022-02-24 00:49:40 +01:00
psi29a
7e4e78b1a7 Merge branch 'engarde' into 'master'
Always reduce weapon condition by the raw damage (bug #6559)

Closes #6559

See merge request OpenMW/openmw!1694
2022-02-23 21:49:57 +00:00
Alexei Dobrohotov
fdd9e6a793 Always reduce weapon condition by the raw damage (bug #6559) 2022-02-23 16:37:56 +03:00
psi29a
34be9329eb Merge branch 'ascivilaspossible' into 'master'
Increase the base actor angular velocity to 900°/sec (#5192)

Closes #5192

See merge request OpenMW/openmw!1690
2022-02-23 10:09:17 +00:00
psi29a
dd281e1e93 Merge branch 'fix_collision_boxes' into 'master'
Fix #6616: Fix incorrect collision box calculations

Closes #6616

See merge request OpenMW/openmw!1687
2022-02-23 08:26:50 +00:00
Alexei Kotov
38a0659b7f Merge branch 'weak_ptr' into 'master'
Store std::weak_ptr into mUpdateAabb.

See merge request OpenMW/openmw!1578
2022-02-23 06:10:29 +00:00
Alexei Kotov
4a3d7a1ff7 Merge branch 'esm3_ai_package' into 'master'
Use unique_ptr to manage AiPackage lifetime

See merge request OpenMW/openmw!1691
2022-02-23 05:55:49 +00:00
Alexei Kotov
087084abdc Merge branch 'projectilefix' into 'master'
Fix for projectile movement simulation (#6526 and probably #6434)

See merge request OpenMW/openmw!1518
2022-02-23 05:34:35 +00:00
elsid
595c2e0a8e
Use unique_ptr to manage AiPackage lifetime 2022-02-23 00:39:30 +01:00
Alexei Dobrohotov
1a15ad216d Increase the base angular velocity to 900°/sec (#5192) 2022-02-23 02:13:31 +03:00
Abdu Sharif
de3092f014 Revert "Merge branch 'offset_the_deads' into 'master'"
This reverts commit 7dd02076f5
2022-02-22 04:04:08 +00:00
Petr Mikheev
ff7ac7192b Merge branch 'ui_pairs' into 'master'
Implement pairs and ipairs for ui.content and ui.layers. Document all iterable types in a uniform way.

See merge request OpenMW/openmw!1643
2022-02-21 20:43:29 +00:00
uramer
a1abc84f59 Implement pairs and ipairs for ui.content and ui.layers. Document all iterable types in a uniform way. 2022-02-21 20:43:27 +00:00
uramer
cc6dce5443 Support controller touchpads (Resolves https://gitlab.com/OpenMW/openmw/-/issues/6639) 2022-02-21 19:49:00 +00:00
jvoisin
a55f1ad103 Merge branch 'bullet_object_tool' into 'master'
Add a tool to load and print information about all bullet objects in all cells

See merge request OpenMW/openmw!1627
2022-02-20 14:09:26 +00:00
elsid
6fd251e8f7
Avoid starting async png writing when overlay image is null 2022-02-19 21:41:40 +01:00
psi29a
b03f9e430c Merge branch 'navmesh_disk_rm_unused_tiles' into 'master'
Add navmeshtool flag to remove unused tiles from navmesh disk cache

See merge request OpenMW/openmw!1671
2022-02-19 13:56:44 +00:00
psi29a
85c0d93274 Merge branch 'fix-6633' into 'master'
Fix #6633: AiSequence packages being removed incorrectly

Closes #6633

See merge request OpenMW/openmw!1678
2022-02-19 13:55:42 +00:00
ζeh Matt
b997e28e57
Fix #6633: AiSequence packages being removed incorrectly 2022-02-19 14:56:51 +02:00
psi29a
1c1581bdab Merge branch 'check_esm4_compilation' into 'master'
Check ESM4 compilation

See merge request OpenMW/openmw!1677
2022-02-19 12:18:43 +00:00
elsid
57c1f2e231
Make sure everything compiles in ESM4 2022-02-19 02:52:49 +01:00
elsid
a7e76c6f3d
Remove redundant include 2022-02-18 22:31:40 +01:00
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.
2022-02-18 21:57:23 +01:00
elsid
67741402b5
Replace reference to const std::string by std::string_view for navmeshdb related arguments 2022-02-18 21:45:50 +01:00
elsid
9584cb7ac2
Use fixed size types for serialization 2022-02-18 21:01:53 +01:00
elsid
de7f9f6439
Replace raw for loop by algorithm
To fix compilation error with -D_GLIBCXX_DEBUG:
/home/elsid/dev/openmw/apps/openmw/mwdialogue/dialoguemanagerimp.cpp: In member function ‘virtual void MWDialogue::DialogueManager::write(ESM::ESMWriter&, Loading::Listener&) const’:
/home/elsid/dev/openmw/apps/openmw/mwdialogue/dialoguemanagerimp.cpp:679:78: error: no matching function for call to ‘__gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<std::__cxx11::basic_string<char> >, std::__debug::set<std::__cxx11::basic_string<char> >, std::bidirectional_iterator_tag>::_Safe_iterator(std::__debug::set<std::__cxx11::basic_string<char>, Misc::StringUtils::CiComp>::const_iterator)’
  679 |         for (std::set<std::string>::const_iterator iter (mKnownTopics.begin());
      |                                                                              ^
2022-02-17 01:04:44 +01:00
psi29a
4a2302ff2b Merge branch 'hand_to_nixhound' into 'master'
Disallow non-bipedal hand-to-hand refreshes

See merge request OpenMW/openmw!1667
2022-02-16 22:30:39 +00:00
Alexei Kotov
4fdf55601c Merge branch 'bigboi' into 'master'
Force a scale update when changing view modes

Closes #6623

See merge request OpenMW/openmw!1662
2022-02-16 22:29:13 +00:00
psi29a
8da1cc3dd2 Merge branch 'fix-6618' into 'master'
Fix #6618

Closes #6618

See merge request OpenMW/openmw!1666
2022-02-16 21:24:21 +00:00
psi29a
cc8d05bd9a Merge branch 'async_save_map' into 'master'
Write png image of the global map for save asynchronously

See merge request OpenMW/openmw!1656
2022-02-16 21:11:07 +00:00
Evil Eye
7bd4971e0c Disallow non-bipedal hand-to-hand refreshes 2022-02-16 21:58:22 +01:00
psi29a
b73eaadf20 Merge branch 'use_utf8_string_view' into 'master'
Avoid extra copy for Utf8Encoder::getUtf8 result

See merge request OpenMW/openmw!1661
2022-02-16 20:58:12 +00:00
ζeh Matt
0ce29a6131
Simplify logic in AiSequence::execute 2022-02-16 20:21:10 +02:00
ζeh Matt
e60e0b55eb
Fix potential another crash 2022-02-16 18:19:55 +02:00
ζeh Matt
83be3826ff
Fix #6618: Crash due to iterator invalidation 2022-02-16 18:19:10 +02:00
psi29a
d680870e8f Merge branch 'fix_aabb' into 'master'
Fix btAABB initialization (#6489)

Closes #6489

See merge request OpenMW/openmw!1664
2022-02-16 08:01:23 +00:00
elsid
2e38f0b641
Fix btAABB initialization 2022-02-16 02:58:59 +01:00
elsid
875d9dcead
Fix buffer resizing by StatelessUtf8Encoder 2022-02-15 23:02:32 +01:00
Evil Eye
f9da792386 Force a scale update when changing view modes 2022-02-15 17:25:07 +01:00
psi29a
8a0fb4d633 Merge branch 'stateless_utf8_encoder' into 'master'
Add StatelessUtf8Encoder to support caller provided buffer for output

See merge request OpenMW/openmw!1660
2022-02-15 08:35:31 +00:00
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
2022-02-15 08:11:12 +00:00
elsid
3305b400dc
Use ESM::NAME instead of const char* and std::string as argument type 2022-02-14 23:40:40 +01:00
elsid
c044bef6a7
Add StatelessUtf8Encoder to support caller provided buffer for output 2022-02-14 23:19:49 +01:00
elsid
fbbf871067
Avoid extra copy for Utf8Encoder::getUtf8 result 2022-02-14 23:01:32 +01:00
Evil Eye
649c2f8286 Fix stats not working right for saves started before version 17 2022-02-14 18:38:37 +01:00
psi29a
149ef56b60 Merge branch 'utf8_encoder_tests' into 'master'
Add tests for Utf8Encoder

See merge request OpenMW/openmw!1654
2022-02-14 06:39:39 +00:00
elsid
a4d7b72511
Write png image of the global map for save asynchronously
Write global map to the save file last to give more time for async job to
finish.
2022-02-13 21:42:36 +01:00
elsid
b43eb29465
Log duration of writing save game file 2022-02-13 21:24:18 +01:00
elsid
7884a01026
Add tests for Utf8Encoder 2022-02-13 17:19:08 +01:00
psi29a
bd8c75daee Merge branch 'quest_redo' into 'master'
Restart all quests with the same name when a quest is restarted

Closes #6606

See merge request OpenMW/openmw!1651
2022-02-13 15:31:18 +00:00
Petr Mikheev
d8127fdad2 Merge branch 'refactor/aisequence-2' into 'master'
#6091: Optimize isInCombat

See merge request OpenMW/openmw!1636
2022-02-12 23:50:42 +00:00
Matt
367bdcf0cc #6091: Optimize isInCombat 2022-02-12 23:50:41 +00:00
Alexei Kotov
14a9af15ab Merge branch 'dagoth_wave' into 'master'
Remove weaponless, non-biped distinction

Closes #5054

See merge request OpenMW/openmw!1517
2022-02-12 15:07:32 +00:00
Alexei Kotov
380823d0ee Merge branch 'always-use-best-attack-rounding-fix' into 'master'
Fix always-use-best-attack rounding

See merge request OpenMW/openmw!1647
2022-02-12 15:03:44 +00:00
Evil Eye
c382910c1f Restart all quests with the same name when a quest is restarted 2022-02-12 13:25:27 +01:00
Evil Eye
fdfde836fe Expect recent saves to store the modified value 2022-02-12 01:03:12 +01:00
Niek Wilting
6cd12823e8 Fix always-use-best-attack rounding 2022-02-11 19:26:13 +01:00
psi29a
2a7d28712f Merge branch 'stats' into 'master'
Remove weirdness surrounding AI- and Dynamic stats

Closes #6599

See merge request OpenMW/openmw!1645
2022-02-11 08:18:24 +00:00
Evil Eye
054d8babc4 Add getRatio method 2022-02-10 22:10:46 +01:00
Evil Eye
6b203892fc Fix mod not increasing fortified values 2022-02-10 20:46:20 +01:00
uramer
ede9d27437 Element-wise multiplication and division of Lua vectors 2022-02-10 19:43:27 +00:00
Evil Eye
dc495a685a Remove a member variable that doesn't get saved and remove fortify maximum health code 2022-02-10 20:32:59 +01:00
Evil Eye
4e52c96cf5 Make Set/Mod[DynamicStat] work with negative values as in vanilla 2022-02-10 20:31:27 +01:00
Evil Eye
5aef14eccd Prevent division by 0 2022-02-10 20:28:27 +01:00
psi29a
01e8ae8981 Merge branch 'peace_love_and_stencils' into 'master'
Support morrowind stenciling (#6443)

Closes #6443

See merge request OpenMW/openmw!1635
2022-02-08 09:42:26 +00:00
glassmancody.info
8c2c322d92 add stencil to water RTTs, reword some comments 2022-02-07 14:35:15 -08:00
glassmancody.info
bbc9c53423 support morrowind stenciling 2022-02-07 11:51:59 -08:00
psi29a
2a6392fe5c Merge branch 'fix_6590' into 'master'
Fix #6590

Closes #6590

See merge request OpenMW/openmw!1633
2022-02-07 14:05:18 +00:00
uramer
643c1d6aeb Merge branch 'lua_ai' into 'master'
Control AI packages from Lua

See merge request OpenMW/openmw!1604
2022-02-06 22:43:48 +00:00
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
2022-02-06 22:10:21 +00:00
Petr Mikheev
a294adcdaf Proper support of pairs and ipairs in Lua; fix bug in makeReadOnly. 2022-02-06 22:10:20 +00:00
Petr Mikheev
8e330653c7 Fix #6590 2022-02-06 22:16:37 +01:00
uramer
581c3f4882 Update and document Lua Text and TextEdit widget types, fix some issues with Lua UI 2022-02-06 20:22:38 +00:00
Petr Mikheev
ac5cd6c80a Add default value for user-data in openmw.cfg 2022-02-06 21:07:14 +01:00
Petr Mikheev
6c56436809 Control AI packages from Lua 2022-02-06 15:01:51 +01:00
psi29a
7f4d4c0d70 Merge branch 'refactor/system-ownership' into 'master'
Make ownership explicit in Engine and Environment

See merge request OpenMW/openmw!1605
2022-02-06 10:44:15 +00:00
Evil Eye
4657060d2c Extend swish and strength changes to all random attacks 2022-02-06 11:08:47 +01:00
Evil Eye
020e0b2ea5 Don't allow non-bipedal actors to play hand-to-hand animations 2022-02-05 22:50:04 +01:00
unknown
5ebcd37da1 Rename method and restore swish sounds 2022-02-05 19:07:44 +01:00
ζeh Matt
a383d9dfdf
Make ownership explicit in Environment 2022-02-05 11:46:23 +02:00
elsid
e7f3524924
Add a tool to load and print information about all bullet objects in all cells 2022-02-04 16:14:52 +01:00
psi29a
becffef142 Merge branch 'cull_navmesh_objects' into 'master'
Cull navmesh objects by scene bounds (#5858)

Closes #5858

See merge request OpenMW/openmw!1625
2022-02-04 14:07:13 +00:00
AnyOldName3
9d8853442b Merge branch 'portable' into 'master'
Make OpenMW "portable"

Closes #2491

See merge request OpenMW/openmw!1555
2022-02-03 22:49:49 +00:00
psi29a
c3e07619a4 Merge branch 'lua' into 'master'
Replace `inventory:get<Type>()` with `inventory:getAll(<Type>)`

See merge request OpenMW/openmw!1624
2022-02-03 22:35:36 +00:00
elsid
3caeda7299
Consider animated object unchanged if no transform updates done 2022-02-03 22:09:52 +01:00
elsid
832ab103cb
Filter out unchanged animated objects for navigator update 2022-02-03 22:09:52 +01:00
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.
2022-02-03 22:09:37 +01:00
elsid
1b2954f2db
Remove unused z coordinate 2022-02-03 21:43:53 +01:00
elsid
783411fa1f
Use new player position when updating navigator on cell loading 2022-02-03 02:44:04 +01:00
elsid
542717394a
Remove objects, water and heightfields when no longer required 2022-02-03 02:43:35 +01:00
Petr Mikheev
6e4f628866 Replace inventory:get<Type>() with inventory:getAll(<Type>) 2022-02-03 02:05:49 +01:00
elsid
16cfdfec19
Avoid unnecessary computation
And fix UBSAN error:

/home/elsid/dev/openmw/apps/openmw/mwrender/renderingmanager.cpp:659:81: runtime error: division by zero
    #0 0x556eac16f4dc in MWRender::RenderingManager::configureAmbient(ESM::Cell const*) /home/elsid/dev/openmw/apps/openmw/mwrender/renderingmanager.cpp:659
    #1 0x556eadfd3d60 in MWWorld::Scene::loadCell(MWWorld::CellStore*, Loading::Listener*, bool, osg::Vec3f const&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:467
    #2 0x556eadfe3047 in MWWorld::Scene::changeToInteriorCell(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:830
    #3 0x556eadeb8fb3 in MWWorld::World::changeToInteriorCell(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/worldimp.cpp:978
    #4 0x556eadeba5f1 in MWWorld::World::changeToCell(ESM::CellId const&, ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/worldimp.cpp:1008
    #5 0x556eaeb852dd in MWState::StateManager::loadGame(MWState::Character const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/apps/openmw/mwstate/statemanagerimp.cpp:533
    #6 0x556eaeb81674 in MWState::StateManager::loadGame(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/apps/openmw/mwstate/statemanagerimp.cpp:366
    #7 0x556eaebd2aae in OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:1025
    #8 0x556eaeba810a in runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:221
    #9 0x556eaf865e9a in wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /home/elsid/dev/openmw/components/debug/debugging.cpp:205
    #10 0x556eaeba8368 in main /home/elsid/dev/openmw/apps/openmw/main.cpp:233
    #11 0x7f89773b3b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
    #12 0x556eac13c09d in _start (/home/elsid/dev/openmw/build/gcc/ubsan/openmw+0x669c09d)
2022-02-03 00:08:45 +01:00
Petr Mikheev
a453e5c198 Reuse the same code to load settings in apps/openmw, apps/launcher, apps/opencs 2022-02-02 23:47:11 +01:00
Petr Mikheev
1bcc4a8bcc Read settings.cfg from all active config dirs 2022-02-02 23:47:11 +01:00
Petr Mikheev
5ca56a4f8a New option "config" for specifying additional config directories. 2022-02-02 23:47:11 +01:00
Petr Mikheev
dd5ba5c57b Redirect log only after parsing configuration 2022-02-02 23:47:11 +01:00
psi29a
bb6b031afd Merge branch 'fix_simulation_crash' into 'master'
Fix use after free and possible deadlock on exit (#6577)

Closes #6577

See merge request OpenMW/openmw!1601
2022-02-02 21:06:18 +00:00
psi29a
cf8d49bb9a Merge branch 'lua_settings_ui' into 'master'
Lua settings UI

Closes #6454

See merge request OpenMW/openmw!1595
2022-02-02 21:04:18 +00:00
uramer
946b8b804c MR feedback 2022-02-02 16:42:04 +01:00
Alexei Dobrohotov
142b6fdf2f Fix double precision bound issues in std::max/std::clamp 2022-02-02 16:57:59 +03:00
Petr Mikheev
47c37e5849 Lua command object:activateBy(actor) and handler onActivate 2022-02-01 23:42:56 +00:00
uramer
f68c0c41a9 Prioritize setting pages with hits in the name when searching 2022-02-01 23:06:53 +01:00
Evil Eye
8752f78fa4 Remove weaponless, non-biped distinction 2022-02-01 21:58:55 +01:00
uramer
ef1e72dc17 Revert from settings description to searchHints 2022-02-01 19:50:03 +01:00
uramer
01d65a14f1 Implement more advanced search, sort script setting pages by alphabet and filter match quality 2022-02-01 19:50:03 +01:00
uramer
67641dcdb7 Fix compile errors 2022-02-01 19:50:03 +01:00
uramer
086a7d9bc5 Wrap Lua settings widgets into an Adapter widget 2022-02-01 19:50:03 +01:00
uramer
db9e734a6a Fix warning 2022-02-01 19:50:02 +01:00
uramer
1455aa3e02 Allow changing script settings pages after registering them 2022-02-01 19:50:02 +01:00
uramer
5f7ab49880 Implement script setting pages' descriptions 2022-02-01 19:50:02 +01:00
uramer
a005f25c4b Use page terminology for script settings 2022-02-01 19:50:02 +01:00
uramer
e78b8402fa Fix warnings 2022-02-01 19:50:02 +01:00
uramer
a972a54ea9 Allow changing element root widget type, prevent use after free in script settings 2022-02-01 19:50:02 +01:00
uramer
64df4f54c6 Add scrolling to the script settings view 2022-02-01 19:50:02 +01:00
uramer
fba82eb1a7 Script settings tab 2022-02-01 19:50:02 +01:00
uramer
c31dedb89c Implement Yaw, Pitch and Use (attack / cast spell) in Lua self.controls 2022-02-01 18:47:20 +00:00
elsid
7ea5aa250b
Revert "Cull navmesh objects by scene bounds"
This reverts commit b0ef20c303.
2022-01-30 21:43:23 +01:00
jvoisin
4cd6d2dacf Merge branch 'rework_fixed_string' into 'master'
Rework fixed string

See merge request OpenMW/openmw!1596
2022-01-30 18:47:06 +00:00
jvoisin
43f64e9f75 Merge branch 'tasty_sujamma' into 'master'
Uncap attribute and skill damage for drain and absorb effects

See merge request OpenMW/openmw!1592
2022-01-30 17:59:49 +00:00
elsid
70623d0b23
Move FetchContent for benchmark to extern 2022-01-30 00:44:22 +01:00
psi29a
e46905450e Merge branch 'refactor/esm-recordnew' into 'master'
Use unique_ptr for ESM records

See merge request OpenMW/openmw!1603
2022-01-29 22:05:39 +00:00
psi29a
7dd02076f5 Merge branch 'offset_the_deads' into 'master'
#6410: Use the scaled mesh translation for collision shape position for living actors

See merge request OpenMW/openmw!1446
2022-01-29 20:28:23 +00:00
psi29a
7bab714825 Merge branch 'fix_circling_fargoth' into 'master'
Remove unnecessary loops from path (#6510)

Closes #6510

See merge request OpenMW/openmw!1584
2022-01-29 19:48:02 +00:00
ζeh Matt
07eb6db030
Use unique_ptr for ESM records 2022-01-29 21:09:27 +02:00
Evil Eye
79dc600dae Uncap attribute and skill damage for drain and absorb effects 2022-01-29 16:29:50 +01:00
elsid
8b7ae9afd8
Fix use after free and possible deadlock on exit
Lock Simulation weak_ptr in all visitors to avoid use after free.

And swap order for weak_ptr locking with locking collision world mutex to avoid
deadlock when underlying object tries to lock the same mutex in the destructor.

Add SimulationImpl type to avoid use of FrameData without locking weak_ptr.
2022-01-29 14:59:51 +01:00
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.
2022-01-28 18:39:09 +01:00
Petr Mikheev
53f2dfd1c0 Merge branch 'lua_ui_templates' into 'master'
Lua UI templates

See merge request OpenMW/openmw!1475
2022-01-28 09:31:46 +00:00
uramer
960dd1f708 Lua UI templates 2022-01-28 09:31:45 +00:00
elsid
bf692a4bfa
Add more tests for fixed string 2022-01-28 03:39:28 +01:00
Bret Curtis
022fdc49a5 update tests to use esm3 rename 2022-01-27 21:13:38 +01:00
psi29a
84e209308d Merge branch 'refactor/interpreter' into 'master'
Cleanup interpreter code a bit

Closes #6553

See merge request OpenMW/openmw!1556
2022-01-27 19:18:57 +00:00
Matt
34723c8ea8 Cleanup interpreter code a bit 2022-01-27 19:18:57 +00:00
psi29a
6f7a067e0c Merge branch 'esmrename' into 'master'
esm refactor work

See merge request OpenMW/openmw!1575
2022-01-27 17:52:42 +00:00
psi29a
fac47ce0b5 Merge branch 'support_controller_gyro' into 'master'
Support controller gyro

Closes #6557

See merge request OpenMW/openmw!1571
2022-01-25 19:20:36 +00:00
psi29a
21ef9d4058 Merge branch 'nif_multi_parents' into 'master'
Support multiple parents for NIF nodes (#6552)

Closes #6552

See merge request OpenMW/openmw!1577
2022-01-25 19:17:19 +00:00
jvoisin
4ae1ea1ee3 Merge branch 'refidref' into 'master'
Remove `getRefIdRef` because it is the same as `getRefId`.

See merge request OpenMW/openmw!1585
2022-01-25 16:23:51 +00:00
Evil Eye
783505011c Merge branch 'fix_deprecated_warning' into 'master'
Remove usage of deprecated std::iterator

See merge request OpenMW/openmw!1589
2022-01-25 15:32:22 +00:00
Evil Eye
903ef60f9d Merge branch 'navmesh_scene_bounds' into 'master'
Limit and filter navmesh input (#5858)

Closes #5858

See merge request OpenMW/openmw!1583
2022-01-25 14:06:53 +00:00
elsid
ecc654a369 Limit and filter navmesh input (#5858) 2022-01-25 14:06:53 +00:00
elsid
12df2deb70
Remove usage of deprecated std::iterator
/home/elsid/dev/openmw/apps/openmw/mwlua/../mwbase/../mwworld/containerstore.hpp:264:23: warning: 'iterator<std::forward_iterator_tag, MWWorld::Ptr>' is deprecated [-Wdeprecated-declarations]
        : public std::iterator<std::forward_iterator_tag, PtrType, std::ptrdiff_t, PtrType *, PtrType&>
                      ^
/home/elsid/dev/openmw/apps/openmw/mwlua/../mwworld/inventorystore.hpp:79:36: note: in instantiation of template class 'MWWorld::ContainerStoreIteratorBase<MWWorld::Ptr>' requested here
            ContainerStoreIterator mSelectedEnchantItem;
                                   ^
/usr/bin/../include/c++/v1/__iterator/iterator.h:27:29: note: 'iterator<std::forward_iterator_tag, MWWorld::Ptr>' has been explicitly marked deprecated here
struct _LIBCPP_TEMPLATE_VIS _LIBCPP_DEPRECATED_IN_CXX17 iterator
                            ^
/usr/bin/../include/c++/v1/__config:1016:39: note: expanded from macro '_LIBCPP_DEPRECATED_IN_CXX17'
                                      ^
/usr/bin/../include/c++/v1/__config:993:48: note: expanded from macro '_LIBCPP_DEPRECATED'
                                               ^
2022-01-24 22:50:18 +01:00
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.
2022-01-24 22:32:04 +01:00
uramer
39c7325db7 Merge branch 'lua_fix_onActorActive' into 'master'
Validate that object exists before onActorActive Lua handler

See merge request OpenMW/openmw!1580
2022-01-24 13:25:20 +00:00
psi29a
fdc08cf01e Merge branch 'fix_storage' into 'master'
Fix heap use after free in components/lua/storage.cpp

See merge request OpenMW/openmw!1586
2022-01-24 12:17:19 +00:00
Petr Mikheev
067d71f7eb Fix heap use after free in components/lua/storage.cpp 2022-01-23 22:37:04 +01:00
Petr Mikheev
203ee492c8 Remove getRefIdRef because it is the same as getRefId. 2022-01-23 21:01:44 +01:00
Bret Curtis
74e7cfc023 remove unused includes: part1
remove unused imports: part2

revert one tidy we will keep for c++20
2022-01-23 17:30:25 +01:00
Bret Curtis
cdbab2325f rename esmterrain to esm3terrain 2022-01-23 17:19:30 +01:00
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
2022-01-23 17:04:48 +01:00
elsid
4b59ff2060
Include headers instead of source files 2022-01-23 15:40:30 +01:00
Petr Mikheev
24989e7bc1 Validate that object exists before onActorActive Lua handler 2022-01-23 11:30:22 +01:00
fredzio
26bdba88a2 Store std::weak_ptr into mUpdateAabb. This avoid extending the lifetime
of collision objects beyond what they should.
2022-01-22 17:17:20 +01:00
uramer
a85f2b0b2a Remove unnecessary mGuiCursorEnabled; from sensor manager 2022-01-22 13:28:07 +01:00
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.
2022-01-22 01:02:31 +01:00
elsid
580edf18b9 Use weak_ptr for Actor and Projectile simulations (#6515) 2022-01-21 00:28:56 +00:00
uramer
183ca3079e Merge gyroaxis into gyro manager 2022-01-20 15:42:01 +01:00
uramer
57ac592973 Fix warning 2022-01-19 22:35:32 +01:00
uramer
15e9c6615c Disable controller gyro with older SDL 2022-01-19 21:32:46 +01:00
uramer
4021d23cff Refactor sensor manager axis correction 2022-01-19 18:09:37 +01:00
Cody Glassman
9cafc31c0d Restore ripples with soft particles 2022-01-19 11:32:38 +00:00
uramer
a496f16cdb Implement gyro camera for controllers 2022-01-18 22:47:49 +01:00
uramer
9fa0faf944 Refactor sensor manager to match controller manager gyro API 2022-01-18 21:11:25 +01:00
uramer
55f95f1ea3 Enable controller gyro and capture the values 2022-01-18 20:23:16 +01:00
Petr Mikheev
9d0e427ec1 Merge branch 'dispose_lua_ui_correctly' into 'master'
Dispose Lua UI elements correctly

See merge request OpenMW/openmw!1561
2022-01-18 08:12:56 +00:00
uramer
cc528d2e08 Dispose Lua UI elements correctly 2022-01-18 08:12:56 +00:00
uramer
d1d8f058ac Lua bindings for Colours 2022-01-17 22:35:06 +00:00
psi29a
4e93716584 Merge branch 'always_bigobj' into 'master'
Always use /bigobj, clean up scattered uses into one

See merge request OpenMW/openmw!1476
2022-01-17 08:05:19 +00:00
uramer
886dee57ee Always use /bigobj, clean up scattered uses into one 2022-01-17 08:05:19 +00:00
wareya
20cbf941fb re-introduce short circuiting, but only under certain circumstances 2022-01-16 17:58:04 -05:00
wareya
784b1888a9 Merge branch 'upstream' into movement_tweaks 2022-01-16 17:19:20 -05:00
psi29a
fd7e0b74cc Merge branch '6303-jail-stuck-attack' into 'master'
#6303 Made player stop attacking and sheathe weapon when going to jail

See merge request OpenMW/openmw!1551
2022-01-16 10:15:47 +00:00
Artem Nykolenko
a5cdc889a2 #6303 Made player stop attacking and sheathe weapon when going to jail 2022-01-16 10:15:47 +00:00
uramer
c07fb75bf7 Merge branch 'lua_settings' into 'master'
Permanent storage for Lua

See merge request OpenMW/openmw!1489
2022-01-15 21:52:09 +00:00
jvoisin
2142e4b241 Merge branch 'scale_your_guar' into 'master'
Make scaleObject a no-op when not changing scale

Closes #6551

See merge request OpenMW/openmw!1559
2022-01-15 17:17:18 +00:00
uramer
ae641811cf Merge branch 'lua_vector' into 'master'
Use double precision for vectors serialization in Lua

See merge request OpenMW/openmw!1558
2022-01-15 16:14:04 +00:00
Petr Mikheev
4677912997 Remove incorrect destructor that was added in !1557. 2022-01-15 13:59:22 +01:00
Evil Eye
5fcb2cabc8 Make scaleObject a no-op when not changing scale 2022-01-15 13:04:15 +01:00
Petr Mikheev
1b7e923b2c Lua fixes 2022-01-15 12:01:30 +00:00
Petr Mikheev
97d56e198f Use double precision for vectors serialization in Lua 2022-01-15 11:25:30 +01:00
Petr Mikheev
a182fdeea1 Permanent storage for Lua data 2022-01-11 11:21:03 +01:00
psi29a
781b014183 Merge branch 'toggable_daynightswitch' into 'master'
Toggable day night switch (#5928)

Closes #5928

See merge request OpenMW/openmw!1549
2022-01-11 09:34:19 +00:00
Cody Glassman
8ec0a52605 Toggable day night switch (#5928) 2022-01-11 09:34:19 +00:00
Petr Mikheev
2d1b100239 Change terminology of gameSecond/gameHour to simulationTime/gameTime 2022-01-10 21:03:35 +01:00
Josquin Frei
d9672f7d46 Add serialization for TransformM and TransformQ 2022-01-10 12:42:03 +00:00
psi29a
a1f8db7600 Merge branch 'bright_spells' into 'master'
Replicate Morrowind spell lighting (#4949)

Closes #4949

See merge request OpenMW/openmw!1544
2022-01-09 11:07:14 +00:00
cody glassman
8216410e7d add white ambient to spell VFX as in Morrowind 2022-01-08 16:19:42 -08:00
cody glassman
e32d3d11ce ensure readbuffer is bound before using glReadPixels 2022-01-08 16:12:24 -08:00
psi29a
011a26684a Merge branch 'fix_wizard_dialogs' into 'master'
Fix wizard dialogs

See merge request OpenMW/openmw!1519
2022-01-07 14:35:12 +00:00
Josquin Frei
63a8bc5f9b Fix wizard dialogs 2022-01-07 14:35:11 +00:00
Cody Glassman
cdae1c4c97 Heavily mitigate jittery objects far from origin 2022-01-06 22:01:28 +00:00
psi29a
d8d7a3b372 Merge branch 'softparticles_patch' into 'master'
Shadervisitor adjustments and Mac OS fix for soft particles

See merge request OpenMW/openmw!1380
2022-01-06 13:13:52 +00:00
Evil Eye
cd6edb961a Remove dead code 2022-01-05 17:22:22 +01:00
psi29a
e0612db01c Merge branch 'viewport_update' into 'master'
Use updated resolutions when setting projection matrix

See merge request OpenMW/openmw!1533
2022-01-05 10:43:30 +00:00
Cody Glassman
a7166aa05c Use updated resolutions when setting projection matrix 2022-01-05 10:43:30 +00:00
psi29a
24b9c91ef8 Merge branch 'fix_copy_init' into 'master'
Fix unnecessary-copy-initialization

See merge request OpenMW/openmw!1531
2022-01-05 09:05:57 +00:00
psi29a
5eba352c98 Merge branch 'correct_depth_function' into 'master'
Use correct depth functions (#6537)

Closes #6537

See merge request OpenMW/openmw!1534
2022-01-05 08:38:05 +00:00
psi29a
d8cc08a7a0 Merge branch 'ripple_fix' into 'master'
Fix persistent ripples (#6531)

Closes #6531

See merge request OpenMW/openmw!1535
2022-01-05 08:37:27 +00:00
glassmancody.info
909aa43ba1 update sky particle node correctly 2022-01-04 14:10:39 -08:00
jvoisin
27af776735 Fix unnecessary float-to-double promotion 2022-01-04 22:01:52 +00:00
glassmancody.info
2c52695361 fix regression where LEQUAL was used instead of LESS for depth function 2022-01-04 12:23:37 -08:00
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.
2022-01-04 20:42:09 +01:00
psi29a
476d8b7e86 Merge branch 'fix_asan_error' into 'master'
Fix ASAN error: heap-use-after-free

See merge request OpenMW/openmw!1495
2022-01-04 10:29:37 +00:00
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
2022-01-04 10:27:48 +00:00
psi29a
e16245278e Merge branch 'lit_ur' into 'master'
Fix Dagoth Ur's Fire Shield not being visible

See merge request OpenMW/openmw!1514
2022-01-04 10:22:45 +00:00
psi29a
0dc4a668c3 Merge branch 'moralizing' into 'master'
Fix demoralize and rally being swapped

Closes #6532

See merge request OpenMW/openmw!1524
2022-01-04 08:49:10 +00:00
Evil Eye
aab0473c28 Only prevent recasting by the actor who cast the spell 2022-01-03 21:05:14 +01:00
Evil Eye
97ab7cf457 Fix demoralize and rally being swapped 2022-01-03 19:17:56 +01:00
Petr Mikheev
0f246e7365 Use a separate instance of Lua i18n for every context 2022-01-02 09:58:51 +01:00
Frederic Chardon
63bf4bf868 Solve 2 bugs in projectile movement simulation:
- properly initialize mSimulationPosition in the constructor. Unlucky thread scheduling can cause processHits to be called before the first simulation run, causing the projectile to vanish to whatever value the variable happens to contains.
- don't continue moving the projectile after a hit. The position would continue to be updated to some senseless value.
2021-12-29 15:20:44 +01:00
Evil Eye
dc946d0a47 Fix Dagoth Ur's Fire Shield not being visible 2021-12-27 22:30:25 +01:00
elsid
ba281a0da0 Fix coverity issues 2021-12-27 16:08:00 +00:00
Evil Eye
debdcf2953 Don't touch base stats when turning into a werewolf 2021-12-27 00:47:33 +01:00
Evil Eye
c166341ec0 Merge branch 'gh_sync' into 'master'
Resovles #6519 Do not display effects duration for ingredient

See merge request OpenMW/openmw!1506
2021-12-26 19:50:20 +00:00
psi29a
81c9ef947f Resovles #6519 Do not display effects duration for ingredient 2021-12-26 19:50:19 +00:00
psi29a
01ac96e900 Merge branch 'stats_gave_me_a_headache' into 'master'
Make Set- and ModStat behave as they should

Closes #2036

See merge request OpenMW/openmw!1410
2021-12-26 19:47:09 +00:00
Evil Eye
ac747f02f3 Don't teleport NPCs to unknown cells 2021-12-26 15:27:25 +00:00
psi29a
5c67c5316d Merge branch 'issue_6501' into 'master'
Fix Stuttering in the dialogue menu #6501

See merge request OpenMW/openmw!1492
2021-12-25 16:00:15 +00:00
Evil Eye
c1f59b1221 Automatically drop workaround when the format is next updated 2021-12-24 23:17:50 +01:00
myrix
88fc038ceb with mutable, without World and ESMStore interface change 2021-12-24 12:04:26 +03:00
myrix
9c7835e27f explicit instantiation error fix 2021-12-24 02:04:26 +03:00
myrix
27cc7a5172 caching dialog keyword search in Store<ESM::Dialogue> 2021-12-24 00:54:00 +03:00
Evil Eye
55b066d2bd Preserve the original caster if classic reflected absorb spells behaviour is on 2021-12-21 10:50:28 +01:00
elsid
ed3286994c
Fix ASAN error: heap-use-after-free
=================================================================
==20931==ERROR: AddressSanitizer: heap-use-after-free on address 0x607000206030 at pc 0x7fc8b0f3a72b bp 0x7ffcee176860 sp 0x7ffcee176008
READ of size 13 at 0x607000206030 thread T0
    #0 0x7fc8b0f3a72a in __interceptor_strlen /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:389
    #1 0x562e069a0af7 in QString::fromUtf8(char const*, int) /usr/include/qt/QtCore/qstring.h:706
    #2 0x562e069a0af7 in Launcher::AdvancedPage::AdvancedPage(Config::GameSettings&, QWidget*) /home/elsid/dev/openmw/apps/launcher/advancedpage.cpp:29
    #3 0x562e06959613 in Launcher::MainDialog::createPages() /home/elsid/dev/openmw/apps/launcher/maindialog.cpp:127
    #4 0x562e069691d2 in Launcher::MainDialog::setup() /home/elsid/dev/openmw/apps/launcher/maindialog.cpp:228
    #5 0x562e06969d88 in Launcher::MainDialog::showFirstRunDialog() /home/elsid/dev/openmw/apps/launcher/maindialog.cpp:188
    #6 0x562e06957025 in main /home/elsid/dev/openmw/apps/launcher/main.cpp:35
    #7 0x7fc8ad0d9b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
    #8 0x562e0690fced in _start (/home/elsid/dev/openmw/build/gcc/asan/openmw-launcher+0x56ced)

0x607000206030 is located 16 bytes inside of 64-byte region [0x607000206020,0x607000206060)
freed by thread T0 here:
    #0 0x7fc8b0fb3f19 in __interceptor_free /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cpp:127
    #1 0x7fc8b0de3388  (/usr/lib/libopenal.so.1+0x40388)

previously allocated by thread T0 here:
    #0 0x7fc8b0fb4fd6 in __interceptor_posix_memalign /build/gcc/src/gcc/libsanitizer/asan/asan_malloc_linux.cpp:226
    #1 0x7fc8b0e379cb  (/usr/lib/libopenal.so.1+0x949cb)

SUMMARY: AddressSanitizer: heap-use-after-free /build/gcc/src/gcc/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:389 in __interceptor_strlen
Shadow bytes around the buggy address:
  0x0c0e80038bb0: 00 00 00 00 00 00 00 00 00 fa fa fa fa fa 00 00
  0x0c0e80038bc0: 00 00 00 00 00 00 00 fa fa fa fa fa 00 00 00 00
  0x0c0e80038bd0: 00 00 00 00 00 fa fa fa fa fa 00 00 00 00 00 00
  0x0c0e80038be0: 00 00 02 fa fa fa fa fa 00 00 00 00 00 00 00 00
  0x0c0e80038bf0: 02 fa fa fa fa fa fd fd fd fd fd fd fd fd fa fa
=>0x0c0e80038c00: fa fa fa fa fd fd[fd]fd fd fd fd fd fa fa fa fa
  0x0c0e80038c10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0e80038c20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0e80038c30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0e80038c40: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c0e80038c50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==20931==ABORTING
2021-12-20 23:32:47 +01:00
myrix
3a9cfbfa53 HyperTextParser as a class with proper keyword search caching 2021-12-19 14:00:49 +03:00
myrix
0688f55171 optimized keyword parsing 2021-12-18 20:07:41 +03:00
Evil Eye
a2964f2244 Don't consider underwater sneaking to be sneaking 2021-12-18 15:16:37 +01:00
psi29a
6bd89cb6ef Merge branch 'im_walking_on_water_whoa_oh' into 'master'
Move target checking code so it applies to all sources

Closes #6486

See merge request OpenMW/openmw!1472
2021-12-17 09:11:30 +00:00
psi29a
0aa103c6d8 Merge branch 'fix_build' into 'master'
Fix build on ubuntu 18.04

See merge request OpenMW/openmw!1487
2021-12-17 07:36:31 +00:00
psi29a
844266b58e Merge branch 'restrict_navmesh_cache_writes' into 'master'
Do not write shapes to navmeshdb when writing is disabled (#6498)

Closes #6498

See merge request OpenMW/openmw!1486
2021-12-17 07:28:53 +00:00
psi29a
307bc57cde Merge branch 'launcher_navmesh_cache_progress' into 'master'
Fix navmesh cache progress bar jumps (#6499)

Closes #6499

See merge request OpenMW/openmw!1485
2021-12-17 07:23:08 +00:00
elsid
b0c2317d34
Fix build on ubuntu 18.04
/<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/apps/navmeshtool/worldspacedata.cpp:213:109: error: class template argument deduction failed:
             heightfields.emplace_back(std::vector(std::begin(landData.mHeights), std::end(landData.mHeights)));
                                                                                                             ^
/<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/apps/navmeshtool/worldspacedata.cpp:213:109: error: no matching function for call to ‘vector(float*, float*)’
In file included from /usr/include/c++/7/vector:64:0,
                 from /<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/components/esm/loadpgrd.hpp:5,
                 from /<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/components/misc/convert.hpp:5,
                 from /<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/components/bullethelpers/collisionobject.hpp:4,
                 from /<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/apps/navmeshtool/worldspacedata.hpp:4,
                 from /<<BUILDDIR>>/openmw-0.47.0+git202112160802~ubuntu18.04.1/apps/navmeshtool/worldspacedata.cpp:1:
/usr/include/c++/7/bits/stl_vector.h:411:2: note: candidate: template<class _Tp, class _Alloc, class _InputIterator, class> vector(_InputIterator, _InputIterator, const _Alloc&)-> std::vector<_Tp, _Alloc>
  vector(_InputIterator __first, _InputIterator __last,
  ^~~~~~
2021-12-17 00:06:38 +01:00
elsid
aaf6c82e33
Do not write shapes to navmeshdb when writing is disabled 2021-12-16 22:57:35 +01:00
elsid
8fedca5780
Fix navmesh cache progress bar jumps
When initial approximation of maximum progress based on numer of cells is too
high comparing to real number of navmesh tiles.
2021-12-16 21:48:50 +01:00
uramer
2bc81e47a6 Remove all MyGUI version checks 2021-12-16 19:22:07 +01:00
psi29a
cc97c4450a Merge branch 'which-gpu-are-you' into 'master'
Log OpenGL Vendor, Renderer and Version on startup

See merge request OpenMW/openmw!1482
2021-12-16 08:02:24 +00:00
psi29a
dc4d73e76c Merge branch 'msgboxvanillastyle' into 'master'
Vanilla style encumbrance messagebox

Closes #6191

See merge request OpenMW/openmw!1437
2021-12-16 07:59:43 +00:00
AnyOldName3
d66907ba67 Log OpenGL Vendor, Renderer and Version on startup 2021-12-15 22:17:38 +00:00
psi29a
92c9ae3eb7 Merge branch 'locked_and_loaded' into 'master'
Change the legalities of opening unlocked objects

Closes #6493

See merge request OpenMW/openmw!1479
2021-12-15 13:13:24 +00:00
Petr Mikheev
db72380ba9 Allow Lua scripts to handle input actions when UI is opened. Also fixes #6456. 2021-12-15 02:38:54 +01:00
Petr Mikheev
7549496162 A few small fixes + expose makeReadOnly to Lua + an option to apply makeReadOnly during deserialize 2021-12-15 02:38:54 +01:00
Evil Eye
a204b4da96 Change the legalities of opening unlocked objects 2021-12-14 21:06:40 +01:00
uramer
c865114b9b Lua UI Layers 2021-12-14 17:38:06 +00:00
kuyondo
2fce89e64f changes 2021-12-14 22:40:05 +08:00
psi29a
0f17f14cec Merge branch 'no_more_i_yield' into 'master'
Explicitely add the initial actor to the set of its allies

See merge request OpenMW/openmw!1474
2021-12-11 16:36:54 +00:00
Evil Eye
ff9f010d99 Explicitely add the initial actor to the set of its allies 2021-12-11 15:30:57 +01:00
elsid
96eb8d7be9
Write generated navmesh to navmeshdb
Perform all request to db in a single thread to avoid blocking navmesh
generator threads due to slow write operations.

Write to db navmesh for all changes except update as it done for memory cache.

Batch multiple db operations into a single transaction to speed up writing by
not executing fsync after each insert/update query. All reads are performed in
the same transaction so they see uncommited data.
2021-12-11 00:22:04 +01:00
elsid
9e0451c714
Support navmesh generation from launcher 2021-12-11 00:22:04 +01:00
elsid
c9b8ba7b46
Read navmesh tile data from database
When tile is not found in memory cache try to find it in the database.
2021-12-11 00:22:04 +01:00
elsid
953a4c5550
Add a binary to generate navmesh from content files
Load content files based on the engine config files. Generate navmesh per cell
for all cells and store into SQLite database.
2021-12-11 00:21:56 +01:00
elsid
5325495f46
Move serialization detournavigator/ -> components/ 2021-12-10 23:55:04 +01:00
elsid
01c712d5f1
Split navigator settings into subtypes
Mostly to distinguish settings that affect properties of the generated navmesh.
2021-12-10 23:55:03 +01:00
elsid
33bb18850d
Move operator<< to debug.hpp 2021-12-10 23:55:03 +01:00
elsid
5a6b39f8e0
Store mesh source data in recast mesh 2021-12-10 23:55:02 +01:00
Evil Eye
9257c27fe1 Move target checking code so it applies to all sources 2021-12-10 18:51:37 +01:00
psi29a
4883cbf590 Merge branch 'detain-hash-selectively-reluctant' into 'master'
Get rid of EscapeHashX classes option 5 (attempt 2): Use boost::filesystem::path rules if the path starts with ", and consume the whole thing verbatim otherwise

Closes #5804

See merge request OpenMW/openmw!1436
2021-12-10 08:38:06 +00:00
psi29a
3baf966219 Merge branch 'msvc-only-precompile' into 'master'
Only precompile headers with MSVC

See merge request OpenMW/openmw!1467
2021-12-09 18:10:47 +00:00
AnyOldName3
8fc09f8c51 Merge remote-tracking branch 'upstream/master' into detain-hash-selectively-reluctant
Merge conflicts included:
* One setting being removed (branch had changed its type).
* One setting's description being changed (branch had changed its type).
* List of files in components/files was changed both upstream and on the
  branch.
* Upstream had changed something in a file the branch deletes.
2021-12-09 17:09:52 +00:00
psi29a
f3f385fd5e Merge branch 'removed_isnt_remove' into 'master'
Actually remove effects before proclaiming they've been removed

Closes #6480

See merge request OpenMW/openmw!1465
2021-12-09 15:08:41 +00:00
AnyOldName3
221e425fe6 Only precompile headers with MSVC 2021-12-09 14:59:17 +00:00
Bret Curtis
454ddfa304
Merge pull request #3224 from Vulpen/feature-AA-alpha-test
Issue #6019 AA Alpha Test Option In Launcher
2021-12-09 01:02:16 +01:00
Evil Eye
4b67fe5351 Actually remove effects before proclaiming they've been removed 2021-12-08 17:18:08 +01:00
psi29a
ad492c5735 Merge branch 'mac_mac_great_again_lua_edition' into 'master'
modified builtin_scripts to be macOS aware; simplified things as the SHADER...

Closes #6459

See merge request OpenMW/openmw!1463
2021-12-08 15:10:23 +00:00
psi29a
e04e139f37 Merge branch 'navmesh_raw' into 'master'
Add to navigator unmodified water and heightfield data

See merge request OpenMW/openmw!1373
2021-12-08 13:36:17 +00:00
Bret Curtis
9336626927 use OPENMW_RESOURCES_ROOT instead 2021-12-08 14:33:49 +01:00
Bret Curtis
a9bf53d4ed modified builtin_scripts to be macOS aware; simplified things as the SHADER and MYGUI dir were just pointing to the OpenMW_BINARY_DIR anyway, so removing the code duplication 2021-12-08 14:28:56 +01:00
psi29a
694f697f61 Merge branch 'it_isnt_theft_if_they_were_dead_when_you_started' into 'master'
Force the loot UI open if it was open while resurrecting the lootee

Closes #6453

See merge request OpenMW/openmw!1452
2021-12-06 14:49:01 +00:00
psi29a
c844e5d045 Merge branch 'racer_recursion_limited' into 'master'
Check if a leveled creature is in an unloaded cell before deciding it doesn't exist

Closes #4376

See merge request OpenMW/openmw!1420

(cherry picked from commit 782371cb2e7f6653d72305090033557b53bbcf3a)

6d945da7 Check if a leveled creature is in an unloaded cell before deciding it doesn't exist
2021-12-06 13:58:35 +00:00
Evil Eye
99bfe024ef Cap temp disposition change properly 2021-12-05 18:36:35 +01:00
Petr Mikheev
c5e10dfa85 Merge branch 'refactor_sdlmappings' into 'master'
Move SDL-MyGUI input mappings to components, map both ways

See merge request OpenMW/openmw!1444
2021-12-04 12:16:38 +00:00
uramer
15c7bddd57 Move SDL-MyGUI input mappings to components, map both ways 2021-12-04 12:16:38 +00:00
Petr Mikheev
d3df3efaf1 Precompile sol.hpp in order to reduce compilation time. 2021-12-04 11:32:39 +00:00
Evil Eye
4d346fefd6 Merge branch 'regionnotfound' into 'master'
Raise a warning when entering non-existent region

Closes #6358

See merge request OpenMW/openmw!1454
2021-12-03 16:05:18 +00:00
Kindi
47ff6a87a3 Raise a warning when entering non-existent region 2021-12-03 16:05:18 +00:00
Petr Mikheev
620748480b Merge branch 'lua_missing_key_codes' into 'master'
Lua binding for SDL_GetKeyName, two missing scan codes

See merge request OpenMW/openmw!1450

(cherry picked from commit d86e7d4c9a28bc96af0a5638b26879fa49b8a847)

9a073baa Add Apostrophe and Period scan codes
d66f3a35 Add getKeyName to Lua input API
ed64add9 Replace mentions of KeyEvent with KEY
2021-12-03 13:35:57 +00:00
elsid
7dcb219ecf
Add raw heightfield data to navigator 2021-12-03 01:16:15 +01:00
elsid
8571c317d8
Add raw water data to navigator 2021-12-03 01:16:15 +01:00
elsid
f4f4458d01
Calculate recast mesh bounds when building navmesh 2021-12-03 01:16:15 +01:00
elsid
e10bbb9ad7
Shift heightfield and water in navigator tests 2021-12-03 01:16:15 +01:00
Evil Eye
58b888a38e Preserve inventories when resurrecting actors while looting them 2021-12-02 20:36:42 +01:00
Evil Eye
b35cb038d0 Merge branch 'drowningbar' into 'master'
Bug #5434: Pinned windows shouldn't cover breath progress bar

Closes #5434

See merge request OpenMW/openmw!1448
2021-12-02 17:01:40 +00:00
andrew-app
13400b2c5f Bug #5434: Pinned windows shouldn't cover breath progress bar 2021-12-02 17:01:40 +00:00
psi29a
7256654f29 Merge branch 'navmesh_render' into 'master'
Rework navmesh render (#6187)

See merge request OpenMW/openmw!1338
2021-12-02 10:34:41 +00:00
psi29a
1654bebfc8 Merge branch 'master' into 'master'
#6419 Topic shouldn't be greyed out if they can produce another topic reference.

See merge request OpenMW/openmw!1442
2021-12-02 08:04:32 +00:00
Ivan Beloborodov
ead0cb5ce0 #6419 Topic shouldn't be greyed out if they can produce another topic reference. 2021-12-02 08:04:29 +00:00
Evil Eye
dca0fa0a41 Remove teleportation effects after they've been applied 2021-12-01 21:39:53 +00:00
Evil Eye
893d569529 Force the loot UI open if it was open while resurrecting the lootee 2021-12-01 18:21:21 +01:00
Thomas Lowe
f50cbcad81 * AA combo box no longer disables the AA alpha test checkbox.
* Updated AA alpha test description to be more accurate
2021-11-30 20:07:29 -05:00
Evil Eye
f1ec8db393 Make Set- and ModStat behave as they should 2021-11-30 19:39:15 +01:00
psi29a
a9008d224a Merge branch 'light_refactors' into 'master'
LightManager consolidation

Closes #6389

See merge request OpenMW/openmw!1400
2021-11-30 16:02:28 +00:00
psi29a
e221013692 Merge branch 'recalculate-projection-matrix-on-window-resize' into 'master'
Recalculate the Projection Matrix every time the window is resized.

See merge request OpenMW/openmw!1382
2021-11-30 16:00:31 +00:00
OnlyForF1
c5b33185b5 Recalculate the Projection Matrix every time the window is resized. 2021-11-30 16:00:30 +00:00
psi29a
7f2c0df3fd Merge branch 'follow_the_path_of_peace' into 'master'
Remove allies from combat when stopping combat

Closes #1930

See merge request OpenMW/openmw!1441
2021-11-30 15:59:06 +00:00
psi29a
12167291a3 Merge branch 'plz_no_particles' into 'master'
Hopefully fix #6353 once and for all

Closes #6353

See merge request OpenMW/openmw!1433
2021-11-30 15:57:38 +00:00
psi29a
a332dec681 Merge branch 'fix_esm_loader' into 'master'
Load only supported content formats by EsmLoader

See merge request OpenMW/openmw!1427
2021-11-30 15:51:22 +00:00
psi29a
a15cc0959f Merge branch 'murmur_hash' into 'master'
Use MurmurHash3_x64_128 for Files::getHash

See merge request OpenMW/openmw!1404
2021-11-30 15:50:11 +00:00
Thomas Lowe
4f77c18af4 Removed unneeded signal. 2021-11-29 20:44:47 -05:00
elsid
c4cd2f36c3
Move convertMagicEffects into separate file
As completely unrelated to EsmLoader.
2021-11-29 22:45:35 +01:00
elsid
47219b4def
Avoid base class call antipattern in classes derived from ContentLoader 2021-11-29 22:45:08 +01:00
Bret Curtis
246912f73a
Merge pull request #3206 from akortunov/groundcover_loading
Use a separate storage for groundcover data
2021-11-29 20:09:21 +01:00
Thomas Lowe
5f355a14cd Changed default setting for anti-alias alpha test to true.
Added checkbox in advanced page for anti-alias alpha test, connected to AA combobox in the graphics page.
2021-11-29 07:18:49 -05:00
kuyondo
01a9eaf4a8 fix#6451 2021-11-29 19:04:34 +08:00
AnyOldName3
bc4b54157b Remove commented-out test conditions 2021-11-28 20:30:16 +00:00
fredzio
989f09930a Use the scaled mesh translation for collision shape position for living actors. It seems only (some) dead
actors really needs to use the vertical half-extent.
2021-11-28 18:58:40 +01:00
kuyondo
6e43206d69 remove empty/redundant lines 2021-11-28 04:58:49 +08:00
kuyondo
eadad7a4b3 new alternate 2021-11-28 04:47:14 +08:00
Frederic Chardon
9d7a53b701 Merge branch 'fix_physics_deadlock' into 'master'
Fix deadlock in physics system (#6414)

Closes #6414

See merge request OpenMW/openmw!1440
2021-11-27 19:56:37 +00:00
kuyondo
df9f601ed7 initialize constants 2021-11-28 02:22:34 +08:00
kuyondo
1f2311538d vanilla style messagebox 2 2021-11-26 05:20:58 +08:00
Evil Eye
d6f06fbf9a Remove allies from combat when stopping combat 2021-11-25 22:00:52 +01:00
Evil Eye
a231037449 Merge branch 'accumroot' into 'master'
Use the anim source to find mAccumRoot (bug #6417)

Closes #6417

See merge request OpenMW/openmw!1431
2021-11-25 19:13:21 +00:00
elsid
6b43ce0662
Fix deadlock in physics system
1. Reorder unlock and notify_all calls to avoid notifying when not all worker
   threads are waiting.
2. Make sure main thread does not attempt to exclusively lock mSimulationMutex
   while not all workers are done with previous frame.
3. Replace mNewFrame flag by counter to avoid modification from multiple
   threads.
2021-11-25 19:28:31 +01:00
kuyondo
11925b17ea Remove mOverencumberedMessageDelay 2021-11-24 19:39:22 +08:00
kuyondo
30ff688c70 Create only one overencumbered messagebox 2021-11-24 19:35:39 +08:00
Evil Eye
90f94caaaf Merge branch 'quickkeyvalidation' into 'master'
Validate Quick Keys

Closes #6433

See merge request OpenMW/openmw!1428
2021-11-23 19:06:26 +00:00
kuyondo
60a345f5cc Better indentation 2021-11-24 01:44:14 +08:00
Evil Eye
fb4c611570 Merge branch 'sunglare_fix' into 'master'
Fix sunglare in sky shaders

See merge request OpenMW/openmw!1430
2021-11-23 16:47:08 +00:00
Evil Eye
f18b8adfea Truncate instead of rounding to deal with negative values 2021-11-23 17:00:53 +01:00
kuyondo
d55682f833 remove debug code 2021-11-23 15:14:59 +08:00
kuyondo
503f0e62e7 Validate Argument is Index instead of Player 2021-11-23 14:55:50 +08:00
Alexei Dobrohotov
fd58e5ba77 Use the anim source to find mAccumRoot (bug #6417) 2021-11-23 04:53:03 +03:00
glassmancody.info
44d5c96183 sunglare fix 2021-11-22 17:35:00 -08:00
kuyondo
1b1de86b4a Validate Quick Keys 2021-11-23 04:07:10 +08:00
elsid
da0c5b54f0
Load only supported content formats by EsmLoader 2021-11-22 20:58:48 +01:00
Petr Mikheev
6f5e0e7697 Merge branch 'solve_6430' into 'master'
Use a setting to enable Lua Action tracebacks

See merge request OpenMW/openmw!1419
2021-11-22 19:39:47 +00:00
uramer
4a976a8e23 Use a setting to enable Lua Action tracebacks 2021-11-22 19:39:47 +00:00
Petr Mikheev
a39305b108 Merge branch 'clean_lua_ui' into 'master'
Clear Lua-created UI on game load and reloadlua command

See merge request OpenMW/openmw!1418
2021-11-22 19:17:36 +00:00
uramer
5b8cba7323 Clear Lua-created UI on game load and reloadlua command 2021-11-22 19:17:36 +00:00
AnyOldName3
84d6de3eba Parse paths with boost rules when it's quoted, but use the string verbatim when it's not 2021-11-21 19:51:02 +00:00
elsid
cffcb6a897
Share state set between all navmesh tiles
Do not change GL_DEPTH because it's always disabled anyway.
2021-11-21 18:01:26 +01:00
elsid
3c41d0efc3
Render each navmesh tile independently 2021-11-21 17:42:27 +01:00
elsid
6b7363bd59
Replace generation and revision by version 2021-11-21 17:40:54 +01:00
elsid
a665a38aca
Use MurmurHash3_x64_128 for file hash 2021-11-21 17:05:59 +01:00
Petr Mikheev
f9136d4392 Support multiple arguments in Lua callbacks. 2021-11-21 13:12:35 +01:00
psi29a
53e14eb238 Merge branch 'reset' into 'master'
AI reset argument

Closes #6177 and #1465

See merge request OpenMW/openmw!1405
2021-11-21 09:39:55 +00:00
glassmancody.info
9389cfaa42 mac os driver workaround and shadervisitor fixes 2021-11-20 18:39:20 -08:00
AnyOldName3
3d381bf0d3 Merge branch 'depth_refactor' into 'master'
Depth refactor

See merge request OpenMW/openmw!1326
2021-11-21 02:25:06 +00:00
Cody Glassman
d85f772269 Depth refactor 2021-11-21 02:25:05 +00:00
Petr Mikheev
5f195b7576 Make arguments passed to LuaManager::synchronizedUpdate consistent with arguments passed to LuaManager::update. Fixes #6431. 2021-11-21 01:48:28 +01:00
AnyOldName3
a9d7598532 Merge branch 'camera2' into 'master'
Dehardcode camera

See merge request OpenMW/openmw!1030
2021-11-20 18:17:12 +00:00
Evil Eye
52f9634624 Allow the CS to handle the repeat flag for all types 2021-11-20 11:03:08 +01:00
Evil Eye
3c57ffd81f Save repeat and duration 2021-11-20 11:03:07 +01:00
Evil Eye
231da19aa4 Load repeat flag and use reset argument 2021-11-20 11:02:58 +01:00
Evil Eye
c5de69f9c6 Merge branch 'faceyourfears' into 'master'
Make AiExtensions less toxic (bug #6429)

Closes #6429

See merge request OpenMW/openmw!1411
2021-11-20 09:59:49 +00:00
Alexei Dobrohotov
fcef92e3ea Make AiExtensions less toxic (bug #6429) 2021-11-20 03:15:15 +03:00
Evil Eye
42020bc2c3 Ignore the axis argument when rotating the player 2021-11-20 00:02:48 +00:00
Petr Mikheev
ded8997362 Avoid problems if builtin.omwscripts is above Morrowind.esm in content list. 2021-11-19 20:37:21 +01:00
Petr Mikheev
3941c42a71 Use applyDeferredPreviewRotationToPlayer only after applying values from luaControls. Otherwise camera rotation is not smooth when movement is controlled from lua. 2021-11-19 20:37:21 +01:00
Petr Mikheev
f42badd7be Dehardcode camera 2021-11-19 20:37:21 +01:00
Petr Mikheev
e56ee2c735 Apply lua handlers for user input in the main thread in order to reduce latency. 2021-11-19 20:37:21 +01:00
Petr Mikheev
47cbdcba15 Camera refactoring 2021-11-19 20:37:21 +01:00
Petr Mikheev
d5ca091d6e Make util.rotateX, util.rotateY, rotate.Z consistent with morrowind rotation 2021-11-19 20:37:21 +01:00
glassmancody.info
750514cda2 simply lightmanager and fix racey behavior 2021-11-18 19:40:13 -08:00
uramer
68963538ae Lua UI API 2021-11-18 15:19:54 +00:00
Evil Eye
71f020c23b Merge branch 'lua_input' into 'master'
Fix compiler warnings in apps/openmw/mwlua/inputbindings.cpp

See merge request OpenMW/openmw!1403
2021-11-16 16:41:38 +00:00
Alexei Kotov
37c27ce072 Merge branch 'vengeful_dremora_protection' into 'master'
Unset store listeners for creatures

See merge request OpenMW/openmw!1402
2021-11-15 23:34:33 +00:00
Petr Mikheev
e53d5ed91b Fix compiler warnings in apps/openmw/mwlua/inputbindings.cpp 2021-11-15 17:31:57 +01:00
Evil Eye
c277e8bf3f Unset store listeners for creatures 2021-11-15 16:31:38 +01:00
Petr Mikheev
c7d6620c35 Add error checking in MWLua::Action 2021-11-15 01:17:53 +01:00
psi29a
5c5c71778a Merge branch 'circular' into 'master'
Consistently sort content files

See merge request OpenMW/openmw!1350
2021-11-14 20:24:18 +00:00
psi29a
d4e8a58351 Merge branch 'headsup' into 'master'
Force assign head animation timer (bug #4389)

Closes #4389

See merge request OpenMW/openmw!1361
2021-11-14 19:59:31 +00:00
psi29a
bd694128b9 Merge branch 'lua_input' into 'master'
Update Lua package openmw.input

See merge request OpenMW/openmw!1356
2021-11-14 19:57:37 +00:00
Andrei Kortunov
3275440f0d Use a separate storage for groundcover data 2021-11-14 19:11:42 +04:00
Alexei Kotov
ec63546a37 Merge branch 'save_me_utf8' into 'master'
Handle non-ASCII characters without triggering an assertion

Closes #6396

See merge request OpenMW/openmw!1375
2021-11-14 12:38:36 +00:00
Evil Eye
6daefe3ddc Cast to the unsigned char expected by cctype functions 2021-11-14 11:26:18 +01:00
Evil Eye
f23bd51175 Don't check bounds when the type is unambiguously a char 2021-11-14 11:26:18 +01:00
Evil Eye
751e8cf76b Do a bounds check before calling functions defined in cctype 2021-11-14 11:26:15 +01:00
Evil Eye
c01ba41aa6 Handle character directories like save names 2021-11-14 11:26:14 +01:00
Evil Eye
8f48a1f030 Handle non-ASCII characters while saving without triggering an assertion 2021-11-14 11:26:06 +01:00
Andrei Kortunov
dce4cceb39 Support deleted CellRefs in groundcover (bug 6276) 2021-11-14 13:23:10 +04:00
AnyOldName3
8fb0b5846e Allow paths with trailing data, emmitting a warning 2021-11-14 00:22:44 +00:00
psi29a
29847655f6 Merge branch 'lua_pause' into 'master'
Allow Lua scripts to work when the game is on pause

See merge request OpenMW/openmw!1384
2021-11-13 22:47:52 +00:00
Bo Svensson
a62b22cd31
isolates groundcover content files (#3208)
Specifications developed in PR #3206 require that groundcover content files must not be allowed to corrupt normal content files. With this PR we simply isolate our existing loading logic by instantiating a separate `ESMStore` for `Groundcover`. In addition, we remove some outdated workarounds.
2021-11-13 23:37:53 +01:00
psi29a
68e7a4083e Merge branch 'master' into 'master'
Overhaul raindrop water ripple effect

Closes #6360

See merge request OpenMW/openmw!1316
2021-11-13 21:44:25 +00:00
psi29a
914993d6ae Merge branch 'itsmagic' into 'master'
Factor race weight into magic projectile speed (bug #6343)

Closes #6343

See merge request OpenMW/openmw!1385
2021-11-13 21:09:44 +00:00
Alexei Kotov
49544cf7de Merge branch 'no_one_likes_commas' into 'master'
Treat commas in scripts as whitespace

Closes #6380

See merge request OpenMW/openmw!1388
2021-11-13 17:19:22 +00:00
Alexei Dobrohotov
b918135b4b Factor race weight into magic projectile speed (bug #6343) 2021-11-13 17:33:32 +03:00
psi29a
4d09f791ab Merge branch 'minimum-settings-window-size' into 'master'
Recompute minimum settings window size based on tab bar size

See merge request OpenMW/openmw!1365
2021-11-13 13:48:12 +00:00
Mads Buvik Sandvei
73e9d7f315 Recompute minimum settings window size based on tab bar size 2021-11-13 13:48:12 +00:00
psi29a
41bd20e358 Merge branch 'bullet_shape_hash' into 'master'
Store BulletShape source file name and content hash

See merge request OpenMW/openmw!1379
2021-11-13 13:33:22 +00:00
Evil Eye
bee94e2afc Treat commas in scripts as whitespace 2021-11-13 14:06:21 +01:00
psi29a
39f70c2d18 Merge branch 'correct-sound' into 'master'
Add correct sound path in resource helpers

See merge request OpenMW/openmw!1381
2021-11-12 22:23:32 +00:00
Petr Mikheev
32839cc727 Allow Lua scripts to work on pause (except timers and onUpdate handlers) 2021-11-12 22:06:59 +01:00
psi29a
3ade72a7ad Merge branch 'buyskyrimanniversaryedition' into 'master'
Boring NIF stuff

See merge request OpenMW/openmw!1378
2021-11-12 19:47:37 +00:00
Bret Curtis
700bace24c do not emplace_back to our mLandTextures; instead use the heavy handed resize to be explicit about what we intend to do; resolves issue found here: https://github.com/OpenMW/openmw/pull/3220#issuecomment-964650167 2021-11-12 11:53:21 +01:00
Petr Mikheev
ed85393288 Replace sol::table::create_table_with with a more compiler-friendly implementation. It fixes MSVC error "compiler is out of heap space" and also slightly reduces binary size. 2021-11-11 22:46:01 +01:00
Petr Mikheev
d285427485 Update Lua package openmw.input 2021-11-11 20:14:30 +01:00
Alexei Kotov
5afd6b0e46 Merge branch 'adding_settingint_methods' into 'master'
Adding saveSettingInt() and loadSettingInt()

See merge request OpenMW/openmw!1167
2021-11-11 14:32:39 +00:00
Alexei Kotov
f210559a80 Merge branch 'bound_rating' into 'master'
Improve AI rating of bound effects

Closes #3855

See merge request OpenMW/openmw!1366
2021-11-11 14:30:41 +00:00
elsid
d7041613ef
Store BulletShape source file name and content hash 2021-11-11 00:27:18 +01:00
Cédric Mocquillon
512d64e514 Extract correctSoundPath method to avoid code duplication. Add unit test for the new method 2021-11-10 23:06:35 +01:00
Alexei Dobrohotov
9880c43c86 Add specular strength shader parameter 2021-11-10 19:58:06 +03:00
Alexei Dobrohotov
0d13b8cd3f Allow movement during blocking (bug #6327) 2021-11-10 15:48:03 +03:00
Alexei Dobrohotov
835bec0ed1 Fix stupid typo 2021-11-10 09:36:01 +03:00
psi29a
295ebbebbd Merge branch 'astoecke-fix-6354-sfx-distance-attenuation' into 'master'
Fade sounds when performing distance-based culling (Fixes #6354)

Closes #6354

See merge request OpenMW/openmw!1341
2021-11-09 14:33:52 +00:00
psi29a
5836d0225f Merge branch 'leave_butter_to_soften' into 'master'
Soft Particles (#6128)

See merge request OpenMW/openmw!980
2021-11-09 14:16:47 +00:00
psi29a
28589b9692 Merge branch 'holsteredshield-already-has-shaders' into 'master'
Remove redundant recreateShaders

See merge request OpenMW/openmw!1368
2021-11-09 14:12:43 +00:00
Bret Curtis
f2bc179b0a Add groundcover back into view 2021-11-09 10:20:32 +01:00
Evil Eye
1a2fde04bb Clarify logic 2021-11-08 17:28:54 +01:00
Bo Svensson
5f1bf89369
improves groundcover view distance (#3219)
This PR aims to solve all issues with `Groundcover` view distance handling in a satisfying way while preserving other optimisations that benefit other features. The main idea here is not to rely on `ViewData` updates for distance culling calculations because we can not accurately determine distance against lazily updated views. Instead, we perform an accurate measurement in a cull callback we can run every frame in `Groundcover` itself. While we do have to add some code to handle this feature, it is quite loosely coupled code that could be useful elsewhere in the future. These changes should address a performance regression @akortunov experienced.
2021-11-08 10:27:42 +01:00
psi29a
9f26dfadd1 Merge branch 'cleanup_includes' into 'master'
Cleanup some includes

See merge request OpenMW/openmw!1369
2021-11-08 07:32:40 +00:00
psi29a
9b7dfcac6b Merge branch 'windows_aero_snap' into 'master'
Fix windows aero snap with borderless window (#5394)

See merge request OpenMW/openmw!1370
2021-11-08 07:13:08 +00:00
Alexei Kotov
a315af48e9 Merge branch 'parent_visibility' into 'master'
Only restore focus to widgets with visible parents

Closes #5377

See merge request OpenMW/openmw!1364
2021-11-08 05:36:13 +00:00
glassmancody.info
c489b77385 fix windows aero snap 2021-11-07 20:01:07 -08:00
elsid
e0c4f08aa5
Remove redundant includes 2021-11-08 02:21:02 +01:00
AnyOldName3
90ce50190e Remove redundant recreateShaders 2021-11-08 00:49:10 +00:00
Evil Eye
11ed594910 Improve AI rating of bound effects 2021-11-07 22:13:27 +01:00
Evil Eye
9394cdde22 Only restore focus to widgets with visible parents 2021-11-07 21:12:15 +01:00
Bo Svensson
2e031f195b
fixes LightBufferBinding messages (#3223)
This PR aims to solve `uniform block LightBufferBinding has no binding` messages @glassmancody has reportedly encountered since PR #3110 due to an apparent bug in OSG. While we do have to add a workaround here that adds a bit of clunkiness, #3216 should allow us to clean up these interactions a bit in the future.
2021-11-07 18:26:02 +01:00
Evil Eye
3f48d67d8e Merge branch 'blackscreen_fix' into 'master'
Blackscreen fix (#6229)

See merge request OpenMW/openmw!1359
2021-11-07 14:31:19 +00:00
Evil Eye
a3e039d862 Explicitely sort by file name after adding all data dirs 2021-11-07 14:15:30 +01:00
Alexei Kotov
0c11175da1 Merge branch 'combat_aiming' into 'master'
Finish turning before attacking

Closes #3488

See merge request OpenMW/openmw!1358
2021-11-07 11:25:05 +00:00
Alexei Dobrohotov
e125308dd8 Force assign head animation timer (bug #4389) 2021-11-07 14:10:51 +03:00
psi29a
627f816348 Merge branch 'navigator_impl' into 'master'
Reduce the size of included code from detournavigator/ into the engine

See merge request OpenMW/openmw!1355
2021-11-07 07:57:22 +00:00
Langerz82
303082f6b4 Finish turning before attacking 2021-11-06 17:44:29 +01:00
wareya
6d98866be0 Merge remote-tracking branch 'upstream/master' 2021-11-06 11:44:12 -04:00
Evil Eye
5fbfbb3d84 Merge branch 'clamp' into 'master'
Make better use of std::clamp

See merge request OpenMW/openmw!1357
2021-11-06 12:07:24 +00:00
cody glassman
04692e6012 blackscreen fix 2021-11-06 04:38:43 -07:00
Alexei Dobrohotov
7a0c13fcf8 Make better use of std::clamp 2021-11-06 08:47:32 +03:00
Alexei Kotov
9e2b132508 Merge branch 'dont_linger_weather' into 'master'
Stop lingering weather effects (#6387)

See merge request OpenMW/openmw!1349
2021-11-06 05:38:16 +00:00
elsid
6b30d375fa
Replace detournavigator includes by forward declarations 2021-11-06 00:48:39 +01:00
elsid
9f808fbe3a
Move findPath-like navigator functions into a separate header 2021-11-06 00:34:06 +01:00
elsid
5e99454cc4
Add factory functions to create navigator implementations 2021-11-06 00:14:41 +01:00
elsid
3f80725ebe
Remove duplicated implementation of Misc::Convert::toOsg 2021-11-05 22:57:08 +01:00
wareya
49d2daee6a Movement solver tweaks
1) As much as I dislike it, upping the collision margin from 0.1 to 0.2
fixes bugs, particularly involving walking into upwards-slanted walls.

2) There were still some problems involving acute crevices/seams; they
were using the adjusted instead of unadjusted normal, and also they need
to bypass the don't-slide-upwards check to prevent (see #6379)

3) The move-away-from-what-we-just-hit code needs to run always, not
just on non-initial iterations. No idea why I did it this way before.

4) Force bullet to give actor boxes a tiny collision margin of 0.001
instead of the default 0.04. I can't tell whether this is actually
working or not, but it should reduce unexplained weirdness.

5) A piece of code that was meant to prevent bugs by short-circuiting
the movement solver if its direction changed more than 180 degrees
actually caused problems instead of preventing them, so I deleted it.
2021-11-05 14:56:55 -04:00
psi29a
b6d2c57de2 Merge branch 'new2017' into 'master'
MSVC2017 Compilation Fixes

See merge request OpenMW/openmw!1348
2021-11-05 10:16:04 +00:00
Bo Svensson
1960e976e2
refactors stringops.hpp (#3192)
With this PR we refactor `StringUtils::replaceAll` to accept `string_view` as suggested in a code comment. In addition, while we are touching this rebuild happy file, we slim it down a bit by moving a few sparingly used functions elsewhere.
2021-11-05 10:53:52 +01:00
wareya
d5aaa0394a Fix a missing required include 2021-11-04 17:48:21 -04:00
Bo Svensson
0371072631
removes lowerCaseInPlace (#3217)
This PR removes unneeded `lowerCaseInPlace` calls in in a hot path of `objectpaging.cpp` that are no longer necessary after PR #3197. In addition, I have been informed that these changes should by coincidence address a compiler specific compilation error we currently experience.
2021-11-04 22:20:06 +01:00
Andreas Stöckel
3ee4aadd88 Heuristic for fading environment sounds in 2021-11-04 16:05:31 -04:00
Andreas Stöckel
1cafef7bdb Fade water sounds more softly 2021-11-04 16:05:31 -04:00
Andreas Stöckel
9cfa2eeab8 Remove hard maximum distance in the OpenAL driver
Hard sound source culling is now handled by the SoundManager.
2021-11-04 16:05:31 -04:00
Andreas Stöckel
6f2e311c58 Fade out sound sources that are no longer close
* Handle culling of all sound sources in a separate function cull3DSound
* Add two new settings Sound::sfx fade in duration and Sound::sfx fade out duration
2021-11-04 16:05:31 -04:00
Andreas Stöckel
1583252dd8 Improve sound fading
* Implement a more general SoundBase::setFade that can be used to fade to any desired
volume and not just fading out
* Implement SoundBase::setFadeout by using SoundBase::setFade
* Implement an exponential fade mode
2021-11-04 16:05:31 -04:00
Bo Svensson
cd946ea35a
removes unused recordcmp.hpp (#3214)
This PR removes an unused source file.
2021-11-04 16:56:51 +01:00
Bo Svensson
6cf74f7041
refactors ESM::Land (#3213)
With this PR we reduce coupling, simplify code, encapsulate a variable and separate actual `ESM` data from its context.
2021-11-04 16:55:32 +01:00
Bo Svensson
3042c000c6
fixes setActorFade logic errors (#3195)
* resets state updater to apply light settings (#3141)

resets state updater to apply light settings

With this PR we achieve the same effect with fewer lines of code.

* fixes LightSource logic errors

We currently update `LightSource::setActorFade` in `TransparencyUpdater`. There are several logic errors inherent in this approach:
1. We fail to update `LightSource::setActorFade` for off screen actors because their `TransparencyUpdater` cull callback is not invoked.
2. We fail to update `LightSource::setActorFade` in the instant that a `TransparencyUpdater` is removed.
3. We fail to update `setActorFade` when an `mExtraLightSource` is created after calling `Animation::setAlpha`.
With this PR we avoid such issues by updating `LightSource::setActorFade` in `Animation::setAlpha` and `Animation::addExtraLightSource` instead.
2021-11-04 16:53:57 +01:00
glassmancody.info
4c3dd1a964 remove particle node when resetting particle effect 2021-11-04 08:42:22 -07:00
Bo Svensson
f684c1da52
fixes assertion (#3215)
This PR fixes an assertion introduced by #3211. For some reason my build originally did not contain assertions despite passing `DEBUG` into cmake, but after deleting `CMakeCache.txt` I have now hit the assertion @glassmancody reported as well.
2021-11-04 10:15:05 +01:00
Bo Svensson
fac84b5dd3 restores ESM::Dialogue order (#3209)
With this PR we restore the previous order of `ESM::Dialogue` entries implicitly changed by PR #3197. In the future we may want to consider additional verification and documentation of `mShared` order inconsistencies. We might additionally consider applying this sorting in the particular code that requires it.
2021-11-03 15:07:06 +01:00
psi29a
c9f3c27dc7 Merge branch 'phys_perf_test' into 'master'
Help bullet optimize collisions with very complex collision meshes by making small collision tests if possible

See merge request OpenMW/openmw!1317
2021-11-03 11:49:44 +00:00
Bo Svensson
4657c655b1 refactors parentFileIndices (#3211)
This PR aims to start addressing `ESM` design issues that have silenced errors we incorporated into groundcover `ESM` loading approaches.

- We move the resolution of `parentFileIndices` from `ESMStore` to `ESMReader` as suggested in a `TODO` comment.
- We improve a highly misleading comment which downplayed the significance of `parentFileIndices`.
- We document important preconditions.
- We move a user facing error message to the highest level and improve its context.
- We remove an inappropriate `setGlobalReaderList` method. We now pass this reader list into the method that requires it.
- We remove a thoroughly pointless optimisation of `Store<ESM::LandTexture>`'s construction that has unnecessarily depended on `getGlobalReaderList`.

There should be no functional changes for `master`, but this PR should remove an issue blocking PR #3208.
2021-11-03 11:07:28 +01:00
elsid
2b057f5c15
Expect nif node children to have parent 2021-11-02 22:44:33 +01:00
elsid
4e8e8304aa
Avoid mesh allocation when data is invalid 2021-11-02 22:44:33 +01:00
elsid
4631d95739
Add more tests for BulletNifLoader 2021-11-02 22:44:32 +01:00
psi29a
523289c531 Merge branch 'refactor_bullet_shape' into 'master'
Refactor bullet shape

See merge request OpenMW/openmw!1333
2021-11-02 20:30:22 +00:00
psi29a
4ff4afd50b Merge branch 'lua_callback' into 'master'
Refactoring. Lua `Callback` is moved from apps/openmw/mwlua to components/lua.

See merge request OpenMW/openmw!1334
2021-11-02 20:28:34 +00:00
psi29a
ea7e83499d Merge branch 'enlightened_skeletons' into 'master'
Allow creatures to use torches

Closes #6376

See merge request OpenMW/openmw!1335
2021-11-02 20:25:26 +00:00
Evil Eye
a9106f4d7c Rotate torches by 90 degrees 2021-11-02 18:01:22 +01:00
wareya
940e338453 Constifications 2021-11-02 15:17:26 +00:00
Bo Svensson
213faa6695
restores countRecords optimisations (#3210)
With this PR we restore @elsid 's optimisations of countRecords we have unintentionally discarded in PR #3197. In addition, we give it a more appropriate name and add comments concerning its peculiar background.
2021-11-02 14:46:41 +01:00
psi29a
d3b2503111 Merge branch 'distractions' into 'master'
Reduce code duplication in getting the shield model

See merge request OpenMW/openmw!1337
2021-11-02 13:32:21 +00:00
psi29a
9694398b69 Merge branch 'actually_walk_on_the_water' into 'master'
#6373: finish half commited commit

See merge request OpenMW/openmw!1336
2021-11-02 10:15:40 +00:00
Andreas Stöckel
a5a895ffd4 Fix #6381
Do not use osg::PI_f
2021-11-01 20:55:19 -04:00
Evil Eye
3660d5cc4c Reduce code duplication in getting the shield model 2021-11-01 19:33:29 +01:00
glassmancody.info
4461366761 settings update and launcher option 2021-11-01 09:26:50 -07:00
fredzio
8c21b0b503 Apply waterwalking even when we skip simulation.
This chunk was supposed to be part of !1324 but somehow got stuck staged in my tree.
2021-11-01 12:44:36 +01:00
wareya
221f6f134d gcc and clang don't like this 2021-10-31 18:18:49 -04:00
wareya
838fc634c6 address review comments 2021-10-31 15:32:24 -04:00
Evil Eye
92bdd44e58 Allow creatures to use torches 2021-10-31 20:25:37 +01:00
wareya
e1378cd290 Replace uniform with define 2021-10-31 13:18:19 -04:00
Petr Mikheev
e7ec89573e Refactoring. Lua Callback is moved from apps/openmw/mwlua to components/lua. 2021-10-31 17:47:46 +01:00
wareya
226d3eac0d Improve performance, add simpler ripples, add a setting, fix nighttime brightness 2021-10-31 10:33:28 -04:00
Evil Eye
3c40935ec1 Fix regression #6375 2021-10-31 11:57:33 +01:00
Bo Svensson
356e9d7cf0
refactors osg::Callback virtual inheritance (#3200)
With this PR we refactor `SceneUtil::KeyframeController` not to require `virtual osg::Callback` inheritance. I suppose such `virtual` overhead is not justified here because it negatively impacts many other classes we derive from `osg::Callback`.
2021-10-30 22:43:18 +02:00
psi29a
4c81518abb Merge branch 'puddle' into 'master'
Give each reflect and spell absorption effect a chance to apply

Closes #6255 and #6253

See merge request OpenMW/openmw!1279
2021-10-30 19:26:32 +00:00
glassmancody.info
8c3b00164e soft particles 2021-10-30 12:19:31 -07:00
psi29a
3eb6b658c6 Merge branch 'setpos_strikes_back' into 'master'
#6292 unbreak scripted spells

See merge request OpenMW/openmw!1324
2021-10-30 18:50:02 +00:00
psi29a
740045f7d6 Merge branch 'test_compiler' into 'master'
Add unit tests for the mwscript compiler

See merge request OpenMW/openmw!1325
2021-10-30 18:41:15 +00:00
psi29a
15cb9f886c Merge branch 'launcher_omwscripts' into 'master'
Support *.omwscripts in openmw-launcher

See merge request OpenMW/openmw!1329
2021-10-30 18:10:09 +00:00
Bo Svensson
1329f22186
refactors MWWorld::Store maps (#3197)
With this PR we clean up `MWWorld::Store` maps according to the approach of PR #3184.
2021-10-30 19:27:57 +02:00
Bo Svensson
7d34149adc
consolidates createUnlitMaterial (#3203)
With this PR we remove a few duplicate lines of code by adding a parameter to `createUnlitMaterial`.
2021-10-30 19:19:58 +02:00
Bo Svensson
7e6533f0f3
refactors screenshot360 (#3202)
With this PR we refactor screenshot360 not to manually adjust node masks.
2021-10-30 19:10:16 +02:00
Evil Eye
ae08f942d5 Test binary operators 2021-10-30 12:23:14 +02:00
Evil Eye
3c5a50cf90 Add issues from Redmine 2021-10-30 12:09:02 +02:00
Evil Eye
319d30fb85 Add AddTopic testing 2021-10-30 10:42:11 +02:00
Evil Eye
b3208f4066 Add more issues and a forum thread 2021-10-30 10:42:10 +02:00
Evil Eye
8e0dfe3a8a Add tests for more issues 2021-10-30 10:42:10 +02:00
Evil Eye
b2cdbe2e61 Add tests for certain issues 2021-10-30 10:42:10 +02:00
Evil Eye
3dada0796a Validate integer math 2021-10-30 10:42:10 +02:00
Evil Eye
f027acf575 Move boilerplate to separate file 2021-10-30 10:42:09 +02:00
Evil Eye
be759e576a Be sure to verify the opcode got executed 2021-10-30 10:42:09 +02:00
Evil Eye
6ad8549163 Allow validation of constant arguments 2021-10-30 10:42:09 +02:00
Evil Eye
e1ac871672 Start adding compiler tests 2021-10-30 10:42:08 +02:00
elsid
a78dee740a Merge branch 'dead_code' into 'master'
remove dead code and fix changelog entry

See merge request OpenMW/openmw!1330
2021-10-30 03:05:54 +00:00
glassmancody.info
f0eb068e4b remove dead code and fix changelog entry 2021-10-29 18:50:04 -07:00
elsid
8e71c246bf
Remove redundant BulletShape getters 2021-10-30 03:44:08 +02:00
elsid
b905dd17c3
Use unique_ptr to store btCollisionShape in BulletShape 2021-10-30 03:44:07 +02:00
fredzio
68f4c336ce Rework again SetPos command to make more mods work.
Previous version skipped collision the frame immediately after a call to SetPos. It worked for one-off calls (teleports for instance) and continuous call along a pre-defined path (scenic travel). However, in the case of mod which uses SetPos to simulate a player-controlled movement, it is equivalent to using tcl.
Solution:
1/ skip update of mPosition and  mPreviousPosition to avoid janky interpolation
2/ use back plain moveObject() instead of moveObjectBy() since we don't want physics simulation
3/ rework a little bit waterwalking influence on coordinate because of 1/
2021-10-29 23:20:17 +02:00
wareya
8c0102e1ee Optimize short-trace test to only be done when particularly helpful 2021-10-29 15:11:08 -04:00
elsid
29a772c33f
Rename Resource::BulletShape::CollisionBox fields according to styleguide 2021-10-29 21:05:58 +02:00
Petr Mikheev
37386f417e Support *.omwscripts in openmw-launcher 2021-10-29 20:09:47 +02:00
psi29a
e3cfe5d35a Merge branch 'backproj' into 'master'
Move the projectile simulation to the background thread

See merge request OpenMW/openmw!1276
2021-10-29 12:52:41 +00:00
psi29a
b189282ba1 Merge branch 'compile_no_evil' into 'master'
Remove dead code

See merge request OpenMW/openmw!1327
2021-10-29 12:51:20 +00:00
psi29a
34b63bf142 Merge branch 'omwscripts' into 'master'
Change format of "*.omwscripts" files

See merge request OpenMW/openmw!1271
2021-10-29 12:49:49 +00:00
Evil Eye
9b565c4cf9 Remove dead code 2021-10-28 22:16:43 +02:00
psi29a
b3f84df43c Merge branch 'sky_shaders' into 'master'
Sky shaders

See merge request OpenMW/openmw!1057
2021-10-27 20:25:40 +00:00
fredzio
3750eb9cd8 Move Projectile simulation to the background thread. 2021-10-27 22:17:06 +02:00
fredzio
a245981e4e Make interpolateMovement works with PtrHolder instead of Actor 2021-10-27 22:05:19 +02:00
fredzio
ad7a810a62 Unify interface for Actor and Projectile 2021-10-27 22:03:04 +02:00
Frederic Chardon
5009b66ef5 Use std::variant in the physics simulation for the different types of objects. For now only support only for actors. 2021-10-27 22:02:46 +02:00
psi29a
fb3675d523 Merge branch 'improved_toggleworld' into 'master'
Improved toggle world (#6364)

See merge request OpenMW/openmw!1320
2021-10-27 18:00:56 +00:00
glassmancody.info
e436147c10 improved toggle world 2021-10-27 09:16:01 -07:00
Andrei Kortunov
3ee6657768 Early out from LOS check when source and target is the same (bug 5913) 2021-10-27 10:01:06 +04:00
Petr Mikheev
95faeaa9c1 Fix: after reloadlua call onActive for all active scripts 2021-10-26 21:52:42 +02:00
Petr Mikheev
19a0fde278 Filter saves by the first esm/omwgame rather than by the first content file (that can be a universal omwaddon/omwscripts) 2021-10-26 21:52:42 +02:00
Petr Mikheev
47c89567fb Load LuaScriptsCfg from both *.omwscripts and *.omwaddon files. 2021-10-26 21:52:42 +02:00
Petr Mikheev
9adc190209 Redesign LuaUtil::ScriptsContainer to work with ScriptsConfiguration 2021-10-26 21:32:48 +02:00
Petr Mikheev
33d71be81f Add LuaUtil::ScriptsConfiguration 2021-10-26 21:32:02 +02:00
Petr Mikheev
6aab246879 Add ESM records that are needed to store Lua scripts configuration;
Use ptr.getType() (i.e. esm record names) instead of typeid(ptr.getClass()) in apps/openmw/mwlua.
2021-10-26 21:32:02 +02:00
Evil Eye
4ec927829f Give each reflect and spell absorption effect a chance to apply 2021-10-26 16:50:40 +02:00
psi29a
c0dca5371b Merge branch 'recalc_mana' into 'master'
Don't wait a frame to recalculate magicka

Closes #3792

See merge request OpenMW/openmw!1323
2021-10-26 08:58:04 +00:00
psi29a
2765bcee5e Merge branch 'serialization' into 'master'
Add helpers for binary serialization

See merge request OpenMW/openmw!1319
2021-10-26 08:25:17 +00:00
glassmancody.info
ba4f1921ab overrides 2021-10-25 15:04:55 -07:00
glassmancody.info
07e32c0fa6 remove object shader path 2021-10-25 10:23:16 -07:00
Evil Eye
289e1544d2 Don't wait a frame to recalculate magicka 2021-10-25 16:54:50 +02:00
Bret Curtis
3d0da9b9b2
Merge pull request #3191 from akortunov/warnfix
Fix some MSVC warnings
2021-10-25 15:17:05 +02:00
Bo Svensson
1ff8318a52
refactors premultiplied alpha (#3189)
With this PR we refactor a `premultiplied alpha` user string set by `characterpreview.cpp` into a more flexible mechanism allowing us to assign any state to GUI textures. We can consider these changes more future proof than the previous approach.
2021-10-25 09:28:32 +02:00
Bo Svensson
7f9beac3a7
refactors a case insensitive map (#3184)
This PR aims to spark the retirement of a questionable pattern I have found all over our code base. I will illustrate how this pattern encourages code duplication, lacks type safety, requires documentation and can be prone to bugs.
```
std::map<std::string, Object> mMap; // Stored in all lowercase for a case-insensitive lookup

std::string lowerKey = Misc::StringUtils::lowerCase(key);
mMap.emplace(lowerKey, object);

std::string lowerKey = Misc::StringUtils::lowerCase(key);
mMap.find(lowerKey);

mMap.find(key); // Not found. Oops!
```
An alternative approach produces no such issues.
```
std::unordered_map<std::string, Object, Misc::StringUtils::CiHash, Misc::StringUtils::CiEqual> mMap;

mMap.emplace(key, object);

mMap.find(key);
```
Of course, such an alternative will work for a `map` as well, but an `unordered_map` is generally preferable over a `map` with these changes because we have moved `lowerCase` into the comparison operator. 

In this PR I have refactored `Animation::mNodeMap` accordingly. I have reviewed and adapted all direct and indirect usage of `Animation::mNodeMap` to ensure we do not change behaviour with this PR.
2021-10-25 09:18:26 +02:00
Bo Svensson
6fb376f1cf
templatise ptr.hpp (#3185)
With this PR we consolidate identical logic for Ptr and ConstPtr with the help of a template.
2021-10-25 09:08:50 +02:00
glassmancody.info
9cbbd2fff5 better transitions 2021-10-24 17:13:42 -07:00
Andrei Kortunov
107a9ecb17 Fix variables hiding 2021-10-24 18:45:04 +04:00
elsid
a58f1a94e3
Add helpers for binary serialization
To construct serializer from given entities:
* Data source/destination - any value that has to be serialized/deserialized,
  usually already existing type.
* Format - functional object to define high level serialization logic to
  define specific format and data schema. Like order of fields, allocation.
* Visitor - functional object to define low level serialization logic to
  operator on given data part.
  * BinaryWriter - copies given value into provided buffer.
  * BinaryReader - copies value into given destination from provided buffer.
  * SizeAccumulator - calculates required buffer size for given data.
2021-10-24 14:20:44 +02:00
glassmancody.info
1e40d27318 introduce sky shaders 2021-10-23 17:53:38 -07:00
Evil Eye
f70a154195 Merge branch 'place' of github.com:akortunov/openmw into master 2021-10-23 11:34:42 +02:00
psi29a
217d17adeb Merge branch 'ugly_rounding' into 'master'
Prevent floating point issues accumulating

See merge request OpenMW/openmw!1306
2021-10-23 08:39:26 +00:00
Bo Svensson
c9c8d02332
fixes a crash (#3183)
This PR fixes a crash caused by the improperly ensured lifetime of RigGeometry::mSourceGeometry. mSourceGeometry was not adequate to ensure mSourceGeometry would outlive mGeometry because we extend mGeometrys lifetime beyond this lifetime by passing mGeometry to the draw traversal instead of this.
In addition,

We add important comments.
We detect and prevent generally unsafe operations in high level code.
We add a sprinkling of const to help clarify intentions.
2021-10-23 10:31:46 +02:00
Evil Eye
b5c876299d Round to a power of two 2021-10-23 09:29:16 +02:00
wareya
e23b0edda4 Add pre-pass to collision trace function that traces over less distance if possible 2021-10-22 23:11:23 -04:00
psi29a
1ffa02b2fd Merge branch 'fix_windows_tests' into 'master'
Fix tests on windows

See merge request OpenMW/openmw!1313
2021-10-22 12:35:10 +00:00
psi29a
a4899d72f4 Merge branch 'deduplicate_swim_speed' into 'master'
Deduplicate swim speed formula implementation

See merge request OpenMW/openmw!1310
2021-10-22 12:34:19 +00:00
psi29a
ed811176bc Merge branch 'fix_esm_loader' into 'master'
Fix logic expression for not found value in EsmLoader::getModel

See merge request OpenMW/openmw!1308
2021-10-22 12:33:39 +00:00
psi29a
0d810fe41c Merge branch 'init_gmst' into 'master'
Use lambda instead of bool to make sure GMST initialized once

See merge request OpenMW/openmw!1309
2021-10-21 21:41:29 +00:00
Alexei Kotov
156f2a471a Merge branch 'self_target' into 'master'
Apply on self effects on projectiles to the target instead

Closes #6321

See merge request OpenMW/openmw!1312
2021-10-21 20:37:11 +00:00
elsid
b5f0057ac9
Fix tests on windows 2021-10-21 19:48:31 +02:00
Evil Eye
63fa6d3b7c Apply on self effects on projectiles to the target instead 2021-10-21 17:28:36 +02:00
Evil Eye
31a7c83cc7 Fix a regression involving default arguments 2021-10-21 17:22:15 +02:00
elsid
68ed8487b5
Use lambda instead of bool to make sure GMST initialized once
This is less expensive than having 2 static variables and thread-safe.
2021-10-21 03:19:12 +02:00
elsid
2a0e1697b6
Deduplicate swim speed formula implementation 2021-10-21 01:25:09 +02:00
Bo Svensson
a854a6e04a
removes UnrefQueue (#3181)
Currently, we use an `UnrefQueue` which supposedly aims to transfer destruction costs to another thread. The implications of this unusual pattern can not be well understood because some allocators might free resources more efficiently if they are freed by the same thread that allocated them. In addition, `UnrefQueue` complicates the validation of thread safety in our engine. Lastly, our current usage of `UnrefQueue` triggers `ref()`, `unref()` atomic operations as objects are passed into the queue. These operations could be more expensive than the actual destruction.

With this PR we thus remove `UnrefQueue`. We can expect these changes to have a minor impact at most because we free most resources elsewhere in `ResourceSystem::updateCache`.
2021-10-20 23:02:15 +02:00
elsid
a3b6bc7263
Fix logic expression for not found value 2021-10-20 17:48:10 +02:00
Evil Eye
dd4d8b2649 Prevent floating point issues accumulating 2021-10-19 21:38:07 +02:00
psi29a
a5b9c9160d Merge branch 'compression' into 'master'
Add functions to compress/decompress vector of bytes

See merge request OpenMW/openmw!1305
2021-10-19 08:07:22 +00:00
elsid
1da9c75692
Add missing initialization for Enchanting::mObjectType 2021-10-18 22:11:48 +02:00
elsid
e5413c0664
Add functions to compress/decompress vector of bytes 2021-10-18 20:46:22 +02:00
Petr Mikheev
17f7a1a2ea Merge branch 'fix_lua_test' into 'master'
Fix LuaUtilPackageTest.Transform

See merge request OpenMW/openmw!1302
2021-10-18 07:16:10 +00:00
elsid
bb26ba30b6
Add progress reporter type
To log/report progress of long duration operations using given time period.
2021-10-18 01:26:10 +02:00
AnyOldName3
9be606a40d Finish removing old Escape classes 2021-10-17 23:40:34 +01:00
elsid
23026caacc
Fix LuaUtilPackageTest.Transform
It can fail due to float arithmetic precision with error:
Expected equality of these values:
  getAsString(lua, "moveAndScale")
    Which is: "TransformM{ move(6, 22, 18) scale(0.5, 1, 0.5) rotation(angle=8.53284e-17, axis=(1, 0, 0)) }"
  "TransformM{ move(6, 22, 18) scale(0.5, 1, 0.5) }"
2021-10-17 22:47:18 +02:00
psi29a
d8d16a52e1 Merge branch 'esm_loader' into 'master'
Add ESM data loader

See merge request OpenMW/openmw!1301
2021-10-17 19:21:32 +00:00
elsid
046b5f83ee
Add ESM data loader
A component to load ESM content files with limited support for record types and
selection which of them to load. Supported record types are:
ACTI, CELL, CONT, DOOR, GMST, LAND, STAT.
2021-10-17 19:55:29 +02:00
elsid
18d3102148
Do not use union to access FIXED_STRING<4> as int
https://en.cppreference.com/w/cpp/language/union:
> It's undefined behavior to read from the member of the union that wasn't most recently written.
2021-10-17 17:16:21 +02:00
Andrei Kortunov
362c124e8f Allow to place levelled creatures to the game world (bug 6347) 2021-10-17 17:58:54 +04:00
psi29a
00b28d2665 Merge branch 'over_time' into 'master'
Fix particles and magnitudes for (damage) over time effects

See merge request OpenMW/openmw!1298
2021-10-17 12:12:22 +00:00
psi29a
2f0484f4fc Merge branch 'clear_me_not' into 'master'
Do not clear depth buffer in first person (#6078)

Closes #6078

See merge request OpenMW/openmw!1119
2021-10-17 09:30:30 +00:00
glassmancody.info
cc009d246f do not clear depth buffer in first person 2021-10-16 18:37:34 -07:00
unknown
add6eb9c95 Fix particles and magnitudes for (damage) over time effects 2021-10-16 21:40:41 +02:00
psi29a
c051298848 Merge branch 'sqlite3_helpers' into 'master'
Add sqlite3 helpers

See merge request OpenMW/openmw!1299
2021-10-16 18:48:02 +00:00
elsid
c88367b6a6
Add sqlite3 helpers 2021-10-16 17:43:08 +02:00
elsid
501316a9f7
Add missing initialization in MWPhysics::Object
==16218== Conditional jump or move depends on uninitialised value(s)
==16218==    at 0xCDBC27: MWPhysics::Object::commitPositionChange() (object.cpp:68)
==16218==    by 0xCE5B64: MWPhysics::PhysicsTaskScheduler::updatePtrAabb(std::shared_ptr<MWPhysics::PtrHolder> const&) (mtphysics.cpp:446)
==16218==    by 0xCE5CC3: operator() (mtphysics.cpp:432)
==16218==    by 0xCE5CC3: for_each<std::_Rb_tree_const_iterator<std::shared_ptr<MWPhysics::PtrHolder> >, MWPhysics::PhysicsTaskScheduler::updateAabbs()::<lambda(const std::shared_ptr<MWPhysics::PtrHolder>&)> > (stl_algo.h:3820)
==16218==    by 0xCE5CC3: MWPhysics::PhysicsTaskScheduler::updateAabbs() (mtphysics.cpp:431)
==16218==    by 0xCE5E35: MWPhysics::PhysicsTaskScheduler::afterPreStep() (mtphysics.cpp:586)
==16218==    by 0xCE6238: operator() (mtphysics.cpp:533)
==16218==    by 0xCE6238: wait<MWPhysics::PhysicsTaskScheduler::doSimulation()::<lambda()> > (barrier.hpp:33)
==16218==    by 0xCE6238: MWPhysics::PhysicsTaskScheduler::doSimulation() (mtphysics.cpp:533)
==16218==    by 0xCE6377: MWPhysics::PhysicsTaskScheduler::worker() (mtphysics.cpp:464)
==16218==    by 0x74523C3: execute_native_thread_routine (thread.cc:82)
==16218==    by 0x76FF258: start_thread (in /usr/lib/libpthread-2.33.so)
==16218==    by 0x78155E2: clone (in /usr/lib/libc-2.33.so)
==16218==

==16218== Conditional jump or move depends on uninitialised value(s)
==16218==    at 0xCDBC30: MWPhysics::Object::commitPositionChange() (object.cpp:73)
==16218==    by 0xCE5B64: MWPhysics::PhysicsTaskScheduler::updatePtrAabb(std::shared_ptr<MWPhysics::PtrHolder> const&) (mtphysics.cpp:446)
==16218==    by 0xCE5CC3: operator() (mtphysics.cpp:432)
==16218==    by 0xCE5CC3: for_each<std::_Rb_tree_const_iterator<std::shared_ptr<MWPhysics::PtrHolder> >, MWPhysics::PhysicsTaskScheduler::updateAabbs()::<lambda(const std::shared_ptr<MWPhysics::PtrHolder>&)> > (stl_algo.h:3820)
==16218==    by 0xCE5CC3: MWPhysics::PhysicsTaskScheduler::updateAabbs() (mtphysics.cpp:431)
==16218==    by 0xCE5E35: MWPhysics::PhysicsTaskScheduler::afterPreStep() (mtphysics.cpp:586)
==16218==    by 0xCE6238: operator() (mtphysics.cpp:533)
==16218==    by 0xCE6238: wait<MWPhysics::PhysicsTaskScheduler::doSimulation()::<lambda()> > (barrier.hpp:33)
==16218==    by 0xCE6238: MWPhysics::PhysicsTaskScheduler::doSimulation() (mtphysics.cpp:533)
==16218==    by 0xCE6377: MWPhysics::PhysicsTaskScheduler::worker() (mtphysics.cpp:464)
==16218==    by 0x74523C3: execute_native_thread_routine (thread.cc:82)
==16218==    by 0x76FF258: start_thread (in /usr/lib/libpthread-2.33.so)
==16218==    by 0x78155E2: clone (in /usr/lib/libc-2.33.so)
==16218==
2021-10-16 00:43:50 +02:00
elsid
d06e697356
Initialize RenderingManager fields before use
PostProcessor is constructed before mNearClip, mViewDistance, mFieldOfView are
initialized and the constructor calls updateProjectionMatrix that uses these
fields.

==16218== Conditional jump or move depends on uninitialised value(s)
==16218==    at 0x722EBE: min<float> (stl_algobase.h:235)
==16218==    by 0x722EBE: MWRender::RenderingManager::updateProjectionMatrix() (renderingmanager.cpp:1183)
==16218==    by 0x7D022F: MWRender::PostProcessor::PostProcessor(MWRender::RenderingManager&, osgViewer::Viewer*, osg::Group*) (postprocessor.cpp:144)
==16218==    by 0x728B41: MWRender::RenderingManager::RenderingManager(osgViewer::Viewer*, osg::ref_ptr<osg::Group>, Resource::ResourceSystem*, SceneUtil::WorkQueue*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DetourNavigator::Navigator&) (renderingmanager.cpp:452)
==16218==    by 0xBB5E65: MWWorld::World::World(osgViewer::Viewer*, osg::ref_ptr<osg::Group>, Resource::ResourceSystem*, SceneUtil::WorkQueue*, Files::Collections const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, ToUTF8::Utf8Encoder*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (worldimp.cpp:190)
==16218==    by 0xDEEA6F: OMW::Engine::prepareEngine(Settings::Manager&) (engine.cpp:789)
==16218==    by 0xDF2068: OMW::Engine::go() (engine.cpp:959)
==16218==    by 0xDE7B8F: runApplication(int, char**) (main.cpp:220)
==16218==    by 0x1006593: wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (debugging.cpp:205)
==16218==    by 0x7152C3: main (main.cpp:232)
==16218==

==17455== Conditional jump or move depends on uninitialised value(s)
==17455==    at 0x4F8613F: osg::Matrixd::makeFrustum(double, double, double, double, double, double) (Matrix_implementation.cpp:916)
==17455==    by 0x4EC0E11: osg::Camera::setProjectionMatrixAsPerspective(double, double, double, double) (Matrixd:580)
==17455==    by 0x722DDA: MWRender::RenderingManager::updateProjectionMatrix() (renderingmanager.cpp:1167)
==17455==    by 0x7D01EF: MWRender::PostProcessor::PostProcessor(MWRender::RenderingManager&, osgViewer::Viewer*, osg::Group*) (postprocessor.cpp:144)
==17455==    by 0x728BA1: MWRender::RenderingManager::RenderingManager(osgViewer::Viewer*, osg::ref_ptr<osg::Group>, Resource::ResourceSystem*, SceneUtil::WorkQueue*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, DetourNavigator::Navigator&) (renderingmanager.cpp:453)
==17455==    by 0xBB5E25: MWWorld::World::World(osgViewer::Viewer*, osg::ref_ptr<osg::Group>, Resource::ResourceSystem*, SceneUtil::WorkQueue*, Files::Collections const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, ToUTF8::Utf8Encoder*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (worldimp.cpp:190)
==17455==    by 0xDEEA3F: OMW::Engine::prepareEngine(Settings::Manager&) (engine.cpp:789)
==17455==    by 0xDF2038: OMW::Engine::go() (engine.cpp:959)
==17455==    by 0xDE7B5F: runApplication(int, char**) (main.cpp:220)
==17455==    by 0x1006563: wrapApplication(int (*)(int, char**), int, char**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (debugging.cpp:205)
==17455==    by 0x7152C3: main (main.cpp:232)
==17455==
2021-10-16 00:43:31 +02:00
psi29a
ac3c02496c Merge branch 'terrainselectionoptimize' into 'master'
Terrain selection optimizations

See merge request OpenMW/openmw!1261
2021-10-15 20:46:20 +00:00
Chris Djali
9c040d1ff7
Merge pull request #3175 from bosvensson1/patch-52
removes sky bounds
2021-10-15 20:12:32 +01:00
unelsson
14c4bba4a3 Remove unused include 2021-10-15 21:54:00 +03:00
unelsson
28278e9a82 Drawing duplicate lines is faster than iterating through big containers 2021-10-15 21:54:00 +03:00
unelsson
55456a19fc Only iterate through temporary selection when using toggle 2021-10-15 21:54:00 +03:00
unelsson
46960825ef Various terrain selection and editmode dragging fixes 2021-10-15 21:54:00 +03:00
unelsson
89a20b6ea5 Call dragEnded instead of pressed also after aborted operation 2021-10-15 21:54:00 +03:00
unelsson
3df9ceda03 Remove measurement code 2021-10-15 21:54:00 +03:00
unelsson
7602d677fa Terrain selection optimizations, measurements, renderBin change 2021-10-15 21:54:00 +03:00
psi29a
ed1953b811 Merge branch 'actor_souls_only' into 'master'
Don't hit the ground

Closes #6339

See merge request OpenMW/openmw!1295
2021-10-14 17:15:02 +00:00
Evil Eye
5805c0114a Don't hit the ground 2021-10-14 17:40:03 +02:00
psi29a
29082ff658 Merge branch 'morrowland_the_musical' into 'master'
Stop trying to play non-existent music files started by scripts

See merge request OpenMW/openmw!1293
2021-10-14 15:25:11 +00:00
psi29a
787da4891c Merge branch 'actor_souls_only' into 'master'
Check if the target is an actor before updating magic effects

Closes #6339

See merge request OpenMW/openmw!1294
2021-10-14 15:19:16 +00:00
psi29a
89077af3ff Merge branch 'getters' into 'master'
Move getters to header in order to allow inlining (performance optimization)

See merge request OpenMW/openmw!1289
2021-10-14 15:17:08 +00:00
Evil Eye
bba80b07a2 Check if the target is an actor 2021-10-14 16:49:30 +02:00
Bo Svensson
db3d938ee9
cleans up BSAFile (#3177)
We currently build a large map of a BSAFile's contents unused by Open MW. We already map archive contents in VFS. With this PR we remove the map from BSAFile and reimplement its only current use in BSATool.
2021-10-14 14:46:44 +02:00
psi29a
e86b9a7b89 Merge branch 'add_comment' into 'master'
Add comment for MWWorld::Ptr::getType() because it is not obvious.

See merge request OpenMW/openmw!1291
2021-10-14 12:44:04 +00:00
Evil Eye
4a6464ea67 Stop trying to play non-existent music files started by scripts 2021-10-13 22:40:07 +02:00
Evil Eye
ec6451e93a Merge branch 'recordtype' into 'master'
Avoid copying std::string in MWWorld::Ptr::getTypeDescription()

See merge request OpenMW/openmw!1290
2021-10-13 17:04:32 +00:00
Bo Svensson
fc9ab97950
sky.cpp 2021-10-13 10:08:28 +00:00
Petr Mikheev
4e9d691715 Add comment for MWWorld::Ptr::getType() because it is not obvious. 2021-10-12 21:30:37 +02:00
Evil Eye
6b482d0b52 Merge branch 'openmw-tradeglitch' into master 2021-10-12 18:19:19 +02:00
psi29a
6ec66edb7c Merge branch 'soulful' into 'master'
Fix soul trapping for one shot kills

Closes #6337

See merge request OpenMW/openmw!1288
2021-10-12 07:59:44 +00:00
psi29a
67fa8413f3 Merge branch 'physics_heightfield' into 'master'
Replace float type for arguments to create heightfield with int

See merge request OpenMW/openmw!1285
2021-10-12 07:58:34 +00:00
psi29a
207a7245bc Merge branch 'navigator_settings' into 'master'
Initialize navigator max climb and max slope settings in makeSettingsFromSettingsManager

See merge request OpenMW/openmw!1283
2021-10-12 07:02:08 +00:00
psi29a
444765e304 Merge branch 'navmesh_agent_half_extents' into 'master'
Define default actor half extents in settings

See merge request OpenMW/openmw!1282
2021-10-12 07:01:13 +00:00
Petr Mikheev
a8acc19988 Avoid copying std::string in MWWorld::Ptr::getTypeDescription() 2021-10-12 00:18:23 +02:00
elsid
405e814190
Move btCollisionObject creation for MWPhysics::Object into components 2021-10-11 23:14:02 +02:00
Evil Eye
ae4578f566 Fix soul trapping for one shot kills 2021-10-11 21:46:15 +02:00
Petr Mikheev
fec65acd18 Move getters to header in order to allow inlining 2021-10-11 21:33:35 +02:00
elsid
144862aa35
Define default actor half extents in settings
Player's half extents may change over time when wolfskin model is used for
example. Having it in settings is a more presistent approach.
2021-10-11 19:41:43 +02:00
elsid
7c5a590890
Replace float type for arguments to create heightfield with int
To reduce amount of computations on the caller side and restrict possible
values.

* verts can't be non-int because it's a number of things.
* worldsize is initially defined as int by ESM::Land::REAL_SIZE.
* Put function to calculate heightfied shift into components to be able to
  reuse by other binaries.
2021-10-11 19:28:08 +02:00
elsid
6986feb81b
Initialize navigator max climb and max slope settings in makeSettingsFromSettingsManager
To avoid having multiple places to initialize them when they will be required
by multiple binaries.
2021-10-11 18:50:26 +02:00
Bo Svensson
d6613d3677
mostly reverts MWLua changes (#3170)
We just can no longer use the former ptr.getTypeName() as a fallback, but I do not suppose it matters. This value was an implementation defined string that usually contained a garbled mess.
Probably we should additionally refactor Lua types completely now that we have Ptr::getType(). I will leave this up to MWLua developers.
2021-10-11 16:56:26 +02:00
Bo Svensson
5cf9995a31
fixes windows build 2021-10-11 13:28:37 +00:00
Bo Svensson
ef906cbfa8
improves MWClass mapping (#3166)
Currently, we use a peculiar mapping of ESM classes by their std::type_info::name. This mapping is an undefined behaviour because std::type_info::name is strictly implementation defined. It could return a non-unique value on some platforms. With this PR we use the unsigned int sRecordId of the ESM class as a more efficient lookup type that does not build on undefined behaviour. We can expect marginally faster save-game loading with these changes as well.
2021-10-11 13:46:21 +02:00
Bo Svensson
98f8295765
allows to skip ComputeLightSpaceBounds traversal (#3152)
Currently, we always traverse the scene graph an additional time with a ComputeLightSpaceBounds visitor during shadow casting. ComputeLightSpaceBounds is only useful when the shadow casting mask allows us to shrink the bounds of the rendered scene, so we guard its traversal with a check against getCastsShadowTraversalMask. In practice, this guard never works because we build the traversal mask inclusively.

With this PR we limit the getCastsShadowTraversalMask check to relevant masks. This new check allows us to skip a superfluous ComputeLightSpaceBounds traversal with most settings.
2021-10-11 11:27:50 +02:00
psi29a
66a6b80df9 Merge branch 'thrust_into_the_light' into 'master'
Detect keys and enchanted items in containers without custom data

Closes #6326

See merge request OpenMW/openmw!1265
2021-10-11 09:13:31 +00:00
psi29a
f9124ccea6 Merge branch 'recast_mesh_slope' into 'master'
Use different colors for walkable and non-walkable recast mesh triangles

See merge request OpenMW/openmw!1277
2021-10-11 08:56:04 +00:00
psi29a
3e2694dde9 Merge branch 'catch_me' into 'master'
Remove active effects from spells that no longer exist

See merge request OpenMW/openmw!1273
2021-10-11 08:53:48 +00:00
psi29a
d3bad2dba2 Merge branch 'stripperiffic_werewolves' into 'master'
Remove magic effects before saving stats when turning into a werewolf

Closes #6330

See merge request OpenMW/openmw!1270
2021-10-11 08:52:46 +00:00
psi29a
21c4504d35 Merge branch 'max_slope' into 'master'
Change max walkable slope angle to 46 degrees

See merge request OpenMW/openmw!1280
2021-10-11 08:22:35 +00:00
Bo Svensson
cbcdd705ee
minor objectpaging.cpp scene graph optimisations (#3155)
We now use PositionAttitudeTransform for unmerged nodes because I have been informed PositionAttitudeTransform's scene graph performance is measurably faster than MatrixTransform's. We still need to use MatrixTransform for merged nodes because the Optimizer has limited support for non-MatrixTransform nodes. These MatrixTransforms will be removed in the merging process anyway.
2021-10-11 10:09:01 +02:00
AnyOldName3
18869c2c75 Add some extra tests
The behaviour here is unchanged, but was previously untested.
2021-10-11 00:02:33 +01:00
AnyOldName3
7fb5b773dd Remove obsolete tests
The old behaviour was basically a bug and @ doesn't mean anything special now
2021-10-11 00:01:58 +01:00
AnyOldName3
1b83b08d80 Merge remote-tracking branch 'upstream/master' into detain-hash
Tests which no longer work are commented out.
Some of these don't work because they're effectively testing for the
presence of bugs in the old implementation.
Others don't work because we're no longer accidentally disabling the
boost::program_options feature where it generates an error if only part
of a token gets consumed.
These will be fixed by later commits.
2021-10-10 23:50:50 +01:00
elsid
ff9aabafd1
Change max walkable slope angle to 46 degrees
This is the value used by vanilla Morrowind engine. At this angle player
character starts sliding down the slope.

This fixes navigation and movement issue in Mournhold, Godsreach.
2021-10-10 18:25:05 +02:00
Bo Svensson
af759683b8
enables std::move in keywordsearch.hpp (#3163)
For some reason we have commented std::move keywords in keywordsearch.hpp while they are quite beneficial. openmw_test_suite for keywordsearch.hpp takes 30% less time with these changes.
2021-10-10 18:15:40 +02:00
elsid
0c8a811ad5
Render only cached recast mesh
To avoid waiting while recast mesh is generating.

Remove redundant continue.
2021-10-10 13:13:57 +02:00
Evil Eye
3d5950f790 Remove active effects from spells that no longer exist 2021-10-09 12:27:17 +02:00
AnyOldName3
af0d399103 Purge all uses of Escape Hash types 2021-10-09 01:49:08 +01:00
Evil Eye
ec735529da Remove active effects from the player when transforming 2021-10-08 17:32:41 +02:00
Evil Eye
f6eeee3ad5 Detect keys and enchanted items in containers without custom data 2021-10-08 16:51:30 +02:00
psi29a
7af245d205 Merge branch 'sync_sync_with_async' into 'master'
Merge logic of sync and async physics simulation

See merge request OpenMW/openmw!1250
2021-10-08 09:35:32 +00:00
psi29a
ae31138686 Merge branch 'options_tests' into 'master'
Add tests for openmw options

See merge request OpenMW/openmw!1253
2021-10-08 08:02:40 +00:00
psi29a
9c47fdcf7e Merge branch 'flip_sign' into 'master'
Fix regression #6328

Closes #6328

See merge request OpenMW/openmw!1267
2021-10-08 06:47:57 +00:00
psi29a
1332e57195 Merge branch 'outside_means_outside' into 'master'
Make StayOutside only block teleportation from exteriors to interiors

Closes #6323

See merge request OpenMW/openmw!1268
2021-10-08 06:46:42 +00:00
psi29a
fc7e13d76a Merge branch 'omwaddon_dep' into 'master'
Allow creating omwaddons without a dependency on an omwgame

See merge request OpenMW/openmw!1243
2021-10-08 06:40:43 +00:00
Evil Eye
caafd0c667 Remove CE enchantments before saving stats when turning into a werewolf 2021-10-07 21:09:43 +02:00
psi29a
1f62fd3b56 Merge branch 'Fix_Keyword_Report_to_caius' into 'master'
Fix keyword search when the keyword is preceded by a non whitespace non alpha character

Closes #6308

See merge request OpenMW/openmw!1266
2021-10-07 13:26:40 +00:00
florent teppe
e5abadc234 Fix keyword search when the keyword is preceded by a non whitespace non alpha character 2021-10-07 13:26:40 +00:00
psi29a
555224a0fb Merge branch 'fixes' into 'master'
Make compilers happy and fix the changelog

See merge request OpenMW/openmw!1260
2021-10-07 10:17:27 +00:00
Evil Eye
dfc72e9b7e Make StayOutside only block teleportation from exteriors to interiors 2021-10-06 18:25:28 +02:00
Evil Eye
7540265432 Fix regression #6328 2021-10-06 17:14:00 +02:00
Bo Svensson
787f91211d resets state updater to apply light settings (#3141)
resets state updater to apply light settings

With this PR we achieve the same effect with fewer lines of code.
2021-10-06 11:21:30 +02:00
psi29a
c3f5e8f968 Merge branch 'lua_transform' into 'master'
3D transforms in Lua

See merge request OpenMW/openmw!1235
2021-10-06 09:21:21 +00:00
elsid
035307b012
Add tests for openmw options
In attempt to document current behaviour. Add commented out checks as desired
behaviour.
2021-10-05 22:51:12 +02:00
Kindi
ce54edf011 Update tradewindow.cpp
Additional check
2021-10-05 18:00:53 +00:00
Bo Svensson
442a0e8434
avoids two transforms in sky.cpp (#3150)
As we discovered in #3148, `Transform` nodes and their low level equivalence `pushModelViewMatrix` are somewhat costly involving a `Matrix::invert` operation per frame.

With this PR we avoid one `Transform` node for sun flashes and avoid another `pushModelViewMatrix` call in case the sun is fully visible.
2021-10-05 16:00:30 +02:00
fredzio
3b174d72d8 Introduce 3 scoped mutex wrappers to allow to conditionally skip taking
mutexes in synchronous case.
2021-10-05 15:52:27 +02:00
fredzio
21dbe314bf Use common function for sync and async case. Now both cases follow the
same flow, synchronous simulation is just a special case.
2021-10-05 15:44:20 +02:00
Frederic Chardon
499b161e7b Merge handleFall() and updateMechanics() into updateActor(). It remove gratuitious differences between sync and async cases. Also, it will make the after simulation update logic easier to follow when projectiles move into the simulation thread. 2021-10-05 15:44:20 +02:00
Bret Curtis
0d1d3e67bc
Merge pull request #3149 from bosvensson1/patch-24
With this PR we fix a -Wreorder warning.
2021-10-05 15:07:02 +02:00
Bo Svensson
4b1c009ffd
use StateSet define for translucentFramebuffer (#3138)
With this PR we test out osg's shader define system for a somewhat harmless feature. As we can see, our code becomes more concise and efficient in this case. Most importantly, we no longer create unneeded vertex shader objects.
2021-10-05 14:37:08 +02:00
Bo Svensson
b2af81bc18
converts remaining osg::NodeCallback (#3147)
With this PR we convert remaining instantiations of the deprecated osg::NodeCallback in Open MW to SceneUtil::NodeCallback.
2021-10-05 14:21:12 +02:00
Bo Svensson
9f58616aa0
fixes -Wreorder warning 2021-10-05 12:02:49 +00:00
Bo Svensson
8e9851c97c
npcanimation.cpp (#3148) 2021-10-05 13:52:19 +02:00
Kindi
d9b254178f Update tradewindow.hpp
remover redundant
2021-10-04 20:47:45 +00:00
Kindi
f28d6738bf Update tradewindow.cpp 2021-10-04 20:44:56 +00:00
Bo Svensson
e4a9eefc2a
uses a bitfield in refdata.hpp (#3143)
* uses a bitfield in refdata.hpp

With this simple change we pack boolean values to reduce the memory requirements of game objects.

* refdata.hpp [ci skip]

* refdata.cpp
2021-10-04 12:12:00 +02:00
Bo Svensson
aaf7b423d6
adds a replacement for osg::NodeCallback (#3144)
* nodecallback.hpp

* lightmanager.hpp

* lightmanager.cpp

* lightmanager.hpp

* nodecallback.hpp

* nodecallback.hpp

* [ci skip]

* lightmanager.hpp

* nodecallback.hpp

* nodecallback.hpp

* lightmanager.cpp

* lightmanager.cpp

* nodecallback.hpp

* [ci skip]

* [ci skip]

* controller.cpp

* [ci skip]

* osgacontroller.cpp

* keyframe.hpp

* controller.hpp

* keyframe.hpp

* [ci skip]

* keyframe.hpp

* animation.hpp

* [ci skip]

* weaponanimation.cpp

* nodecallback.hpp
2021-10-04 10:56:55 +02:00
Kindi
0c1b78c42a Update tradewindow.cpp curly 2021-10-04 02:16:01 +00:00
kuyondo
071793eeb3 Merge branch 'master' of https://gitlab.com/Kuyondo/openmw 2021-10-04 08:12:56 +08:00
kuyondo
49da33a129 comiit 2021-10-04 08:12:15 +08:00
Evil Eye
d680aa26e9 Disallow switch fallthrough 2021-10-03 21:58:10 +02:00
psi29a
0e07fc38e5 Merge branch 'opencs-ui-tweaks' into 'master'
Minor UI tweaks all around OpenMW-CS

See merge request OpenMW/openmw!1212
2021-10-03 19:13:51 +00:00
Matjaž Lamut
1c9f06f742 Minor UI tweaks all around OpenMW-CS 2021-10-03 19:13:51 +00:00
psi29a
2c8c36fe5d Merge branch 'master' into 'effective_magic'
# Conflicts:
#   CHANGELOG.md
2021-10-01 21:20:08 +00:00
psi29a
bd866cf210 Merge branch 'fix_infidelities' into 'master'
Fix Infidelities quest from Tribunal (#6307)

Closes #6307

See merge request OpenMW/openmw!1248
2021-10-01 21:12:15 +00:00
psi29a
1d342f80ed Merge branch 'cursorspeedmerge' into 'master'
Updated: Change cursor speed with settings.cfg (#6312)

Closes #6312

See merge request OpenMW/openmw!1255
2021-10-01 11:23:53 +00:00
psi29a
f6b27f610d Merge branch 'revert_and_twist' into 'master'
Revert and restore the cell grid size with alternate fix

See merge request OpenMW/openmw!1259
2021-10-01 11:21:06 +00:00
Bret Curtis
52a10a4bc0 remove one last assert 2021-10-01 12:24:29 +02:00
Bo Svensson
2568f119a4
reapplies PR without npe (#3137)
* avoids creating empty statesets on drawables

Currently, we attempt to skip creating state on drawable nodes when this state matches the default state. This attempt is incomplete because we still create an avoidable empty stateset in the default case.

* renderingmanager.cpp

* nifloader.cpp

* nifloader.cpp

* shadervisitor.cpp
2021-10-01 10:11:00 +02:00
psi29a
9cf9da9cbd Merge branch 'fix' into 'master'
Resolve warning: lambda capture 'defaultCollisionType' is not required to be captured for this use

See merge request OpenMW/openmw!1247
2021-10-01 08:02:17 +00:00
andrewapp
b5af192888 gamepad cursor speed fix 2021-10-01 09:19:26 +10:00
Bret Curtis
8309910d9d Restore the cell grid to its former non-exorbitant size, reducing stutter and also threw in a simple alternative fix for the actor position adjustment issue. 2021-09-30 22:58:40 +02:00
Evil Eye
2de7b8e2fb Allow non-biped creatures using weapons to open doors 2021-09-29 21:21:52 +02:00
Evil Eye
4abcb0d7b9 Remove applied magnitude instead of min magnitude 2021-09-29 19:25:12 +02:00
Evil Eye
63a9203dde Fix icon magnitude 2021-09-29 19:25:12 +02:00
Evil Eye
43074347e8 Prevent spell duplication 2021-09-29 19:25:11 +02:00
Evil Eye
b8e4f18751 Clear temporary effects before unloading actors to prevent absorb effects becoming permanent 2021-09-29 19:25:11 +02:00
Evil Eye
161e042e2a Prevent iterator invalidation when cleaning up summons 2021-09-29 19:25:11 +02:00
Evil Eye
dc1fe62dde Overhaul magic effects to work with onApply and onEnd events 2021-09-29 19:25:10 +02:00
Andrei Kortunov
e109d86489 Revert "avoids creating empty statesets on drawables (#3132)"
This reverts commit 957c25a491.
2021-09-29 21:01:22 +04:00
Bo Svensson
d8707a763f
fixes build (#3134)
* quadtreeworld.cpp

* renderingmanager.cpp [ci skip]

* quadtreeworld.hpp

* cellborder.hpp

* cellborder.cpp
2021-09-29 17:10:58 +02:00
Bret Curtis
803195a05f add back some explicit includes 2021-09-29 16:29:10 +02:00
Bo Svensson
8358418555
set the correct program link parameters (#3110)
* shadermanager.hpp setProgramTemplate

* shadermanager.hpp

* shadermanager.cpp setProgramTemplate

* shadervisitor.hpp setProgramTemplate

* shadervisitor.cpp setProgramTemplate

* scenemanager.cpp setProgramTemplate

* scenemanager.hpp setProgramTemplate

* renderingmanager.cpp

* groundcover.cpp setProgramTemplate

* groundcover.hpp

* groundcover.cpp

* shadervisitor.cpp

* util.cpp

* lightmanager.cpp

* scenemanager.cpp

* scenemanager.hpp

* lightmanager.cpp

* lightmanager.cpp

* lightmanager.cpp

* scenemanager.hpp [ci skip]

* water.cpp

* groundcover.cpp

* shadermanager.hpp
2021-09-29 15:40:37 +02:00
Andrei Kortunov
1109cc3ac7
Remove unused data field (#3133) 2021-09-29 12:08:51 +02:00
Bo Svensson
957c25a491
avoids creating empty statesets on drawables (#3132)
* avoids creating empty statesets on drawables

Currently, we attempt to skip creating state on drawable nodes when this state matches the default state. This attempt is incomplete because we still create an avoidable empty stateset in the default case.

* renderingmanager.cpp

* nifloader.cpp
2021-09-29 09:58:19 +02:00
Andrei Kortunov
fc2076db1a
Fix MSVC warnings about local variables redeclaration (#3130) 2021-09-29 09:36:05 +02:00
elsid
c0ef4417c3
Check AiTravel destination for other actors presence
Use faster aabbTest but without destance filter. To avoid dependency on a
specific constant and correctly handle situations when there is a big
difference between actors sizes.
2021-09-29 01:05:23 +02:00
elsid
9950132a5f
Allow travelling actors find path over pathgrid navmesh area type
In addition to other navmesh areas. This makes actors behaviour closer to
vanilla when pathgrid is correct.
2021-09-29 01:05:23 +02:00
elsid
163968f578
Normalize area cost factor
Recastnavigation uses path cost and heuristic based on distance to find
shortest path by A* algorithm. Using raw speed values makes cost much lower
value than heuristic (1000 times less at maximum). Heuristic is defined as
distance from node to target * 0.999 that means area cost should never be less
than 0.999 or 1 for simplicity.

Use max speed to make lowest possible cost factor equal to 1.
2021-09-29 01:03:24 +02:00
Petr Mikheev
48538d5cef 3D transforms in Lua 2021-09-28 20:37:47 +02:00
Petr Mikheev
eb2f863b7d Resolve unused-lambda-capture warnings 2021-09-28 13:02:45 +02:00
Petr Mikheev
fb3917fc1a Lua callbacks 2021-09-28 09:36:23 +02:00
Petr Mikheev
0bd1c22e24 Raycasting in Lua 2021-09-28 09:36:23 +02:00
Bret Curtis
fd251dfe55 remove unused member variable 2021-09-28 09:19:48 +02:00
Bo Svensson
5fde6867a2
removes unused code (#3129)
* scenemanager.cpp

* scenemanager.hpp

* scenemanager.cpp

* stats.cpp

* renderingmanager.cpp
2021-09-28 09:07:49 +02:00
Evil Eye
77a23dab09 Only add enabled objects to the scene 2021-09-27 22:23:00 +02:00
Petr Mikheev
e760a6c7e6 Merge branch 'forlua' into 'master'
Simple Physics API modification for Lua

See merge request OpenMW/openmw!1216

(cherry picked from commit d88494c90b501d0832ae0330a0ca81d8b8e5aa50)

02dd055a Save hitObject in castSphere() just like in castRay()
0793d0bf Allow to override collision mask and group for castSphere() as for castRay()
2021-09-27 19:50:57 +00:00
Bo Svensson
01cc61087b
improves paging preloader (#3126)
* Return check for distance when we try to reuse data

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* cellpreloader.cpp

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* [ci skip]

* quadtreeworld.cpp

* chunkmanager.cpp

* chunkmanager.cpp

* cellpreloader.cpp

* jvoisin

* whitespace

* whitespace
2021-09-27 21:32:18 +02:00
psi29a
782e0710af Merge branch 'OpenCS-preserve-blocked' into 'master'
OpenCS - Preserve "blocked" record flags when saving. #6288

Closes #6288

See merge request OpenMW/openmw!1052
2021-09-27 19:21:20 +00:00
psi29a
908d196fee Merge branch 'master' into 'undead_intelligence'
# Conflicts:
#   CHANGELOG.md
2021-09-27 19:12:13 +00:00
psi29a
ade6cd0127 Merge branch 'editor_columns_filtering' into 'master'
Toggling table columns visibility. Partially implements #890

Closes #890

See merge request OpenMW/openmw!1232
2021-09-27 19:02:19 +00:00
psi29a
2cee222e73 Merge branch 'explosion_at_impact' into 'master'
Bring arrow behaviour in line with vanilla (#6233 and other change)

See merge request OpenMW/openmw!1188
2021-09-27 19:00:53 +00:00
Bo Svensson
c6f7137ee1
fixes bugs with share state (#3111)
* optimizer.cpp merge fix

* objectpaging.cpp

* optimizer.hpp setSharedStateManager

* optimizer.cpp shareState

* scenemanager.cpp shareState

* scenemanager.cpp

* optimizer.cpp

* optimizer.cpp

* scenemanager.cpp

* optimizer.cpp
2021-09-27 20:41:24 +02:00
Evil Eye
233bb287e1 Merge branch 'refactoring2' into 'master'
Minor refactoring: use Misc::normalizeAngle in worldimp.cpp

See merge request OpenMW/openmw!1242
2021-09-27 16:01:31 +00:00
Evil Eye
30c998f34e Merge branch 'test_cells' into 'master'
Use same logic for testing cell as for loading cell

See merge request OpenMW/openmw!1240
2021-09-27 15:24:00 +00:00
Evil Eye
34cf66139a Make GetCurrentAIPackage return -1 for non-actors and dead actors 2021-09-26 22:15:43 +02:00
Evil Eye
2f4df12b2e Merge branch 'Fix_ASCII' into 'master'
Fixed an issue where keyword search expected the text to be all ASCII characters

See merge request OpenMW/openmw!1227
2021-09-26 20:08:55 +00:00
Petr Mikheev
413ac067ec Allow creating omwaddons without a dependency on an omwgame 2021-09-26 17:44:28 +02:00
Petr Mikheev
83e0d9aeef Minor refactoring: use Misc::normalizeAngle in worldimp.cpp 2021-09-26 17:28:51 +02:00
psi29a
e2e5161d81 Merge branch 'optimizebrushdraw' into 'master'
Optimize terrain editing brush drawing performance

Closes #6285

See merge request OpenMW/openmw!1226
2021-09-26 15:14:55 +00:00
elsid
5878b1fce6
Use same logic for testing cell as for loading cell
Having different branches makes testing less useful. If something fails in
regular executing it should fail in testing. To make it possible there should
be none differences in the execution paths.
2021-09-24 22:24:07 +02:00
elsid
d36595e09e
Make sure PathFinder::getClosestPoint is not called with failing precondition
Pathgrid should be not nullptr and points should be not empty.
2021-09-23 01:48:54 +02:00
Pi03k
e641bea606 Toggling table columns visibility 2021-09-22 10:47:08 +02:00
Petr Mikheev
5893b88409 Ignore time to destination when giving way (#6296) 2021-09-22 01:46:04 +02:00
Bo Svensson
b22fb7a7bf
consolidate node mask checks (#3125)
* consolidate node mask checks

This PR simplifies a few checks against node masks in object paging by using the osg provided `setTraversalMask`.

* objectpaging.cpp
2021-09-21 22:39:31 +02:00
Evil Eye
786b6b7c9a Merge branch 'lua_util' into 'master'
Move LuaState::makeReadOnly(sol::table) out of the class

See merge request OpenMW/openmw!1229
2021-09-21 15:14:09 +00:00
florent.teppe
d9c3ba03f4 Uses limits instead of climits 2021-09-20 21:01:28 +02:00
Bo Svensson
99df1c695c
fixes wireframe is broken (#3123)
* renderingmanager.cpp [ci skip]

* groundcover.hpp [ci skip]

* groundcover.cpp

* renderingmanager.cpp [ci skip]

* renderingmanager.hpp
2021-09-20 20:17:55 +02:00
florent.teppe
2d32954888 Replaced Assert_true with expect_eq 2021-09-20 19:56:47 +02:00
psi29a
15bcbb5844 Merge branch 'getsquareroot' into 'master'
Remove duplicate GetSquareRoot implementation

See merge request OpenMW/openmw!1231
2021-09-19 19:49:55 +00:00
Evil Eye
831055f878 Merge branch 'OpenCS-fix-modify' into 'master'
OpenCS - Re-implement the fix for Issue #6067.

See merge request OpenMW/openmw!1173
2021-09-19 19:23:30 +00:00
florent.teppe
0e06e9b221 Removed useless comment and converted the file to UTF8 to keep special characters 2021-09-19 20:31:22 +02:00
Evil Eye
6d7cb38834 Remove duplicate GetSquareRoot implementation 2021-09-19 19:53:38 +02:00
florent.teppe
c1c501ca35 Added test to make sure keyword search works even with non ascii characters 2021-09-19 15:05:48 +02:00
florent.teppe
bcb0526268 Added climits, it compiled on VS2019, but not with g++ 2021-09-19 15:00:51 +02:00
Petr Mikheev
2f25257a3e Move LuaState::makeReadOnly(sol::table) out of the class because it doesn't need to access LuaState internals. 2021-09-19 14:38:27 +02:00
Petr Mikheev
f1e3c55ea3 Fix deadlock in Lua worker thread (#6286) 2021-09-19 11:32:52 +02:00
florent.teppe
76be2e91e5 Fixed an issue where keyword search expected the text to be all ASCII characters 2021-09-18 18:25:04 +02:00
psi29a
68db9869f5 Merge branch 'DistantTerrainDebugChunks' into 'master'
Debug terrain chunks

See merge request OpenMW/openmw!1169
2021-09-18 15:21:26 +00:00
psi29a
18f5762a76 Merge branch 'master' into 'OpenCS-preserve-blocked'
# Conflicts:
#   CHANGELOG.md
2021-09-18 15:20:26 +00:00
unelsson
70e210735a Optimize terrain editing brush drawing performance 2021-09-18 15:57:00 +03:00
Pi03k
4ff5a04e9b Remove redundant qt-related cmake macros 2021-09-17 14:41:04 +02:00
Bo Svensson
f62adab43a
Avoid the terrain sync completely in most cases (#3103)
We can take elsid's commit 605cb8d further by avoiding the terrain sync completely in most cases. Currently in changeCellGrid we wait for a new preloading task to ensure the getPagedRefnums for the new active cells have been filled in by object paging. This is usually not necessary because we have already completed a preload in the past containing these active cells. With this PR we remember what we preloaded and skip the terrain sync if it is not needed.
2021-09-16 22:11:19 +02:00
psi29a
2be3a76b6a Merge branch 'spin_me_right_round' into 'master'
Reset rotation when respawning actors

Closes #6273

See merge request OpenMW/openmw!1219
2021-09-15 08:27:25 +00:00
psi29a
24d1c2b5fa Merge branch 'recurse_directory_iterator' into 'master'
VFS manager refactoring

See merge request OpenMW/openmw!1218
2021-09-15 07:20:52 +00:00
Cédric Mocquillon
6817282097 Move getFileExtension to common header and use instead of repeating same code 2021-09-14 18:09:55 +02:00
Cédric Mocquillon
c2df0949e2 Change normalizeFilename signature 2021-09-14 18:09:55 +02:00
Cédric Mocquillon
d4e26746a3 Use recurse subdirectory iterator to iterate over the VFS without exposing internal details 2021-09-14 18:09:54 +02:00
Evil Eye
60298cd66d Reset rotation when respawning actors 2021-09-14 16:53:57 +02:00
pi03k
e4eeb9cce9 Remove 'no relevant classes' moc warning 2021-09-14 11:20:18 +02:00
Bo Svensson
b6f572578e
Groundcover optimisation (#3101)
* groundcover.cpp share state

* groundcover.hpp share state
2021-09-13 12:20:00 +02:00
psi29a
0ab8a7ddd7 Merge branch 'create-objects-menu' into 'master'
OpenMW-CS: Usability changes to the drop-down menu when creating a new object.

See merge request OpenMW/openmw!1210
2021-09-12 14:15:11 +00:00
psi29a
c40f921396 Revert "actoranimation.cpp faster getbonebyname (#3099)"
This reverts commit c284d0cf5c
2021-09-12 07:56:20 +00:00
Cédric Mocquillon
080c909c28 Merge the 'debug chunks' and 'object paging debug batches' settings into a single one 2021-09-11 21:53:05 +02:00
Bo Svensson
e2d0e86020
cellpreloader.cpp unused variable (#3102) 2021-09-11 20:58:42 +02:00
AnyOldName3
7b482bc2e2 Maybe force dedicated GPU on dual-AMD machines 2021-09-11 19:23:27 +01:00
psi29a
f8c7664234 Merge branch 'copy_before_move' into 'master'
Maybe fix #6259

Closes #6259

See merge request OpenMW/openmw!1197
2021-09-11 09:32:50 +00:00
Bo Svensson
ac72f3d636
reduces virtual function calls in a hotspot of cache retrieval (#3100)
* chunkmanager.cpp static_cast [ci skip]

* groundcover.cpp static_cast [ci skip]

* Update objectpaging.cpp

objectpaging.cpp static_cast [ci skip]
2021-09-10 17:58:57 +02:00
Bret Curtis
1edeffbafc constify getBoneByName 2021-09-09 23:57:20 +02:00
Bo Svensson
9d661359a1
Groundcover consolidation (#3096)
* chunkmanager.hpp viewdistance

* chunkmanager.cpp viewdistance

* chunkmanager.hpp viewdistance

* quadtreeworld.cpp viewdistance

* quadtreeworld.cpp consolidate

* quadtreeworld.hpp consolidate

* renderingmanager.cpp groundcover consolidate

* renderingmanager.hpp groundcover consolidate

* renderingmanager.cpp updater move

* renderingmanager.hpp updater move

* groundcover.hpp activegrid consolidation

* groundcover.cpp activegrid consolidation

* settings-default.cfg dead settings remove

* viewdata.cpp revert

* wrong file paste mistake

* wrong file paste mistake

* wrong file paste mistake

* renderingmanager.cpp updatecallback fix

* renderingmanager.cpp namespace fix

* groundcover.hpp redefinition fix

* groundcover.cpp redefinition fix

* renderingmanager.cpp crash fix

* renderingmanager.cpp euclidean groundcover distance

* viewdata.hpp getreusedistance

* quadtreeworld.cpp reusedistance

* groundcover.rst [ci skip]
2021-09-09 23:10:22 +02:00
Bo Svensson
c284d0cf5c
actoranimation.cpp faster getbonebyname (#3099) 2021-09-09 23:04:38 +02:00
Bo Svensson
147ed39900
This PR solves a crash with Robert's bodies logged on your bugtracker. (#3095)
* attach.cpp [ci skip]

* attach.cpp [ci skip]

* attach.cpp [ci skip]

* npcanimation.cpp [ci skip]

* attach.hpp [ci skip]

* attach.cpp [ci skip]

* creatureanimation.cpp [ci skip]

* creatureanimation.cpp [ci skip]

* cellpreloader.cpp

* npcanimation.cpp

* attach.cpp

* make android adk happy

* make android adk happy

* changelog.md [ci skip]

* authors.md [ci skip]
2021-09-09 22:56:57 +02:00
Lamoot
6e6214bc43 In OpenMW-CS, when creating a new object, sort the entries in the drop-down menu alphabetically. Also have the menu be tall enough to show all of them at once (without scroll bars). 2021-09-09 20:46:27 +02:00
elsid
6b7434ca69
Pass std::string_view instead of const std::string&
* Starting with Actor::getBodyPartMesh and ending with
  Misc::StringUtils::ciEqual.
* Add tests for Misc::StringUtils::ciEqual.
2021-09-09 18:39:50 +02:00
psi29a
149241daae Merge branch 'dead_animation_code_removal' into 'master'
Dead animation code removal

Closes #6264

See merge request OpenMW/openmw!1198
2021-09-08 10:07:54 +00:00
JanuarySnow
bdbc6c0cba Dead animation code removal 2021-09-08 10:07:54 +00:00
psi29a
4bf22f3ca0 Merge branch 'fix_pathgrid_path' into 'master'
Use pathgrid path when destination is closer to different graph component node

See merge request OpenMW/openmw!1155
2021-09-08 09:55:42 +00:00
elsid
605cb8db7c
Make sync terrain preloading sleep free
This reduces average time spent on in. 5 milliseconds as a base precision is
quite a lot considering that for 60 FPS frame time is 1000/16 = ~16.67 ms
when it's a cell loading frame and there is more important work to do rather
than sleeping.
2021-09-07 14:52:42 +02:00
psi29a
aef6ec464c Merge branch 'optimize_add_item' into 'master'
Optimize ContainerStore::stacks (attempt #2)

See merge request OpenMW/openmw!1200
2021-09-07 08:40:02 +00:00
elsid
403f0a72f0
Do not copy RefId when need to compare
Makes ContainerStore::stacks ~4x times faster when adding 4k different items
in a single frame.
2021-09-06 22:52:09 +02:00
elsid
e910dd7a25
Rename CellRef::getRefIdPtr -> getRefIdRef and return reference
Return value can't be nullptr. Pointer complicates the code because has to be
dereferenced.

Also move function definition to hpp to make it easier for compiler to optimize
calls.
2021-09-06 22:52:08 +02:00
elsid
b0f772af40
Define dependency to OSG plugins in one place
Each binary depending on components library requires OSG plugins to be linked.
Duplicating dependecies for each binary does not give benefits and brings
problems when new binary is added.
2021-09-06 22:44:52 +02:00
Frederic Chardon
7b26058fa5 moveObject() has side effects that might invalidate iterators from mActors. Instead of iterating over mActors, make a copy of needed data and iterate over the copies. 2021-09-06 12:51:25 +02:00
psi29a
6170971ea3 Merge branch 'bettermoveinstance' into 'master'
Set instance movement based on camera zoom

See merge request OpenMW/openmw!1186
2021-09-06 09:48:30 +00:00
elsid
a8c16071dc
Fix -Wreturn-local-addr warning
/home/elsid/dev/openmw/apps/opencs/model/world/actoradapter.cpp: In member function ‘const string& CSMWorld::ActorAdapter::ActorData::getPart(ESM::PartReferenceType) const’:
/home/elsid/dev/openmw/apps/opencs/model/world/actoradapter.cpp:142:20: error: returning reference to temporary [-Werror=return-local-addr]
  142 |             return "";
      |                    ^~
2021-09-04 18:04:45 +02:00
Petr Mikheev
76320aae45 Merge branch 'const_ret_val' into 'master'
Don't use `const` for objects returned by value.

See merge request OpenMW/openmw!1183
2021-09-04 12:41:52 +00:00
psi29a
a57b5674e5 Merge branch 'hash_actors' into 'master'
Replace std::map with std::unordered_map and use constant Ptr.mRef as a key

See merge request OpenMW/openmw!1129
2021-09-03 15:16:14 +00:00
psi29a
a0201feb97 Merge branch 'lua_tostring' into 'master'
Function LuaUtil::toString

See merge request OpenMW/openmw!1187
2021-09-03 13:09:17 +00:00
fredzio
d20730458d Replace std::map with std::unordered_map for mActors and mObjects.
Use Ptr.mRef as a key instead of Ptr: it is constant for the lifetime of
the object.
2021-09-03 13:14:05 +02:00
fredzio
0bce6c09e1 Change projectile behaviour to be like in vanilla wrt. water plane:
- enchanted arrow explode upon hit the water plane
- non enchanted arrow disappear (or more accurately, they hit nothingness)
- enchanted arrow shot underwater explode immediately
- non enchanted arrow disappear immediately

Also, solve a bug that occured previously and could theoritically still happens where we use the last tested collision position for instead of the last registered hit:
Use the hit position as saved inside Projectile::hit() instead of the last position saved inside the callback.
If a projectile collides with several objects (bottom of the sea and water surface for instance), the last collision tested won't necessarily be the impact position as we have no control over the order in which the tests are performed.
2021-09-03 10:24:05 +02:00
jvoisin
d4e3575f1d Don't use const for objects returned by value.
This prevents the usage of std::move semantics,
and makes clang-tidy sad.
2021-09-01 22:23:50 +02:00
unelsson
f876ff2c14 Clear temporary movement data at the end of the drag 2021-09-01 02:04:04 +03:00
unelsson
53d315c862 XYZ-locking, mouse wheel move fix 2021-09-01 02:04:04 +03:00
unelsson
23fe3d74ab Use floats, not doubles 2021-09-01 02:04:04 +03:00
unelsson
840e7615f5 Store object origins and move difference 2021-09-01 02:04:04 +03:00
unelsson
0d511da615 Test of basic mouse-plane use 2021-09-01 02:04:04 +03:00
fredzio
d1a5bc207b Iterate over mInactiveCells when unloading cells in TestCells / TestInteriorCells. Otherwise we dereference an invalid iterator after deactiveCell(). 2021-08-31 16:53:52 +02:00
elsid
0daf6f5d0b Merge branch 'comma' into 'master'
Don't use comma where there is no need to.

See merge request OpenMW/openmw!1179
2021-08-31 12:33:15 +00:00
Petr Mikheev
33d4d88447 Function LuaUtil::toString 2021-08-31 09:41:58 +02:00
Evil Eye
18f51e1026 Merge branch 'nonull' into 'master'
Don't pass a nullptr to a std::string constructor

See merge request OpenMW/openmw!1178
2021-08-30 18:59:06 +00:00
Evil Eye
06e1b17cc1 Merge branch 'unnecessary_copy' into 'master'
Dont copy-construct from a const-ref when used only as a const-ref

See merge request OpenMW/openmw!1184
2021-08-29 19:39:51 +00:00
jvoisin
db4fe11a44 Don't pass a nullptr to a std::string constructor
This is undefined behaviour.
2021-08-29 20:41:15 +02:00
jvoisin
deb2af6acc Dont copy-construct from a const-ref when used only as a const-ref
This also makes clang-tiny a bit happier
2021-08-29 20:22:34 +02:00
jvoisin
a15cca5763 Use reserve on vectors for fixed loops
This is a bit useless, but has the merit of appeasing clang-tiday
2021-08-29 20:18:49 +02:00
jvoisin
a6b1e38eab Don't use comma where there is no need to. 2021-08-29 14:12:14 +02:00
cc9cii
0a5571f19e Disable editing for blocked records in both table and dialogue edit widget. 2021-08-29 15:27:59 +10:00
Evil Eye
b4486992f0 Allow Rieklings and Goblins to attack again 2021-08-28 10:45:00 +02:00
cc9cii
b0d5ca386d Update original cell column and do not modify the refnum when moving a reference to another cell with 3D editing. 2021-08-28 16:12:40 +10:00
cc9cii
2eb210f31a Partially undo commit 71be4cdd20 so that moved references retain the original refnum. This is consistent with vanilla CS's behaviour. 2021-08-28 16:12:40 +10:00
cc9cii
b2bd97f283 A different implementation to MR 1051 to fix Issue #6067.
This MR doesn't delete the original record, but instead the original record is updated with the moved record when loading.

Issue #4752 is no longer addressed in this MR.
2021-08-28 14:09:55 +10:00
cc9cii
7264a10c07 Partially revert commit dab1a9e7fb 2021-08-28 09:49:45 +10:00
cc9cii
7227a83e60 Preserve "blocked" record flags when saving with OpenCS. This will help outputs of OpenCS to be used with vanilla Morrowind.
Sample use case: users are using the Morrowind Code Patch feature that allows modders to enable this flag to differentiate editor-made potions from player crafted potions for tooltips.
2021-08-28 09:42:54 +10:00
psi29a
66f028c4a1 Merge branch 'correctcommandimplementation' into 'master'
Don't do storage in constructors of the commands

See merge request OpenMW/openmw!1126
2021-08-27 07:30:45 +00:00
psi29a
d852b10227 Merge branch 'Map-door-markers-flicker-in-some-cells' into 'master'
Do not update doors markers at each frame, only when needed

Closes #6214

See merge request OpenMW/openmw!1168
2021-08-26 15:06:38 +00:00
psi29a
fff35dcb03 Merge branch 'Ignore-empty-pgrd' into 'master'
Do not store empty PGRD records.  Should resolve Issue #6209.

See merge request OpenMW/openmw!1121
2021-08-26 14:29:49 +00:00
psi29a
e8057d9fd1 Merge branch 'aipursue_path' into 'master'
Make AiPursue path destination to be as close as possible to target (#6211)

Closes #6211

See merge request OpenMW/openmw!1154
2021-08-26 07:55:12 +00:00
psi29a
b585aad81e Merge branch 'offset-bullet-debug' into 'master'
glPolygonOffset for Bullet debug geometry

See merge request OpenMW/openmw!684
2021-08-25 07:26:21 +00:00
Thunderforge
42ce22f568 Adding saveSettingInt() and loadSettingInt()
Convenience methods for saving and loading integer settings. Versions for QSpinBox and QComboBox are included. Right now, only simple settings are used for it; we have some additional settings that include validation that aren't using these new methods.
2021-08-23 18:31:52 -05:00
unelsson
de3497d291 Fix undo-redo crash 2021-08-22 23:42:27 +03:00
unelsson
890ce1eefb Reverse action order for redo and undo 2021-08-22 23:42:27 +03:00
unelsson
0cfabd6f3b Move mapToSource back to constructor 2021-08-22 23:42:27 +03:00
unelsson
b2fe591590 Don't do any storing in the constructor 2021-08-22 23:42:27 +03:00
unelsson
45549da0f5 For most commands, set mOld in redo, not in constructor 2021-08-22 23:42:27 +03:00
psi29a
716eebe616 Merge branch 'terrainselectioncrashfix' into 'openmw-47'
Fix terrain selection crash

See merge request OpenMW/openmw!1165

(cherry picked from commit ec4e3b04a7)

b84e41bd Avoid storing ref, dynamic cast worldspacewidget for safety
d62ddc00 Use QPointer to detect object existence, less verbose debug messages
cb42b528 Remove friend, make getEditMode public to allow editmode testing.
4b148180 Restucture code
08f7c73e Fix text
2021-08-22 19:22:54 +00:00
psi29a
855f491196 Merge branch 'splintercell' into 'master'
Clean up text key extraction

See merge request OpenMW/openmw!1163
2021-08-22 14:51:54 +00:00
Alexei Dobrohotov
0922d0b105 Clean up text key extraction 2021-08-22 05:56:30 +03:00
Petr Mikheev
3771e523f1 More object bindings 2021-08-21 17:18:11 +02:00
Alexei Dobrohotov
31e70f2ecc Merge branch 'minor_factorisation' into 'master'
Minor factorisation in apps/openmw/mwmechanics/actors.cpp

See merge request OpenMW/openmw!1143
2021-08-21 06:22:17 +00:00
cc9cii
28ad139464 Check if deleted, just in case. 2021-08-21 07:20:10 +10:00
psi29a
d09c807a40 Merge branch 'fixbadcast' into 'master'
Fix std::bad_cast

Closes #6217

See merge request OpenMW/openmw!1130
2021-08-20 20:36:44 +00:00
unelsson
7801f42005 Don't do mapToSource at executeModify 2021-08-20 22:32:41 +03:00
psi29a
9751717b35 Merge branch 'components_qt' into 'master'
Do no link binaries with Qt where it's not used

See merge request OpenMW/openmw!1157
2021-08-20 19:29:42 +00:00
elsid
e9b8933b2f
Do no link binaries with Qt where it's not used
Define components_qt static library with all qt dependent components that also
depends on other components. Link only cs, wizard and launcher with qt
dependent components.
2021-08-20 19:02:09 +02:00
psi29a
77e58abf0d Merge branch 'lua_input' into 'master'
Lua package 'openmw.input'

See merge request OpenMW/openmw!1073
2021-08-20 11:44:42 +00:00
elsid
193be0d5d1 Merge branch 'some_small_changes' into 'master'
Fix coverity warning and build on some osg

See merge request OpenMW/openmw!1153
2021-08-19 23:40:14 +00:00
cc9cii
bd3ef506cd Empty Pathgrid record is considered as the modder's intention to delete any existing record. 2021-08-19 19:30:01 +10:00
cc9cii
802a202455 Remove warning log messages as they are more suitable for OpenCS. 2021-08-19 12:45:09 +10:00
cc9cii
8244ba8957 Erase old record instead (i.e. assume an empty Pathgrid record was placed in purpose) 2021-08-19 12:31:49 +10:00
cc9cii
1d925154f2 Do not store (or worse, overwrite) empty PGRD records. Should resolve Issue #6209. 2021-08-19 12:31:49 +10:00
glassmancody.info
a6c7fcd436 don't pingpong depth function on character preview update 2021-08-18 15:46:25 -07:00
elsid
fea4fb6e69
Make AiPursue path destination to be as close as possible to target
Even when target is not reachable actor will try to run there either because
target navmesh polygon is selected within extended area or because partial path
is built to the closest possible polygon.
2021-08-18 23:44:36 +02:00
elsid
9112c65afc
Use pathgrid path when destination is closer to different graph component node
Partially revert d863267d5c to restore 0.46
behaviour for pathgrid based pathfinding.
2021-08-18 19:52:10 +02:00
glassmancody.info
d63eb3325f fix coverity warning and build on some osg 2021-08-17 17:45:50 -07:00
psi29a
6595c731f7 Merge branch 'fix_rc_poly_mesh_flags_length' into 'master'
Fix flags length for rcPolyMesh

See merge request OpenMW/openmw!1134
2021-08-17 09:19:32 +00:00
psi29a
faa3e04494 Merge branch 'const_reff' into 'master'
Sprinkle some const-ref

See merge request OpenMW/openmw!1145
2021-08-17 08:20:13 +00:00
cc9cii
b1fb3e2313 Add missing includes. 2021-08-17 13:53:14 +10:00
cc9cii
47a841d3b7 Fix/workaround for Issue #3246
OpenMW save file assumes the presence of NPC/Creature data but the vanilla save file provides only the delta changes in most situations.  The base data are not available without loading all the relevant dependency content files.  Duplicating that code in the ESSImporter is not desirable.

Ideally a flag should be set but that will mean a change in the save file format.  For a minor change such as this doing so seems like an overkill.  So a temporary workaround is introduced where the gold carried by the NPC/Creature is used as an indicator as the lack of ACDT data.
2021-08-17 12:29:28 +10:00
jvoisin
39cd679ca9 Minor factorisation in apps/openmw/mwmechanics/actors.cpp 2021-08-16 13:13:44 +02:00
Alexei Dobrohotov
6c1ac9ed9f Merge branch 'init_sky' into 'master'
Use an initialization list in WrapAroundOperator's constructor

See merge request OpenMW/openmw!1146
2021-08-16 01:19:28 +00:00
Alexei Dobrohotov
7665ebfa67 Merge branch 'another_fix' into 'master'
Fix #6219

Closes #6219

See merge request OpenMW/openmw!1137
2021-08-16 01:15:52 +00:00
Alexei Dobrohotov
873e16ae93 Merge branch 'emp' into 'master'
Use an emplace instead of an insert

See merge request OpenMW/openmw!1144
2021-08-16 01:14:36 +00:00
elsid
f966fdb65e Merge branch 'noweak' into 'master'
use shared_ptr inside the physics simulation to simplify the code

See merge request OpenMW/openmw!1141
2021-08-15 21:59:47 +00:00
jvoisin
ff2a51a484 Use an initialization list in WrapAroundOperator's constructor 2021-08-15 19:57:20 +02:00
jvoisin
7a015d24c6 Sprinkle some const-ref 2021-08-15 19:50:28 +02:00
jvoisin
0792bb212a Use an emplace instead of an insert 2021-08-15 18:57:33 +02:00
glassmancody.info
ed72f3335b silence compiler warning 2021-08-15 08:02:00 -07:00
fredzio
ec871e6bf7 Use shared_ptr instead of weak_ptr for actors handle inside the
simulation

The purpose of weak_ptr is to avoid performing the simulation on deleted
Actor by promoting it to a shared_ptr via a lock() call. This clutter
the code with a lot of branches, whereas the overwhelmingly common case is for the call to succeed.
Since the simulation is decoupled from the engine state, we can use a shared_ptr instead of a weak_ptr.
This allow us to ignore (ie not handle) the rarer case where the actor is delete from the scene. This means that the simulation
will run for one frame more than before for each actor, whereas the rest of the engine
will be ignorant of this.
2021-08-15 16:21:16 +02:00
AnyOldName3
7400050b38 Merge branch 'character_preview_alpha_fix' into 'master'
Fix transparent objects being invisible in character doll

See merge request OpenMW/openmw!1140
2021-08-15 00:01:23 +00:00
glassmancody.info
6cc71745ac ensure character preview is using standard depth 2021-08-14 14:50:33 -07:00
Mads Buvik Sandvei
d40c18234a Double buffering the water's node position uniform 2021-08-14 17:41:58 +00:00
fredzio
713f612bdb Partially revert !1046: the player is added before the scene exists, so we need to check again the grounded state, as it correctly was. 2021-08-13 18:01:16 +02:00
jvoisin
b01ef2629c Fix two Wreorder clang warnings 2021-08-13 13:59:57 +02:00
Alexei Dobrohotov
839cf36bdd Merge branch 'hidden_markers' into 'master'
Use common implementation to filter hidden markers

See merge request OpenMW/openmw!1132
2021-08-12 22:29:20 +00:00
elsid
54a676f2e3
Add functions to get length of recast type arrays
To avoid duplicating same formulas in multiple places.
2021-08-12 22:43:01 +02:00
elsid
05258ed644
Remove redundant TileCachedRecastMeshManager::hasTile function
It's used only for tests. getMesh is a valid replacement.
2021-08-12 22:40:06 +02:00
elsid
3caf45807f
Use common implementation to filter hidden markers 2021-08-12 22:35:16 +02:00
Cédric Mocquillon
b0b60b05b8 Do not update doors markers at each frame, only when needed 2021-08-12 22:10:45 +02:00
unelsson
298db2ef76 Initialize and check pointer. 2021-08-12 22:31:37 +03:00
unelsson
f1d05a93bf Get index and model from proxy 2021-08-12 22:28:16 +03:00
jvoisin
bcdd0f55da Merge branch 'bc_refnum' into 'master'
Always print object refnum

See merge request OpenMW/openmw!1123
2021-08-12 10:18:55 +00:00
elsid
e84a177a91
Always print object refnum
Also print content file index even when it's negative. To be able to identify
the object unambiguously.
2021-08-12 02:02:25 +02:00
fredzio
de9ee2f196 Revert "Calls directly MovementSolver::traceDown instead of"
This reverts commit c1e50f530b.
2021-08-11 21:53:04 +02:00
Petr Mikheev
0e6fbbc126 Lua package 'openmw.input' 2021-08-10 19:00:52 +03:00
psi29a
45b45b3560 Merge branch 'fix_op_bzzt_whoopsie' into 'master'
resolve issue of OP meshes that cross boundaries

See merge request OpenMW/openmw!1117
2021-08-10 15:50:33 +00:00
Bret Curtis
c99bddc8dc Revert "Move reference to the right cell according to its geographical position"
This reverts commit d0677c3f07.
2021-08-09 22:11:00 +02:00
Bret Curtis
7dfaef7644 resolve issue of meshes that cross boundaries; should only be calculating the maxBound, not the minBound of y; also fix it in groundcover as it was copied blindly over; 2021-08-09 22:05:12 +02:00
Cédric Mocquillon
bfc9ea9e32 Fix warning on MSVC convertion from double to float 2021-08-09 19:43:35 +02:00
Cédric Mocquillon
b0e30e4bb6 Change setting to clamp the local viewing distance to fix value (instead of coeff) 2021-08-09 19:43:34 +02:00
Cédric Mocquillon
b27de8f188 Disable zooming when setting is off 2021-08-09 19:43:34 +02:00
Alexei Dobrohotov
73e83fd3d8 Merge branch 'dontcrash' into 'master'
Fix #6208 (hopefully)

Closes #6208

See merge request OpenMW/openmw!1113
2021-08-09 17:10:11 +00:00
fredzio
8e3984ae5a Clear mActors when reseting the simulation. Otherwise during next run we can try to read past the end of mActorsFrameData. 2021-08-09 14:46:41 +02:00
jvoisin
586d8684d0 Fix two coverity issues about uninitialised variables 2021-08-09 12:43:30 +02:00
psi29a
cb7a4d20dd Merge branch 'killmutex' into 'master'
Remove mutex from PtrHolder

See merge request OpenMW/openmw!1110
2021-08-08 19:45:16 +00:00
psi29a
3afa9829b3 Merge branch 'tracedown' into 'master'
Correct calls to traceDown in addActor

See merge request OpenMW/openmw!1109
2021-08-08 19:41:53 +00:00
fredzio
c1e50f530b Calls directly MovementSolver::traceDown instead of
PhysicsSystem::traceDown before inserting into mActors.

The latter does nothing until the actor is inserted into mActors.
We can't move the call after the insertion either because then
the actor is part of the simulation, and we'd have a race.
2021-08-08 18:26:35 +02:00
AnyOldName3
8d93748f87 Fix rebase issue 2021-08-08 17:25:57 +01:00
AnyOldName3
cf15803e67 Disable triangle detection workaround when Bullet actually uses triangles 2021-08-08 16:53:14 +01:00
AnyOldName3
8b4c2d205d WIP-ish glPolygonOffset for Bullet debug geometry 2021-08-08 16:53:08 +01:00
fredzio
b4dd9e6b4d Avoid division by zero in movementsolver when an actor is immobile and
in a storm
2021-08-08 17:19:18 +02:00
fredzio
ee09f3095f At last kill PtrHolder mutex 2021-08-08 15:05:07 +02:00
fredzio
07fa1803f7 Use btCollisionObject* instead of MWWorld::Ptr inside of Projectile
collision handling and castRay() to avoid calling getPtr(). It is a step forward
removing the mutex inside of PtrHolder.

Do the same for DeepestNotMeContactTestResultCallback. It is used
only for not-ranged combat for now, but do it anyway for parity with all
other callback. This way, once the PtrHolder mutex is gone one will not
have to worry about wether it is safe to use the callback in a specific
context.

To avoid use-after-free with projectile / projectile collision, defer deletion of projectile.
Since instead of storing a copy of target Ptr we have a pointer to its collision object,
we can't delete projectiles until after we finished iterating over the loops.
2021-08-08 15:05:07 +02:00
fredzio
e88b94d0b0 Move btCollisionObject* into PtrHolder
Remove unused function
2021-08-08 15:05:07 +02:00
psi29a
8ad3d3d792 Merge branch 'freezeandcool' into 'master'
Don't use FreezeOnCull for any particle system (#4744)

Closes #4744

See merge request OpenMW/openmw!1103
2021-08-08 12:35:26 +00:00
psi29a
8c81191d09 Merge branch 'schneller' into 'master'
Optimize actors physics simulation

See merge request OpenMW/openmw!1048
2021-08-08 12:27:53 +00:00
Alexei Dobrohotov
1fc7cb8191 Don't use FreezeOnCull for any particle system (#4744) 2021-08-08 03:36:35 +03:00
fredzio
5fc3b80406 Don't query actor halfextent in a tight loop, use the already existing
variable. These repeated calls become costly with > 150 actors.
2021-08-07 13:38:24 +02:00
fredzio
7dd5e715d7 Compute and store actor half extents. This is faster for 2 reasons:
- half extents changes when actor scale is modified, which is very rare
- we don't need to protect them by the actor mutex.
2021-08-07 13:38:24 +02:00
fredzio
bcd6541d3e Reorganize ActorFrameData members:
- constify all read-only variables
- order them so that all variables modified as aprt of the simulation
  fits in one cache line
2021-08-07 13:38:24 +02:00
fredzio
0c5cf6ec19 Store the btCollisionObject* of the object we're standing on instead of
MWWorld::Ptr:
- they are equivalent
- btCollisionObject* is readily available from the simulation, it saves
  a call to a mutex
- btCollisionObject* is smaller
2021-08-07 13:38:24 +02:00
fredzio
26d9052b8c Move the weak_ptr<Actor> outside of ActorFrameData. 2021-08-07 13:38:24 +02:00
fredzio
f68273c3c0 Remove Actor* from ActorFrameData 2021-08-07 13:38:24 +02:00
fredzio
9e911cc8b5 Introduce helper function to write back updated values inside parent Actor class 2021-08-07 13:38:24 +02:00
fredzio
b04c958410 Modify the way swimming is handled:
- compute the swimming state instead of storing it, it changes as part of the simulation and was not updated, so it was wrong anyway.
- store the swim level in ActorFrameData, it is constant per Actor so no need to compute it inside the simulation
2021-08-07 13:38:24 +02:00
fredzio
6e51a9a512 Simplify a bit the solver 2021-08-07 13:38:24 +02:00
fredzio
51514e44cc Handle jump as part of the simulation preparation (inside of
PhysicsSystem) instead of inside the simulaiton.
For mechanics, we don't care how the jump is handled, just that it will be.
2021-08-07 13:38:24 +02:00
fredzio
1bfaf353be Explicitely store all the potential states an Actor can have into the
ActActorFrameData structure. It makes it easier to reason about the
simulation (and hopefully simplify it).
Remove atomics from Actor class as a side effect.

Rename mFloatToSurface to mInert to make is explicit what it represent, not what it is used for
Store the Actor rotation (1 Vec2) instead of the whole ESM::Position (2 Vec3)
2021-08-07 13:38:24 +02:00
fredzio
9472728fa4 Do not generate data for immobile actors instead of early out from the solver 2021-08-07 13:38:24 +02:00
Evil Eye
29921bf9fa Don't stack cast packages 2021-08-07 10:06:56 +02:00
psi29a
b770373491 Merge branch 'OpenCS-enforce-str-length' into 'master'
OpenCS - Disallow entry of strings longer than the lengths allowed by the file format (#3066)

See merge request OpenMW/openmw!1088
2021-08-06 21:08:09 +00:00
glassmancody.info
09e03fde2e refactor and fix wobbly shores 2021-08-04 17:49:57 -07:00
glassmancody.info
cad0b151cb enable shaders path and dehardcode depth formats 2021-08-04 17:39:11 -07:00
glassmancody.info
d89e37d689 add framebuffer extension check and fix issues with manual screenshots 2021-08-04 17:39:11 -07:00
glassmancody.info
70fac33940 initial reverse-z depth implementation 2021-08-04 17:39:11 -07:00
Petr Mikheev
a94072243b Lua command core.quit 2021-08-04 19:14:24 +03:00
cc9cii
8aee84c46e Disallow entry of strings longer than the lengths allowed by the file format.
It is possible to allow longer strings but that will require an extension in the omwaddon format as well as changes to the reader to handle that extension.  Such changes should be a separate MR.

(applied the patch in https://gitlab.com/OpenMW/openmw/-/issues/3066)
2021-08-04 09:39:18 +10:00
psi29a
9fa7521fc5 Merge branch 'OpenCS-no-charconv' into 'master'
OpenCS - Avoid the inclusion of charconv header

See merge request OpenMW/openmw!1087
2021-08-03 23:32:40 +00:00
psi29a
9b7e14ec00 Merge branch 'OpenCS-moved-reference' into 'master'
OpenCS - Fix moved reference - Issues #3514 and #4752

See merge request OpenMW/openmw!1051

(cherry picked from commit 2bee171c7990522da33c2667f7d079fa35f4ede0)

36c30f7f Fix for Issue #3514 where moving a reference to another cell is not handled properly.
40327681 Update the changelog.
2021-08-03 23:29:05 +00:00
psi29a
e10e9c0005 Merge branch 'navmesh_reduce_lock_wait' into 'master'
Reduce waiting duration on locks when updating navmesh object in the main thread (#6193)

Closes #6193

See merge request OpenMW/openmw!1079
2021-08-03 23:05:39 +00:00
psi29a
16d04cf76c Merge branch 'fixtexindex' into 'master'
Fix texture index search bug

See merge request OpenMW/openmw!1080
2021-08-03 23:00:33 +00:00
cc9cii
bf06898a79 Retain the use of std::string_view in the function signature. 2021-08-04 08:23:22 +10:00
cc9cii
99e691fbe3 Avoid the inclusion of <charconv> header due to Ubuntu Bionic (18.04) which as gcc version less than 8.1
Partially reverts commit fd67ebde25
2021-08-04 06:47:14 +10:00
Petr Mikheev
3ce5e9e680 Improve error messages in components/lua/serialization.cpp 2021-08-03 16:42:26 +03:00
Petr Mikheev
0f7f5ce140 Remove Lua command "self:setDirectControl" 2021-08-03 14:36:51 +03:00
elsid
c8987bda2f
Store reference to BulletShapeInstance for btCollisionShape
To keep btCollisionShape lifetime.
2021-08-03 12:21:56 +02:00
elsid
4574e5f565
Remove redundant Navigator API functions 2021-08-03 12:21:55 +02:00
psi29a
bd1bf4ec73 Merge branch 'donoteraseme' into 'master'
#6192: Stop crashing in moveActors()

See merge request OpenMW/openmw!1085
2021-08-03 07:53:13 +00:00
fredzio
bc738c5640 Use extract/insert instead of erase/emplace
When we call moveObject(), we might trigger a change of cell for the
actor, which in turn triggers updatePtr(). The erase/emplace
construct invalidate references, whereas extract/insert do not.

The reason is was working before !1075 is because we were always
"refreshing" the reference by a call to getActor().
2021-08-03 07:00:42 +02:00
unelsson
09ee2a0a36 fix texture brush index search 2021-08-01 19:42:41 +03:00
psi29a
4b48e62b64 Merge branch 'fixandclean' into 'master'
Fix opencs build and remove some clang warnings

See merge request OpenMW/openmw!1078
2021-08-01 12:11:17 +00:00
fredzio
1391194152 Remove unneeded return statement 2021-08-01 13:14:32 +02:00
fredzio
9ba459662d Remove unneeded std::move
[19/199] Building CXX object apps/opencs/CMakeFiles/openmw-cs.dir/model/world/commands.cpp.o
../../../apps/opencs/model/world/commands.cpp:298:12: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
    mOld = std::move(model.getRecord (id).clone());
           ^
../../../apps/opencs/model/world/commands.cpp:298:12: note: remove std::move call here
    mOld = std::move(model.getRecord (id).clone());
           ^~~~~~~~~~                            ~
../../../apps/opencs/model/world/commands.cpp:333:12: warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
    mOld = std::move(model.getRecord (id).clone());
           ^
../../../apps/opencs/model/world/commands.cpp:333:12: note: remove std::move call here
    mOld = std::move(model.getRecord (id).clone());
           ^~~~~~~~~~                            ~
2 warnings generated.
2021-08-01 13:14:32 +02:00
fredzio
36e33b0cf2 Add missing override 2021-08-01 13:14:32 +02:00
fredzio
bede1ea1ec Fix build 2021-08-01 13:14:32 +02:00
psi29a
15d278de55 Merge branch 'opt-out-compose' into 'master'
Make it possible to opt out of composing variables

Closes #6186

See merge request OpenMW/openmw!1076
2021-08-01 08:53:52 +00:00
cc9cii
67cad2c515 Fix CSMWorld::InfoCollection::getTopicRange() returning one too many. 2021-08-01 15:53:00 +10:00
AnyOldName3
04e9b6d242 Abort on duplicate content file 2021-08-01 03:04:12 +01:00
AnyOldName3
4727ae4b3b Make it possible to opt out of composing variables 2021-08-01 02:47:10 +01:00
psi29a
547bc4a252 Merge branch 'notonlyactors' into 'master'
Refactor the physics simulation to make it not actor centric.

See merge request OpenMW/openmw!1075
2021-07-31 23:39:22 +00:00
psi29a
a3a079acc1 Merge branch 'projstats' into 'master'
Add projectiles number to the resources stats

See merge request OpenMW/openmw!1074
2021-07-31 23:12:14 +00:00
psi29a
4c5e6beb75 Merge branch 'canyouseeme' into 'master'
Solve actor awareness check without async physics

See merge request OpenMW/openmw!1071
2021-07-31 22:18:35 +00:00
fredzio
35928cf4d3 Refactor a bit the physics simulation to make it not actor centric:
- inline PhysicsSystem::applyQueuedMovements() into PhysicsSystem::stepSimulation()
- rename PhysicsTaskScheduler::moveActors() to PhysicsTaskScheduler::applyQueuedMovements()
- move the actor movement code from World::doPhysics() to
  PhysicsSystem::moveActors() (analogically to the projectile manager)
2021-07-31 23:39:04 +02:00
psi29a
141095b850 Merge branch 'OpenCS-loading-opt' into 'master'
OpenCS loading time improvements

See merge request OpenMW/openmw!1044
2021-07-31 21:27:29 +00:00
fredzio
c76387162b Add projectiles number to the resources stats 2021-07-31 23:08:50 +02:00
psi29a
ca011927f3 Merge branch 'ObjectPagingDisappearingTexture' into 'master'
Move reference to the right cell according to its geographical position

See merge request OpenMW/openmw!1065
2021-07-31 10:58:20 +00:00
Evil Eye
5cdf1e7e6b Merge branch 'vec3_vs_xyz' into 'master'
Use Vec3f instead of x,y,z in World API

See merge request OpenMW/openmw!730
2021-07-31 10:36:11 +00:00
fredzio
a7b190ad29 Change rotateObject() to take a osg::Vec3f argument instead of 3 floats
for readability.
2021-07-30 23:24:53 +02:00
fredzio
88a5ca440b Change moveObject() to take a osg::Vec3f argument instead of 3 floats
for readability.
2021-07-30 23:24:49 +02:00
fredzio
4e7c128d25 The LOS cache is now unconditionally used without async physics as well
with a TTL of 0 frame. It helps performance when several subsystems
request the same LOS in the same frame (combat, headtracking, etc).
Except it doesn't work if the cache is never trimmed.
2021-07-30 22:23:42 +02:00
Cédric Mocquillon
d0677c3f07 Move reference to the right cell according to its geographical position 2021-07-30 18:28:29 +02:00
psi29a
8c36eb56cf Merge branch 'stereo_friendly_water' into 'master'
Stereo friendly water and statesetupdater

See merge request OpenMW/openmw!563
2021-07-30 11:00:49 +00:00
psi29a
c5d49b44ba Merge branch 'lua_settings' into 'master'
Add Lua package 'openmw.settings'

See merge request OpenMW/openmw!1017
2021-07-30 10:47:15 +00:00
Evil Eye
779795734f Remove calm/rally/demoralize and turn undead from the wrong targets 2021-07-29 18:23:45 +02:00
Evil Eye
a366a85c4e Merge branch 'noalloc_dance_for_npcanimation' into 'master'
Don't do an unnecessarily complex memory allocation dance in npcanimation.cpp

See merge request OpenMW/openmw!1042
2021-07-28 17:25:28 +00:00
Evil Eye
88d207b0cd Merge branch 'land' into 'master'
Correct creature landing sound type (bug #6118)

Closes #6118

See merge request OpenMW/openmw!1054
2021-07-28 16:18:44 +00:00
psi29a
ea05b958b8 Merge branch 'FixIssueWithTRData' into 'master'
Fix issue with Tamriel Data landscapes

See merge request OpenMW/openmw!1064
2021-07-28 10:16:55 +00:00
psi29a
292e6f1a9e Merge branch 'seducer_ice_queen' into 'master'
Prevent a missing weapon animation from partially freezing actors

See merge request OpenMW/openmw!1060
2021-07-28 09:06:13 +00:00
Cédric Mocquillon
c98b0f713d If same area is defined in multiple plugin the last must wins 2021-07-28 10:29:16 +02:00
elsid
6adf7b10ae
Fix removing heightfield from navigator
It's added not as object so it shouldn't be removed as it.
2021-07-27 20:11:22 +02:00
Petr Mikheev
2938aaf05c Rename API_VERSION -> API_REVISION in Lua API. 2021-07-27 20:06:04 +02:00
Petr Mikheev
3e4c0b775d Add Lua package 'openmw.settings' 2021-07-27 20:06:04 +02:00
Petr Mikheev
68b8a148d7 Initialize Lua packages in LuaManager::init rather than in constructor. 2021-07-27 19:52:17 +02:00
Evil Eye
977f717f8b Prevent a missing weapon animation from partially freezing actors 2021-07-27 16:33:07 +02:00
Alexei Dobrohotov
536dc6a0c6 Correct creature landing sound type (bug #6118) 2021-07-27 07:39:21 +03:00
psi29a
5a434aebe0 Merge branch 'SortedStaticLands' into 'master'
Replace land static container from vector to flat_set

See merge request OpenMW/openmw!853
2021-07-26 18:29:07 +00:00
Cédric Mocquillon
7772f5111b std::set version 2021-07-26 18:30:06 +02:00
madsbuvi
41c08b1c3b Stereo friendly StateSetUpdater
(cherry picked from commit 496b3aef88b8fd867dcdd23a6ca43144573b1b2f)

Stereo friendly water

(cherry picked from commit 0e22c55e48a7f965367d3d430c1bef5357b22748)

Option to disable per view mapping.

Include memory header

De-hardcode settings and buffers.

formatting error

Update water.cpp (whitespace)

Update water.cpp (more whitespace)

include render order

c array -> c++ array
2021-07-26 14:01:02 +02:00
psi29a
44ceb9572a Merge branch 'recast_mesh_heightfield' into 'master'
Reduce navmesh cache size by special handling for heightfields

See merge request OpenMW/openmw!1032
2021-07-26 11:49:30 +00:00
glassmancody.info
166e23a6d9 fix CI artifacts, missing header 2021-07-25 20:49:17 -07:00
elsid
9a5ec5fd03
Store heightfields as array of heights instead of triangles
To reduce size of RecastMesh and therefore cache size.
2021-07-26 00:22:21 +02:00
elsid
28b2f769c2
Update navmeshtilescache benchmark generators 2021-07-26 00:22:21 +02:00
elsid
fdee9db20c
Consider RecastMeshManager not empty when there is water 2021-07-26 00:22:21 +02:00
elsid
5d6c93566d
Rename DetourNavigator::Water -> Cell 2021-07-26 00:22:21 +02:00
elsid
753767d6d9
Store only water shift
Rotation is not used.
2021-07-26 00:22:20 +02:00
elsid
a1549321d7
Move Water struct out of RecastMesh class 2021-07-26 00:22:20 +02:00
elsid
d60edb36aa
Make RecastMesh independent from recast scale factor
To avoid scaling until it's required by delaying coordinates conversion until
navmesh generation.
2021-07-26 00:22:20 +02:00
elsid
af7059373c
Make RecastMesh independent from the order of RecastMeshBuilder calls
To make sure RecastMesh objects are equal if built with the same data but in
different order. Will be used later when there will be more than one place
building RecasMesh objects.
2021-07-26 00:22:20 +02:00
elsid
100cba6260
Use navigator field in Scene 2021-07-26 00:22:03 +02:00
psi29a
6949dd89c2 Merge branch 'gui_shaders' into 'master'
Add shader path for mygui (#6162)

See merge request OpenMW/openmw!1019
2021-07-25 21:37:39 +00:00
psi29a
b92c6985cd Merge branch 'auto_in_most_apps' into 'master'
Using auto keyword in most apps

See merge request OpenMW/openmw!885
2021-07-25 21:23:26 +00:00
psi29a
7d7427015e Merge branch 'removing_unused_launcher_imports' into 'master'
Removing unused imports in the Launcher

See merge request OpenMW/openmw!884
2021-07-25 21:18:25 +00:00
Petr Mikheev
200ccfab69 Merge branch 'Allow-Zoom-levels-on-the-World-Map' into 'master'
Allow Zoom levels on the World Map

See merge request OpenMW/openmw!275
2021-07-25 20:19:11 +00:00
fredzio
7145ef4ce0 Update AABB also in sync cases 2021-07-25 18:00:48 +02:00
Petr Mikheev
e371831086 Merge branch 'esmstore_infix' into 'master'
Use prefix increment for iterators in esmstore.cpp

See merge request OpenMW/openmw!1041
2021-07-25 13:28:18 +00:00
jvoisin
ce8c30bf07 Minor code simplification in npcanimation.cpp 2021-07-25 14:20:37 +02:00
Cédric Mocquillon
1051745f29 [Launcher] Add new setting 'allow zooming' to advanced tab in the launcher 2021-07-25 14:17:10 +02:00
CedricMocquillon
9fee9dbc9c [Global map] Regroup markers when the zoom out 2021-07-25 14:17:10 +02:00
CedricMocquillon
18f5853279 [Global <-> Local] Auto switch between local and global map when zoom in/out 2021-07-25 14:17:09 +02:00
CedricMocquillon
8c87defddf [Local map] Use the distance view in the local map 2021-07-25 14:17:08 +02:00
CedricMocquillon
ed04ebe9ff [Local map] Allow zoom on local map 2021-07-25 14:17:08 +02:00
CedricMocquillon
9fadbd5b7a [Global map] Allow zoom on global map 2021-07-25 14:17:07 +02:00
CedricMocquillon
99cd4b6742 [Refactoring] Several refactorings:
[Refactoring] Add marker size method instead of using magic constant

[Refactoring] Simplify worldPosToImageSpace and cellTopLeftCornerToImageSpace usage

[Refactoring] Add a missing 'f' to specify the float type

[Refactoring] Make cellTopLeftCornerToImageSpace more homogenous with worldPosToImageSpace

[Refactoring] Extract createmakrercoords method

[Refactoring] Use worldPosToImageSpace instead of cellTopLeftCornerToImageSpace
Remove cellTopLeftCornerToImageSpace as it is not used anymore
Remove getCellSize as it is not used anymore

[Refactoring] Extract new method createMarker

[Refactoring] Extract new method getMarkerCoordinates

[Refactoring] Extract new method getPosition

[Refactoring] Extract new method centerView

[Refactoring] Extract new method createDoorMarker

[Refactoring] Simplify for loop

[Refactoring] Make the test before the loop
2021-07-25 14:17:06 +02:00
cc9cii
33dcd7585a OpenCS - Jump To Modified 2021-07-24 20:00:25 +00:00
psi29a
2eea590762 Merge branch 'spawn_fix' into 'master'
Fix #6173

Closes #6173

See merge request OpenMW/openmw!1046
2021-07-24 12:04:20 +00:00
cc9cii
3e466699c8 A better way to plug a potential memory leak in the event of an exception during push_back(). 2021-07-24 21:23:03 +10:00
cc9cii
fd67ebde25 Changes based on review comments, including:
* replace murmurhash with std::unordered_map
* plug potential leak from unique_ptr release
* replacing some sections with cleaner code
2021-07-24 09:17:48 +10:00
fredzio
f348b70733 Set mCanWaterWalk and mOnGround when adding Actor to the scene.
mCanWaterWalk was set to false and updated during next frame's simulation
mOnGround is set to true but then was updated as part of the scene
loading logic.
2021-07-23 18:04:58 +02:00
cc9cii
ee3361a118 Fix table being sorted twice (at least it appeared that way according to the sample profiler)
- Quoting Qt-4.8: "Note: . Setting the property to true with setSortingEnabled() immediately triggers a call to sortByColumn() with the current sort section and order."

(copied the changes from commit SHA-1: 77394fce99)
2021-07-23 23:18:11 +10:00
cc9cii
725d689e8a Call push_back() if inserting to the end of the vector. It seems MSVC may be generating different code compared to insert().
(copied the changes from commit SHA-1: 257126ed69)
2021-07-23 23:17:16 +10:00
cc9cii
44a333b6db Don't attempt to open files yet to be created. 2021-07-23 21:25:35 +10:00
Petr Mikheev
ec79f26320 Merge branch 'minor' into 'master'
Minor code cleanup

See merge request OpenMW/openmw!1038
2021-07-23 11:20:37 +00:00
cc9cii
5c504e4d22 Convert the CellRef record index lookup maps to use integer keys rather than strings.
- Morrowind load over 300,000 references, so even small inefficiencies add up to longer loading times.
- std::map is used, but should try others, std::unordered_map or even std::vector

(copied the changes from commit SHA-1: 86945d1912)
2021-07-23 19:07:56 +10:00
cc9cii
10c6304a1f Fix typo from commit cfdbd0d471. 2021-07-23 18:12:09 +10:00
cc9cii
fc2f68a465 Change the loader's top progress bar to show total number of records processed rather than the number of files.
(copied the changes from commit SHA-1: ff072441fd)
2021-07-23 17:34:27 +10:00
cc9cii
5fffcab94f Performance improvements for loading Info records.
- The order of info records with the same topic are maintained in Collection::mRecords
- The index lookup data structure are not ordered.  The topic string is hashed.  The infos for the topic are simply placed in a vector.
- The index values for appending or inserting a record takes prev/next values (if exist)
- FIXME: prev/next values are not adjusted for adding or removing records
- FIXME: undo after reordering does not reset the modified flag

(copied the changes from commit SHA-1: 06f9922822)
2021-07-23 16:05:58 +10:00
cc9cii
66bda84240 Convert RefNum index map to use find().
(copied the changes from commits 68e16b6cee and 0de223c637)

NOTE: it is unclear how this change affects commit 61a4a0807b
2021-07-23 15:30:33 +10:00
cc9cii
be45092e55 Use std::unique_ptr to store records in collections, RefidCollection and RefIdData.
(copied the changes from commit 23e7e3c165)
2021-07-23 14:21:21 +10:00
glassmancody.info
e8c6f31e0c add shader path for mygui (#6162) 2021-07-22 15:55:30 -07:00
jvoisin
73c20be29a Use prefix increment for iterators in esmstore.cpp
See https://pvs-studio.com/en/docs/warnings/v803/
for the rationale.
2021-07-22 22:03:59 +02:00
jvoisin
74fab99b89 Use a const-ref for an osg::Quat
Since an osg::Quat contains at least 4 floats,
it should be worth it to use a const-ref instead
of passing it by value.
2021-07-22 21:33:18 +02:00
jvoisin
f86ddef4db Minor code cleanup 2021-07-22 15:15:41 +02:00
psi29a
469cc44ef7 Merge branch 'tweaks' into 'master'
Change settings for async physics

See merge request OpenMW/openmw!778
2021-07-22 07:18:41 +00:00
jvoisin
5e3f000b66 Add a std::noboolalpha to a std::boolalpha 2021-07-21 14:40:54 +02:00
Nuri
36657698fb Added checks for paralysis, knocked down, and death when picking up items from inventory. Fixes #6165 2021-07-21 07:46:02 +00:00
psi29a
cc642b5335 Merge branch 'slimfast' into 'master'
Reduce size of physics objects by 1/3

See merge request OpenMW/openmw!1024
2021-07-20 19:03:14 +00:00
Alexei Dobrohotov
e5f96ab4ae Merge branch 'lol_so_random' into 'master'
Set the ptr's custom data before filling the store so leveled lists have access to the level

See merge request OpenMW/openmw!1028
2021-07-18 14:02:06 +00:00
Evil Eye
b95cf4fd00 Set the ptr's custom data before filling the store so leveled lists have access to the level 2021-07-18 15:04:25 +02:00
elsid
f92843e3d2
Fix UB: reference binding to misaligned address in Lua tests
/home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:166:34: runtime error: reference binding to misaligned address 0x562ea892076c for type 'const struct TestStruct1', which requires 8 byte alignment
0x562ea892076c: note: pointer points here
  00 74 73 31 00 00 00 00  00 00 f8 3f 00 00 00 00  00 00 04 40 21 79 4b 08  00 00 00 74 65 73 74 5f
              ^
    #0 0x562ea6462b8e in deserialize /home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:166
    #1 0x562ea68b7402 in deserializeImpl /home/elsid/dev/openmw/components/lua/serialization.cpp:172
    #2 0x562ea68b7bf6 in deserializeImpl /home/elsid/dev/openmw/components/lua/serialization.cpp:204
    #3 0x562ea68b86ea in LuaUtil::deserialize(sol::state&, std::basic_string_view<char, std::char_traits<char> >, LuaUtil::UserdataSerializer const*) /home/elsid/dev/openmw/components/lua/serialization.cpp:251
    #4 0x562ea6464d96 in TestBody /home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:197
    #5 0x562ea6d9dac6 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2607
    #6 0x562ea6d9dac6 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2643
    #7 0x562ea6d92e25 in testing::Test::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2682
    #8 0x562ea6d92e25 in testing::Test::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2672
    #9 0x562ea6d93024 in testing::TestInfo::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2861
    #10 0x562ea6d93728 in testing::TestInfo::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2834
    #11 0x562ea6d93728 in testing::TestSuite::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:3015
    #12 0x562ea6d94142 in testing::TestSuite::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2994
    #13 0x562ea6d94142 in testing::internal::UnitTestImpl::RunAllTests() /home/elsid/dev/googletest/googletest/src/gtest.cc:5855
    #14 0x562ea6d9e096 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2607
    #15 0x562ea6d9e096 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2643
    #16 0x562ea6d93140 in testing::UnitTest::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:5438
    #17 0x562ea5d3fdc6 in RUN_ALL_TESTS() /home/elsid/dev/googletest/build/gcc/release/install/include/gtest/gtest.h:2490
    #18 0x562ea5d3fc6f in main /home/elsid/dev/openmw/apps/openmw_test_suite/openmw_test_suite.cpp:11
    #19 0x7fe3938d0b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
    #20 0x562ea5d3fb7d in _start (/home/elsid/dev/openmw/build/gcc/ubsan/openmw_test_suite+0x173eb7d)

/home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:176:34: runtime error: reference binding to misaligned address 0x562ea892078f for type 'const struct TestStruct2', which requires 4 byte alignment
0x562ea892078f: note: pointer points here
 75 63 74 32 04  00 00 00 03 00 00 00 04  00 6e 64 69 74 69 6f 6e  73 00 73 68 61 70 65 00  51 00 00
             ^
    #0 0x562ea6462df9 in deserialize /home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:176
    #1 0x562ea68b7402 in deserializeImpl /home/elsid/dev/openmw/components/lua/serialization.cpp:172
    #2 0x562ea68b7bf6 in deserializeImpl /home/elsid/dev/openmw/components/lua/serialization.cpp:204
    #3 0x562ea68b86ea in LuaUtil::deserialize(sol::state&, std::basic_string_view<char, std::char_traits<char> >, LuaUtil::UserdataSerializer const*) /home/elsid/dev/openmw/components/lua/serialization.cpp:251
    #4 0x562ea6464d96 in TestBody /home/elsid/dev/openmw/apps/openmw_test_suite/lua/test_serialization.cpp:197
    #5 0x562ea6d9dac6 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2607
    #6 0x562ea6d9dac6 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2643
    #7 0x562ea6d92e25 in testing::Test::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2682
    #8 0x562ea6d92e25 in testing::Test::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2672
    #9 0x562ea6d93024 in testing::TestInfo::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2861
    #10 0x562ea6d93728 in testing::TestInfo::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2834
    #11 0x562ea6d93728 in testing::TestSuite::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:3015
    #12 0x562ea6d94142 in testing::TestSuite::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:2994
    #13 0x562ea6d94142 in testing::internal::UnitTestImpl::RunAllTests() /home/elsid/dev/googletest/googletest/src/gtest.cc:5855
    #14 0x562ea6d9e096 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2607
    #15 0x562ea6d9e096 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/elsid/dev/googletest/googletest/src/gtest.cc:2643
    #16 0x562ea6d93140 in testing::UnitTest::Run() /home/elsid/dev/googletest/googletest/src/gtest.cc:5438
    #17 0x562ea5d3fdc6 in RUN_ALL_TESTS() /home/elsid/dev/googletest/build/gcc/release/install/include/gtest/gtest.h:2490
    #18 0x562ea5d3fc6f in main /home/elsid/dev/openmw/apps/openmw_test_suite/openmw_test_suite.cpp:11
    #19 0x7fe3938d0b24 in __libc_start_main (/usr/lib/libc.so.6+0x27b24)
    #20 0x562ea5d3fb7d in _start (/home/elsid/dev/openmw/build/gcc/ubsan/openmw_test_suite+0x173eb7d)
2021-07-17 17:41:41 +02:00
fredzio
44f822da56 Do not store a btTransform into Projectile class: reduce its size by 112 bytes 2021-07-17 13:11:41 +02:00
fredzio
f02d01ef0c Do not store btTransform into Object class: reduce its size by 104 bytes 2021-07-17 13:11:41 +02:00
fredzio
62ef708910 Do not store a btTransform into Actor class: reduce its size by 128 bytes 2021-07-17 13:11:39 +02:00
psi29a
42e50e487a Merge branch 'cleaning' into 'master'
Improve save cleaning

See merge request OpenMW/openmw!1015
2021-07-16 08:53:06 +00:00
psi29a
22068eed6b Merge branch 'navmesh_cache_without_off_mesh' into 'master'
Do not use off mesh connections as a part of navmesh cache key

See merge request OpenMW/openmw!1016
2021-07-16 08:40:56 +00:00
psi29a
6d08a1d731 Merge branch 'skip_async' into 'master'
Don't put player in the air after going out of tcl

See merge request OpenMW/openmw!1009
2021-07-16 07:50:26 +00:00
Evil Eye
087e933326 Close windows using Ptrs that are about to be deleted 2021-07-15 22:31:26 +02:00
elsid
beeb882ea8
Do not use off mesh connections as a part of navmesh cache key
To reduce cache size and make it more flexible.

Adding off mesh connections to the navmesh is the last step of navmesh
generation and it's very fast comparing to other steps (microseconds vs
milliseconds). Having less cache size makes get and set operations almost 2x
times faster that also have an order of microseconds. So in total there is
no performance impact.
2021-07-14 12:19:17 +02:00
elsid
6128fcfc82
Use empty off mesh connections in benchmark
To get proper comparison with the next change removing it from the cache key.
2021-07-14 00:01:46 +02:00
Evil Eye
1e1ebb049e Workaround clang and actually erase from the vector 2021-07-13 21:18:24 +02:00
Evil Eye
86c50ece92 Improve save cleaning 2021-07-12 20:51:13 +02:00
elsid
5c9af1742a
Dump moved cell refs in esmtool 2021-07-12 18:56:45 +02:00
elsid
cfdbd0d471
Indicate moved cell refs explicitly
This is less error prone approach than use of MovedCellRef fields.

Also make separate functions for skipping and reading moved cell refs to avoid
passing special flags  logic and null pointers for unused arguments.
2021-07-12 18:56:42 +02:00
elsid
f90c4ae22f
Add yaml-like separator between cell refs
To be able to separate records visually.
2021-07-12 18:48:49 +02:00
psi29a
cd9fb2adad Merge branch 'dial_me_maybe' into 'master'
Change disposition to work like vanilla

Closes #5100 and #5842

See merge request OpenMW/openmw!599
2021-07-12 14:22:26 +00:00
psi29a
6475082095 Merge branch 'lifetime' into 'master'
Maybe fix #6071

Closes #6071

See merge request OpenMW/openmw!1010
2021-07-12 14:11:14 +00:00
psi29a
223216733d Merge branch 'coverity_fix' into 'master'
Fix some coverity issues

See merge request OpenMW/openmw!1013
2021-07-12 14:06:44 +00:00
Petr Mikheev
8ff8ec4abd Fix coverity issues 2021-07-12 12:51:25 +02:00
elsid
153cd9a20c
Avoid redundant search for existing element 2021-07-12 11:41:21 +02:00
elsid
eece47f70e
Avoid copying osg::ref_ptr when adding or removing item from work queue
Copy constructor does refcounting, and move constructor doesn't.
2021-07-12 11:41:21 +02:00
elsid
b8fcd6d3ba
Manage work item lifetime on the client side
Instead of explicit work queue stop before any possibly used engine manager
is destructed. Based on an assumption that any engine manager can be destructed
independently from the work queue destruction. This model is already used in
CellPreloader that conflicts with explicit work queue stop.

After the work queue is requested to be stopped, any client waiting for a not
started work item to be done will wait forever because the work item is dropped
from the queue. Therefore either clients should not wait for own work items to
be completed in destructor or the work queue should not drop items before
clients are destructed. Other approaches are possible but are not considered
due to increasing complexity.

CellPreloader already tries to wait for all created work items to be done so
keep it that way and extend the model to AsyncScreenCaptureOperation and Scene.
Additionally abort all scheduled work items when owner is destructed. This
prevents a long exit when multiple screenshots are scheduled right before
exiting the game.
2021-07-12 11:41:14 +02:00
glassmancody.info
389b830046 fix black objects with OP batch debug due to unitialized uniform 2021-07-11 23:03:55 -07:00
fredzio
1650dabed8 Assign the return value of weak_ptr::lock() to a variable, so that the
shared object lifetime is properly extended. Otherwise there is a
possibility that the Actor gets destroyed during call to unstuck().
2021-07-11 18:01:20 +02:00
fredzio
643a64cb2f Change some settings for async physics:
- default to 1 thread
- default to always use defered aabb update, remove option
- always keep a cache of LOS request for at least the current frame.
This decreases number of raycast, especially when a lot of actors are
involved and "NPCs avoid collisions" is on
2021-07-11 17:07:39 +02:00
fredzio
6ad2cf8e4f Skip simulation result after calling Actor::updatePosition(). Otherwise
when going out of tcl the player would go back to previous position for
one frame.
2021-07-11 16:42:45 +02:00
elsid
73639a93b6
Avoid CTAD to fix macOS build
../../../apps/openmw/engine.cpp:706:23: error: no viable constructor or deduction guide for deduction of template arguments of 'function'
                    ? std::function(ScheduleNonDialogMessageBox {})
                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1430:48: note: candidate template ignored: could not match 'function<_Fp>' against '(anonymous namespace)::ScheduleNonDialogMessageBox'
template<class _Fp> class _LIBCPP_TEMPLATE_VIS function; // undefined
                                               ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1430:48: note: candidate function template not viable: requires 0 arguments, but 1 was provided
../../../apps/openmw/engine.cpp:707:23: error: no viable constructor or deduction guide for deduction of template arguments of 'function'
                    : std::function(IgnoreString {})
                      ^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/functional:1430:48: note: candidate template ignored: could not match 'function<_Fp>' against '(anonymous namespace)::IgnoreString'
template<class _Fp> class _LIBCPP_TEMPLATE_VIS function; // undefined
                                               ^
2021-07-11 13:26:21 +02:00
Cédric Mocquillon
269cd31059 Use same world coordinates to compute distances 2021-07-10 19:04:46 +02:00
Petr Mikheev
c2280ada1d OpenMW Lua, API_VERSION=0 2021-07-09 20:48:54 +02:00
Petr Mikheev
85c441ec9a Refactoring and minor fixes related to active/inactive object state 2021-07-09 20:48:54 +02:00
Petr Mikheev
43b7e6964a Add function World::isCellActive 2021-07-09 20:48:54 +02:00
Petr Mikheev
702eb19271 Fixes and refactoring 2021-07-09 20:48:54 +02:00
Petr Mikheev
cc7dbabd19 Change argument of onKeyPress 2021-07-09 20:48:54 +02:00
Petr Mikheev
b1a6441c23 Add LocalScripts::LocalEngineEvent. Add OnConsume engine handler. 2021-07-09 20:48:54 +02:00
Petr Mikheev
1268597676 Make loaded but inactive objects available in Lua scripts. 2021-07-09 20:48:54 +02:00
Petr Mikheev
403d31313c New setting "lua num threads". Thread syncronization is changed from std:🧵:yield to std::condition_variable. 2021-07-09 20:48:54 +02:00
Petr Mikheev
a8f76260bc A possibility to view actor controls from lua scripts without disabling AI. 2021-07-09 20:48:54 +02:00
Petr Mikheev
c463f52390 Add Cell Lua bindings 2021-07-09 20:48:54 +02:00
Petr Mikheev
de349962d1 Engine handlers onActive/onInactive and a function self:isActive() 2021-07-09 20:32:53 +02:00
Petr Mikheev
d5cda61855 Console command "reload lua" 2021-07-09 20:24:56 +02:00
Petr Mikheev
9d09ecf8ca Add mwlua/actions 2021-07-09 20:24:56 +02:00
Petr Mikheev
f5722f9ba0 Inventory bindings 2021-07-09 20:24:56 +02:00
Petr Mikheev
bdccf161c4 Add lua package 'openmw.query' 2021-07-09 20:24:56 +02:00
Petr Mikheev
32218f6dd5 More Lua bindings 2021-07-09 20:24:56 +02:00
Petr Mikheev
87b5afb9bf Control active Lua scripts from openmw.cfg 2021-07-09 20:24:56 +02:00
Petr Mikheev
8c6d303730 Saving/loading for Lua scripts (saves format is changed) 2021-07-09 20:24:56 +02:00
Petr Mikheev
914e604e06 Interactions between LuaManager and other parts of OpenMW 2021-07-09 20:24:56 +02:00
Petr Mikheev
f2d0a702e9 Add Lua timers 2021-07-09 20:24:51 +02:00
Petr Mikheev
3d7e306064 Add apps/openmw/mwlua 2021-07-09 20:03:27 +02:00
Petr Mikheev
7df500c385 Put RefData move constructor to cpp file 2021-07-09 20:03:27 +02:00
Petr Mikheev
6db2450c90 Initial support of generated RefNums with negative mContentFile. 2021-07-09 20:03:27 +02:00