9333 Commits
Author SHA1 Message Date
blagish 0b78403e5a Use strict depth test for water 2026-10-10 16:42:35 +04:00
psi29a 46d470004e Own terrain preload views with std smart pointers 2026-10-10 08:28:30 +00:00
AnyOldName3 71fc0a4a29 Merge branch 'cmake-rework-phase-2' into 'master'
CMake rework phase 2

See merge request OpenMW/openmw!5657
2026-10-05 21:50:28 +00:00
psi29a a6a5a95cac Merge branch 'vsg/230-non-scene-caches-shared-ptr' into 'master'
Cache animation data as std::shared_ptr, dropping their osg::Object base

See merge request OpenMW/openmw!5622
2026-10-05 16:57:14 +00:00
Bret Curtis e8f6c25d1a Cache animation data as std::shared_ptr, dropping their osg::Object base
SceneUtil::KeyframeHolder and SceneUtil::AnimBlendRules are pure data — a
map of keyframe controllers and a vector of blend rules. Nothing attaches
them to a scene graph; both classes existed as osg::Object only because
the cache stored them via osg::ref_ptr. With the value-type seam from the
previous MR in place, they can be plain classes cached as
std::shared_ptr<const T>, and the TemplateRef pins in AnimBlendRulesManager
become an aliasing shared_ptr that keeps the cached base and override rules
alive while merged rules are in use.
2026-10-05 17:36:58 +02:00
Alexei Kotov 0f850c8b99 Merge branch 'fix/nif-saved-particles-first-frame' into 'master'
Apply particle affectors to saved particles on load

See merge request OpenMW/openmw!5652
2026-10-05 17:20:52 +03:00
xxorza b2798333d0 Update nifloader.cpp 2026-10-05 03:31:44 +03:00
AnyOldName3 3dfebe8681 Install deps properly 2026-10-04 18:52:47 +01:00
AnyOldName3 4969186f34 Merge branch 'debian-is-not-the-boss-of-me' into 'master'
Tweak install-related variables

See merge request OpenMW/openmw!5646
2026-10-04 17:18:12 +00:00
nox7 7b52da01d3 Run CLANG format 2026-10-02 07:05:57 -05:00
nox7 1719cf6e75 Document clockwise movement. Use radians instead of degrees. Swap float usage to double 2026-10-02 06:56:44 -05:00
nox7 1cfcc542c8 Accept rotation parameter in cursor resource 2026-10-02 06:33:50 -05:00
psi29a a8346a9523 Merge branch 'vsg/250-workqueue-drop-osg' into 'master'
Own work queue items with std::shared_ptr instead of osg::Referenced

See merge request OpenMW/openmw!5626
2026-10-02 10:00:23 +00:00
psi29a d419211f5b Merge branch 'vsg/240-userdata-generic' into 'master'
Carry plain values as user data instead of osg::Object wrappers

See merge request OpenMW/openmw!5625
2026-10-02 09:52:44 +00:00
xxorza b7683b8801 Apply particle affectors to saved particles on load 2026-10-02 01:48:31 +03:00
Cole Green ed200b9e63 Merge branch 'lua-cursor-lock' into 'master'
Lua cursor API

Closes #9229

See merge request OpenMW/openmw!5452
2026-10-01 11:24:45 -05:00
AnyOldName3 1b1ed7e8fa Merge branch 'less-stupid-message' into 'master'
Alter misleading string

See merge request OpenMW/openmw!5642
2026-10-01 01:32:44 +00:00
AnyOldName3 2465dcdcf1 Tweak install-related variables
* don't force Debian-style games prefix - distros that want it can add
  it with -DCMAKE_INSTALL_DATAROOTDIR=/share/games etc., but it should
  be easy for normal distros to not get the prefix and end up with a
  working build.
* only set GLOBAL_DATA_PATH/GLOBAL_CONFIG_PATH defines for the one file
  that uses them. This means changing them won't force a rebuild of
  every single file.
* improve how those defines are used to eliminate some fuckiness
2026-09-30 02:03:25 +01:00
nox7 c4e0ebe2ee Only change cursor after layout update is done 2026-09-26 17:22:42 -05:00
nox7 f70b2ede51 Only update cursor if it's actually changed 2026-09-26 17:17:38 -05:00
AnyOldName3 de36f665a1 Alter misleading string
This has confused users for years, and there's no such thing as an invalid setting, as it may be valid for a different version of OpenMW that doesn't even exist yet.
2026-09-26 02:17:59 +01:00
Evil Eye 8bf9cffc51 Move variables flagged by Coverity 2026-09-24 18:24:57 +02:00
Alexei Kotov 08212e26af Merge branch 'bigba2' into 'master'
Don't truncate BA2 offsets

See merge request OpenMW/openmw!5634
2026-09-23 00:10:31 +03:00
Alexei Kotov c3a7cbac0f Merge branch 'hddata' into 'master'
Support files over 4GB on Windows

Closes #8546

