]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/effects/qc/globalsound.qc
Merge branch 'master' into Mario/entrap_nade
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / effects / qc / globalsound.qc
index ae1ec74853fdecf3d2224ffbbf025ef2169eed44..a2653238e7ebea30ad5a22f26203adf9156c66e1 100644 (file)
        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
                 * @param r a random number in 0..1
                 */
-               void globalsound(int channel, entity from, entity gs, float r, int chan, float vol, float atten)
+               void globalsound(int channel, entity from, entity gs, float r, int chan, float _vol, float _atten)
                {
-                       assert(IS_PLAYER(from), eprint(from));
+                       //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);
+                                               soundto(channel, from, chan, sample, _vol, _atten);
                                                break;
                                        case MSG_ALL:
-                                               _sound(from, chan, sample, vol, atten);
+                                               _sound(from, chan, sample, _vol, _atten);
                                                break;
                                }
                                return;
@@ -43,8 +41,8 @@
                        WriteByte(channel, r * 255);
                        WriteByte(channel, etof(from));
                        WriteByte(channel, chan);
-                       WriteByte(channel, floor(vol * 255));
-                       WriteByte(channel, floor(atten * 64));
+                       WriteByte(channel, floor(_vol * 255));
+                       WriteByte(channel, floor(_atten * 64));
                        entcs_force_origin(from);
                        vector o = from.origin + 0.5 * (from.mins + from.maxs);
                        WriteCoord(channel, o.x);
                * @param ps the player sound def
                * @param r a random number in 0..1
                */
-               void playersound(int channel, entity from, entity ps, float r, int chan, float vol, float atten)
+               void playersound(int channel, entity from, entity ps, float r, int chan, float _vol, float _atten)
                {
-                       assert(IS_PLAYER(from), eprint(from));
+                       //assert(IS_PLAYER(from), eprint(from));
                        if (channel == MSG_ONE && !IS_REAL_CLIENT(msg_entity)) return;
                        if (!autocvar_g_debug_globalsounds) {
-                               UpdatePlayerSounds(from);
+                               //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);
+                                               soundto(channel, from, chan, sample, _vol, _atten);
                                                break;
                                        case MSG_ALL:
-                                               _sound(from, chan, sample, vol, atten);
+                                               _sound(from, chan, sample, _vol, _atten);
                                                break;
                                }
                                return;
@@ -80,8 +78,8 @@
                        WriteByte(channel, r * 255);
                        WriteByte(channel, etof(from));
                        WriteByte(channel, chan);
-                       WriteByte(channel, floor(vol * 255));
-                       WriteByte(channel, floor(atten * 64));
+                       WriteByte(channel, floor(_vol * 255));
+                       WriteByte(channel, floor(_atten * 64));
                        entcs_force_origin(from);
                        vector o = from.origin + 0.5 * (from.mins + from.maxs);
                        WriteCoord(channel, o.x);
                        o.y = ReadCoord();
                        o.z = ReadCoord();
                        // TODO: is this really what we want to be doing? Footsteps that follow the player at head height?
-                       if (who == player_currententnum) e = findfloat(world, entnum, who);  // play at camera position for full volume
+                       if (who == player_currententnum) e = findfloat(NULL, entnum, who);  // play at camera position for full volume
                        else if (e) e.origin = o;
                        if (e)
                        {
                        o.x = ReadCoord();
                        o.y = ReadCoord();
                        o.z = ReadCoord();
-                       if (who == player_currententnum) e = findfloat(world, entnum, who);  // play at camera position for full volume
+                       if (who == player_currententnum) e = findfloat(NULL, entnum, who);  // play at camera position for full volume
                        else if (e) e.origin = o;
                        if (e)
                        {
                return NULL;
        }
 
-       string allvoicesamples;
-       STATIC_INIT(allvoicesamples)
-       {
-               FOREACH(PlayerSounds, it.instanceOfVoiceMessage, allvoicesamples = strcat(allvoicesamples, " ", it.m_playersoundstr));
-               allvoicesamples = strzone(substring(allvoicesamples, 1, -1));
-       }
-
        .string _GetPlayerSoundSampleField(string type, bool voice)
        {
                GetPlayerSoundSampleField_notFound = false;
                        this.skin_for_playersound = this.skin;
                        ClearPlayerSounds(this);
                        LoadPlayerSounds(this, "sound/player/default.sounds", true);
-                       if (this.model == "null" || autocvar_g_debug_defaultsounds) return;
+                       if (this.model == "null"
+                       #ifdef SVQC
+                           && autocvar_g_debug_globalsounds
+                       #endif
+                        ) return;
+                       if (autocvar_g_debug_defaultsounds) return;
                        if (LoadPlayerSounds(this, get_model_datafilename(this.model, this.skin, "sounds"), false)) return;
                        LoadPlayerSounds(this, get_model_datafilename(this.model, 0, "sounds"), true);
                }