Commit graph

16737 commits

Author SHA1 Message Date
Alexander Kromm
81744d5b7a fix crash with saving null Dictionary 2020-01-06 19:49:23 +01:00
Marisa Kirisame
ebc6fcccd7 Additional CHAN_OVERLAP awareness for StartSound and ChangeSoundVolume/Pitch. 2020-01-06 19:49:21 +01:00
Christoph Oelckers
7919c86f3e - elimintated all cases from the ZScript code where channel indices and flags were combined into one parameter and removed all remnants of CHAN_PICKUP. 2020-01-06 19:49:18 +01:00
Christoph Oelckers
0d3a62f73a - fixed: A_StartSound was still masking the sound channel value for checking if it plays something. 2020-01-06 19:49:15 +01:00
Major Cooke
96153e7e7e - Fixed: Invulnerability checking for rails was done before the various THRU actor flags instead of after, meaning actors could block shots regardless of those flags. This was never intended. 2020-01-06 19:20:44 +01:00
Major Cooke
234e690f77 Added STOPRAILS actor flag.
- An actor with this flag will prevent railgun shots from penetrating further.
2020-01-06 19:20:41 +01:00
Alexander Kromm
a7e6552f0f export TMap<FString, FString> to ZScript
# Conflicts:
#	src/CMakeLists.txt
#	src/serializer.h
2020-01-06 19:18:22 +01:00
Christoph Oelckers
35379e1e5d - let a sight check that gets lost return failure.
This way these cannnot unwantedly wake up monsters.
2020-01-06 19:14:53 +01:00
Cacodemon345
d6a23065d1 Implement renderstyle and transparent actor sprite rendering in automap (#997)
* Implement renderstyle and transparent actor sprite rendering in automap

* Add "am_advspriterender" CVAR and add invisible actor checks.

* Rename cvar to `am_thingrenderstyles`

# Conflicts:
#	src/am_map.cpp
2020-01-06 19:14:51 +01:00
Rachael Alexanderson
528550c4ef - changing vid_scalefactor now always shows current scaling data unless it gets set to "1"
- vid_scaletoheight/width now works in all scaling modes, and can now also scale on custom resolutions directly

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 19:05:13 +01:00
Rachael Alexanderson
278c7db215 - fix vid_showcurrentscaling so that it works even when vid_scalemode is 2 or greater.
# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:53:47 +01:00
alexey.lysiuk
0ee488633b - fixed compilation warning reported by MSVC
src\r_videoscale.cpp(105): warning C4244: 'initializing': conversion from 'float' to 'int', possible loss of data

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:51:17 +01:00
Rachael Alexanderson
792871a380 - add 'vid_showcurrentscaling' ccmd, expanded output for 'vid_scaletowidth' and 'vid_scaletoheight' commands
- made the vid_scaleto____ commands less hacky - after finding out I could route the calls through screen->, found the correct screen-> commands, and do scaling based on the real screen dimensions
2020-01-06 18:48:49 +01:00
alexey.lysiuk
e4110ded3c - precache switch textures from ANIMATED lump
For example, SW1SKULL and SW2SKULL switches are animated in TNT: Evilution
Their frames are defined in ANIMATED lump which is old BOOM binary format
Textures other than base were not cached because the corresponding switch definitions (in ANIMDEFS lump) have one frame only and BOOM style animations were not taken into account

https://forum.zdoom.org/viewtopic.php?t=66652

# Conflicts:
#	src/p_setup.cpp
2020-01-06 18:23:31 +01:00
Rachael Alexanderson
98b00b0c79 - add vid_scalemode 6 to the menu
# Conflicts:
#	wadsrc/static/menudef.txt
2020-01-06 18:23:29 +01:00
drfrag
38c5e84b82 - Adjust minimum scaling for 320x200. 2020-01-06 18:23:28 +01:00
Rachael Alexanderson
5906701a7d - implement vid_scalemode = 6 - sets absolute minimum scaling to fill entire screen - useful for speeding up software rendering
# Conflicts:
#	src/r_videoscale.cpp

# Conflicts:
#	src/r_videoscale.cpp
2020-01-06 18:23:11 +01:00
alexey.lysiuk
b246eb20fa - upsample texture if width * height is less or equal to gl_texture_hqresize_maxinputsize squared
https://forum.zdoom.org/viewtopic.php?t=66652

# Conflicts:
#	src/textures/hires/hqresize.cpp
2020-01-06 18:05:54 +01:00
alexey.lysiuk
7dd5d3ce61 - added minimal time profiling of texture precaching
# Conflicts:
#	src/hwrenderer/textures/hw_precache.cpp

# Conflicts:
#	src/hwrenderer/textures/hw_precache.cpp
2020-01-06 18:04:54 +01:00
alexey.lysiuk
d2101bf700 - improved normalNx scaling performance by ~10%
Actual boost heavily depends on platform's memory architecture, made it a bit more cache friendly in general

# Conflicts:
#	src/textures/hires/hqresize.cpp
2020-01-06 17:53:09 +01:00
alexey.lysiuk
69d39bcd44 - move setting status bar defaults to proper location
BaseStatusBar.Init() method isn't suitable for this because it will override SBarInfoWrapper setup done in native code

https://forum.zdoom.org/viewtopic.php?t=66676
https://forum.zdoom.org/viewtopic.php?t=66339

# Conflicts:
#	wadsrc/static/zscript/ui/statusbar/statusbar.zs
2020-01-06 17:48:35 +01:00
alexey.lysiuk
47fd36d6ed - set meaningful defaults on initialization of BaseStatusBar
https://forum.zdoom.org/viewtopic.php?t=66339

# Conflicts:
#	wadsrc/static/zscript/ui/statusbar/statusbar.zs
2020-01-06 17:48:32 +01:00
Christoph Oelckers
1cacd3e3de - sound engine update.
Notable changes:
* IsSourcePlayingSomething had undefined behavior when checking unattached and unpositioned sounds.
* loading Blood RAW sounds with different sample rates but the same backing lump may not use the same hardware sound buffer.
* when playing an unpositioned sound the attenuation is irrelevant and must be ignored. This resulted in a 3D sound being started which was mostly inaudible due to lack of valid origin.
2020-01-06 15:08:32 +01:00
Marisa Kirisame
9e212c3582 Change IsSourcePlayingSomething to handle overlapping sounds. 2020-01-06 15:08:30 +01:00
Christoph Oelckers
bc1d728140 - made FSoundChan::EntChannel a full int and reordered the structure for better packing. 2020-01-06 15:08:28 +01:00
Christoph Oelckers
25288d5cea - renamed IsActorPlayingSomething to IsActorPlayingSound and made it clearscope. 2020-01-06 15:08:26 +01:00
Christoph Oelckers
35e38bc8eb - fixed inverted listener check when using compatibility options. 2020-01-06 15:08:24 +01:00
Christoph Oelckers
38aa6c4281 - the old bit masking for the channel needs to go, of course. 2020-01-06 15:08:22 +01:00
Christoph Oelckers
9c825ea090 - fixed VOC loader. Its 16 bit code did not work because it set the variable to -16 instead of 16.
- removed a few MAX calls with std::max.
2020-01-06 15:08:20 +01:00
Christoph Oelckers
c3759f389c - separated the channel number from the flags in the sound interface so that the 8 channel limit can be eliminated.
- added Marisa Kirisame's CHAN_OVERLAP flag.
- exported S_IsActorPlayingSomething to ZScript.

The sound API change required deprecating A_PlaySound and S_Sound. There are now new variants S_StartSound and A_StartSound which have two distinct parameters for channel and flags.

# Conflicts:
#	src/bbannouncer.cpp
#	src/fragglescript/t_func.cpp
#	src/g_shared/a_lightning.cpp
#	src/p_effect.cpp
#	src/p_mobj.cpp
#	src/p_switch.cpp
#	src/playsim/p_spec.cpp
#	src/sound/s_doomsound.cpp
#	src/sound/s_doomsound.h
#	wadsrc/static/zscript/base.zs

# Conflicts:
#	src/intermission/intermission.cpp
#	src/sound/s_doomsound.cpp
2020-01-06 15:00:05 +01:00
Christoph Oelckers
ba006cbc5c - sound engine update. 2020-01-06 14:50:50 +01:00
alexey.lysiuk
7277717b32 - fixed linked sound resolving
Hash indices and sound ids were used interchangeably but they are different entities

https://forum.zdoom.org/viewtopic.php?t=66618
2020-01-06 14:50:48 +01:00
Christoph Oelckers
b0d38adb25 - made the sound resolving a virtual method
This way the player sounds can be done in the proper place without infesting the core.

# Conflicts:
#	src/sound/s_doomsound.cpp
2020-01-06 14:50:46 +01:00
alexey.lysiuk
a7796b8ffb - fixed debugger visualization for FSoundID 2020-01-06 14:38:54 +01:00
alexey.lysiuk
179c4dd238 - rewrote test for occupied sound channel without special types
https://forum.zdoom.org/viewtopic.php?t=66613
2020-01-06 14:38:39 +01:00
alexey.lysiuk
3c157a4f2c - restored stopping of channel by new sound
If source actor/sector/polyobject is playing something on the selected channel, stop it before playing a new sound

https://forum.zdoom.org/viewtopic.php?t=66613
2020-01-06 14:38:37 +01:00
alexey.lysiuk
ea85cd18dd - remove redundant call to SoundRenderer::UpdateSounds()
At that point SoundEngine::StopAllChannels() did this already
2020-01-06 14:38:35 +01:00
alexey.lysiuk
da7515c0ce - moved sound engine cleanup calls to own function
https://forum.zdoom.org/viewtopic.php?t=66605#p1127457
2020-01-06 14:38:33 +01:00
alexey.lysiuk
9b2054ad4d - fixed crash when exiting before sound engine initialization
https://forum.zdoom.org/viewtopic.php?t=66605
2020-01-06 14:38:30 +01:00
alexey.lysiuk
fbe696935d - removed redundant call to S_StopAllChannels()
It's the first thing that S_ClearSoundData() does anyway
2020-01-06 14:38:28 +01:00
Magnus Norddahl
bd80a16312 Fix include error 2020-01-06 14:32:33 +01:00
Christoph Oelckers
6c4a6def62 - cleaned the includes of the sound backend code of unwanted content.
Also simplified the sound init decision making. With FMod gone there is no reason to be pedantic here. Even the check of snd_backend for the Null device could be omitted here, its only realistic use is '-nosound'.

# Conflicts:
#	src/sound/s_environment.cpp
2020-01-06 13:55:51 +01:00
Christoph Oelckers
fb42e6d92e - separated reverb data and reverb editor.
Again, isolating the part that is game independent from parts that are specific to GZDoom.
2020-01-06 13:45:37 +01:00
Christoph Oelckers
8adf2c34cd - continued refactoring on sound code.
The game independent part of the code has been mostly isolated.

# Conflicts:
#	src/sound/s_doomsound.cpp
#	src/sound/s_sound.cpp
#	src/sound/s_sound.h

# Conflicts:
#	src/sound/s_sound.cpp
2020-01-06 13:45:19 +01:00
Christoph Oelckers
89bffd17bc - reduced the dependency of the sound system on game state.
Many of the simple wrappers have been moved to a separate file and the sound source handling has been abstracted.
This is only the first phase, the work is not complete yet.
Also changed the license of the sound code to BSD after verifying that this code bears no similarity to id's original sound code anymore, save for a few function names (which are due to be refactored out anyway.)

# Conflicts:
#	src/sound/s_sound.cpp
#	src/sound/s_sound.h
2020-01-06 13:35:40 +01:00
Christoph Oelckers
3501ffd743 - started separating the sound engine code from game dependent parts.
First step: Split the header. Todo: Abstract listener and sound source specifics out of the sound engine.
2020-01-06 13:35:38 +01:00
alexey.lysiuk
2535b4ef63 - pass master volume to ZMusic library on startup
MIDI devices that don't output music through the sound system (like WinMM) ignored master volume setting

https://forum.zdoom.org/viewtopic.php?t=66510
2020-01-06 01:32:08 +01:00
alexey.lysiuk
e5bb66eb4f - removed unused code from serializer 2020-01-06 01:32:05 +01:00
Christoph Oelckers
a92f71917a - apply the ZMusic mutex a bit more finely grained.
It should only guard the critical parts, like calling Stop() but can let Update and IsPlaying method work unhindered otherwise.
2020-01-06 01:30:55 +01:00
alexey.lysiuk
80a20d1b8c - fixed playback of gzip compressed music
https://forum.zdoom.org/viewtopic.php?t=66157
2020-01-06 01:30:53 +01:00