Sound In Code: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Extension to example of EmitSound function to show how to get the position override parameter to actually affect the position)
m (Extra clarification to EmitAmbientSound to show that sounds produced via this method are unspatialised)
Line 11: Line 11:


== Play sounds anywhere ==
== Play sounds anywhere ==
To play a sound on the client, use the following code:
To play a sound on the client and without spatialisation (i.e. as an "ambient" sound), use the following code:


<source lang="cpp">enginesound->EmitAmbientSound( "link/to/soundfile", 1.0f );</source>
<source lang="cpp">enginesound->EmitAmbientSound( "link/to/soundfile", 1.0f );</source>

Revision as of 04:04, 23 September 2021

Template:Otherlang2

Emit sound from entity

Use EmitSound to emit a sound from a base entity:

EmitSound( "soundscript.file" );

The sound will follow whichever entity it is assigned to, based on the entity index provided to EmitSound. If an entity index is provided, the provided position overload will not affect the position of the sound; to override this behaviour and have the sound play at the desired point in space, pass in -1 as the entity index:

EmitSound( filter, -1, "Weapon_ProxyBomb.LeadIn", &soundPosition );

See the CSoundEmitterSystem class in SoundEmitterSystem.cpp for overloads and implementation details.

Play sounds anywhere

To play a sound on the client and without spatialisation (i.e. as an "ambient" sound), use the following code:

enginesound->EmitAmbientSound( "link/to/soundfile", 1.0f );

You may need to include #include "engine/ienginesound.h" in order to get access to the interface.

Play sounds via VGUI interface

#include "vgui/ISurface.h"
#include "vgui_controls/Controls.h"

using namespace vgui;

surface()->PlaySound( "common/talk.wav" ); // Starts from the 'sound' folder