Not everything is supported but it does build with the following CMakeSettings.json
variables and dependencies from vcpkg:
"variables": [
{ "name": "OPENMW_USE_SYSTEM_BULLET", "value": "False", "type": "BOOL" },
{ "name": "OPENMW_USE_SYSTEM_MYGUI", "value": "False", "type": "BOOL" },
{ "name": "OPENMW_USE_SYSTEM_OSG", "value": "False", "type": "BOOL" },
{ "name": "BULLET_STATIC", "value": "True", "type": "BOOL" },
{ "name": "OSG_STATIC", "value": "False", "type": "BOOL" },
{ "name": "MYGUI_STATIC", "value": "False", "type": "BOOL" }
],
What works: it builds
What does not work: Not all DLLs are copied into the output directory with this set up
(SDL2, MyGUI, Bullet, OSG, are not copied).
Updates Bullet to include https://github.com/bulletphysics/bullet3/pull/3287
This massively improves heightfield collision detection performance in
some areas.
E.g. with single-threaded bullet in the `--skip-menu` starting area
on my test desktop: 30 FPS -> 60 FPS
The most substantial memory leak came from `PacketQueue::get`
not unreferencing its argument packet.
Other leaks came from using `av_free` instead of type-specific free
functions.
Also modifies `PacketQueue::put` for readability.
osg-ffmpeg-videoplayer handled frame allocation incorrectly.
It used a `vector<uint8_t>` as its buffer, meaning the addresses could
did not respect alignment.
Instead, changes it to use `AVFrame` as buffers, allocated via `av_image_alloc`.
We also now only allocate the buffer once, instead of on every frame,
which should improve the framerate of videos.
Fixes the following crash on startup on ARM:
> Invalid address alignment (signal 7)
Fixes#5807
* Implement hash based lookup for TES3 BSA files.
* Added TES4/TES5 BSA support.
* Implemented a hack (non-portable code) in an attempt to reduce startup time under Windows because Boost::filesystem seems to take forever on GetFileAttributeW. This implementation uses FindFirstFile/FindNextFile/FindClose instead.
* http to https for supported urls
* http to https
* http to https
* http to https
* http to https
* http to https
* http to https
* http to https
* http tp https
* http to https
* http to https
* http to https
* http to https
* http to https
* http to https
* http to https
* http to https
* some url fixes
* http to https
This should allow OpenMW to work better with git versions of openscenegraph. OSG dev version 3.5.5 added the setting of thread affinity for the main thread. The problem is that in the boost/standard threading libraries, the affinity of a thread is inherited by any further threads launched from that thread, leading to these threads always running on the same core as the main thread unless you tell them not to.
With OpenThreads, the default affinity of a thread is none, no matter what parent thread it was launched from.
So, when using custom threading with OSG 3.6+, we have these options:
1. explicitely tell OSG to *not* set the thread affinity
or 2. explicitely set the thread affinity of additional threads created (possible with boost, but not possible with std::thread)
or 3. use OpenThreads
or 4. accept the suboptimal performance of non-OSG threads (in OpenMW's case the sound streaming & video threads) running on the same core as the main thread
This patch opts for 3.)
Reference: http://forum.openscenegraph.org/viewtopic.php?t=16158
- 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