36205 Commits

Author SHA1 Message Date
Evil Eye
395f6811c9 Remove minimum duration from continuous effects and add clarification to the docs 2025-07-28 18:59:23 +02:00
psi29a
176dab5b3d Merge branch 'nomagnitudeforyou' into 'master'
Don't multiply magnitudes for effects that don't have magnitudes

Closes #8540

See merge request OpenMW/openmw!4810
2025-07-28 15:59:13 +00:00
psi29a
e304ceb449 Merge branch 'fix_init' into 'master'
Do not copy cell store to count refs

See merge request OpenMW/openmw!4813
2025-07-28 15:58:46 +00:00
psi29a
4efc8bf99d Merge branch 'fix_clang_tidy' into 'master'
Fix clang tidy warnings

See merge request OpenMW/openmw!4811
2025-07-28 15:55:53 +00:00
Alexei Kotov
0a8373987d Merge branch 'aiwander' into 'master'
Build checkpoints based path for wandering actors (#8433)

Closes #8433

See merge request OpenMW/openmw!4652
2025-07-28 00:48:17 +03:00
elsid
e77ee5c20f
Do not copy cell store to count refs 2025-07-27 18:40:39 +02:00
psi29a
2051d5cbef Merge branch 'master' into 'master'
Fixed Unit Test in `apps/openmw_tests/mwworld/testptr.cpp`

See merge request OpenMW/openmw!4807
2025-07-27 16:33:39 +00:00
Claire
af58da58fd Fixed Unit Test in apps/openmw_tests/mwworld/testptr.cpp 2025-07-27 16:33:38 +00:00
psi29a
d3309e0a8d Merge branch 'vfxdocs' into 'master'
Fix useAmbientLight references in docs

See merge request OpenMW/openmw!4803
2025-07-27 16:33:22 +00:00
psi29a
7637ca536b Merge branch 'turnedwerewolf' into 'master'
Remove completion threshold-based turning for the player (#8447)

Closes #8447

See merge request OpenMW/openmw!4628
2025-07-27 16:32:43 +00:00
psi29a
7aeff7e473 Merge branch 'combatparalysis' into 'master'
Put combat actions on hold when the actor is incapacitated (#7979)

Closes #7979

See merge request OpenMW/openmw!4597
2025-07-27 16:32:22 +00:00
psi29a
02102eeeca Merge branch 'instantmagicjustaddwater' into 'master'
Update effects upon applying them

Closes #7996

See merge request OpenMW/openmw!4124
2025-07-27 16:30:56 +00:00
psi29a
c8aa644111 Merge branch 'collisionprediction' into 'master'
Avoid recomputing collision prediction things an extra N times (#8548)

Closes #8548

See merge request OpenMW/openmw!4801
2025-07-27 16:30:11 +00:00
Evil Eye
aae954643c Don't multiply magnitudes for effects that don't have magnitudes 2025-07-27 12:47:35 +02:00
elsid
c6f381f1c4
Ignore readability-identifier-naming for boost::program_options namespace alias 2025-07-27 12:21:13 +02:00
elsid
8682ea522f
Remove unused namespace alias 2025-07-27 12:20:10 +02:00
elsid
ec0c76d2f3
Ignore false positive warning
cellSize > 1 so the result of the division cannot be undefined.

/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:18:35: error: The result of the '/' expression is undefined [clang-analyzer-core.UndefinedBinaryOperatorResult,-warnings-as-errors]
   18 |         std::size_t cell = global / (cellSize - 1);
      |                                   ^
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:244:13: note: Assuming 'lodLevel' is >= 0
  244 |         if (lodLevel < 0 || 63 < lodLevel)
      |             ^~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:244:13: note: Left side of '||' is false
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:244:29: note: Assuming 'lodLevel' is <= 63
  244 |         if (lodLevel < 0 || 63 < lodLevel)
      |                             ^~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:244:9: note: Taking false branch
  244 |         if (lodLevel < 0 || 63 < lodLevel)
      |         ^
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:247:13: note: Assuming 'size' is > 0
  247 |         if (size <= 0)
      |             ^~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:247:9: note: Taking false branch
  247 |         if (size <= 0)
      |         ^
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:272:13: note: Assuming the condition is false
  272 |         if (land != nullptr)
      |             ^~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:272:9: note: Taking false branch
  272 |         if (land != nullptr)
      |         ^
/home/elsid/dev/openmw/components/esmterrain/storage.cpp:363:9: note: Calling 'sampleCellGrid<const (lambda at /home/elsid/dev/openmw/components/esmterrain/storage.cpp:280:35) &>'
  363 |         sampleCellGrid(cellSize, sampleSize, beginX, beginY, distance, handleSample);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:72:13: note: Assuming 'cellSize' is >= 2
   72 |         if (cellSize < 2 || !Misc::isPowerOfTwo(cellSize - 1))
      |             ^~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:72:13: note: Left side of '||' is false
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:72:9: note: Taking false branch
   72 |         if (cellSize < 2 || !Misc::isPowerOfTwo(cellSize - 1))
      |         ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:75:13: note: Assuming 'sampleSize' is not equal to 0
   75 |         if (sampleSize == 0 || !Misc::isPowerOfTwo(sampleSize))
      |             ^~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:75:13: note: Left side of '||' is false
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:75:9: note: Taking false branch
   75 |         if (sampleSize == 0 || !Misc::isPowerOfTwo(sampleSize))
      |         ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:78:13: note: Assuming 'distance' is >= 2
   78 |         if (distance < 2 || !Misc::isPowerOfTwo(distance - 1))
      |             ^~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:78:13: note: Left side of '||' is false
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:78:9: note: Taking false branch
   78 |         if (distance < 2 || !Misc::isPowerOfTwo(distance - 1))
      |         ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:84:13: note: Assuming 'distance' is >= 'cellSize'
   84 |         if (distance < cellSize || sampleSize > cellSize - 1)
      |             ^~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:84:13: note: Left side of '||' is false
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:84:36: note: Assuming the condition is true
   84 |         if (distance < cellSize || sampleSize > cellSize - 1)
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:84:9: note: Taking true branch
   84 |         if (distance < cellSize || sampleSize > cellSize - 1)
      |         ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:85:20: note: Calling 'sampleCellGridSimple<const (lambda at /home/elsid/dev/openmw/components/esmterrain/storage.cpp:280:35) &>'
   85 |             return sampleCellGridSimple(cellSize, sampleSize, beginX, beginY, endX, endY, f);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:56:16: note: 'cellSize' is > 1
   56 |         assert(cellSize > 1);
      |                ^
/usr/include/assert.h💯27: note: expanded from macro 'assert'
  100 |      (static_cast <bool> (expr)                                         \
      |                           ^~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:56:9: note: '?' condition is true
   56 |         assert(cellSize > 1);
      |         ^
/usr/include/assert.h💯7: note: expanded from macro 'assert'
  100 |      (static_cast <bool> (expr)                                         \
      |       ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:57:9: note: '?' condition is true
   57 |         assert(Misc::isPowerOfTwo(cellSize - 1));
      |         ^
/usr/include/assert.h💯7: note: expanded from macro 'assert'
  100 |      (static_cast <bool> (expr)                                         \
      |       ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:58:16: note: 'sampleSize' is not equal to 0
   58 |         assert(sampleSize != 0);
      |                ^
/usr/include/assert.h💯27: note: expanded from macro 'assert'
  100 |      (static_cast <bool> (expr)                                         \
      |                           ^~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:58:9: note: '?' condition is true
   58 |         assert(sampleSize != 0);
      |         ^
/usr/include/assert.h💯7: note: expanded from macro 'assert'
  100 |      (static_cast <bool> (expr)                                         \
      |       ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:60:9: note: Calling 'sampleGrid<(lambda at /home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:61:13)>'
   60 |         sampleGrid(sampleSize, beginX, beginY, endX, endY,
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   61 |             [&](std::size_t globalX, std::size_t globalY, std::size_t vertX, std::size_t vertY) {
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   62 |                 const auto [cellX, x] = toCellAndLocal(beginX, globalX, cellSize);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   63 |                 const auto [cellY, y] = toCellAndLocal(beginY, globalY, cellSize);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   64 |                 f(cellX, cellY, x, y, vertX, vertY);
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   65 |             });
      |             ~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:33:38: note: Assuming 'y' is < 'endY'
   33 |         for (std::size_t y = beginY; y < endY; y += sampleSize)
      |                                      ^~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:33:9: note: Loop condition is true.  Entering loop body
   33 |         for (std::size_t y = beginY; y < endY; y += sampleSize)
      |         ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:36:42: note: Assuming 'x' is < 'endX'
   36 |             for (std::size_t x = beginX; x < endX; x += sampleSize)
      |                                          ^~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:36:13: note: Loop condition is true.  Entering loop body
   36 |             for (std::size_t x = beginX; x < endX; x += sampleSize)
      |             ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:36:42: note: Assuming 'x' is < 'endX'
   36 |             for (std::size_t x = beginX; x < endX; x += sampleSize)
      |                                          ^~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:36:13: note: Loop condition is true.  Entering loop body
   36 |             for (std::size_t x = beginX; x < endX; x += sampleSize)
      |             ^
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:37:17: note: Calling 'operator()'
   37 |                 f(x, y, vertX++, vertY);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:62:41: note: Calling 'toCellAndLocal'
   62 |                 const auto [cellX, x] = toCellAndLocal(beginX, globalX, cellSize);
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/elsid/dev/openmw/components/esmterrain/gridsampling.hpp:18:35: note: The result of the '/' expression is undefined
   18 |         std::size_t cell = global / (cellSize - 1);
      |                            ~~~~~~~^~~~~~~~~~~~~~~~
2025-07-27 12:11:24 +02:00
elsid
c5d74818eb
Disable portability-template-virtual-member-function clang tidy warning
There is no compatibility problem in practice.

/home/elsid/dev/openmw/components/settings/sanitizer.hpp:11:19: error: unspecified virtual member function instantiation; the virtual member function is not instantiated but it might be with a different compiler [portability-template-virtual-member-function,-warnings-as-errors]
   11 |         virtual T apply(const T& value) const = 0;
      |                   ^
/home/elsid/dev/openmw/components/settings/sanitizerimpl.cpp:20:28: note: template instantiated here
   20 |         struct Max final : Sanitizer<T>
      |                            ^
2025-07-27 11:30:07 +02:00
elsid
4433e3c2de
Build path over navmesh for wandering actors
Using a path over pathgrid as checkpoints.

This allows to avoid having paths going through obstacles if they are
placed over pathgrid points.
2025-07-27 11:17:17 +02:00
elsid
5dfda0090b
Remove redundant cell argument from build path functions
Actor can provide a cell.
2025-07-27 11:17:17 +02:00
elsid
3f1ac1848c
Move getClosestPoint to a separate file 2025-07-27 11:17:17 +02:00
elsid
927b2bcceb
Replace PathFinder::makeOsgVec3 by Misc::Convert::makeOsgVec3f 2025-07-27 11:17:16 +02:00
elsid
50f5bc51c6
Store allowed positions as osg::Vec3f
There is no need to store pathgrid points.
2025-07-27 11:16:47 +02:00
Alexei Kotov
8deb050ea2 Merge branch 'ghversion' into 'master'
Use the new Windows deps on GitHub

See merge request OpenMW/openmw!4808
2025-07-27 11:41:01 +03:00
Alexei Kotov
1896375380 Merge branch 'solarpowered' into 'master'
Update sol

Closes #8591 and #8614

See merge request OpenMW/openmw!4745
2025-07-27 11:38:16 +03:00
Alexei Kotov
d3328552e8 Avoid recomputing collision prediction things an extra N times (#8548) 2025-07-27 07:36:43 +03:00
Alexei Kotov
ed32e4405a Merge branch 'optionalglobalism' into 'master'
Remove global config on Windows

Closes #8434

See merge request OpenMW/openmw!4762
2025-07-26 23:25:55 +03:00
Skyhasacat
9f10269ecc Merge branch 'lua_weather_bindings' into 'master'
lua - add weatherbindings to openmw.core (#6976)

See merge request OpenMW/openmw!4526
2025-07-26 15:01:32 +00:00
Evil Eye
e692025579 Use the new Windows deps on GitHub 2025-07-26 16:36:50 +02:00
Sebastian Fieber
534d6b3ae9 typo 2025-07-26 13:39:37 +02:00
elsid
7c46635a5a
Make trimAllowedNodes a free function 2025-07-26 11:48:36 +02:00
elsid
ae909d7685
Remove isAreaOccupiedByOtherActor from obstacle.*
It uses functions only from World anyway.
2025-07-26 11:48:36 +02:00
elsid
c79b39cf0d
Remove unused arguments from isAreaOccupiedByOtherActor 2025-07-26 11:48:36 +02:00
elsid
20bd1491a7
Make sure distance and duration are not negative 2025-07-26 11:48:36 +02:00
elsid
4a3ffb2073
Use camel case for variables 2025-07-26 11:48:35 +02:00
Evil Eye
b4a753812e Use empty paths instead of optionals 2025-07-26 10:23:19 +02:00
Evil Eye
c0b230b742 Remove global config on Windows 2025-07-26 09:45:35 +02:00
Sebastian Fieber
95fc66bccd adjusments to weatherbindings
- return nil for not existing effects
- also use currectTexturePath for cloud texture
- corrections for docs
2025-07-25 23:22:33 +02:00
Sebastian Fieber
855b236ee8 direction of the sun light != direction to the sun 2025-07-25 21:00:09 +02:00
Alexei Kotov
730a62effc Merge branch 'warn-baby-warn' into 'master'
Fix MSVC warnings

Closes #7882

See merge request OpenMW/openmw!4804
2025-07-25 21:45:34 +03:00
Sebastian Fieber
a560aceb2a correct sunDiscSunsetColor type 2025-07-25 20:37:05 +02:00
Sebastian Fieber
cbb96e0fc2 colors should use Misc::Color 2025-07-25 20:10:21 +02:00
psi29a
a599825bf8 Merge branch 'everyonelikeschameleons' into 'master'
Prevent hostile actors from engaging combat against actors with 75 chameleon

See merge request OpenMW/openmw!4806
2025-07-25 08:02:32 +00:00
psi29a
714c128947 Merge branch 'compositemipmaps' into 'master'
Apply filtering settings to composite maps

See merge request OpenMW/openmw!4805
2025-07-25 07:12:07 +00:00
psi29a
45e08f62a1 Merge branch 'smolpiranha' into 'master'
Take skin transform and skeleton root into account

Closes #4437

See merge request OpenMW/openmw!4471
2025-07-25 07:09:55 +00:00
Sebastian Fieber
b8fec360c3 typo 2025-07-25 02:20:26 +02:00
Sebastian Fieber
f1447207b2 more less preprocessed code lines 2025-07-25 01:13:43 +02:00
Sebastian Fieber
3f54d3e569 update lua api revision 2025-07-25 00:53:04 +02:00
Sebastian Fieber
27adbf0cde less preprocessed code lines 2025-07-25 00:53:04 +02:00
Sebastian Fieber
d20a56517b add getCurrentSunLightDirection 2025-07-25 00:52:56 +02:00