REGISTER_NET_TEMP(globalsound)
REGISTER_NET_TEMP(playersound)
+ string GlobalSound_sample(string pair, float r);
+
#ifdef SVQC
+ /** Use new sound handling. TODO: use when sounds play correctly on clients */
+ bool autocvar_g_debug_globalsounds = false;
/**
* @param from the source entity, its position is sent
* @param gs the global sound def
{
assert(IS_PLAYER(from), eprint(from));
if (channel == MSG_ONE && !IS_REAL_CLIENT(msg_entity)) return;
+ if (!autocvar_g_debug_globalsounds) {
+ string sample = GlobalSound_sample(gs.m_globalsoundstr, r);
+ switch (channel) {
+ case MSG_ONE:
+ soundto(channel, from, chan, sample, vol, atten);
+ break;
+ case MSG_ALL:
+ _sound(from, chan, sample, vol, atten);
+ break;
+ }
+ return;
+ }
WriteHeader(channel, globalsound);
WriteByte(channel, gs.m_id);
WriteByte(channel, r * 255);
{
assert(IS_PLAYER(from), eprint(from));
if (channel == MSG_ONE && !IS_REAL_CLIENT(msg_entity)) return;
+ if (!autocvar_g_debug_globalsounds) {
+ UpdatePlayerSounds(from);
+ string s = from.(ps.m_playersoundfld);
+ string sample = GlobalSound_sample(s, r);
+ switch (channel) {
+ case MSG_ONE:
+ soundto(channel, from, chan, sample, vol, atten);
+ break;
+ case MSG_ALL:
+ _sound(from, chan, sample, vol, atten);
+ break;
+ }
+ return;
+ }
WriteHeader(channel, playersound);
WriteByte(channel, ps.m_id);
WriteByte(channel, r * 255);
}
#endif
- string GlobalSound_sample(string pair, float r);
-
#ifdef CSQC
NET_HANDLE(globalsound, bool isnew)
fclose(fh);
}
- #ifdef CSQC
+ //#ifdef CSQC
.string GetPlayerSoundSampleField(string type)
{
void ClearPlayerSounds(entity this)
{
- FOREACH(PlayerSounds, true, LAMBDA(
+ FOREACH(PlayerSounds, true, {
.string fld = it.m_playersoundfld;
if (this.(fld))
- {
- strunzone(this.(fld));
- this.(fld) = string_null;
- }
- ));
+ {
+ strunzone(this.(fld));
+ this.(fld) = string_null;
+ }
+ });
}
bool LoadPlayerSounds(entity this, string f, bool strict)
LoadPlayerSounds(this, get_model_datafilename(this.model, 0, "sounds"), true);
}
- #endif
+ //#endif
#ifdef SVQC