mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 19:20:46 +00:00
- sound is finally playing, but the volume needs balancing and positioning doesn't seem to be 100% correct.
This commit is contained in:
parent
4f9eda189a
commit
22ef66209d
3 changed files with 70 additions and 5 deletions
|
@ -35,14 +35,15 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#endif
|
||||
|
||||
#include "s_soundinternal.h"
|
||||
#include "m_swap.h"
|
||||
#include "superfasthash.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#undef DrawText
|
||||
#endif
|
||||
|
||||
#ifdef DEFAULT_PITCH // undefine garbage from Windows.h
|
||||
#undef DEFAULT_PITCH
|
||||
#endif
|
||||
|
@ -1706,3 +1707,65 @@ void SoundEngine::AddRandomSound(int Owner, TArray<uint32_t> list)
|
|||
S_sfx[Owner].bRandomHeader = true;
|
||||
S_sfx[Owner].NearLimit = -1;
|
||||
}
|
||||
|
||||
#include "basics.h"
|
||||
#include "stats.h"
|
||||
#include "v_text.h"
|
||||
//==========================================================================
|
||||
//
|
||||
// S_NoiseDebug
|
||||
//
|
||||
// [RH] Print sound debug info. Called by status bar.
|
||||
//==========================================================================
|
||||
|
||||
FString SoundEngine::NoiseDebug()
|
||||
{
|
||||
FVector3 listener;
|
||||
FVector3 origin;
|
||||
|
||||
FString out = "*** SOUND DEBUG INFO ***\n"
|
||||
"x y z vol dist chan pri flags aud pos name\n";
|
||||
|
||||
|
||||
if (Channels == nullptr)
|
||||
{
|
||||
return out;
|
||||
}
|
||||
|
||||
|
||||
listener = this->listener.position;
|
||||
int ch = 0;
|
||||
for (auto chan = Channels; chan; chan = chan->NextChan)
|
||||
{
|
||||
if (!(chan->ChanFlags & CHAN_IS3D))
|
||||
{
|
||||
out += "--- --- --- --- ";
|
||||
}
|
||||
else
|
||||
{
|
||||
CalcPosVel(chan, &origin, nullptr);
|
||||
out.AppendFormat(TEXTCOLOR_GOLD "%5.0f | %5.0f | %5.0f | %5.0f ", origin.X, origin.Z, origin.Y, (origin - listener).Length());
|
||||
}
|
||||
out.AppendFormat("%-.2g %-4d %-4d %s3%sZ%sU%sM%sN%sA%sL%sE%sV" TEXTCOLOR_GOLD " %-5.4f %-4u %s\n", chan->Volume, chan->EntChannel, chan->Priority,
|
||||
(chan->ChanFlags & CHAN_IS3D) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_LISTENERZ) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_UI) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_MAYBE_LOCAL) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_NOPAUSE) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_AREA) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_LOOP) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_EVICTED) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
(chan->ChanFlags & CHAN_VIRTUAL) ? TEXTCOLOR_GREEN : TEXTCOLOR_BLACK,
|
||||
GSnd->GetAudibility(chan), GSnd->GetPosition(chan), S_sfx[chan->SoundID].name.GetChars());
|
||||
ch++;
|
||||
}
|
||||
out.AppendFormat("%d channels\n", ch);
|
||||
return out;
|
||||
}
|
||||
|
||||
ADD_STAT(sounddebug)
|
||||
{
|
||||
return soundEngine->NoiseDebug();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -345,6 +345,7 @@ public:
|
|||
void Reset();
|
||||
void MarkUsed(int num);
|
||||
void CacheMarkedSounds();
|
||||
FString NoiseDebug();
|
||||
TArray<FSoundChan*> AllActiveChannels();
|
||||
|
||||
void MarkAllUnused()
|
||||
|
|
|
@ -155,6 +155,7 @@ int S_DefineSound(unsigned index, const char *filename, int minpitch, int maxpit
|
|||
sfx->Volume = volume;
|
||||
sfx->NearLimit = 4;
|
||||
sfx->bTentative = false;
|
||||
sfx->name = filename;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -354,7 +355,7 @@ void S_Update(void)
|
|||
{
|
||||
listener.angle = (float)ca * pi::pi() / 2048; // todo: Check value range for angle.
|
||||
listener.velocity.Zero();
|
||||
listener.position = { c->x / 16.f, c->z / 256.f, c->y / 16.f };
|
||||
listener.position = { c->x / 16.f, c->z / 256.f, -c->y / 16.f };
|
||||
listener.underwater = false;
|
||||
// This should probably use a real environment instead of the pitch hacking in S_PlaySound3D.
|
||||
// listenactor->waterlevel == 3;
|
||||
|
|
Loading…
Reference in a new issue