Refactor Audio API and remove source-positioning related code

This commit is contained in:
2021-03-23 23:23:31 +01:00
parent b8f316f9d5
commit a2b03b3fbc
5 changed files with 10 additions and 36 deletions

View File

@@ -71,8 +71,7 @@ public class DefaultAudioEngine implements AudioEngine {
throw new AppException("Audio buffer with name [%s] does not exist", name);
}
var source = new AudioSource();
source.setBuffer(buffer);
var source = new AudioSource(buffer);
sources.add(source);

View File

@@ -1,13 +1,12 @@
package com.bartlomiejpluta.base.engine.core.al.listener;
import com.bartlomiejpluta.base.api.audio.Listener;
import org.joml.Vector3f;
import org.joml.Vector3fc;
import static org.lwjgl.openal.AL10.*;
import static org.lwjgl.openal.AL11.alListener3f;
public class AudioListener implements Listener {
public class AudioListener {
public AudioListener() {
this(new Vector3f(0, 0, 0));
@@ -18,17 +17,14 @@ public class AudioListener implements Listener {
alListener3f(AL_VELOCITY, 0, 0, 0);
}
@Override
public void setPosition(Vector3fc position) {
alListener3f(AL_POSITION, position.x(), position.y(), position.z());
}
@Override
public void setSpeed(Vector3fc speed) {
alListener3f(AL_VELOCITY, speed.x(), speed.y(), speed.z());
}
@Override
public void setOrientation(Vector3fc at, Vector3fc up) {
var data = new float[6];
data[0] = at.x();

View File

@@ -9,9 +9,11 @@ import static org.lwjgl.openal.AL10.*;
import static org.lwjgl.openal.AL11.alGenSources;
public class AudioSource implements Sound, Disposable {
private final int id = alGenSources();
private final int id;
public AudioSource(AudioBuffer buffer) {
this.id = alGenSources();
public void setBuffer(AudioBuffer buffer) {
stop();
alSourcei(id, AL_BUFFER, buffer.getId());
}
@@ -20,16 +22,18 @@ public class AudioSource implements Sound, Disposable {
alSourcef(id, param, value);
}
@Override
public void setPosition(Vector3fc position) {
alSource3f(id, AL_POSITION, position.x(), position.y(), position.z());
}
@Override
public void setSpeed(Vector3fc speed) {
alSource3f(id, AL_VELOCITY, speed.x(), speed.y(), speed.z());
}
public void setRelative(boolean relative) {
alSourcei(id, AL_SOURCE_RELATIVE, relative ? AL_TRUE : AL_FALSE);
}
@Override
public void setGain(float gain) {
alSourcef(id, AL_GAIN, gain);
@@ -60,11 +64,6 @@ public class AudioSource implements Sound, Disposable {
alSourcei(id, AL_LOOPING, repeat ? AL_TRUE : AL_FALSE);
}
@Override
public void setRelative(boolean relative) {
alSourcei(id, AL_SOURCE_RELATIVE, relative ? AL_TRUE : AL_FALSE);
}
@Override
public void dispose() {
stop();