Chris Robinson
a6db96b2d8
Update sound and stream parameters
2015-12-02 16:09:24 -08:00
Chris Robinson
1ce3e7f5b9
Use a separate type for streams
...
They're basically the same, but it's to help avoid accidents with passing non-
streaming sounds to the stream functions, or vice-versa.
2015-12-02 16:09:24 -08:00
Chris Robinson
816015d6e6
Avoid inheriting from Sound for sound types
2015-12-02 16:09:24 -08:00
Alexander "Ace" Olofsson
6823298516
Different way to solve the type deduction issue
2015-11-30 17:42:25 +01:00
Alexander "Ace" Olofsson
a69e751089
Revert "Fix windows builds"
...
This reverts commit b085c09f86
.
2015-11-30 17:38:46 +01:00
Alexander "Ace" Olofsson
b085c09f86
Fix windows builds
...
Can't instantiate a container (at least with MSVC) without knowing the exact size of the object being stored, forward-declares only work with pointers.
I couldn't see a simple way to remove the forward declare, so pointers and memory management it is.
2015-11-30 13:36:15 +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
f3c035907c
Rename Sound::update to Sound::applyUpdates
2015-11-27 04:55:17 -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
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
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
Chris Robinson
04f885d8cc
Rename mReferences to mUses
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
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
574c1923fe
Clear unused buffers after unloading them all
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
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
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
f08cfa19ea
Fix SoundManager::isPlaying to consider multiple entries with the same Ptr/id
...
Now it returns true if *any* sounds matching the given Ptr and id are playing. The previous behaviour was causing problems with "zombie" sounds (sounds that have finished playing, but weren't removed from the map yet) making the isPlaying method return false even though there's another legitimately playing sound in the map.
2015-11-19 01:06:51 +01:00
dteviot
77a1d947cc
extracted MWMechanics::getPlayer()
2015-08-21 21:12:39 +12:00
scrawl
22f01b1232
Merge branch 'master' of https://github.com/OpenMW/openmw into osg
...
Conflicts:
apps/launcher/graphicspage.cpp
apps/opencs/editor.cpp
apps/opencs/model/doc/document.cpp
apps/opencs/view/render/cell.cpp
apps/opencs/view/render/mousestate.cpp
apps/opencs/view/render/textoverlay.cpp
apps/opencs/view/render/worldspacewidget.cpp
apps/openmw/mwclass/creature.cpp
apps/openmw/mwclass/npc.cpp
apps/openmw/mwgui/inventorywindow.cpp
apps/openmw/mwgui/loadingscreen.cpp
apps/openmw/mwgui/mapwindow.cpp
apps/openmw/mwgui/pickpocketitemmodel.cpp
apps/openmw/mwgui/waitdialog.cpp
apps/openmw/mwmechanics/combat.cpp
apps/openmw/mwmechanics/mechanicsmanagerimp.cpp
apps/openmw/mwrender/globalmap.cpp
apps/openmw/mwworld/physicssystem.cpp
apps/openmw/mwworld/refdata.cpp
apps/openmw/mwworld/scene.cpp
apps/openmw/mwworld/worldimp.cpp
components/sdlutil/sdlinputwrapper.cpp
extern/shiny/Main/Factory.cpp
extern/shiny/Main/MaterialInstance.cpp
extern/shiny/Main/Platform.cpp
extern/shiny/Main/ShaderSet.cpp
2015-05-23 20:33:44 +02:00
Rohit Nirmal
396fba7fa9
Silence -Wreorder warnings, and remove -Wno-reorder.
2015-05-21 22:46:44 -05:00
scrawl
7a3bc69df7
Readded sound listener
2015-05-12 19:02:56 +02:00
scrawl
a59940a2c7
Move MyGUI platform to components
2015-05-01 01:44:21 +02:00
scrawl
8c810e3620
Move rng to components
2015-04-22 17:58:55 +02:00
scrawl
8c7c89a4aa
Port SoundManager
2015-04-13 22:48:37 +02:00