From 69ca8a90af46d7e8113e7e7f29626ef7813295cf Mon Sep 17 00:00:00 2001 From: Nishi Date: Thu, 28 May 2026 14:23:39 +0900 Subject: [PATCH] fix --- client/main.cc | 6 +++++- engine/src/mixer.cc | 11 ++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/client/main.cc b/client/main.cc index 764e08b..09394ec 100644 --- a/client/main.cc +++ b/client/main.cc @@ -21,8 +21,12 @@ int main(){ drv = new fishbone::SoundDriver(); - snd = drv->mixer.open("music.mod"); + snd = drv->mixer.open("shanghai.mp3"); snd->setLoop(true); + snd->position[0] = -1; + snd->position[1] = 0; + snd->position[2] = 0; + snd->is3d = true; snd->resume(); while(!quit); diff --git a/engine/src/mixer.cc b/engine/src/mixer.cc index 215be28..fb6f461 100644 --- a/engine/src/mixer.cc +++ b/engine/src/mixer.cc @@ -42,17 +42,17 @@ void fishbone::Mixer::read(short* buffer, size_t frames) { float angle, v; float d; float lf, rf; - + for(int j = 0; j < 3; j++) r[j] = this->sounds[i]->position[j] - this->position[j]; angle = atan2(r[2], r[0]); v = cos(angle); + d = sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); + lf = 1.0 - v; rf = 1.0 + v; - d = sqrt(r[0] * r[0] + r[1] * r[1] + r[2] * r[2]); - la = 1.0 / (1.0 + lf + d * d); ra = 1.0 / (1.0 + rf + d * d); } @@ -83,6 +83,11 @@ void fishbone::Mixer::read(short* buffer, size_t frames) { r = req[(j * this->sounds[i]->rate / fishbone::Mixer::rate) * 2 + 1]; } + if(this->sounds[i]->is3d){ + l = (l + r) / 2; + r = l; + } + tmp[2 * j + 0] += l / 32767.0 * la * this->sounds[i]->volume; tmp[2 * j + 1] += r / 32767.0 * ra * this->sounds[i]->volume; }