1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-01-16 20:29:57 +00:00
Commit graph

18083 commits

Author SHA1 Message Date
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
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
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
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