- The underwater effect is now... um... a decent one.
- Updated flibitEFX with an EFXFilter for underwater. - Updated the LWJGL audio rendering to use EFX filters.
This commit is contained in:
Binary file not shown.
@@ -291,7 +291,7 @@ public class Channel {
|
|||||||
//stack variable
|
//stack variable
|
||||||
private static float[] entityOrigin = {0, 0, 0};
|
private static float[] entityOrigin = {0, 0, 0};
|
||||||
|
|
||||||
static void playAllSounds(FloatBuffer listenerOrigin, int currentEffectIndex) {
|
static void playAllSounds(FloatBuffer listenerOrigin, int currentEffectIndex, int currentFilterIndex) {
|
||||||
FloatBuffer sourceOrigin = sourceOriginBuffer;
|
FloatBuffer sourceOrigin = sourceOriginBuffer;
|
||||||
Channel ch;
|
Channel ch;
|
||||||
int sourceId;
|
int sourceId;
|
||||||
@@ -326,6 +326,7 @@ public class Channel {
|
|||||||
AL10.alSourcef (sourceId, AL10.AL_ROLLOFF_FACTOR, ch.rolloff);
|
AL10.alSourcef (sourceId, AL10.AL_ROLLOFF_FACTOR, ch.rolloff);
|
||||||
AL10.alSource3f(sourceId, AL10.AL_POSITION, sourceOrigin.get(), sourceOrigin.get(), sourceOrigin.get());
|
AL10.alSource3f(sourceId, AL10.AL_POSITION, sourceOrigin.get(), sourceOrigin.get(), sourceOrigin.get());
|
||||||
AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, currentEffectIndex, 0, EFX10.AL_FILTER_NULL);
|
AL11.alSource3i(sourceId, EFX10.AL_AUXILIARY_SEND_FILTER, currentEffectIndex, 0, EFX10.AL_FILTER_NULL);
|
||||||
|
AL10.alSourcei(sourceId, EFX10.AL_DIRECT_FILTER, currentFilterIndex);
|
||||||
AL10.alSourcePlay(sourceId);
|
AL10.alSourcePlay(sourceId);
|
||||||
sourceOrigin.rewind();
|
sourceOrigin.rewind();
|
||||||
ch.modified = false;
|
ch.modified = false;
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ import java.nio.IntBuffer;
|
|||||||
import java.nio.ShortBuffer;
|
import java.nio.ShortBuffer;
|
||||||
|
|
||||||
import com.flibitijibibo.flibitEFX.EFXEffectUnderwater;
|
import com.flibitijibibo.flibitEFX.EFXEffectUnderwater;
|
||||||
|
import com.flibitijibibo.flibitEFX.EFXFilterUnderwater;
|
||||||
import org.lwjgl.LWJGLException;
|
import org.lwjgl.LWJGLException;
|
||||||
import org.lwjgl.openal.AL;
|
import org.lwjgl.openal.AL;
|
||||||
import org.lwjgl.openal.AL10;
|
import org.lwjgl.openal.AL10;
|
||||||
@@ -68,7 +69,9 @@ public final class LWJGLSoundImpl implements Sound {
|
|||||||
|
|
||||||
/** EFX Variables */
|
/** EFX Variables */
|
||||||
private int currentEffectIndex;
|
private int currentEffectIndex;
|
||||||
|
private int currentFilterIndex;
|
||||||
private EFXEffectUnderwater underwaterEffect;
|
private EFXEffectUnderwater underwaterEffect;
|
||||||
|
private EFXFilterUnderwater underwaterFilter;
|
||||||
|
|
||||||
// singleton
|
// singleton
|
||||||
private LWJGLSoundImpl() {
|
private LWJGLSoundImpl() {
|
||||||
@@ -154,6 +157,7 @@ public final class LWJGLSoundImpl implements Sound {
|
|||||||
{
|
{
|
||||||
Com.Printf("... using EFX effects:\n");
|
Com.Printf("... using EFX effects:\n");
|
||||||
underwaterEffect = new EFXEffectUnderwater();
|
underwaterEffect = new EFXEffectUnderwater();
|
||||||
|
underwaterFilter = new EFXFilterUnderwater();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -161,6 +165,7 @@ public final class LWJGLSoundImpl implements Sound {
|
|||||||
{
|
{
|
||||||
// Unload EFX Effects
|
// Unload EFX Effects
|
||||||
underwaterEffect.killEffect();
|
underwaterEffect.killEffect();
|
||||||
|
underwaterFilter.killFilter();
|
||||||
|
|
||||||
// Release the context and the device.
|
// Release the context and the device.
|
||||||
AL.destroy();
|
AL.destroy();
|
||||||
@@ -260,14 +265,18 @@ public final class LWJGLSoundImpl implements Sound {
|
|||||||
AL10.alListenerf(AL10.AL_GAIN, s_volume.value);
|
AL10.alListenerf(AL10.AL_GAIN, s_volume.value);
|
||||||
|
|
||||||
// Detect EFX Conditions
|
// Detect EFX Conditions
|
||||||
if ((GameBase.gi.pointcontents.pointcontents(origin)& Defines.MASK_WATER)!= 0)
|
if ((GameBase.gi.pointcontents.pointcontents(origin)& Defines.MASK_WATER)!= 0) {
|
||||||
currentEffectIndex = underwaterEffect.getIndex();
|
currentEffectIndex = underwaterEffect.getIndex();
|
||||||
else
|
currentFilterIndex = underwaterFilter.getIndex();
|
||||||
|
}
|
||||||
|
else {
|
||||||
currentEffectIndex = EFX10.AL_EFFECTSLOT_NULL;
|
currentEffectIndex = EFX10.AL_EFFECTSLOT_NULL;
|
||||||
|
currentFilterIndex = EFX10.AL_FILTER_NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Channel.addLoopSounds();
|
Channel.addLoopSounds();
|
||||||
Channel.addPlaySounds();
|
Channel.addPlaySounds();
|
||||||
Channel.playAllSounds(listenerOrigin, currentEffectIndex);
|
Channel.playAllSounds(listenerOrigin, currentEffectIndex, currentFilterIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
|||||||
Reference in New Issue
Block a user