elsid
f99ed6f1db
Split components/misc/stringops.hpp into multiple headers
...
Replace all ciEqual overloads with one having std::string_view as argument.
2022-08-03 22:06:24 +02:00
elsid
ba69146ced
Use std::string_view to avoid redundant std::string construction
2022-08-03 00:18:55 +02:00
elsid
0614b82452
Restore UnrefQueue to destruct animation asynchronously
2022-07-24 21:08:43 +02:00
Andrei Kortunov
c36c28e8f9
Move NIF implementation to cpp files
2022-07-21 15:54:52 +04:00
Andrei Kortunov
dc0d6fe31d
Avoid code duplication
2022-07-17 23:59:35 +04:00
Andrei Kortunov
facdc8fc0d
Use string_view
2022-07-17 22:13:27 +04:00
Andrei Kortunov
d83382d236
Rework Profiler to work with VFS
2022-07-17 22:01:48 +04:00
Andrei Kortunov
59c4ea014d
Rework StatsHandler to support VFS
2022-07-17 22:01:48 +04:00
Andrei Kortunov
6f6b5ba04b
Some refactoring
2022-07-17 22:01:48 +04:00
Andrei Kortunov
dd04bfccfb
Load fonts
2022-07-17 22:01:48 +04:00
Andrei Kortunov
d3da09878d
Drop line about non-existent UnrefQueue
2022-07-12 17:41:07 +04:00
glassmancody.info
a0265ffb89
only enable soft particles when enabled in settings
2022-07-02 09:42:15 -07:00
glassmancody.info
b09411d396
allow soft particles on meshes and add extra data extensions
2022-06-29 18:15:12 -07:00
psi29a
feef257584
Merge branch 'postprocessor-stereo' into 'master'
...
[Postprocessing] Stereo integration
See merge request OpenMW/openmw!1988
2022-06-21 15:55:06 +00:00
Mads Buvik Sandvei
b0e4c7e76a
[Postprocessing] Stereo integration
2022-06-21 15:55:06 +00:00
Nelsson Huotari
334c6dde0b
custom class for osgAnimation::RigGeometry, Collada animated deforming body parts
2022-06-21 15:27:34 +00:00
elsid
3affe9913f
Limit the number of simultaneously open not actively used content files
...
Use LRU cache for ESMReaders. When cache capacity is reached close least
recently used ESMReader. Remember the file name if a reader was open. Once the
reader requested again open the file if there is stored name for it. Put
released ESMReader to the back of the free items list. Close ESMReader's from
the front of the free items list.
Cached item can be used only by one client at the same time. If the same item is
requested twice exception is thrown. This should never happen in practice. If
this happens need to fix the client logic.
It's allowed to go over the capacity limit when requesting different readers.
Ideally this should never happen but there will be system error anyway
signalizing about too many open files. Need to fix client logic in this case.
All places that were using a vector of ESMReaders now using the cache. Cache is
local for each use case and there is no need for a thread safety.
2022-06-03 01:29:03 +02:00
Evil Eye
a95b6e050a
Replace new with make_unique in components
2022-05-29 13:24:32 +02:00
cody glassman
ac6089a430
skip flipping of 3D textures which is unsupported in OSG
2022-05-15 10:03:58 -07:00
cody glassman
04843fed6d
moddable post-processing pipeline
2022-05-15 10:03:58 -07:00
Evil Eye
a64979e25d
Replace empty std::string assignments
2022-05-04 22:33:39 +02:00
fredzio
d05a2facf3
Handle NCC flag in Nif files. Objects with this flag will collide only with camera.
...
Expose objects with NC flag to be used by Lua mods.
2022-04-17 20:03:00 +02:00
elsid
e7f3524924
Add a tool to load and print information about all bullet objects in all cells
2022-02-04 16:14:52 +01:00
Cody Glassman
9cafc31c0d
Restore ripples with soft particles
2022-01-19 11:32:38 +00:00
jvoisin
1a6be08149
Fix "warning: loop variable is copied but only used as const reference;...
2022-01-05 10:44:44 +00:00
Petr Mikheev
7fe5351f55
Fix compilation error on windows: cannot convert from 'std::filesystem::path'...
2021-12-26 18:04:20 +00:00
Petr Mikheev
b06248a31f
Fix #6502
2021-12-23 12:33:14 +01:00
elsid
96eb8d7be9
Write generated navmesh to navmeshdb
...
Perform all request to db in a single thread to avoid blocking navmesh
generator threads due to slow write operations.
Write to db navmesh for all changes except update as it done for memory cache.
Batch multiple db operations into a single transaction to speed up writing by
not executing fsync after each insert/update query. All reads are performed in
the same transaction so they see uncommited data.
2021-12-11 00:22:04 +01:00
elsid
a665a38aca
Use MurmurHash3_x64_128 for file hash
2021-11-21 17:05:59 +01:00
Cody Glassman
d85f772269
Depth refactor
2021-11-21 02:25:05 +00:00
Cédric Mocquillon
40656b3135
Embed error marker in osgt format inside a string defined in misc/errorMarker.hpp.
...
Use the embed error marker we fail to load a mesh.
2021-11-20 11:12:08 +01:00
psi29a
41bd20e358
Merge branch 'bullet_shape_hash' into 'master'
...
Store BulletShape source file name and content hash
See merge request OpenMW/openmw!1379
2021-11-13 13:33:22 +00:00
elsid
d7041613ef
Store BulletShape source file name and content hash
2021-11-11 00:27:18 +01:00
Alexei Dobrohotov
9880c43c86
Add specular strength shader parameter
2021-11-10 19:58:06 +03:00
psi29a
5836d0225f
Merge branch 'leave_butter_to_soften' into 'master'
...
Soft Particles (#6128 )
See merge request OpenMW/openmw!980
2021-11-09 14:16:47 +00:00
Bo Svensson
1960e976e2
refactors stringops.hpp ( #3192 )
...
With this PR we refactor `StringUtils::replaceAll` to accept `string_view` as suggested in a code comment. In addition, while we are touching this rebuild happy file, we slim it down a bit by moving a few sparingly used functions elsewhere.
2021-11-05 10:53:52 +01:00
glassmancody.info
8c3b00164e
soft particles
2021-10-30 12:19:31 -07:00
elsid
b731a981c4
Make BulletShape::isAnimated inlined
2021-10-30 03:44:09 +02:00
elsid
c83facd9d3
Avoid redundant osg::ref_ptr<const BulletShape> copy
2021-10-30 03:44:08 +02:00
elsid
ed5a4e195b
Use unique_ptr to avoid possible memory leak
2021-10-30 03:44:08 +02:00
elsid
8e71c246bf
Remove redundant BulletShape getters
2021-10-30 03:44:08 +02:00
elsid
fc9a405dc5
Make BulletShape::makeInstance free function
2021-10-30 03:44:08 +02:00
elsid
b905dd17c3
Use unique_ptr to store btCollisionShape in BulletShape
2021-10-30 03:44:07 +02:00
elsid
80e3623d9a
Avoid dynamic cast in duplicateCollisionShape
2021-10-30 03:43:48 +02:00
elsid
ca8584f6f6
Move functions independent from BulletShape into anonymous namespace
2021-10-30 03:43:38 +02:00
elsid
29a772c33f
Rename Resource::BulletShape::CollisionBox fields according to styleguide
2021-10-29 21:05:58 +02:00
Bo Svensson
c9c8d02332
fixes a crash ( #3183 )
...
This PR fixes a crash caused by the improperly ensured lifetime of RigGeometry::mSourceGeometry. mSourceGeometry was not adequate to ensure mSourceGeometry would outlive mGeometry because we extend mGeometrys lifetime beyond this lifetime by passing mGeometry to the draw traversal instead of this.
In addition,
We add important comments.
We detect and prevent generally unsafe operations in high level code.
We add a sprinkling of const to help clarify intentions.
2021-10-23 10:31:46 +02:00
Bo Svensson
617eec338a
removes version guard ( #3173 )
...
We currently use a version guard to adapt to a change in the number of parameters supplied to osg::TriangleFunctor's operator() template functor. The differing parameter is unused in our code. Crucially, operator() is not an override, so we can just add a default value for the differing parameter. Such a default allows us to apply identical code to both versions of the library without regressing functionality.
2021-10-13 16:12:47 +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
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
Bo Svensson
e41fe7573a
avoids creating empty statesets for collada nodes ( #3128 )
...
* avoids creating empty statesets for collada nodes
With this PR we avoid creating empty statesets for collada nodes which will be detrimental to osg's draw performance.
* scenemanager.cpp
2021-09-28 10:17:12 +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
Bo Svensson
c6f7137ee1
fixes bugs with share state ( #3111 )
...
* optimizer.cpp merge fix
* objectpaging.cpp
* optimizer.hpp setSharedStateManager
* optimizer.cpp shareState
* scenemanager.cpp shareState
* scenemanager.cpp
* optimizer.cpp
* optimizer.cpp
* scenemanager.cpp
* optimizer.cpp
2021-09-27 20:41:24 +02:00
unelsson
67894349a9
Add a check for OPAQUE_BIN
2021-09-19 22:38:07 +03:00
unelsson
f2a894024a
Change debug levels
2021-09-19 22:38:07 +03:00
unelsson
ec0b36d21d
Don't make a new osg::depth to alpha tested node
2021-09-19 22:38:07 +03:00
unelsson
96f02ab32c
Per-material alpha testing for collada
2021-09-19 22:38:07 +03:00
unelsson
40497d6fe5
Set depth testing for alpha blend & test, depth writes off for blend.
2021-09-19 22:38:07 +03:00
unelsson
b3d1d106af
Collada alpha testing and uniforms
2021-09-19 22:38:07 +03:00
Bo Svensson
f62adab43a
Avoid the terrain sync completely in most cases ( #3103 )
...
We can take elsid's commit 605cb8d
further by avoiding the terrain sync completely in most cases. Currently in changeCellGrid we wait for a new preloading task to ensure the getPagedRefnums for the new active cells have been filled in by object paging. This is usually not necessary because we have already completed a preload in the past containing these active cells. With this PR we remember what we preloaded and skip the terrain sync if it is not needed.
2021-09-16 22:11:19 +02:00
Cédric Mocquillon
6817282097
Move getFileExtension to common header and use instead of repeating same code
2021-09-14 18:09:55 +02:00
Cédric Mocquillon
c2df0949e2
Change normalizeFilename signature
2021-09-14 18:09:55 +02:00
jvoisin
cb08f490d7
Sprinkle some const-ref in loop
...
This was done on the good advices of clang-tidy
2021-09-04 20:50:59 +02:00
jvoisin
deb2af6acc
Dont copy-construct from a const-ref when used only as a const-ref
...
This also makes clang-tiny a bit happier
2021-08-29 20:22:34 +02:00
elsid
0f11acf709
Report more stats from AsyncNavMeshUpdater
2021-08-20 20:16:59 +02:00
jvoisin
5793f5cf18
Sprinkle a couple of std::move and a const
2021-08-16 13:11:22 +02:00
jvoisin
b01ef2629c
Fix two Wreorder clang warnings
2021-08-13 13:59:57 +02:00
jvoisin
586d8684d0
Fix two coverity issues about uninitialised variables
2021-08-09 12:43:30 +02:00
glassmancody.info
09e03fde2e
refactor and fix wobbly shores
2021-08-04 17:49:57 -07:00
glassmancody.info
cad0b151cb
enable shaders path and dehardcode depth formats
2021-08-04 17:39:11 -07:00
glassmancody.info
70fac33940
initial reverse-z depth implementation
2021-08-04 17:39:11 -07:00
elsid
c8987bda2f
Store reference to BulletShapeInstance for btCollisionShape
...
To keep btCollisionShape lifetime.
2021-08-03 12:21:56 +02:00
fredzio
c76387162b
Add projectiles number to the resources stats
2021-07-31 23:08:50 +02: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
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
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
jvoisin
cf11870b1c
Sprinkle some references where it makes sense
2021-06-24 00:28:09 +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
CedricMocquillon
d11a6bd92c
Share state
2021-05-18 17:57:47 +02:00
psi29a
d843ec321e
Merge branch 'DoNotSearchTwice' into 'master'
...
Search only in the niffilemanager for nif files
See merge request OpenMW/openmw!823
2021-05-13 17:11:57 +00:00
Thunderforge
339d347aea
Fixing performance-faster-string-find issues
...
This addresses the Clang Tidy check [performance-faster-string-find](https://clang.llvm.org/extra/clang-tidy/checks/performance-faster-string-find.html ).
2021-05-10 22:44:07 -05:00
CedricMocquillon
a885134868
Do not search if it is not used
2021-05-06 13:28:06 +02:00
CedricMocquillon
813b8ee0d1
Search only in the niffilemanager for nif files
2021-05-05 23:19:08 +02:00
Andrei Kortunov
9647b670e4
Do not declare unused variables
2021-04-19 15:43:00 +04:00
glassmancody.info
16856d45c5
Lighting Patch
...
Fixes build errors with older OSG builds and some issues with 'shared' layout.
Bring back ambient in inventory through lightmodel instead of sun ambient, mirrors scene ambient/sunlight relationship.
Forces shaders when certain lighting methods are enabled and finalize settings.
Correctly override sun for localmap.
2021-04-16 11:55:40 -07:00
glassmancody.info
582f7b52cf
Merge remote-tracking branch 'upstream/master' into why_are_the_christmas_lights_still_up
2021-04-13 11:09:52 -07:00
glassmancody.info
7370acdf54
Merge remote-tracking branch 'upstream/master' into why_are_the_christmas_lights_still_up
2021-04-13 11:09:19 -07:00
glassmancody.info
43ac32921c
Rewrite, support different lighting methods
2021-04-13 11:09:19 -07:00
glassmancody.info
9d9074c244
Add shared UBO
2021-04-13 11:07:48 -07:00
glassmancody.info
dda735c54a
initial commit
2021-04-13 11:06:16 -07:00
Andrei Kortunov
124a33d8a3
Fix uninitialized variables
2021-04-10 10:58:00 +04:00
Alexei Dobrohotov
2fdbe9b3f6
Handle BSShader[PP/No]LightingProperty
2021-03-22 01:55:58 +03:00
psi29a
cc6f08930b
Merge branch 'alpha-meddling' into 'master'
...
Replace deprecated alpha test in shader visitor
Closes #4899
See merge request OpenMW/openmw!473
2021-03-13 08:13:19 +00:00
AnyOldName3
9be258d260
Make it possible to reinstate FFP state easily
2021-02-19 19:59:48 +00:00
psi29a
59e09cba5b
Merge branch 'boltsize' into 'master'
...
Use projectile mesh size (#5829 )
See merge request OpenMW/openmw!587
2021-02-15 08:40:30 +00:00
elsid
561628087c
Merge branch 'profiler_fix' into 'master'
...
Fix profiler glitches (#5850 )
See merge request OpenMW/openmw!605
2021-02-15 00:01:06 +00:00
AnyOldName3
4f510d85ba
Merge remote-tracking branch 'upstream/master' into alpha-meddling
2021-02-14 22:42:55 +00:00
fredzio
c4e909c29e
Silence a clang warning:
...
warning: moving a temporary object prevents copy elision [-Wpessimizing-move]
2021-02-12 19:36:03 +01:00
fredzio
bc4047d815
Update engine stats for all levels above first, not only at the second.
2021-02-12 19:03:02 +01:00
psi29a
c33b2e0100
Merge branch 'dehardcodebaseanim' into 'master'
...
Dehardcode Base_animation and improve Collada support
See merge request OpenMW/openmw!510
2021-02-10 16:29:47 +00:00
fredzio
6e969ca3fa
Use mesh collision box instead of node bounding sphere for projectile
...
size. The bounding sphere is much bigger than the mesh.
2021-02-05 22:53:45 +01:00
Alexei Dobrohotov
ab28847eaf
Merge branch 'collisionextentsandcenter' into 'master'
...
Get collision box extents and center from btBvhTriangleMeshShape
See merge request OpenMW/openmw!579
2021-02-04 23:03:43 +00:00
unelsson
303f1912a6
less debug spam
2021-02-04 23:14:52 +02:00
unelsson
d5844b0982
Use accompanying txt file for textkeys in osgAnimation formats
2021-02-04 23:14:21 +02:00
elsid
88ca4a1db6
Count navmesh cache hit rate
2021-02-04 00:35:24 +01:00
Nelsson Huotari
45fde84f4f
Use nodemasks and visitors for detecting custom collision shapes
2021-02-03 21:16:54 +02:00
Nelsson Huotari
5c32460153
Add underscore-separated node-names to reserved-list
2021-02-03 14:25:50 +02:00
Nelsson Huotari
384112746c
Add option for custom collision node with non-nif files
2021-02-03 14:25:09 +02:00
Nelsson Huotari
6c0c28c2eb
Get collision box extents and center from btBvhTriangleMeshShape
2021-02-02 21:51:46 +02:00
Nelsson Huotari
5b88d16a50
Clean-up
2021-02-02 21:09:50 +02:00
Nelsson Huotari
2162b97fef
Handle case in osgAnimation bone names
2021-02-02 17:34:02 +02:00
Nelsson Huotari
f87c45c92a
Get collision box extents and center from btBvhTriangleMeshShape
2021-01-30 16:03:02 +02:00
Nelsson Huotari
3194520dcd
Move base_anim settings to settings-default.cfg
2021-01-27 13:41:02 +02:00
Bret Curtis
b164f1aa17
Merge pull request #3023 from akortunov/grass_intsancing
...
Grass instancing
2021-01-27 12:21:24 +01:00
Frederic Chardon
7cd7fa2f08
Collect all available stats if OPENMW_OSG_STATS_FILE is set and point to
...
a valid file.
2021-01-27 08:04:33 +00:00
Andrei Kortunov
24e1dfcddc
Use default argument
2021-01-26 22:29:41 +04:00
Andrei Kortunov
14cf0ce1dc
Implement instanced groundcover
2021-01-26 22:29:41 +04:00
AnyOldName3
b6e92c9c6d
Use ShaderVisitor to skip translucent framebuffer specific stuff
2021-01-20 23:37:19 +00:00
Andrei Kortunov
f175beb304
Define template ref classes in components
2021-01-13 14:25:21 +04:00
AnyOldName3
8f4b856b44
Initial A2C implementation
2020-12-26 22:45:53 +00:00
Nelsson Huotari
8b2bf12e8f
Use bip01 for root bone name
2020-12-15 13:51:49 +02:00
Nelsson Huotari
3195716a2c
Don't force loop textkey
2020-12-15 13:49:25 +02:00
Nelsson Huotari
256aa5e71d
Use const auto&
2020-12-12 22:23:20 +02:00
Alexei Dobrohotov
15291f15d3
Make actor collision box components a struct
2020-12-11 20:07:59 +03:00
Andrei Kortunov
8084a336b5
Replace zeroes and nulls by nullptrs
2020-11-29 11:14:07 +04:00
Nelsson Huotari
55dcc6582a
Don't duplicate getFileExtension, use OpenMW's namespaces
2020-11-28 15:03:10 +02:00
Nelsson Huotari
08dcbe30b3
Earlier nullptr check
2020-11-20 19:46:08 +02:00
Nelsson Huotari
32d4344803
Don't copy osga-data in base class keyframecontroller, fix warnings.
2020-11-20 19:38:29 +02:00
Nelsson Huotari
6e77ad1f6a
OSG-Collada animation support
2020-11-19 01:11:56 +02:00
Nelsson Huotari
f78a5d795c
Separate keyframes logic to provide basis for osgAnimation integration.
2020-11-18 22:48:47 +02:00
Alexei Dobrohotov
b523574090
Remove shader visitor settings manager dependency
2020-11-09 13:59:59 +03:00
Andrei Kortunov
660df19ff7
Allow to assign custom shaders to nodes
2020-10-25 18:22:16 +04:00
Andrei Kortunov
8ca3c3b123
Mark overrided methods by override keyword
2020-10-16 22:18:54 +04:00
AnyOldName3
85b5fdee35
Discard the alpha channel of 16-bit TGAs, just like Morrowind
2020-09-12 00:20:44 +01:00
Bret Curtis
0c2fea8254
Merge pull request #2932 from elsid/replace_open_threads
...
Replace OpenThreads by std types
2020-07-04 13:11:23 +02:00
elsid
56bc462007
Make all stats fit into the window
2020-07-03 20:49:23 +02:00
elsid
40ad87bc4d
Replace OpenThreads by std types
2020-06-25 22:16:09 +02:00
Nelsson Huotari
5bc44cf2ee
Use sequenced texture units with .dae/collada
2020-06-16 14:37:06 +03:00
bzzt lost a hitlab login
26ab176389
profiling
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
17637c6575
pagerebuild on disable
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:28 +02:00
bzzt lost a hitlab login
69514dfd46
ico redundency fix + stats counter
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
bzzt lost a hitlab login
cf439581e1
comply by elsid review
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
bzzt
d684f1a78f
terrainbased objectpaging
...
Signed-off-by: Bret Curtis <psi29a@gmail.com>
2020-06-13 00:22:27 +02:00
elsid
69df6098e5
Report frame number, number of actors and objects to stats
2020-05-22 17:39:18 +02:00
Capostrophic
16f6c7b27f
Use the new option to treat TGA files as TGA 1.0
2020-04-30 09:57:58 +03:00
Bret Curtis
d77047e1cf
tab2space
2020-04-28 13:16:37 +02:00
Bret Curtis
1870b4b345
catch and set with no _found; leave empty as empty string
2020-04-27 08:02:42 +02:00
Bret Curtis
6d3f9ce307
puts an end of error spam when OSG is copmiled without Freetype support
2020-04-26 22:20:57 +02:00
Bret Curtis
8a8107e837
as it says; revert vismask and uncomplicate openmw
2020-04-20 20:57:38 +02:00