|
|
|
package mightypork.gamecore.backends.lwjgl.audio;
|
|
|
|
|
|
|
|
|
|
|
|
import java.nio.FloatBuffer;
|
|
|
|
|
|
|
|
import mightypork.gamecore.audio.AudioModule;
|
|
|
|
import mightypork.gamecore.audio.DeferredAudio;
|
|
|
|
import mightypork.gamecore.backends.lwjgl.BufferHelper;
|
|
|
|
import mightypork.utils.math.constraints.vect.Vect;
|
|
|
|
import mightypork.utils.math.constraints.vect.var.VectVar;
|
|
|
|
|
|
|
|
import org.lwjgl.openal.AL;
|
|
|
|
import org.lwjgl.openal.AL10;
|
|
|
|
import org.newdawn.slick.openal.SoundStore;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* SlickUtil-based audio module
|
|
|
|
*
|
|
|
|
* @author Ondřej Hruška (MightyPork)
|
|
|
|
*/
|
|
|
|
public class SlickAudioModule extends AudioModule {
|
|
|
|
|
|
|
|
private final VectVar listenerPos = Vect.makeVar();
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void init()
|
|
|
|
{
|
|
|
|
SoundStore.get().setMaxSources(256);
|
|
|
|
SoundStore.get().init();
|
|
|
|
setListenerPos(Vect.ZERO);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void setListenerPos(Vect pos)
|
|
|
|
{
|
|
|
|
listenerPos.setTo(pos);
|
|
|
|
final FloatBuffer buf3 = BufferHelper.alloc(3);
|
|
|
|
final FloatBuffer buf6 = BufferHelper.alloc(6);
|
|
|
|
buf3.clear();
|
|
|
|
BufferHelper.fill(buf3, (float) pos.x(), (float) pos.y(), (float) pos.z());
|
|
|
|
AL10.alListener(AL10.AL_POSITION, buf3);
|
|
|
|
buf3.clear();
|
|
|
|
BufferHelper.fill(buf3, 0, 0, 0);
|
|
|
|
AL10.alListener(AL10.AL_VELOCITY, buf3);
|
|
|
|
buf6.clear();
|
|
|
|
BufferHelper.fill(buf6, 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f);
|
|
|
|
AL10.alListener(AL10.AL_ORIENTATION, buf6);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Vect getListenerPos()
|
|
|
|
{
|
|
|
|
return listenerPos;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void deinitSoundSystem()
|
|
|
|
{
|
|
|
|
SoundStore.get().clear();
|
|
|
|
AL.destroy();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected DeferredAudio doCreateResource(String res)
|
|
|
|
{
|
|
|
|
return new SlickAudio(res);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|