elsid
793c30ab8d
Check dtNavMeshQuery::getPolyHeight status
...
Otherwise when it fails a node with zero height will be added to a path.
2021-06-30 20:06:48 +02:00
elsid
7e1630a7ad
Remove redundant getPolyHeight wrapper
2021-06-30 20:04:16 +02:00
elsid
cc08a45c31
Move include where it is needed
2021-06-30 20:02:08 +02:00
elsid
a3942a1e0a
Remove redundant check for y coordinate in inRange function
2021-06-30 20:00:43 +02:00
cc9cii
f2a301653c
Remove redundant mPersistent member from ESM::NPC and ESM::Creature, replaced by mRecordFlags. Fixed the editing of the persistence flag value.
2021-06-30 08:20:29 +10:00
jvoisin
5c02e4dddc
Delete an outdated/irrelevant comment
2021-06-29 22:52:40 +02:00
Evil Eye
48f915f1fe
Merge branch 'fontloader' into 'master'
...
Clean the fontloader's hack for polish font up
See merge request OpenMW/openmw!895
2021-06-29 19:15:06 +00:00
Petr Mikheev
890eaabd4f
Merge branch 'clamp' into 'master'
...
Minor refactor making use of std::clamp
See merge request OpenMW/openmw!972
2021-06-29 18:14:12 +00:00
Petr Mikheev
4b98d460da
Merge branch 'const_moar' into 'master'
...
Sprinkle some const ref
See merge request OpenMW/openmw!963
2021-06-29 17:28:51 +00:00
jvoisin
8561245fda
Minor refactor making use of std::clamp
2021-06-29 18:43:47 +02:00
jvoisin
5470b3168b
Use a switch-case instead of a map, on elsid@' advice
...
elsid@ said:
> From my measurements static map + exceptions is slower than original code
when loading polish morrowind localization by 25% with GCC 10.2.0. Switch-based
solution is about 25x times faster than the original and static map with find
only is ~20x faster.
2021-06-29 18:24:40 +02:00
jvoisin
770f91de77
Clean the fontloader's hack for polish font up
...
- The map can be static and const
- The map can be initialized inline
- No need to do a `find` + `[]` instead of `at`
2021-06-29 18:24:40 +02:00
cc9cii
2a76634f5f
Moved persistence flag from references to the header flags of referenceables (e.g. Static, Weapon, etc). Editing widget is not fully working.
2021-06-29 23:25:26 +10:00
cc9cii
024ad3276b
Partial fix for #6017 . The persistence flag of the references are saved but it is not yet possible to modify it via OpenCS.
2021-06-29 19:20:01 +10:00
Evil Eye
4f264af5a9
Merge branch 'staticsload' into 'master'
...
Loads statics before actors II (#5379 )
See merge request OpenMW/openmw!588
2021-06-28 20:25:51 +00:00
psi29a
67f32263b2
Merge branch 'fix_malexa_escape' into 'master'
...
Inscribe physical bounding box into navmesh agent cylinder (#6114 )
Closes #6114
See merge request OpenMW/openmw!967
2021-06-28 14:26:08 +00:00
psi29a
07a7a903a7
Merge branch 'alpha-test-override' into 'master'
...
Ensure original (removed) state overrides replacement state when recreating shaders
Closes #6108
See merge request OpenMW/openmw!966
2021-06-28 13:54:28 +00:00
fredzio
c795e0bce6
Some actors are supposed to spawn on an object that belongs to an adjacent cell.
...
Since actors can be active in 3x3 grid around the player, we need to
first load all objects in a 5x5 grid around the player.
Split load and unloading in 2 phases. Add an mInactiveCells set into the
scene, which contains all cells inside the aforementioned 5x5 grid.
These cells contains only heightfields and non-animated physics objects.
Animated objects are tied to the scene graph, which doesn't exists yet
in these cells, so we skip them.
2021-06-28 09:36:04 +02:00
AnyOldName3
2147c18cf5
Do not overwrite old removed state with old dummy state
2021-06-28 00:11:31 +01:00
elsid
1552e7e3e3
Add pathgrid edges as one direction off mesh connection
2021-06-27 17:48:44 +02:00
elsid
ff1af5e8ec
Use only off mesh connections starting or ending in a given tile
2021-06-27 17:48:41 +02:00
elsid
a8ba9a0e2a
Cleanup unused tile positions from OffMeshConnectionsManager
2021-06-27 17:48:07 +02:00
elsid
81e569c3d9
Move OffMeshConnectionsManager implementation into cpp
2021-06-27 17:48:07 +02:00
elsid
7f65a2c4c2
Remove unused code
2021-06-27 17:48:07 +02:00
elsid
3e98db8d60
Fix styleguide
2021-06-27 17:48:06 +02:00
elsid
84d6dea277
Inscribe physical bounding box into navmesh agent cylinder
...
To disallow too narrow navmesh for a bounding box.
2021-06-27 13:44:38 +02:00
AnyOldName3
0e122b1e3d
Avoid copy and deep equality check
2021-06-27 01:48:06 +01:00
AnyOldName3
8a1b4bde8a
Ensure original (removed) state overrides replacement state when recreating shaders
...
When the shader visitor replaces state (e.g. changes the deprecated
alpha test to a shader-based one) it backs up the original state. If
shaders are recreated, we need to know what the canonical state was and
create shaders to implement that instead of creating shaders to
implement dummy replacement state.
This was actually usually working as the removed state got checked after
the active state, so overwrote anything derived from it. However, if the
active state had the override bit set, that would make it override the
removed state.
Skipping any active state that duplicates removed state fixes this case.
Resolves #6108
2021-06-27 00:12:07 +01:00
jvoisin
9db7d0278a
Sprinkle some const ref
2021-06-25 21:54:35 +02:00
jvoisin
2c8f328ac2
Use make_unique instead of unique_ptr+new
2021-06-25 20:55:38 +02:00
Evil Eye
080106e802
Merge branch 'inline' into 'master'
...
Inline a couple of methods in esmreader.cpp
See merge request OpenMW/openmw!945
2021-06-24 19:56:18 +00:00
jvoisin
b4cfa4328e
Merge branch 'keyword_soup' into 'master'
...
Strip quotes when treating keywords as strings
Closes #6066
See merge request OpenMW/openmw!921
2021-06-24 19:51:58 +00:00
Evil Eye
0998929608
Merge branch 'noreturn' into 'master'
...
Sprinkle some [[noreturn]] where possible
See merge request OpenMW/openmw!793
2021-06-24 19:21:29 +00:00
Evil Eye
822e331f64
Merge branch 'list_resources' into 'master'
...
Minor optimisation in VFS::FileSystemArchive::listResources
See merge request OpenMW/openmw!932
2021-06-24 19:11:46 +00:00
Evil Eye
2be27da791
Merge branch 'const_refs' into 'master'
...
Add a ton of const refs
See merge request OpenMW/openmw!954
2021-06-24 18:57:41 +00:00
Evil Eye
9f7980ecd7
Merge branch 'refenreces' into 'master'
...
Sprinkle some references where it makes sense
See merge request OpenMW/openmw!952
2021-06-24 17:40:36 +00:00
Evil Eye
1a421c3b2e
Merge branch 'multicast' into 'master'
...
Fix two excessive type casting instances
See merge request OpenMW/openmw!953
2021-06-24 17:32:25 +00:00
Evil Eye
7e9785941c
Merge branch 'default' into 'master'
...
Use `default` instead of empty constructors/destructors
See merge request OpenMW/openmw!957
2021-06-24 17:19:02 +00:00
Evil Eye
87c46fb3de
Merge branch 'useless_check' into 'master'
...
Simplify NodeMapVisitor::apply
See merge request OpenMW/openmw!955
2021-06-24 17:12:40 +00:00
jvoisin
cf11870b1c
Sprinkle some references where it makes sense
2021-06-24 00:28:09 +02:00
jvoisin
5840279f16
Use default
instead of empty constructors/destructors
...
See https://pvs-studio.com/en/docs/warnings/v832/ for details
2021-06-24 00:26:15 +02:00
jvoisin
b2c170efa0
Use initialization lists where possible
2021-06-23 23:36:43 +02:00
jvoisin
895864099c
Simplify NodeMapVisitor::apply
...
No need to run a find() before a std::replace
2021-06-23 23:29:14 +02:00
jvoisin
1123dc46ee
Add a ton of const refs
2021-06-23 23:13:59 +02:00
jvoisin
33e035cc95
Fix two excessive type casting instances
...
No need to to a string -> char* -> string dance.
2021-06-23 22:19:08 +02:00
jvoisin
5375b8e71b
Minor optimisation in VFS::FileSystemArchive::listResources
...
When there is no cache, we can fill the `out`
variable as we create it, instead of creating the
cache, and then iterating it to fill `out`.
Thanks to @cemoc for the help!
2021-06-23 12:46:44 +02:00
Evil Eye
df3a47187b
Merge branch 'more_constexpr' into 'master'
...
Some more constexpr in esm/variant.cpp
See merge request OpenMW/openmw!850
2021-06-22 18:40:06 +00:00
Evil Eye
22f7d4eee2
Strip quotes when treating keywords as strings
2021-06-22 16:54:35 +02:00
jvoisin
4dca2c0466
Replace a handrolled memcpy with an actual call to memcpy
2021-06-22 12:52:29 +02:00
jvoisin
2c3c603be2
Sprinkle some const in components/to_utf8
2021-06-22 12:52:29 +02:00
jvoisin
aec3c74fa5
Sprinkle some [[noreturn]] where possible
2021-06-22 12:51:08 +02:00
jvoisin
17e0c75d30
Some more constexpr in esm/variant.cpp
2021-06-22 12:49:09 +02:00
jvoisin
6140c9c3fd
Don't catch exceptions in EsmReader::getExact
2021-06-21 20:06:45 +00:00
jvoisin
cff11fbca9
Inline a couple of methods in esmreader.cpp
2021-06-21 14:22:26 +02:00
Evil Eye
67c8d73fe0
Allow scripts to fail per target
2021-06-19 19:26:55 +02:00
Evil Eye
c1177d7ffe
Allow unquoted string arguments to start with . and -
2021-06-19 11:21:37 +02:00
psi29a
afda721d4b
Merge branch 'race_floats' into 'master'
...
Display Race record height/weight as a float
See merge request OpenMW/openmw!880
2021-06-19 00:29:21 +00:00
psi29a
a6b695e15b
Merge branch 'esmcleanup' into 'master'
...
More ESM cleanup
See merge request OpenMW/openmw!903
2021-06-19 00:23:52 +00:00
psi29a
f66196588c
Merge branch 'object_paging_min_size_combo_box' into 'master'
...
Adding Object Paging Min Size combo box to Advanced -> Visuals
See merge request OpenMW/openmw!917
2021-06-19 00:20:29 +00:00
psi29a
7b6fc1a1f1
Merge branch 'name_shaders' into 'master'
...
Append filename to shader names
See merge request OpenMW/openmw!930
2021-06-19 00:16:36 +00:00
jvoisin
22153cca7b
Reduce a bit the code bloat in hot paths/small functions
...
There is no need to bloat hot/small functions with
a ton of function calls and involving locales
for simple error messages.
2021-06-15 17:57:14 +02:00
Bret Curtis
868a5b35e3
workaround shadow issue on macOS, https://gitlab.com/OpenMW/openmw/-/issues/6057
2021-06-12 00:10:55 +02:00
glassmancody.info
bb834fb44e
append filename to shader names
2021-06-05 18:21:03 -07:00
jvoisin
7f4f2c042e
Use sizeof(GLfloat) instead of sizeof(GL_FLOAT)
...
GL_FLOAT is an enum, with the value 0x1406, while GLFloat is the actual type.
Source: https://www.khronos.org/opengl/wiki/OpenGL_Type
2021-06-04 23:21:26 +02:00
Thunderforge
89950e5528
Preventing type conversion of double to float for objectPagingMinSize
2021-05-29 16:27:23 -05:00
elsid
d4f28ac979
Avoid resetting buffer object when configuring light buffer layout
...
Otherwise this casues RaceSelectionPreview to have no light until first change.
2021-05-28 10:46:42 +02:00
psi29a
9dfba37ce9
Merge branch 'fix_big_object_navmesh_update' into 'master'
...
Fix overwhelming recast mesh and navmesh updates for big rotating objects (#6060 )
Closes #6060
See merge request OpenMW/openmw!911
2021-05-27 21:08:33 +00:00
elsid
4a6961b365
Trigger navmesh update on moved player only when player tile has been changed
2021-05-27 16:52:42 +02:00
elsid
ed91cf9397
Replace unordered_map by map for storing objects
...
For small amount of items it gives better performance for find by key
for update.
2021-05-27 16:38:40 +02:00
elsid
22c2f106b7
Store object tiles position as sorted vector instead of set
2021-05-27 16:00:31 +02:00
elsid
f4f9fa4701
Limit oscillating recast mesh object AABB by tile bounds
...
AABB change outside recast mesh tile should not affect navmesh for this tile.
2021-05-27 12:40:29 +02:00
elsid
d122e184cc
Report navmesh change for not posted tiles
...
Corresponding recast mesh tiles can be updated but navmesh tiles may never
appear for them. Report back zero navmesh version to allow oscillating recast
objects detection to work. This version is always less than any generated
navmesh tile version so any report for generated navmesh will override it.
If zero navmesh version is reported after recast mesh tile got report about
generated navmesh tile it is a no-op since generated version is always greater
than zero.
2021-05-27 12:40:00 +02:00
elsid
3915e5d2cc
Always center loading screen progress bar by height when there is active message box
...
To fix all possible situations when active message box overlaps with loading
screen progress.
The only used condition to center loading screen progress by height is
number of message boxes > 0. No need to pass it through interface.
LoadingScreen can check it inside setLabel function.
2021-05-26 23:29:37 +02:00
Alexei Dobrohotov
6a7bc208de
Merge branch 'dont_assign' into 'master'
...
Don't assign a variable passed by value
See merge request OpenMW/openmw!897
2021-05-23 22:51:42 +00:00
Dobrohotov Alexei
e68a454fd8
More ESM cleanup
2021-05-23 16:02:05 +03:00
jvoisin
e51669c05d
Don't assign a variable passed by value
2021-05-21 18:15:31 +02:00
CedricMocquillon
86d137363e
Check if the archive is opened before adding a file to it and clear state on close
2021-05-20 21:28:52 +02:00
CedricMocquillon
b61249841e
Update lookup only after sorting files
2021-05-19 18:38:42 +02:00
psi29a
c4fde03542
Merge branch 'ObjectPagingMergeIssue' into 'master'
...
Share state
See merge request OpenMW/openmw!879
2021-05-19 05:08:12 +00:00
Alexei Dobrohotov
fea5c0ac1a
Merge branch 'armour_error_fix' into 'master'
...
Fixed data subrecord name for Armour record used in error
See merge request OpenMW/openmw!882
2021-05-18 22:02:30 +00:00
CedricMocquillon
d11a6bd92c
Share state
2021-05-18 17:57:47 +02:00
Bret Curtis
523edd0723
Merge pull request #3093 from akortunov/light_crash
...
Fix crashes on exit in LightManager
2021-05-18 10:47:36 +02:00
psi29a
e73c0f92b8
Merge branch 'fix_present_tile_crash' into 'master'
...
Add missing synchronization for present tiles modification
See merge request OpenMW/openmw!878
2021-05-18 08:13:25 +00:00
psi29a
4bc7012104
Merge branch 'pack-default-settings' into 'master'
...
Pack default settings
Closes #5925
See merge request OpenMW/openmw!822
2021-05-18 08:11:13 +00:00
AnyOldName3
4cedb3549b
Decode base64-packed settings files
2021-05-17 23:39:56 +01:00
Benjamin Winger
21f04f0d0f
Fixed data subrecord name for Armour record used in error
2021-05-17 18:36:59 -04:00
Benjamin Winger
41cfcfdc0f
Display Race record height/weight as a float
2021-05-17 18:33:02 -04:00
AnyOldName3
081650a2e5
Integrate Base64 library with build
2021-05-17 23:00:23 +01:00
elsid
a73ffc25c3
Add missing synchronization for present tiles modification
...
insert/erase can be done from multiple threads simultaneously. mMutex is
already used to synchronize reads so use it for writes too.
2021-05-17 17:44:31 +02:00
psi29a
f1f1703441
Merge branch 'fix_navmesh_wait' into 'master'
...
Fix redundant waiting until navmesh is generated
See merge request OpenMW/openmw!861
2021-05-17 10:54:23 +00:00
Andrei Kortunov
11c57978b6
Fix crashes on exit in the LightManager (bug #6044 )
2021-05-17 13:01:15 +04:00
Andrei Kortunov
c54ef55ebb
Revert "Replace raw pointer by observer_ptr to avoid dangling pointer dereferencing"
...
This reverts commit 5373cf1cd5
.
2021-05-17 12:40:55 +04:00
elsid
d520b440aa
Copy LightBuffer data into a new object when changing layout
...
Before this change LightBuffer copy constructor copied only mData pointer into
a new object. Then memcpy was applied to an overlapping source and destination
that is UB.
Replace configureLayout function by a special constructor. That copies all
mData values and a pointer to a buffer object into a newly allocated object.
2021-05-16 22:37:31 +02:00
Bret Curtis
fef9e91510
Merge pull request #3090 from akortunov/warnfix
...
Fix warning in assert - size_t can not be negative
2021-05-16 20:25:46 +02:00
Andrei Kortunov
e38063dcdb
Discard button press events during save loading (bug #5619 )
2021-05-16 16:04:28 +04:00
elsid
1e2aae8095
Use stable sort+unique to collect RefIDs for ESMStore records counting
...
The idea is to avoid std::map lookup for each CellRef. Instead generate a
sequence of added and removed RefNums into a vector then order them by RefNum
using a stable sort that preserves relative order of elements with the same
RefNum. RefIDs are stored in a different vector to avoid std::string move ctor
calls when swapping elements while sorting. Reversed iteration over added and
removed RefNums for each unique RefNum is an equivalent to what map-based
algorithm produces. The main benefit from sorting a vector is a data locality
that means less cache misses for each access. Reduces ESMStore::countRecords
perf cycles by 25%.
2021-05-15 18:45:22 +02:00
Andrei Kortunov
b717103fe0
Fix warning in assert - size_t can not be negative
2021-05-15 19:56:14 +04:00
elsid
5373cf1cd5
Replace raw pointer by observer_ptr to avoid dangling pointer dereferencing
...
When game exit is requests when initial loading screen is active LightManager
can be destructed in the main thread before LightManagerStateAttribute::apply
is completed by different thread. Given that it uses raw pointer at some point
it becomes dangling because object is destructed this leads to UB and eventual
SIGSEGV.
2021-05-15 15:23:28 +02:00
elsid
eeba92d48b
Merge branch 'includes_detournavigator' into 'master'
...
Remove some superfluous includes in components/detournavigator
See merge request OpenMW/openmw!860
2021-05-14 21:09:22 +00:00
elsid
59f89d22f8
Apply min distance only for not present tiles
...
To avoid waiting when navmesh update is triggered by transformed object for
already present tiles.
2021-05-14 22:41:11 +02:00