1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-16 08:49:55 +00:00
Commit graph

8624 commits

Author SHA1 Message Date
scrawl
f962ce0bbe Don't link against unnecessary OSG libraries 2015-11-29 19:56:43 +01:00
scrawl
cd4a1ffd16 Fast version of dynamic_cast for MWClass 2015-11-29 14:26:52 +01:00
Marc Zinnschlag
20a076bdba Merge remote-tracking branch 'origin/master' 2015-11-29 09:34:41 +01:00
Marc Zinnschlag
6df626ad71 Merge remote-tracking branch 'scrawl/crashcatcher' 2015-11-29 09:23:14 +01:00
scrawl
db71634a2d Allow replacing of interactive message boxes (Fixes #3040) 2015-11-28 19:15:54 +01:00
scrawl
c9bfe01120 Fix applying of weather changes after serving a jail sentence 2015-11-28 17:57:35 +01:00
Marc Zinnschlag
6facce9d13 Merge remote-tracking branch 'origin/master' 2015-11-28 10:02:37 +01:00
Marc Zinnschlag
ff5582e318 Merge remote-tracking branch 'scrawl/ltex' 2015-11-28 09:51:57 +01:00
scrawl
a1fa1b2b2e Don't attempt to open an empty texture 2015-11-28 06:01:24 +01:00
scrawl
d97dda05c9 Don't attempt to play unset weather sounds 2015-11-28 05:55:36 +01:00
scrawl
93a76e2f56 Revert debce0fb80, use a sleep() to work around the X11 bug
Problem with debce0fb80 is the crashed process won't be killed until the user accepts the message box, and it's harder to get to the message box when the window is in full screen or the cursor is locked.
2015-11-28 05:42:05 +01:00
scrawl
debce0fb80 crashcatcher: show the message box before killing crashed process
This change fixes a random X server lock-up that I get about 1 in 10 times when a crash is caught. I'm presuming it's an X server bug since faulty applications shouldn't be able to crash or freeze the X server under any circumstances.
2015-11-28 05:14:30 +01:00
scrawl
35fa1f5865 Not found Land Textures are no longer a fatal error (Bug #3037)
Log warning message and show the default texture when encountering invalid ESM::LandTexture references.
2015-11-27 21:57:24 +01:00
scrawl
4687c4baad Do not assert() for invalid land data in plugins (Bug #3037)
The resizing of LTEX store to the correct number of plugins was done in the load() method, but the load method won't be called if a plugin contains LAND records but doesn't contain LTEX records. For such plugins the Store<ESM::LandTexture>::search() function would then fail an assertion.
2015-11-27 21:57:15 +01:00
scrawl
5b8fd79b4b Fix crash when exception is thrown in startNewGame() 2015-11-27 21:38:57 +01:00
scrawl
89783e047b Fix typo 2015-11-27 19:40:31 +01:00
Chris Robinson
4ee409af84 Load loudness data asynchronously
Currently abuses the output audio streams' background processing thread to do
the work, since there's no generalized threaded processing mechanism.
2015-11-27 09:47:14 -08:00
Chris Robinson
0f05ccf72a Use a non-recursive mutex and properly end the streaming thrread 2015-11-27 08:13:23 -08:00
Chris Robinson
b5ed2e65f8 Add a method to get the sound stream delay
This helps avoid a lock during the movie player's read method, since it needs
to sync with the current playback position which would otherwise need to get
the movie decoder's current position.
2015-11-27 06:01:50 -08:00
Chris Robinson
f3c035907c Rename Sound::update to Sound::applyUpdates 2015-11-27 04:55:17 -08:00
Chris Robinson
9568aa6a84 Use a condition variable to wake up the audio stream thread
This should make starting streams a bit more responsive, and allows us to do
more in it that really shouldn't wait for its next wake up.
2015-11-27 04:30:09 -08:00
Chris Robinson
4a078725d4 Play player voices locally 2015-11-27 02:57:44 -08:00
Chris Robinson
449eca4fb4 Properly mark streams as 2D or 3D 2015-11-27 02:36:33 -08:00
Chris Robinson
21bb2e9314 Use a deque for loudness buffers with a map lookup
Similar to Sound_Buffer, this allows individual Sound_Loudness objects to
retain a constant pointer when new ones are inserted on to the end.
2015-11-27 02:01:18 -08:00
Chris Robinson
5f8a09df97 Play player sounds (except footsteps) local to the listener 2015-11-27 02:01:18 -08:00
Chris Robinson
82f3651f81 Treat the sound offset as the offset in seconds 2015-11-27 02:01:17 -08:00
Chris Robinson
8b7587f9a6 Track whether a sound is 3D 2015-11-27 02:01:17 -08:00
Chris Robinson
fc912b135f Avoid unnecessarily friending classes 2015-11-27 02:01:17 -08:00
Marc Zinnschlag
7cc950ed64 Merge remote-tracking branch 'origin/master' 2015-11-27 10:34:22 +01:00
Marc Zinnschlag
b3532b6274 Merge remote-tracking branch 'scrawl/spells' 2015-11-27 10:21:17 +01:00
scrawl
44dd62067e Remove some unnecessary per-frame store searches 2015-11-27 02:13:56 +01:00
scrawl
783594033a Optimize MWMechanics::Spells
Use pointers as map keys instead of string IDs. Resolves a nasty performance bottleneck on functions like hasCommonDisease() that previously had to look up all contained spells from the ESM store on every call. hasCommonDisease() is called hundreds of times per frame by the AI target update since it's used to calculate target disposition.

The total cost of hasCommonDisease() was 2.7% of the frame loop, now it's negligible.
2015-11-27 01:07:15 +01:00
scrawl
fbee32729a Cache CellId
ESM::Cell::getCellId() was allocating a string on every call. This caused functions dealing with cellIds to be unnecessarily expensive.

For example, World::moveObject spent almost as much time comparing CellIds as it did updating Bullet's AABB after the move. OpGetDistance was by far the most expensive script instruction because it has to compare cellIds.

The total cost of getCellId() relative to the frame loop was about 0.3%.
2015-11-26 23:56:32 +01:00
scrawl
984c455027 Fix Show Owned option affecting tooltips that are not objects (Fixes #3036) 2015-11-26 18:23:39 +01:00
scrawl
bcca1beb69 Merge branch 'configwriter' into HEAD 2015-11-26 17:17:26 +01:00
scrawl
d894d54e41 Improve path conversions 2015-11-26 17:15:28 +01:00
Chris Robinson
d4238a6d91 Add config options for the sound buffer cache size
The cache size is specified with a min/max range, intended to avoid constant
unloading once the limit is reached. This way, buffers can be unloaded down to
a reasonable mimimum, allowing some more buffers to be subsequently loaded
without causing more unloading.
2015-11-26 02:13:37 -08:00
Chris Robinson
8715add72f Store sound buffers in a deque that's filled in as needed
A deque allows existing Sound_Buffer references to remain valid as long as new
ones are back-inserted. These references can be used instead of indices.
2015-11-26 01:26:33 -08:00
cfcohen
7605912ece Merge branch 'master' of https://github.com/OpenMW/openmw into config_writer_changes 2015-11-26 00:57:21 -05:00
scrawl
8a3ec14bc6 Revert "Merge remote-tracking branch 'sandstranger/opengles'"
This reverts commit cc9cab6fd1, reversing
changes made to da856eed95.
2015-11-25 19:22:48 +01:00
Marc Zinnschlag
ef68e2aec4 Merge remote-tracking branch 'origin/master' 2015-11-25 19:18:17 +01:00
cfcohen
67c4b17581 Commit files that I thought wre in the previous commit. :-[ I'm
accustomed to the hg behavior of commiting all modified files by
default.
2015-11-25 13:17:03 -05:00
Marc Zinnschlag
cc9cab6fd1 Merge remote-tracking branch 'sandstranger/opengles' 2015-11-25 19:15:53 +01:00
Chris Robinson
8f08ca9cba Revert "Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting"
This reverts commit 0d4fea896c.
2015-11-25 06:06:27 -08:00
Chris Robinson
04f885d8cc Rename mReferences to mUses 2015-11-25 04:24:27 -08:00
Chris Robinson
0d4fea896c Avoid unsafe sizeof(x)/sizeof(x[0]) constructs for array counting 2015-11-25 04:24:27 -08:00
Chris Robinson
a1bdb544db Avoid an unnecessary string copy 2015-11-25 04:24:27 -08:00
Chris Robinson
aac903484c Remove a really unnecessary method 2015-11-25 04:24:26 -08:00
Chris Robinson
73448c72f6 Replace Play_NoTrack with playManualSound3D, and rename the latter 2015-11-25 04:24:26 -08:00
Chris Robinson
caae305ddd Use a sorted list for unused buffers
Helps ensure the buffers being unloaded due to cache limits are not likely to
be needed anytime soon.
2015-11-25 04:24:26 -08:00
Chris Robinson
669b7a2295 Batch update changes together, when possible
Certain OpenAL implementations, including Rapture3D, Creative's hardware
drivers, and more recent versions of OpenAL Soft, can batch together changes so
that they all occur at once, avoiding potential discontinuities with one sound
being changed before another, or the listeenr being changed before sounds are.

On other implementaitons, this is a no-op and maintains existing behavior.
2015-11-25 04:24:26 -08:00
Chris Robinson
ea70b0baee Don't store the buffer in the sound struct 2015-11-25 04:24:25 -08:00
Chris Robinson
fd7d58fe7e Reset the sound handle back to null after unloading 2015-11-25 04:24:25 -08:00
Chris Robinson
4801661b34 Stop all sounds of the given id 2015-11-25 04:24:25 -08:00
Chris Robinson
8a69f676ec Remove some duplicate code 2015-11-25 04:24:25 -08:00
Chris Robinson
45628316f8 Remove an unnecessary check 2015-11-25 04:24:25 -08:00
Chris Robinson
574c1923fe Clear unused buffers after unloading them all 2015-11-25 04:24:25 -08:00
Chris Robinson
5ad772c3b3 Fix streaming sound time 2015-11-25 04:24:25 -08:00
Chris Robinson
3ce6aee98b Return a decoder from the loadVoice function 2015-11-25 04:24:25 -08:00
Chris Robinson
24f8c78fca Store sound buffer references by index instead of string 2015-11-25 04:24:24 -08:00
Chris Robinson
f7218f5a25 Use proper mutex mechanisms and don't check al errors in the stream thread 2015-11-25 04:24:24 -08:00
Chris Robinson
f9e18cd966 Prepare all Sound_Buffer objects when one is needed
This simply sets up the Sound record data to be used by the sound output. The
actual audio buffers, stored in the Sound_Handle, are still loaded on-demand.
2015-11-25 04:24:24 -08:00
Chris Robinson
6c3953766e Use separate lists for the sound name and its buffer
This should make sound lookup a bit more efficient, especially when an integer
ID can be used.
2015-11-25 04:24:24 -08:00
Chris Robinson
fbfcc4050f Stream voice clips
Voices tend to be a bit long, and not individually replayed often. So it's
better to stream them instead of loading theminto a sound buffer. The loudness
data is very small, though, so that can be kept buffered indefinitely.
2015-11-25 04:24:24 -08:00
Chris Robinson
eee6a19e31 Add a method to stream sounds in 3D 2015-11-25 04:24:24 -08:00
Chris Robinson
f1a1dc8408 Pass relevant sound parameters to the OpenAL_SoundStream constructor 2015-11-25 04:24:24 -08:00
Chris Robinson
83721092f2 Refactor the audio streaming code to be a bit saner 2015-11-25 04:24:23 -08:00
Chris Robinson
16f72886e9 Use separate lists for openal sounds and streams 2015-11-25 04:24:23 -08:00
Chris Robinson
0f33f41d8d Actually unload sounds when running over 2015-11-25 04:24:23 -08:00
Chris Robinson
22a6811425 Limit the sound buffer cache to 15MB 2015-11-25 04:24:23 -08:00
Chris Robinson
0b2747098c Keep track of unused sound buffers 2015-11-25 04:24:23 -08:00
Chris Robinson
4073495070 Add some missing sound handling 2015-11-25 04:24:23 -08:00
Chris Robinson
e362896817 Combine some duplicate code 2015-11-25 04:24:23 -08:00
Chris Robinson
febc7b510a Remove an unneeded method 2015-11-25 04:24:23 -08:00
Chris Robinson
3fdc3c4ea9 Use a separate map for say sounds
Also restores lip movement
2015-11-25 04:24:22 -08:00
Chris Robinson
9d0018e1bc Reorder active sound data to make lookup by Ptr better 2015-11-25 04:24:22 -08:00
Chris Robinson
495e138907 Load sound loudness and store it with the Sound_Buffer
Still not used for say yet, though
2015-11-25 04:24:22 -08:00
Chris Robinson
f4c22ec49e Hold a separate list for voice sound buffers
This fixes say. Ideally voices would be streamed, but the loudness/"lip" buffer
extraction should be separated from the buffer loading code.
2015-11-25 04:24:22 -08:00
Chris Robinson
4571218827 Load the sound as needed and pass it directly to the play methods
This breaks say sounds, loudness handling, and the cache limit. Fixes are
forthcoming.
2015-11-25 04:24:22 -08:00
Chris Robinson
e2beefd8b5 Store info calculated from the ESM::Sound record 2015-11-25 04:24:22 -08:00
scrawl
edfcb45ad7 Fix crash when onPcEquip script removes the equipped item (Fixes #3016) 2015-11-24 22:55:17 +01:00
sandstranger
69acacefff openmw building on Android with Opengl es 2015-11-23 20:28:35 +03:00
Marc Zinnschlag
da856eed95 Merge remote-tracking branch 'origin/master' 2015-11-23 18:17:36 +01:00
scrawl
3fe38e3556 Remove unused setting 2015-11-23 03:26:21 +01:00
scrawl
71cd57a3b5 Optimize World::getTimeStamp
World::getTimeStamp was searching through the globals store on every call. Not a big issue, but slow enough to show up in the profiler.
2015-11-22 23:55:21 +01:00
scrawl
62169a7039 Use a single-precision PositionAttitudeTransform in speed critical places 2015-11-22 19:54:26 +01:00
cfcohen
b507d5da5d One more tooltip fix. This one in the review dialog with Socucius Ergalla. 2015-11-22 00:50:36 -05:00
Marc Zinnschlag
8da04bf76f Merge remote-tracking branch 'scrawl/master' 2015-11-21 09:15:46 +01:00
scrawl
1b1d9a7a9c Fixed another tooltip 2015-11-21 02:05:27 +01:00
cfcohen
cf4f3d9ebc Correct tooltip for Magicka in stats window. 2015-11-20 14:57:42 -05:00
scrawl
43de13fa99 Do not allow resting on lava 2015-11-20 19:22:31 +01:00
scrawl
2d302aef99 Implement stayOutside script variable 2015-11-20 05:05:43 +01:00
scrawl
27617468c8 Fix the collision shape not updating when scaling an object via script 2015-11-20 03:29:58 +01:00
scrawl
5f143dee2d Fix lighting incontinuity at nightfall and sunrise 2015-11-20 03:22:35 +01:00
scrawl
61314e1db1 Fix bounding box of bullet debug drawer 2015-11-20 03:04:03 +01:00
scrawl
706b1d4c28 Disable culling of ClipNode 2015-11-20 02:22:37 +01:00
scrawl
cbf344663f animateCollisionShape checks if the shape is really animated 2015-11-20 00:17:07 +01:00
scrawl
894477849a Store animated collision objects in a separate container 2015-11-19 23:33:08 +01:00
scrawl
8c268f239e Set the object node scale before inserting model
This fixes initWorldSpaceParticles not taking object scale into account. Still not taking into account object rotation or node animations. Ideally the initWorldSpaceParticles needs to run in an updateCallback.
2015-11-19 15:57:12 +01:00
scrawl
ccc721ba3f Print the OpenMW version to the logfile 2015-11-19 02:56:42 +01:00