See merge request OpenMW/openmw!5633
2026-09-23 00:06:59 +03:00
Evil Eye 1525d556f5 Clarify and correct types 2026-09-22 20:32:53 +02:00
nox7 ac87273742 Retain duplicate cursor resources with dupe-checks done via hash keys 2026-09-21 19:05:37 -05:00
nox7 7046bd49f0 Add failure checks to SDL allocators in decompress() 2026-09-21 19:03:59 -05:00
nox7 1d5c901881 Nullptr check 2026-09-21 19:03:59 -05:00
nox7 cf26ddba53 Track if cursor resources originated in menu context so they can be removed or retained properly 2026-09-21 19:03:59 -05:00
nox7 5ac61e001b Add getCursor(), but also properly revert back to the original engine cursor if the Lua cursor is set to nil 2026-09-21 19:03:59 -05:00
nox7 2278f02471 Fix cursor not propagating on Lua UI 2026-09-21 19:03:58 -05:00
nox7 b3a0227e44 Add Lua custom cursor registration 2026-09-21 19:03:58 -05:00
Cole Green 5904dbb3a6 Merge branch 'garbagecount' into 'master'
Assume non-gold items used to contain garbage NAM9 subs

Closes #9167

See merge request OpenMW/openmw!5631
2026-09-21 11:51:02 -05:00
Bret Curtis 812e108521 Carry plain values as user data instead of osg::Object wrappers
osg::UserDataContainer only accepts osg::Object, so four payloads that are
pure game data inherited from it purely to get in the door: TextKeyMapHolder,
MWRender::PtrHolder, RefnumMarker and RefnumSet. SceneUtil::UserData<T> takes
that base on once so the payloads do not have to, which lets TextKeyMapHolder,
PtrHolder and RefnumSet disappear entirely in favour of TextKeyMap, MWWorld::Ptr
and std::vector<ESM::RefNum>, and leaves RefnumMarker a plain aggregate. The
five hand-rolled dynamic_cast scans over the container collapse into findUserData
and forEachUserData, which also drops the positional getUserObject(0) assumption
in getPagedRefnums in favour of a lookup by type.
2026-09-21 10:09:03 +02:00
psi29a 5473338479 Merge branch 'vsg/remove-template-ref-wrappers' into 'master'
Drop TemplateRef/TemplateMultiRef wrappers

See merge request OpenMW/openmw!5621
2026-09-21 07:24:42 +00:00
Evil Eye 0fff67d8b7 Assume non-gold items used to contain garbage NAM9 subs 2026-09-20 19:32:56 +02:00
Evil Eye 44d4e79b00 Don't truncate BA2 offsets 2026-09-20 17:44:46 +02:00
Evil Eye e40fa404e3 Support files over 4GB on Windows 2026-09-20 17:43:02 +02:00
Bret Curtis 28b8274aee Own work queue items with std::shared_ptr instead of osg::Referenced
SceneUtil::WorkQueue is a thread pool with no scene graph in it, so neither it
nor WorkItem needs an OSG base class to be reference counted; both now use
std::shared_ptr and workqueue.hpp, workqueue.cpp and generatenavmeshtile.hpp
end up with no reference to osg at all. Because osg::ref_ptr can re-adopt a raw
pointer and std::shared_ptr cannot without minting a second control block, the
places that passed the queue around as WorkQueue* now pass const
std::shared_ptr<WorkQueue>& instead, which is RenderingManager::getWorkQueue
and the World, WindowManager, MapWindow and GlobalMap constructors. The
non-owning WorkQueue& parameters in UnrefQueue, WorkThread and navmeshtool are
unchanged, and WorkItem gains the virtual destructor it used to inherit.
2026-09-20 12:33:25 +02:00
Bret Curtis d69b861fcb Restore TemplateRef as a nameable marker for scene dumps
Deleting the wrapper missed that it had a second job: being a type serialize.cpp could ignore by name, which a bare osg::Object parked in a user data container cannot be singled out for. Without it a scene dump hoists the entire template subtree into the user-data block and demotes the node's real children to bare UniqueID back-references, and no blunt filter can fix that because the same containers carry shaderPrefix, recordIndex and fileHash value objects that the dump should keep. TemplateMultiRef stays gone, the eight call sites still share one addTemplateRef helper that ignores a null template, and holding a ref_ptr<const osg::Object> means no call site needs a const_cast any more.
2026-09-20 12:18:52 +02:00
Hailey Tribble 563223f027 Fix fullscreen when exiting 2026-09-19 09:01:49 -07:00
Bret Curtis 97fdafb0f9 Move addTemplateRef into clone.hpp and null-guard it
The helper lived in its own templateref.hpp, which no longer declared any TemplateRef type, so it now sits next to SceneUtil::CopyOp in clone.hpp where the shallow-copy safety contract it exists to serve is already documented; the file and its CMake entry are gone and the five call sites include clone.hpp instead. The helper also skips a null template rather than parking a null ref_ptr in the user data container, which AnimBlendRulesManager::getRules can hit today because it adds the override rules unconditionally while only dereferencing them under a null check.
2026-09-19 15:14:50 +02:00
Daisyhasacat 17afeb42f8 Remove extra line 2026-09-19 01:11:59 +00:00
Daisyhasacat 82ceab08f9 Add fullscreen fix 2026-09-18 22:16:46 +00:00
nox7 40ba44aa5d Remove useless methods 2026-09-18 13:54:43 -05:00
nox7 9e932a79f9 Consolidate "get real time" into helper function and use steady_clock instead of high-res clock (for time consistency guarantees)
Format
2026-09-18 13:54:43 -05:00
nox7 880372971a CLANG format 2026-09-18 13:54:43 -05:00
nox7 4e88ec9049 Remove useless method and just group the timers into the original two 2026-09-18 13:54:43 -05:00
nox7 4bdc4396e8 Save/Load real timers as a delta time and restart the timer from that remaining delta on load 2026-09-18 13:54:43 -05:00
nox7 c992c8cb0c Implement new real time timers. Works when the game is paused 2026-09-18 13:54:43 -05:00