Removed EAX

This commit is contained in:
Elias Naur 2005-01-18 15:22:52 +00:00
parent 9cda0f74a8
commit 8220b2e04c
16 changed files with 7 additions and 2367 deletions

View File

@ -400,10 +400,6 @@
<class name="org.lwjgl.openal.ALC" />
<class name="org.lwjgl.openal.AL" />
<class name="org.lwjgl.openal.eax.EAX" />
<class name="org.lwjgl.openal.eax.EAX20" />
<class name="org.lwjgl.openal.eax.EAXBufferProperties" />
<class name="org.lwjgl.openal.eax.EAXListenerProperties" />
<class name="org.lwjgl.opengl.GLContext" />
<class name="org.lwjgl.opengl.Pbuffer" />

View File

@ -28,7 +28,6 @@ To run some of the included tests:
org.lwjgl.test.input.KeyboardTest
org.lwjgl.test.openal.ALCTest
org.lwjgl.test.openal.EAXTest (Requires EAX compatible hardware)
org.lwjgl.test.openal.OpenALCreationTest
org.lwjgl.test.openal.MovingSoundTest
org.lwjgl.test.openal.PlayTest
@ -62,4 +61,4 @@ You may also run the Space invaders demo by executing:
Project Webpage: www.lwjgl.org
Project Forum: forum.lwjgl.org
Project CVS: cvs.lwjgl.org
Project CVS: cvs.lwjgl.org

View File

@ -103,8 +103,7 @@ be obtained from direct ByteBuffers using the Sys.getDirectBufferAddress()
method. There are a very few native methods that return pointers as ints as
well. Be sure to read the caveat about using pointers in Java!</p>
<p>3.3 Sounds</p>
<p>Sound is based on the latest OpenAL1.0 specification, which comes with but
one extension, EAX, for interesting environmental effects. The LWJGL binary
<p>Sound is based on the latest OpenAL1.0 specification. The LWJGL binary
distribution includes the OpenAL libraries.</p>
<p>3.4 Input</p>
<p>Input can be a complicated topic. A user can have all sorts of strange fancy

View File

@ -4,11 +4,10 @@ if "%JAVA_HOME%" == "" goto errorjavahome
if "%PLTSDKHOME%" == "" goto errorpltsdkhome
if "%CHOME%" == "" goto errorchome
if "%ALHOME%" == "" goto erroralhome
if "%EAXHOME%" == "" goto erroreaxhome
if "%DXHOME%" == "" goto errordxhome
set COPTIONS=/I"%DXHOME%\include" /I"%CHOME%\include" /I"%PLTSDKHOME%\include" /I"%JAVA_HOME%\include" /I"%JAVA_HOME%\include\win32" /I"%ALHOME%\include" /I"%EAXHOME%\include" /I"..\..\src\native\common" /Ox /Ob2 /Oi /Ot /Oy /FD /EHsc /MT /Gy /W2 /nologo /c /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "LWJGL_EXPORTS" /D "_WINDLL"
set LINKEROPTS=/link /LIBPATH:"%ALHOME%\libs" /LIBPATH:"%EAXHOME%\Libs" /LIBPATH:"%DXHOME%\Lib" /LIBPATH:"%PLTSDKHOME%\Lib" /LIBPATH:"%CHOME%\Lib" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /MACHINE:X86 /NOLOGO /DLL
set LIBS=dinput.lib dxguid.lib eaxguid.lib OpenGL32.Lib Version.lib user32.lib Gdi32.lib Advapi32.lib
set COPTIONS=/I"%DXHOME%\include" /I"%CHOME%\include" /I"%PLTSDKHOME%\include" /I"%JAVA_HOME%\include" /I"%JAVA_HOME%\include\win32" /I"%ALHOME%\include" /I"..\..\src\native\common" /Ox /Ob2 /Oi /Ot /Oy /FD /EHsc /MT /Gy /W2 /nologo /c /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "LWJGL_EXPORTS" /D "_WINDLL"
set LINKEROPTS=/link /LIBPATH:"%ALHOME%\libs" /LIBPATH:"%DXHOME%\Lib" /LIBPATH:"%PLTSDKHOME%\Lib" /LIBPATH:"%CHOME%\Lib" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /MACHINE:X86 /NOLOGO /DLL
set LIBS=dinput.lib dxguid.lib OpenGL32.Lib Version.lib user32.lib Gdi32.lib Advapi32.lib
for %%x in (..\..\src\native\win32\*.c) do cl %COPTIONS% %%x
for %%x in (..\..\src\native\common\*.c) do cl %COPTIONS% %%x
@ -57,14 +56,6 @@ echo ALHOME not set.
echo.
goto error
:erroreaxhome
echo -------------------------
echo -- ** ERROR ** --
echo -------------------------
echo EAXHOME not set.
echo.
goto error
:errordxhome
echo -------------------------
echo -- ** ERROR ** --
@ -79,10 +70,9 @@ echo JAVA_HOME The root directory where Java is installed
echo PLTSDKHOME " " " " Platform SDK is installed
echo CHOME " " " " Visual C++ toolkit is installed
echo ALHOME " " " " OpenAl is installed
echo EAXHOME " " " " EAX is installed
echo DXHOME " " " " DirectX is installed
echo -------------------------
echo -- ** ERROR ** --
echo -------------------------
:end
:end

View File

@ -1,99 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.openal.eax;
import org.lwjgl.Sys;
import org.lwjgl.LWJGLException;
/**
* $Id$
*
* This is the OpenAL EAX class. It extends the latest core.
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
public class EAX {
/** Has the EAX object been created? */
protected static boolean created;
static {
Sys.initialize();
}
/**
* Loads the EAX functions
*
* @throws LWJGLException if the EAX extensions couldn't be loaded
*/
public static void create() throws LWJGLException {
if (created) {
return;
}
if (!nCreate()) {
throw new LWJGLException("EAX instance could not be created.");
}
EAX20.init();
created = true;
}
/**
* Native method to create EAX instance
*
* @return true if the EAX extensions could be found
*/
protected static native boolean nCreate();
/**
* "Destroy" the EAX object
*/
public static void destroy() {
if (!created) {
return;
}
created = false;
nDestroy();
}
/**
* Native method the destroy the EAX
*/
protected static native void nDestroy();
/**
* @return true if EAX has been created
*/
public static boolean isCreated() {
return created;
}
}

View File

@ -1,161 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.openal.eax;
import java.nio.Buffer;
/**
* $Id$
*
* This is the OpenAL EAX class. It extends the latest core.
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
public class EAX20 {
/** GUID for buffer */
public static final int BUFFER_GUID = 1;
/** GUID for listener */
public static final int LISTENER_GUID = 2;
public static final int EAX_ENVIRONMENT_GENERIC = 0;
public static final int EAX_ENVIRONMENT_PADDEDCELL = 1;
public static final int EAX_ENVIRONMENT_ROOM = 2;
public static final int EAX_ENVIRONMENT_BATHROOM = 3;
public static final int EAX_ENVIRONMENT_LIVINGROOM = 4;
public static final int EAX_ENVIRONMENT_STONEROOM = 5;
public static final int EAX_ENVIRONMENT_AUDITORIUM = 6;
public static final int EAX_ENVIRONMENT_CONCERTHALL = 7;
public static final int EAX_ENVIRONMENT_CAVE = 8;
public static final int EAX_ENVIRONMENT_ARENA = 9;
public static final int EAX_ENVIRONMENT_HANGAR = 10;
public static final int EAX_ENVIRONMENT_CARPETEDHALLWAY = 11;
public static final int EAX_ENVIRONMENT_HALLWAY = 12;
public static final int EAX_ENVIRONMENT_STONECORRIDOR = 13;
public static final int EAX_ENVIRONMENT_ALLEY = 14;
public static final int EAX_ENVIRONMENT_FOREST = 15;
public static final int EAX_ENVIRONMENT_CITY = 16;
public static final int EAX_ENVIRONMENT_MOUNTAINS = 17;
public static final int EAX_ENVIRONMENT_QUARRY = 18;
public static final int EAX_ENVIRONMENT_PLAIN = 19;
public static final int EAX_ENVIRONMENT_PARKINGLOT = 20;
public static final int EAX_ENVIRONMENT_SEWERPIPE = 21;
public static final int EAX_ENVIRONMENT_UNDERWATER = 22;
public static final int EAX_ENVIRONMENT_DRUGGED = 23;
public static final int EAX_ENVIRONMENT_DIZZY = 24;
public static final int EAX_ENVIRONMENT_PSYCHOTIC = 25;
public static final int EAX_ENVIRONMENT_COUNT = 26;
// Single window material preset
public static final int EAX_MATERIAL_SINGLEWINDOW = -2800;
public static final float EAX_MATERIAL_SINGLEWINDOWLF = 0.71f;
public static final float EAX_MATERIAL_SINGLEWINDOWROOMRATIO = 0.43f;
// Double window material preset
public static final int EAX_MATERIAL_DOUBLEWINDOW = -5000;
public static final float EAX_MATERIAL_DOUBLEWINDOWHF = 0.40f;
public static final float EAX_MATERIAL_DOUBLEWINDOWROOMRATIO = 0.24f;
// Thin door material preset
public static final int EAX_MATERIAL_THINDOOR = -1800;
public static final float EAX_MATERIAL_THINDOORLF = 0.66f;
public static final float EAX_MATERIAL_THINDOORROOMRATIO = 0.66f;
// Thick door material preset
public static final int EAX_MATERIAL_THICKDOOR = -4400;
public static final float EAX_MATERIAL_THICKDOORLF = 0.64f;
public static final float EAX_MATERIAL_THICKDOORROOMRTATION = 0.27f;
// Wood wall material preset
public static final int EAX_MATERIAL_WOODWALL = -4000;
public static final float EAX_MATERIAL_WOODWALLLF = 0.50f;
public static final float EAX_MATERIAL_WOODWALLROOMRATIO = 0.30f;
// Brick wall material preset
public static final int EAX_MATERIAL_BRICKWALL = -5000;
public static final float EAX_MATERIAL_BRICKWALLLF = 0.60f;
public static final float EAX_MATERIAL_BRICKWALLROOMRATIO = 0.24f;
// Stone wall material preset
public static final int EAX_MATERIAL_STONEWALL = -6000;
public static final float EAX_MATERIAL_STONEWALLLF = 0.68f;
public static final float EAX_MATERIAL_STONEWALLROOMRATIO = 0.20f;
// Curtain material preset
public static final int EAX_MATERIAL_CURTAIN = -1200;
public static final float EAX_MATERIAL_CURTAINLF = 0.15f;
public static final float EAX_MATERIAL_CURTAINROOMRATIO = 1.00f;
/**
* Load extensions
*/
protected static void init() {
determineAvailableExtensions();
}
/**
* Determines available EAX extensions
*/
protected static native void determineAvailableExtensions();
/**
* Retrieves an EAX Value
*
* @param propertySetID adress to the property set GUID of the object being queried (a listener or a source)
* @param property property being queried
* @param source the source to be queried
* @param data Buffer to write value to
* @param size size of area being written to
* @return OpenAL Error code
*/
public static int eaxGet(int propertySetID, int property, int source, Buffer data, int size) {
return neaxGet(propertySetID, property, source, data, data.position(), size);
}
private static native int neaxGet(int propertySetID, int property, int source, Buffer data, int position, int size);
/**
* Sets an EAX Value
*
* @param propertySetID adress to the property set GUID of the object being queried (a listener or a source)
* @param property property being queried
* @param source the source to be queried
* @param data Buffer to write value to
* @param size size of area being written to
* @return OpenAL Error code
*/
public static int eaxSet(int propertySetID, int property, int source, Buffer data, int size) {
return neaxSet(propertySetID, property, source, data, data.position(), size);
}
private static native int neaxSet(int propertySetID, int property, int source, Buffer data, int position, int size);
}

View File

@ -1,641 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.openal.eax;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.lwjgl.Sys;
import org.lwjgl.BufferUtils;
/**
* $Id$
*
* This class encapsultaes the EAXBUFFERPROPERTIES struct. Since longs
* are 64 bit in Java and "typically" 32 on other platforms, we cheat by reading an
* int when reading a long field.
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
public class EAXBufferProperties {
/** Whether auto commit has been anabled */
private boolean autoCommit = true;
/** Current source being operated on */
private int currentSource = -1;
/** ByteBuffer representing EAXBUFFERPROPERTIES */
protected ByteBuffer eaxBufferProperties;
/** size needed by ByteBuffer to contain EAXBUFFERPROPERTIES */
protected static int EAXBUFFERPROPERTIES_SIZE;
// EAX values and offsets
// ========================================================
/** direct path level offset */
protected static int direct_offset;
/** direct path level at high frequencies offset */
protected static int directHF_offset;
/** room effect level offset */
protected static int room_offset;
/** room effect level at high frequencies offset */
protected static int roomHF_offset;
/** like DS3D flRolloffFactor but for room effect offset */
protected static int roomRolloffFactor_offset;
/** main obstruction control (attenuation at high frequencies) offset */
protected static int obstruction_offset;
/** obstruction low-frequency level re. main control offset */
protected static int obstructionLFRatio_offset;
/** main occlusion control (attenuation at high frequencies) offset */
protected static int occlusion_offset;
/** occlusion low-frequency level re. main control offset */
protected static int occlusionLFRatio_offset;
/** occlusion room effect level re. main control offset */
protected static int occlusionRoomRatio_offset;
/** outside sound cone level at high frequencies offset */
protected static int outsideVolumeHF_offset;
/** multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF offset */
protected static int airAbsorptionFactor_offset;
/** modifies the behavior of properties offset */
protected static int flags_offset;
public static final int EAXBUFFER_NONE = 0;
public static final int EAXBUFFER_ALLPARAMETERS = 1;
public static final int EAXBUFFER_DIRECT = 2;
public static final int EAXBUFFER_DIRECTHF = 3;
public static final int EAXBUFFER_ROOM = 4;
public static final int EAXBUFFER_ROOMHF = 5;
public static final int EAXBUFFER_ROOMROLLOFFFACTOR = 6;
public static final int EAXBUFFER_OBSTRUCTION = 7;
public static final int EAXBUFFER_OBSTRUCTIONLFRATIO = 8;
public static final int EAXBUFFER_OCCLUSION = 9;
public static final int EAXBUFFER_OCCLUSIONLFRATIO = 10;
public static final int EAXBUFFER_OCCLUSIONROOMRATIO = 11;
public static final int EAXBUFFER_OUTSIDEVOLUMEHF = 12;
public static final int EAXBUFFER_AIRABSORPTIONFACTOR = 13;
public static final int EAXBUFFER_FLAGS = 14;
/** changes take effect immediately */
public static final int EAXBUFFER_IMMEDIATE = 0x00000000;
/** changes take effect later */
public static final int EAXBUFFER_DEFERRED = 0x80000000;
public static final int EAXBUFFER_COMMITDEFERREDSETTINGS =
(EAXBUFFER_NONE | EAXBUFFER_IMMEDIATE);
/** affects DSPROPERTY_EAXBUFFER_DIRECTHF */
public static final int EAXBUFFER_FLAGS_DIRECTHFAUTO = 0x00000001;
/** affects DSPROPERTY_EAXBUFFER_ROOM */
public static final int EAXBUFFER_FLAGS_ROOMAUTO = 0x00000002;
/** affects DSPROPERTY_EAXBUFFER_ROOMHF */
public static final int EAXBUFFER_FLAGS_ROOMHFAUTO = 0x00000004;
/** reserved future use */
public static final int EAXBUFFER_FLAGS_RESERVED = 0xFFFFFFF8;
// property ranges and defaults:
public static final int EAXBUFFER_MINDIRECT = -10000;
public static final int EAXBUFFER_MAXDIRECT = 1000;
public static final int EAXBUFFER_DEFAULTDIRECT = 0;
public static final int EAXBUFFER_MINDIRECTHF = -10000;
public static final int EAXBUFFER_MAXDIRECTHF = 0;
public static final int EAXBUFFER_DEFAULTDIRECTHF = 0;
public static final int EAXBUFFER_MINROOM = -10000;
public static final int EAXBUFFER_MAXROOM = 1000;
public static final int EAXBUFFER_DEFAULTROOM = 0;
public static final int EAXBUFFER_MINROOMHF = -10000;
public static final int EAXBUFFER_MAXROOMHF = 0;
public static final int EAXBUFFER_DEFAULTROOMHF = 0;
public static final float EAXBUFFER_MINROOMROLLOFFFACTOR = 0.0f;
public static final float EAXBUFFER_MAXROOMROLLOFFFACTOR = 10.f;
public static final float EAXBUFFER_DEFAULTROOMROLLOFFFACTOR = 0.0f;
public static final int EAXBUFFER_MINOBSTRUCTION = -10000;
public static final int EAXBUFFER_MAXOBSTRUCTION = 0;
public static final int EAXBUFFER_DEFAULTOBSTRUCTION = 0;
public static final float EAXBUFFER_MINOBSTRUCTIONLFRATIO = 0.0f;
public static final float EAXBUFFER_MAXOBSTRUCTIONLFRATIO = 1.0f;
public static final float EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO = 0.0f;
public static final int EAXBUFFER_MINOCCLUSION = -10000;
public static final int EAXBUFFER_MAXOCCLUSION = 0;
public static final int EAXBUFFER_DEFAULTOCCLUSION = 0;
public static final float EAXBUFFER_MINOCCLUSIONLFRATIO = 0.0f;
public static final float EAXBUFFER_MAXOCCLUSIONLFRATIO = 1.0f;
public static final float EAXBUFFER_DEFAULTOCCLUSIONLFRATIO = 0.25f;
public static final float EAXBUFFER_MINOCCLUSIONROOMRATIO = 0.0f;
public static final float EAXBUFFER_MAXOCCLUSIONROOMRATIO = 10.0f;
public static final float EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO = 0.5f;
public static final int EAXBUFFER_MINOUTSIDEVOLUMEHF = -10000;
public static final int EAXBUFFER_MAXOUTSIDEVOLUMEHF = 0;
public static final int EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF = 0;
public static final float EAXBUFFER_MINAIRABSORPTIONFACTOR = 0.0f;
public static final float EAXBUFFER_MAXAIRABSORPTIONFACTOR = 10.0f;
public static final float EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR = 1.0f;
public static final int EAXBUFFER_DEFAULTFLAGS =
(EAXBUFFER_FLAGS_DIRECTHFAUTO
| EAXBUFFER_FLAGS_ROOMAUTO
| EAXBUFFER_FLAGS_ROOMHFAUTO);
// -------------------------------------------------------
static {
Sys.initialize();
EAXBUFFERPROPERTIES_SIZE = sizeOfEaxBufferProperties();
assignOffsets();
}
/**
* Creates a new EAXBufferProperties object
*/
public EAXBufferProperties() {
eaxBufferProperties = BufferUtils.createByteBuffer(EAXBUFFERPROPERTIES_SIZE);
eaxBufferProperties.order(ByteOrder.nativeOrder());
}
/**
* Sets the current source on which to perform effects
*
* @param source Source on which to perform effects
*/
public void setCurrentSource(int source) {
currentSource = source;
}
/**
* Retrieves the current source
*
* @return Source on which effects are being performed
*/
public int getCurrentSource() {
return currentSource;
}
/**
* Loads current EAX values from current source
*/
public void loadEAXValues() {
EAX20.eaxGet(
EAX20.BUFFER_GUID,
EAXBUFFER_ALLPARAMETERS,
currentSource,
eaxBufferProperties,
EAXBUFFERPROPERTIES_SIZE);
}
/**
* Resets this buffer property to default values
*/
public void reset() {
boolean commitValue = autoCommit;
// disable autocommit
autoCommit = false;
// set values
setDirect(EAXBUFFER_DEFAULTDIRECT);
setDirectHF(EAXBUFFER_DEFAULTDIRECTHF);
setRoom(EAXBUFFER_DEFAULTROOM);
setRoomHF(EAXBUFFER_DEFAULTROOMHF);
setRoomRolloffFactor(EAXBUFFER_DEFAULTROOMROLLOFFFACTOR);
setObstruction(EAXBUFFER_DEFAULTOBSTRUCTION);
setObstructionLFRatio(EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO);
setOcclusion(EAXBUFFER_DEFAULTOCCLUSION);
setOcclusionLFRatio(EAXBUFFER_DEFAULTOCCLUSIONLFRATIO);
setOcclusionRoomRatio(EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO);
setOutsideVolumeHF(EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF);
setAirAbsorptionFactor(EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR);
setFlags(EAXBUFFER_DEFAULTFLAGS);
// reset auto commit
autoCommit = commitValue;
}
/**
* Commits any changes
*/
public void commit() {
// call eaxSet with Buffer guid, setting all parameters
EAX20.eaxSet(
EAX20.BUFFER_GUID, EAXBUFFER_ALLPARAMETERS,
currentSource, eaxBufferProperties, EAXBUFFERPROPERTIES_SIZE);
}
/**
* Tests whether auto commit is enabled or not
*
* @return true if auto commit is inabled
*/
public boolean isAutoCommitEnabled() {
return autoCommit;
}
/**
* Enabled or disables auto commit
*
* @param enabled True to enable, false to disable
*/
public void setAutoCommit(boolean enabled) {
autoCommit = enabled;
}
/**
* Performs auto commit, if enabled
*/
private final void autoCommit() {
if(autoCommit) {
commit();
}
}
/**
* Retrieves the size of the containing ByteBuffer
*/
public static int getSize() {
return EAXBUFFERPROPERTIES_SIZE;
}
/**
* Returns a String representation of the EAXBufferProperties object
*
* @return String representation of the EAXBufferProperties object
*/
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("EAXBufferProperties [");
sb.append("lDirect = ");
sb.append(getDirect());
sb.append(", ");
sb.append("lDirectHF = ");
sb.append(getDirectHF());
sb.append(", ");
sb.append("lRoom = ");
sb.append(getRoom());
sb.append(", ");
sb.append("lRoomHF = ");
sb.append(getRoomHF());
sb.append(", ");
sb.append("flRoomRolloffFactor = ");
sb.append(getRoomRolloffFactor());
sb.append(", ");
sb.append("lObstruction = ");
sb.append(getObstruction());
sb.append(", ");
sb.append("flObstructionLFRatio = ");
sb.append(getObstructionLFRatio());
sb.append(", ");
sb.append("lOcclusion = ");
sb.append(getOcclusion());
sb.append(", ");
sb.append("flOcclusionLFRatio = ");
sb.append(getOcclusionLFRatio());
sb.append(", ");
sb.append("flOcclusionRoomRatio = ");
sb.append(getOcclusionRoomRatio());
sb.append(", ");
sb.append("lOutsideVolumeHF = ");
sb.append(getOutsideVolumeHF());
sb.append(", ");
sb.append("flAirAbsorptionFactor = ");
sb.append(getAirAbsorptionFactor());
sb.append(", ");
sb.append("dwFlags = ");
sb.append(getFlags());
sb.append("]");
return sb.toString();
}
// Getters and Setters of struct
// ==========================================================================
/**
* Retireves the direct path level
*
* @return direct path level
*/
public int getDirect() {
return eaxBufferProperties.getInt(direct_offset);
}
/**
* Sets the direct path level
*
* @param direct direct path level to set to
*/
public void setDirect(int direct) {
eaxBufferProperties.putInt(direct_offset, direct);
autoCommit();
}
/**
* Retireves the direct path level at high frequencies
*
* @return direct path level at high frequencies
*/
public int getDirectHF() {
return eaxBufferProperties.getInt(directHF_offset);
}
/**
* Sets the direct path level at high frequencies
*
* @param directHF direct path level at high frequencies to set to
*/
public void setDirectHF(int directHF) {
eaxBufferProperties.putInt(directHF_offset, directHF);
autoCommit();
}
/**
* Retireves the room effect level
*
* @return room effect level
*/
public int getRoom() {
return eaxBufferProperties.getInt(room_offset);
}
/**
* Sets the room effect level
*
* @param room room effect level to set to
*/
public void setRoom(int room) {
eaxBufferProperties.putInt(room_offset, room);
autoCommit();
}
/**
* Retireves the room effect level at high frequencies
*
* @return room effect level at high frequencies
*/
public int getRoomHF() {
return eaxBufferProperties.getInt(roomHF_offset);
}
/**
* Sets the room effect level at high frequencies
*
* @param roomHF room effect level at high frequencies to set to
*/
public void setRoomHF(int roomHF) {
eaxBufferProperties.putInt(roomHF_offset, roomHF);
autoCommit();
}
/**
* Retireves the DS3D flRolloffFactor for room effect
*
* @return DS3D flRolloffFactor for room effect
*/
public float getRoomRolloffFactor() {
return eaxBufferProperties.getFloat(roomRolloffFactor_offset);
}
/**
* Sets the DS3D flRolloffFactor for room effect
*
* @param roomRolloffFactor DS3D flRolloffFactor for room effect to set to
*/
public void setRoomRolloffFactor(float roomRolloffFactor) {
eaxBufferProperties.putFloat(roomRolloffFactor_offset, roomRolloffFactor);
autoCommit();
}
/**
* Retireves the main obstruction control (attenuation at high frequencies)
*
* @return main obstruction control (attenuation at high frequencies)
*/
public int getObstruction() {
return eaxBufferProperties.getInt(obstruction_offset);
}
/**
* Sets the main obstruction control (attenuation at high frequencies)
*
* @param obstruction main obstruction control (attenuation at high frequencies) to set to
*/
public void setObstruction(int obstruction) {
eaxBufferProperties.putInt(obstruction_offset, obstruction);
autoCommit();
}
/**
* Retireves the obstruction low-frequency level re. main control
*
* @return obstruction low-frequency level re. main control
*/
public float getObstructionLFRatio() {
return eaxBufferProperties.getFloat(obstructionLFRatio_offset);
}
/**
* Sets the obstruction low-frequency level re. main control
*
* @param obstructionLFRatio obstruction low-frequency level re. main control to set to
*/
public void setObstructionLFRatio(float obstructionLFRatio) {
eaxBufferProperties.putFloat(obstructionLFRatio_offset, obstructionLFRatio);
autoCommit();
}
/**
* Retireves the main occlusion control (attenuation at high frequencies)
*
* @return main occlusion control (attenuation at high frequencies)
*/
public int getOcclusion() {
return eaxBufferProperties.getInt(occlusion_offset);
}
/**
* Sets the main occlusion control (attenuation at high frequencies)
*
* @param occlusion main occlusion control (attenuation at high frequencies) to set to
*/
public void setOcclusion(int occlusion) {
eaxBufferProperties.putInt(occlusion_offset, occlusion);
autoCommit();
}
/**
* Retireves the occlusion low-frequency level re. main control
*
* @return occlusion low-frequency level re. main control
*/
public float getOcclusionLFRatio() {
return eaxBufferProperties.getFloat(occlusionLFRatio_offset);
}
/**
* Sets the occlusion low-frequency level re. main control
*
* @param occlusionLFRatio occlusion low-frequency level re. main control to set to
*/
public void setOcclusionLFRatio(float occlusionLFRatio) {
eaxBufferProperties.putFloat(occlusionLFRatio_offset, occlusionLFRatio);
autoCommit();
}
/**
* Retireves the occlusion room effect level re. main control
*
* @return occlusion room effect level re. main control
*/
public float getOcclusionRoomRatio() {
return eaxBufferProperties.getFloat(occlusionRoomRatio_offset);
}
/**
* Sets the OcclusionRoomRatio
*
* @param occlusionRoomRatio OcclusionRoomRatio to set to
*/
public void setOcclusionRoomRatio(float occlusionRoomRatio) {
eaxBufferProperties.putFloat(occlusionRoomRatio_offset, occlusionRoomRatio);
autoCommit();
}
/**
* Retireves the OutsideVolumeHF
*
* @return OutsideVolumeHF
*/
public int getOutsideVolumeHF() {
return eaxBufferProperties.getInt(outsideVolumeHF_offset);
}
/**
* Sets the OutsideVolumeHF
*
* @param outsideVolumeHF OutsideVolumeHF to set to
*/
public void setOutsideVolumeHF(int outsideVolumeHF) {
eaxBufferProperties.putInt(outsideVolumeHF_offset, outsideVolumeHF);
autoCommit();
}
/**
* Retireves the multiplier for DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
*
* @return multiplier for DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
*/
public float getAirAbsorptionFactor() {
return eaxBufferProperties.getFloat(airAbsorptionFactor_offset);
}
/**
* Sets the multiplier for DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
*
* @param airAbsorptionFactor multiplier for DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF to set to
*/
public void setAirAbsorptionFactor(float airAbsorptionFactor) {
eaxBufferProperties.putFloat(airAbsorptionFactor_offset, airAbsorptionFactor);
autoCommit();
}
/**
* Retireves the modifier for behavior of properties
*
* @return modifier for behavior of properties
*/
public int getFlags() {
return eaxBufferProperties.getInt(flags_offset);
}
/**
* Sets the modifier for behavior of properties
*
* @param flags modifier for behavior of properties to set to
*/
public void setFlags(int flags) {
eaxBufferProperties.putInt(flags_offset, flags);
autoCommit();
}
// --------------------------------------------------------------------------
/**
* Retrieves the size of the EAXBUFFERPROPERTIES
*/
protected static native int sizeOfEaxBufferProperties();
/**
* Sets the offsets to the fields
*/
protected static native void assignOffsets();
}

View File

@ -1,691 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.openal.eax;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.lwjgl.Sys;
/**
* $Id$
*
* This class encapsultaes the EAXLISTENERPROPERTIES struct
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
public class EAXListenerProperties {
/** Whether auto commit has been anabled */
private boolean autoCommit = true;
/** ByteBuffer representing EAXLISTENERPROPERTIES */
protected ByteBuffer eaxListenerProperties;
/** size needed by ByteBuffer to contain EAXLISTENERPROPERTIES */
protected static int EAXLISTENERPROPERTIES_SIZE;
// EAX values and offsets
// ========================================================
/** room effect level offset */
protected static int room_offset;
/** room effect level at high frequencies offset */
protected static int roomHF_offset;
/**like DS3D flRolloffFactor but for room effect offset */
protected static int roomRolloffFactor_offset;
/** reverberation decay time at low frequencies offset */
protected static int decayTime_offset;
/** high-frequency to low-frequency decay time ratio offset */
protected static int decayHFRatio_offset;
/** early reflections level relative to room effect offset */
protected static int reflections_offset;
/** initial reflection delay time offset */
protected static int reflectionsDelay_offset;
/** late reverberation level relative to room effect offset */
protected static int reverb_offset;
/** late reverberation delay time relative to initial reflection offset */
protected static int reverbDelay_offset;
/** sets all listener properties offset */
protected static int environment_offset;
/** environment size in meters offset */
protected static int environmentSize_offset;
/** environment diffusion offset */
protected static int environmentDiffusion_offset;
/** change in level per meter at 5 kHz offset */
protected static int airAbsorptionHF_offset;
/** modifies the behavior of properties offset */
protected static int flags_offset;
public static final int EAXLISTENER_NONE = 0;
public static final int EAXLISTENER_ALLPARAMETERS = 1;
public static final int EAXLISTENER_ROOM = 2;
public static final int EAXLISTENER_ROOMHF = 3;
public static final int EAXLISTENER_ROOMROLLOFFFACTOR = 4;
public static final int EAXLISTENER_DECAYTIME = 5;
public static final int EAXLISTENER_DECAYHFRATIO = 6;
public static final int EAXLISTENER_REFLECTIONS = 7;
public static final int EAXLISTENER_REFLECTIONSDELAY = 8;
public static final int EAXLISTENER_REVERB = 9;
public static final int EAXLISTENER_REVERBDELAY = 10;
public static final int EAXLISTENER_ENVIRONMENT = 11;
public static final int EAXLISTENER_ENVIRONMENTSIZE = 12;
public static final int EAXLISTENER_ENVIRONMENTDIFFUSION = 13;
public static final int EAXLISTENER_AIRABSORPTIONHF = 14;
public static final int EAXLISTENER_FLAGS = 15;
/** changes take effect immediately */
public static final int EAXLISTENER_IMMEDIATE = 0x00000000;
/** changes take effect later */
public static final int EAXLISTENER_DEFERRED = 0x80000000;
public static final int EAXLISTENER_COMMITDEFERREDSETTINGS =
(EAXLISTENER_NONE | EAXLISTENER_IMMEDIATE);
/** reverberation decay time */
public static final int EAXLISTENERFLAGS_DECAYTIMESCALE = 0x00000001;
/** reflection level */
public static final int EAXLISTENERFLAGS_REFLECTIONSSCALE = 0x00000002;
/** initial reflection delay time */
public static final int EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE = 0x00000004;
/** reflections level */
public static final int EAXLISTENERFLAGS_REVERBSCALE = 0x00000008;
/** late reverberation delay time */
public static final int EAXLISTENERFLAGS_REVERBDELAYSCALE = 0x00000010;
/** This flag limits high-frequency decay time according to air absorption. */
public static final int EAXLISTENERFLAGS_DECAYHFLIMIT = 0x00000020;
/** reserved future use */
public static final int EAXLISTENERFLAGS_RESERVED = 0xFFFFFFC0;
// property ranges and defaults:
public static final int EAXLISTENER_MINROOM = -10000;
public static final int EAXLISTENER_MAXROOM = 0;
public static final int EAXLISTENER_DEFAULTROOM = -1000;
public static final int EAXLISTENER_MINROOMHF = -10000;
public static final int EAXLISTENER_MAXROOMHF = 0;
public static final int EAXLISTENER_DEFAULTROOMHF = -100;
public static final float EAXLISTENER_MINROOMROLLOFFFACTOR = 0.0f;
public static final float EAXLISTENER_MAXROOMROLLOFFFACTOR = 10.0f;
public static final float EAXLISTENER_DEFAULTROOMROLLOFFFACTOR = 0.0f;
public static final float EAXLISTENER_MINDECAYTIME = 0.1f;
public static final float EAXLISTENER_MAXDECAYTIME = 20.0f;
public static final float EAXLISTENER_DEFAULTDECAYTIME = 1.49f;
public static final float EAXLISTENER_MINDECAYHFRATIO = 0.1f;
public static final float EAXLISTENER_MAXDECAYHFRATIO = 2.0f;
public static final float EAXLISTENER_DEFAULTDECAYHFRATIO = 0.83f;
public static final int EAXLISTENER_MINREFLECTIONS = -10000;
public static final int EAXLISTENER_MAXREFLECTIONS = 1000;
public static final int EAXLISTENER_DEFAULTREFLECTIONS = -2602;
public static final float EAXLISTENER_MINREFLECTIONSDELAY = 0.0f;
public static final float EAXLISTENER_MAXREFLECTIONSDELAY = 0.3f;
public static final float EAXLISTENER_DEFAULTREFLECTIONSDELAY = 0.007f;
public static final int EAXLISTENER_MINREVERB = -10000;
public static final int EAXLISTENER_MAXREVERB = 2000;
public static final int EAXLISTENER_DEFAULTREVERB = 200;
public static final float EAXLISTENER_MINREVERBDELAY = 0.0f;
public static final float EAXLISTENER_MAXREVERBDELAY = 0.1f;
public static final float EAXLISTENER_DEFAULTREVERBDELAY = 0.011f;
public static final int EAXLISTENER_MINENVIRONMENT = 0;
public static final int EAXLISTENER_MAXENVIRONMENT =
(EAX20.EAX_ENVIRONMENT_COUNT - 1);
public static final int EAXLISTENER_DEFAULTENVIRONMENT =
EAX20.EAX_ENVIRONMENT_GENERIC;
public static final float EAXLISTENER_MINENVIRONMENTSIZE = 1.0f;
public static final float EAXLISTENER_MAXENVIRONMENTSIZE = 100.0f;
public static final float EAXLISTENER_DEFAULTENVIRONMENTSIZE = 7.5f;
public static final float EAXLISTENER_MINENVIRONMENTDIFFUSION = 0.0f;
public static final float EAXLISTENER_MAXENVIRONMENTDIFFUSION = 1.0f;
public static final float EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION = 1.0f;
public static final float EAXLISTENER_MINAIRABSORPTIONHF = -100.0f;
public static final float EAXLISTENER_MAXAIRABSORPTIONHF = 0.0f;
public static final float EAXLISTENER_DEFAULTAIRABSORPTIONHF = -5.0f;
public static final int EAXLISTENER_DEFAULTFLAGS =
(EAXLISTENERFLAGS_DECAYTIMESCALE
| EAXLISTENERFLAGS_REFLECTIONSSCALE
| EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE
| EAXLISTENERFLAGS_REVERBSCALE
| EAXLISTENERFLAGS_REVERBDELAYSCALE
| EAXLISTENERFLAGS_DECAYHFLIMIT);
// -------------------------------------------------------
static {
Sys.initialize();
EAXLISTENERPROPERTIES_SIZE = sizeOfEaxListenerProperties();
assignOffsets();
}
public EAXListenerProperties() {
eaxListenerProperties =
ByteBuffer.allocateDirect(EAXLISTENERPROPERTIES_SIZE);
eaxListenerProperties.order(ByteOrder.nativeOrder());
}
/**
* Loads current EAX values
*/
public void loadEAXValues() {
EAX20.eaxGet(
EAX20.LISTENER_GUID,
EAXLISTENER_ALLPARAMETERS,
0,
eaxListenerProperties,
EAXLISTENERPROPERTIES_SIZE );
}
/**
* Resets this buffer property to default values
*/
public void reset() {
boolean commitValue = autoCommit;
// disable autocommit
autoCommit = false;
// set values
setRoom(EAXLISTENER_DEFAULTROOM);
setRoomHF(EAXLISTENER_DEFAULTROOMHF);
setRoomRolloffFactor(EAXLISTENER_DEFAULTROOMROLLOFFFACTOR);
setDecayTime(EAXLISTENER_DEFAULTDECAYTIME);
setDecayTimeHFRatio(EAXLISTENER_DEFAULTDECAYHFRATIO);
setReflections(EAXLISTENER_DEFAULTREFLECTIONS);
setReflectionsDelay(EAXLISTENER_DEFAULTREFLECTIONSDELAY);
setReverb(EAXLISTENER_DEFAULTREVERB);
setReverbDelay(EAXLISTENER_DEFAULTREVERBDELAY);
setEnvironment(EAXLISTENER_DEFAULTENVIRONMENT);
setEnvironmentSize(EAXLISTENER_DEFAULTENVIRONMENTSIZE);
setEnvironmentDiffusion(EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION);
setAirAbsorptionFactor(EAXLISTENER_DEFAULTAIRABSORPTIONHF);
setFlags(EAXLISTENER_DEFAULTFLAGS);
// reset auto commit
autoCommit = commitValue;
}
/**
* Commits any changes
*/
public void commit() {
// call eaxSet with Listener guid, setting all parameters
EAX20.eaxSet(
EAX20.LISTENER_GUID, EAXLISTENER_ALLPARAMETERS | EAXLISTENER_IMMEDIATE,
0, eaxListenerProperties, EAXLISTENERPROPERTIES_SIZE);
}
/**
* Tests whether auto commit is enabled or not
*
* @return true if auto commit is inabled
*/
public boolean isAutoCommitEnabled() {
return autoCommit;
}
/**
* Enabled or disables auto commit
*
* @param enabled True to enable, false to disable
*/
public void setAutoCommit(boolean enabled) {
autoCommit = enabled;
}
/**
* Performs auto commit, if enabled
*/
private final void autoCommit() {
if(autoCommit) {
commit();
}
}
/**
* Retrieves the size of the containing ByteBuffer
*/
public int getSize() {
return EAXLISTENERPROPERTIES_SIZE;
}
/**
* Returns a String representation of the EAXBufferProperties object
*
* @return String representation of the EAXBufferProperties object
*/
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("EAXListenerProperties [");
sb.append("lRoom = ");
sb.append(getRoom());
sb.append(", ");
sb.append("lRoomHF = ");
sb.append(getRoomHF());
sb.append(", ");
sb.append("flRoomRolloffFactor = ");
sb.append(getRoomRolloffFactor());
sb.append(", ");
sb.append("flDecayTime = ");
sb.append(getDecayTime());
sb.append(", ");
sb.append("flDecayHFRatio = ");
sb.append(getDecayTimeHFRatio());
sb.append(", ");
sb.append("lReflections = ");
sb.append(getReflections());
sb.append(", ");
sb.append("flReflectionsDelay = ");
sb.append(getReflectionsDelay());
sb.append(", ");
sb.append("lReverb = ");
sb.append(getReverb());
sb.append(", ");
sb.append("flReverbDelay = ");
sb.append(getReverbDelay());
sb.append(", ");
sb.append("dwEnvironment = ");
sb.append(getEnvironment());
sb.append(", ");
sb.append("flEnvironmentSize = ");
sb.append(getEnvironmentSize());
sb.append(", ");
sb.append("flEnvironmentDiffusion = ");
sb.append(getEnvironmentDiffusion());
sb.append(", ");
sb.append("flAirAbsorptionHF = ");
sb.append(getAirAbsorptionHF());
sb.append(", ");
sb.append("dwFlags = ");
sb.append(getFlags());
sb.append("]");
return sb.toString();
}
// Getters and Setters of struct
// ==========================================================================
/**
* Retireves the room effect level
*
* @return room effect level
*/
public int getRoom() {
return eaxListenerProperties.getInt(room_offset);
}
/**
* Sets the room effect level
*
* @param room room effect level to set to
*/
public void setRoom(int room) {
eaxListenerProperties.putInt(room_offset, room);
autoCommit();
}
/**
* Retireves the room effect level at high frequencies
*
* @return room effect level at high frequencies
*/
public int getRoomHF() {
return eaxListenerProperties.getInt(roomHF_offset);
}
/**
* Sets the room effect level at high frequencies
*
* @param roomHF room effect level at high frequencies to set to
*/
public void setRoomHF(int roomHF) {
eaxListenerProperties.putInt(roomHF_offset, roomHF);
autoCommit();
}
/**
* Retireves the DS3D flRolloffFactor for room effect
*
* @return DS3D flRolloffFactor for room effect
*/
public float getRoomRolloffFactor() {
return eaxListenerProperties.getFloat(roomRolloffFactor_offset);
}
/**
* Sets the DS3D flRolloffFactor for room effect
*
* @param roomRolloffFactor DS3D flRolloffFactor for room effect to set to
*/
public void setRoomRolloffFactor(float roomRolloffFactor) {
eaxListenerProperties.putFloat(roomRolloffFactor_offset, roomRolloffFactor);
autoCommit();
}
/**
* Retireves the reverberation decay time at low frequencies
*
* @return reverberation decay time at low frequencies
*/
public float getDecayTime() {
return eaxListenerProperties.getFloat(decayTime_offset);
}
/**
* Sets the reverberation decay time at low frequencies
*
* @param decayTime reverberation decay time at low frequencies to set to
*/
public void setDecayTime(float decayTime) {
eaxListenerProperties.putFloat(decayTime_offset, decayTime);
autoCommit();
}
/**
* Retireves the high-frequency to low-frequency decay time ratio
*
* @return high-frequency to low-frequency decay time ratio
*/
public float getDecayTimeHFRatio() {
return eaxListenerProperties.getFloat(decayHFRatio_offset);
}
/**
* Sets the high-frequency to low-frequency decay time ratio
*
* @param decayTimeHFRatio high-frequency to low-frequency decay time ratio to set to
*/
public void setDecayTimeHFRatio(float decayTimeHFRatio) {
eaxListenerProperties.putFloat(decayHFRatio_offset, decayTimeHFRatio);
autoCommit();
}
/**
* Retireves the early reflections level relative to room effect
*
* @return early reflections level relative to room effect
*/
public int getReflections() {
return eaxListenerProperties.getInt(reflections_offset);
}
/**
* Sets the early reflections level relative to room effect
*
* @param reflections early reflections level relative to room effect to set to
*/
public void setReflections(int reflections) {
eaxListenerProperties.putInt(reflections_offset, reflections);
autoCommit();
}
/**
* Retireves the initial reflection delay time
*
* @return initial reflection delay time
*/
public float getReflectionsDelay() {
return eaxListenerProperties.getFloat(reflectionsDelay_offset);
}
/**
* Sets the initial reflection delay time
*
* @param reflectionsDelay initial reflection delay time to set to
*/
public void setReflectionsDelay(float reflectionsDelay) {
eaxListenerProperties.putFloat(reflectionsDelay_offset, reflectionsDelay);
autoCommit();
}
/**
* Retireves the late reverberation level relative to room effect
*
* @return late reverberation level relative to room effect
*/
public int getReverb() {
return eaxListenerProperties.getInt(reverb_offset);
}
/**
* Sets the late reverberation level relative to room effect
*
* @param reverb late reverberation level relative to room effect to set to
*/
public void setReverb(int reverb) {
eaxListenerProperties.putInt(reverb_offset, reverb);
autoCommit();
}
/**
* Retireves the late reverberation delay time relative to initial reflection
*
* @return late reverberation delay time relative to initial reflection
*/
public float getReverbDelay() {
return eaxListenerProperties.getFloat(reverbDelay_offset);
}
/**
* Sets the late reverberation delay time relative to initial reflection
*
* @param reverbDelay late reverberation delay time relative to initial reflection
*/
public void setReverbDelay(float reverbDelay) {
eaxListenerProperties.putFloat(reverbDelay_offset, reverbDelay);
autoCommit();
}
/**
* Retireves the listener properties
*
* @return listener properties
*/
public int getEnvironment() {
return eaxListenerProperties.getInt(environment_offset);
}
/**
* Sets the listener properties
*
* @param environment listener properties to set to
*/
public void setEnvironment(int environment) {
eaxListenerProperties.putInt(environment_offset, environment);
// we need to handle environment differently than all other
// values on auto commit, since it cannot be single handely set
// using ALLPARAMETERS
//
// To set the environment specifically we need to pass
// only the environment value and its size. Also pass the
// EAXLISTENER_ENVIRONMENT value (and since we're committing IMMEDIATE too)
if (autoCommit) {
EAX20.eaxSet(
EAX20.LISTENER_GUID, EAXLISTENER_ENVIRONMENT | EAXLISTENER_IMMEDIATE,
0, eaxListenerProperties.position(environment_offset), 4);
// rewind buffer
eaxListenerProperties.rewind();
}
}
/**
* Retireves the environment size in meters
*
* @return environment size in meters
*/
public float getEnvironmentSize() {
return eaxListenerProperties.getFloat(environmentSize_offset);
}
/**
* Sets the environment size in meters
*
* @param environmentSize environment size in meters to set to
*/
public void setEnvironmentSize(float environmentSize) {
eaxListenerProperties.putFloat(environmentSize_offset, environmentSize);
// we need to handle environment size differently than all other
// values on auto commit, since it cannot be single handely set
// using ALLPARAMETERS
//
// To set the environment size specifically we need to pass
// only the environment size value and its size. Also pass the
// EAXLISTENER_ENVIRONMENTSIZE value (and since we're committing IMMEDIATE too)
if (autoCommit) {
EAX20.eaxSet(
EAX20.LISTENER_GUID, EAXLISTENER_ENVIRONMENTSIZE | EAXLISTENER_IMMEDIATE,
0, eaxListenerProperties.position(environmentSize_offset), 4);
// rewind buffer
eaxListenerProperties.rewind();
}
}
/**
* Retireves the environment diffusion
*
* @return environment diffusion
*/
public float getEnvironmentDiffusion() {
return eaxListenerProperties.getFloat(environmentDiffusion_offset);
}
/**
* Sets the environment diffusion
*
* @param environmentDiffusion environment diffusion to set to
*/
public void setEnvironmentDiffusion(float environmentDiffusion) {
eaxListenerProperties.putFloat(environmentDiffusion_offset, environmentDiffusion);
autoCommit();
}
/**
* Retireves the change in level per meter at 5 kHz
*
* @return change in level per meter at 5 kHz
*/
public float getAirAbsorptionHF() {
return eaxListenerProperties.getFloat(airAbsorptionHF_offset);
}
/**
* Sets the change in level per meter at 5 kHz
*
* @param airAbsorptionHF change in level per meter at 5 kHz to set to
*/
public void setAirAbsorptionFactor(float airAbsorptionHF) {
eaxListenerProperties.putFloat(airAbsorptionHF_offset, airAbsorptionHF);
autoCommit();
}
/**
* Retireves the modifier for behavior of properties
*
* @return modifier for behavior of properties
*/
public int getFlags() {
return eaxListenerProperties.getInt(flags_offset);
}
/**
* Sets the modifier for behavior of properties
*
* @param flags modifier for behavior of properties to set to
*/
public void setFlags(int flags) {
eaxListenerProperties.putInt(flags_offset, flags);
autoCommit();
}
// --------------------------------------------------------------------------
/**
* Retrieves the size of the EAXLISTENERPROPERTIES
*/
protected static native int sizeOfEaxListenerProperties();
/**
* Sets the offsets to the fields
*/
protected static native void assignOffsets();
}

View File

@ -1,290 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.lwjgl.test.openal;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.IntBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.Sys;
import org.lwjgl.openal.AL;
import org.lwjgl.openal.AL10;
import org.lwjgl.openal.eax.EAX;
import org.lwjgl.openal.eax.EAX20;
import org.lwjgl.openal.eax.EAXBufferProperties;
import org.lwjgl.openal.eax.EAXListenerProperties;
/**
* $Id$
*
* This test initializes EAX and tries to get and set some EAX values
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
public class EAXTest extends BasicTest {
/** OpenAL buffers */
private IntBuffer soundBuffers = BufferUtils.createIntBuffer(1);
/** OpenAL sources */
private IntBuffer soundSources = BufferUtils.createIntBuffer(1);
/** Listener EAX property object */
private EAXListenerProperties listenerProperties;
/** Buffer EAX property object */
private EAXBufferProperties bufferProperties;
/**
* Creates an instance of EAXTest
*/
public EAXTest() {
super();
}
/**
* Runs the actual test, using supplied arguments
*/
protected void execute(String[] args) {
if(!AL.isCreated()) {
System.out.println("Unable to continue with EAXTest, since OpenAL could not be initialized.");
return;
}
try {
System.out.print("Testing EAX support...");
EAX.create();
System.out.println("supported!");
} catch (Exception e) {
System.out.println("not supported!");
}
// continue with test if EAX is supported
if (EAX.isCreated() && AL.isCreated() && initialize()) {
runTest();
// kill sources and buffers
AL10.alSourceStop(soundSources.get(0));
AL10.alDeleteSources(soundSources);
AL10.alDeleteBuffers(soundBuffers);
EAX.destroy();
}
//shutdown
alExit();
}
private boolean initialize() {
// creating buffers
Sys.log("Creating buffers");
AL10.alGenBuffers(soundBuffers);
soundBuffers.rewind();
// creating sources
Sys.log("Creating sources");
AL10.alGenSources(soundSources);
soundSources.rewind();
// load sound files (left, center, right).wav
Sys.log("Loading Footsteps.wav");
WaveData footsteps = WaveData.create("Footsteps.wav");
AL10.alBufferData(soundBuffers.get(0), footsteps.format, footsteps.data, footsteps.samplerate);
AL10.alSourcef(soundSources.get(0), AL10.AL_PITCH, 1.0f);
AL10.alSourcef(soundSources.get(0), AL10.AL_GAIN, 1.0f);
AL10.alSourcei(soundSources.get(0), AL10.AL_BUFFER, soundBuffers.get(0));
AL10.alSourcei(soundSources.get(0), AL10.AL_LOOPING, AL10.AL_TRUE);
// create eax property objects
listenerProperties = new EAXListenerProperties();
bufferProperties = new EAXBufferProperties();
// set buffer to work on source 0
bufferProperties.setCurrentSource(soundSources.get(0));
return AL10.alGetError() == AL10.AL_NO_ERROR;
}
/**
* Runs the actual EAXTest
*/
private void runTest() {
boolean running = true;
char key;
assert AL10.alIsBuffer(soundBuffers.get(0)) : "Failed to validate buffer";
// handle menu
do {
printMenu();
key = readInput();
switch (key) {
// play sound
case '1' : {
AL10.alSourcePlay(soundSources.get(0));
break;
}
// stop sound
case '2' : {
AL10.alSourceStop(soundSources.get(0));
break;
}
// add reverb
case '3' : {
listenerProperties.setEnvironment(EAX20.EAX_ENVIRONMENT_HANGAR);
break;
}
// remove reverb
case '4' : {
listenerProperties.setEnvironment(EAX20.EAX_ENVIRONMENT_GENERIC);
break;
}
// add occlusion
case '5' : {
bufferProperties.setOcclusion(bufferProperties.getOcclusion()-5000);
break;
}
// remove occlusion
case '6' : {
bufferProperties.setOcclusion(bufferProperties.getOcclusion()+5000);
break;
}
// add obstruction
case '7' : {
bufferProperties.setObstruction(bufferProperties.getObstruction()-5000);
break;
}
// remove obstruction
case '8' : {
bufferProperties.setObstruction(bufferProperties.getObstruction()+5000);
break;
}
// commit eax values
case 'c' : {
bufferProperties.commit();
listenerProperties.commit();
break;
}
// toggle autocommit
case 't' : {
bufferProperties.setAutoCommit(!bufferProperties.isAutoCommitEnabled());
listenerProperties.setAutoCommit(!listenerProperties.isAutoCommitEnabled());
System.out.println("\n[Buffer] Auto Commit is now: " + bufferProperties.isAutoCommitEnabled());
System.out.println("\n[Listen] Auto Commit is now: " + listenerProperties.isAutoCommitEnabled());
break;
}
// show current eax values
case 's' : {
System.out.println(bufferProperties);
System.out.println(listenerProperties);
break;
}
// load current eax values
case 'l' : {
bufferProperties.loadEAXValues();
listenerProperties.loadEAXValues();
break;
}
// reset to default values
case 'r' : {
bufferProperties.reset();
listenerProperties.reset();
break;
}
// quit demo
case 'q' : {
running = false;
break;
}
}
} while (running);
}
private void printMenu() {
System.out.println("");
System.out.println("EAXTest menu, please select an option from the following list:");
System.out.println("1: Play looping sound");
System.out.println("2: Stop looping sound");
System.out.println("3: Add reverberation effect");
System.out.println("4: Remove reverberation effect");
System.out.println("5: Add occlusion effect");
System.out.println("6: Remove occlusion effect");
System.out.println("7: Add obstruction effect");
System.out.println("8: Remove obstruction effect");
System.out.println("C: Commit current eax values");
System.out.println("L: Load current values");
System.out.println("T: Toggle autocomit");
System.out.println("R: Reset to inital values");
System.out.println("S: Show current values");
System.out.println("Q: Quit demo");
System.out.print("Input: ");
}
private char readInput() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
return br.readLine().toLowerCase().charAt(0);
} catch (IOException ioe) {
return 'q';
}
}
/**
* main entry point
*
* @param args String array containing arguments
*/
public static void main(String[] args) {
EAXTest eaxTest = new EAXTest();
eaxTest.execute(args);
}
}

View File

@ -36,9 +36,6 @@ import java.nio.IntBuffer;
import org.lwjgl.BufferUtils;
import org.lwjgl.input.Keyboard;
import org.lwjgl.openal.AL10;
import org.lwjgl.openal.eax.EAX;
import org.lwjgl.openal.eax.EAX20;
import org.lwjgl.openal.eax.EAXListenerProperties;
import org.lwjgl.opengl.Display;
import org.lwjgl.util.vector.Vector3f;
@ -82,8 +79,6 @@ public class MovingSoundTest extends BasicTest {
int lastError;
Vector3f sourcePosition = new Vector3f();
Vector3f listenerPosition = new Vector3f();
boolean eaxApplied = false;
EAXListenerProperties eaxListenerProp = null;
//initialize keyboard
try {
@ -147,16 +142,7 @@ public class MovingSoundTest extends BasicTest {
exit(lastError);
}
//setup EAX if possible
if (AL10.alIsExtensionPresent("EAX")) {
try {
EAX.create();
eaxListenerProp = new EAXListenerProperties();
} catch (Exception e) {
}
}
System.out.println("Move source with arrow keys\nMove listener with right shift and arrowkeys\nEnable EAX effect by pressing e (if available)\nExit with ESC");
System.out.println("Move source with arrow keys\nMove listener with right shift and arrowkeys\nExit with ESC");
while(!Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
Display.update();
@ -185,15 +171,6 @@ public class MovingSoundTest extends BasicTest {
}
}
if(Keyboard.isKeyDown(Keyboard.KEY_E)) {
if(eaxApplied) {
eaxListenerProp.setEnvironment(EAX20.EAX_ENVIRONMENT_GENERIC);
} else {
eaxListenerProp.setEnvironment(EAX20.EAX_ENVIRONMENT_HANGAR);
}
eaxApplied = !eaxApplied;
}
if(Display.isCloseRequested()) {
break;
}

View File

@ -49,9 +49,6 @@
* @version $Revision$
*/
#ifdef _WIN32
EAXSet eaxSet; // EAXSet function, ret$
EAXGet eaxGet; // EAXGet function, ret$
/* Handle to OpenAL Library */
HMODULE handleOAL;
#endif

View File

@ -96,14 +96,6 @@ extern "C" {
void InitializeOpenAL(JNIEnv *env, jobjectArray oalPaths);
void DeInitializeOpenAL();
#ifdef _WIN32
typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
extern EAXSet eaxSet;
extern EAXGet eaxGet;
#endif
typedef ALvoid (ALAPIENTRY *alEnablePROC)( ALenum capability );
typedef ALboolean (ALAPIENTRY *alIsExtensionPresentPROC)( ALubyte* fname );
typedef ALvoid* (ALAPIENTRY *alGetProcAddressPROC)( ALubyte* fname );

View File

@ -1,55 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "org_lwjgl_openal_eax_EAX.h"
#include "common_tools.h"
/*
* Class: org_lwjgl_openal_eax_EAX
* Method: nCreate
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL Java_org_lwjgl_openal_eax_EAX_nCreate (JNIEnv *env, jclass clazz) {
#ifdef _WIN32
return true;
#else
return false;
#endif
}
/*
* Class: org_lwjgl_openal_eax_EAX
* Method: nDestroy
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAX_nDestroy (JNIEnv *env, jclass clazz) {
}

View File

@ -1,134 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/**
* $Id$
*
* This is the actual JNI implementation of the OpenAL EAX library.
*
* @author Brian Matzon <brian@matzon.dk>
* @version $Revision$
*/
#include "org_lwjgl_openal_eax_EAX20.h"
/* OpenAL includes */
#include "checkALerror.h"
#include "common_tools.h"
#include "extal.h"
#ifdef _WIN32
// EAX 2.0 GUIDs
static const GUID DSPROPSETID_EAX20_ListenerProperties
= { 0x306a6a8, 0xb224, 0x11d2, { 0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22 } };
static const GUID DSPROPSETID_EAX20_BufferProperties
= { 0x306a6a7, 0xb224, 0x11d2, {0x99, 0xe5, 0x0, 0x0, 0xe8, 0xd8, 0xc7, 0x22 } };
#endif
/*
* Determines available EAX extensions
*/
JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAX20_determineAvailableExtensions (JNIEnv *env, jclass clazz) {
#ifdef _WIN32
bool EAXSupported = false;
//check that we have a current context
if(alcGetCurrentContext() == NULL) {
throwOpenALException(env, "Unable to determine EAX Extensions: No current context");
}
//check for extension, and assign if available
if(alIsExtensionPresent((ALubyte*) "EAX") == AL_TRUE) {
eaxSet = (EAXSet)alGetProcAddress((ALubyte*) "EAXSet");
eaxGet = (EAXGet)alGetProcAddress((ALubyte*) "EAXGet");
EAXSupported = (eaxSet != NULL && eaxGet != NULL);
}
//throw exception if no EAX support
if(EAXSupported != true) {
throwOpenALException(env, "Unable to determine EAX Extensions");
}
#else
throwOpenALException(env, "EAX extensions not supported");
#endif
}
/*
* This function retrieves an EAX value.
*
* C Specification:
* ALenum EAXGet(const struct _GUID *propertySetID,ALuint property,ALuint source,ALvoid
* *value,ALuint size);
*/
JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAX20_neaxGet (JNIEnv *env, jclass clazz, jint propertySetID, jint property, jint source, jobject value, jint offset, jint size) {
#ifdef _WIN32
jint result = 0;
// determine buffer or listener
if (propertySetID == org_lwjgl_openal_eax_EAX20_BUFFER_GUID) {
result = (jint) eaxGet(&DSPROPSETID_EAX20_BufferProperties, (ALuint) property, (ALuint) source, (ALvoid*) (offset + (const char*)(*env)->GetDirectBufferAddress(env, value)), (ALuint) size);
} else if (propertySetID == org_lwjgl_openal_eax_EAX20_LISTENER_GUID) {
result = (jint) eaxGet(&DSPROPSETID_EAX20_ListenerProperties, (ALuint) property, (ALuint) source, (ALvoid*) (offset + (const char*)(*env)->GetDirectBufferAddress(env, value)), (ALuint) size);
}
CHECK_AL_ERROR
return result;
#else
throwOpenALException(env, "EAX extensions not supported");
return 0;
#endif
}
/*
* This function sets an EAX value.
*
* C Specification:
* ALenum EAXSet(const struct _GUID *propertySetID,ALuint property,ALuint source,ALvoid
* *value,ALuint size);
*/
JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAX20_neaxSet (JNIEnv *env, jclass clazz, jint propertySetID, jint property, jint source, jobject value, jint offset, jint size) {
#ifdef _WIN32
jint result = 0;
// determine buffer or listener
if (propertySetID == org_lwjgl_openal_eax_EAX20_BUFFER_GUID) {
result = (jint) eaxSet(&DSPROPSETID_EAX20_BufferProperties, (ALuint) (property), source, (ALvoid*) (offset + (const char*)(*env)->GetDirectBufferAddress(env, value)), (ALuint) size);
} else if (propertySetID == org_lwjgl_openal_eax_EAX20_LISTENER_GUID) {
result = (jint) eaxSet(&DSPROPSETID_EAX20_ListenerProperties, (ALuint) (property), source, (ALvoid*) (offset + (const char*)(*env)->GetDirectBufferAddress(env, value)), (ALuint) size);
}
CHECK_AL_ERROR
return result;
#else
throwOpenALException(env, "EAX extensions not supported");
return 0;
#endif
}

View File

@ -1,117 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "org_lwjgl_openal_eax_EAXBufferProperties.h"
#include <stddef.h>
#ifdef _WIN32
#include <eax.h>
#endif
/*
* Class: org_lwjgl_openal_eax_EAXBufferProperties
* Method: sizeOfEaxBufferProperties
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAXBufferProperties_sizeOfEaxBufferProperties(JNIEnv *env, jclass clazz) {
#ifdef _WIN32
return sizeof(EAXBUFFERPROPERTIES);
#else
return 0;
#endif
}
/*
* Class: org_lwjgl_openal_eax_EAXBufferProperties
* Method: assignOffsets
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAXBufferProperties_assignOffsets(JNIEnv *env, jclass clazz) {
#ifdef _WIN32
jclass listener_class;
jfieldID field;
//get class/fields
listener_class = (*env)->FindClass(env, "org/lwjgl/openal/eax/EAXBufferProperties");
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "direct_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lDirect));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "directHF_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lDirectHF));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "room_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lRoom));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "roomHF_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lRoomHF));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "roomRolloffFactor_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, flRoomRolloffFactor));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "obstruction_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lObstruction));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "obstructionLFRatio_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, flObstructionLFRatio));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "occlusion_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lOcclusion));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "occlusionLFRatio_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, flOcclusionLFRatio));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "occlusionRoomRatio_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, flOcclusionRoomRatio));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "outsideVolumeHF_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, lOutsideVolumeHF));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "airAbsorptionFactor_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, flAirAbsorptionFactor));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "flags_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXBUFFERPROPERTIES, dwFlags));
#endif
}

View File

@ -1,122 +0,0 @@
/*
* Copyright (c) 2002-2004 LWJGL Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of 'LWJGL' nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "org_lwjgl_openal_eax_EAXListenerProperties.h"
#include <stddef.h>
#ifdef _WIN32
#include <eax.h>
#endif
/*
* Class: org_lwjgl_openal_eax_EAXListenerProperties
* Method: sizeOfEaxListenerProperties
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_org_lwjgl_openal_eax_EAXListenerProperties_sizeOfEaxListenerProperties(JNIEnv *env, jclass clazz) {
#ifdef _WIN32
return sizeof(EAXLISTENERPROPERTIES);
#else
return 0;
#endif
}
/*
* Class: org_lwjgl_openal_eax_EAXListenerProperties
* Method: assignOffsets
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_lwjgl_openal_eax_EAXListenerProperties_assignOffsets (JNIEnv *env, jclass clazz) {
#ifdef _WIN32
jclass listener_class;
jfieldID field;
//get class/fields
listener_class = (*env)->FindClass(env, "org/lwjgl/openal/eax/EAXListenerProperties");
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "room_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, lRoom));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "roomHF_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, lRoomHF));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "roomRolloffFactor_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flRoomRolloffFactor));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "decayTime_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flDecayTime));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "decayHFRatio_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flDecayHFRatio));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "reflections_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, lReflections));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "reflectionsDelay_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flReflectionsDelay));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "reverb_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, lReverb));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "reverbDelay_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flReverbDelay));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "environment_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, dwEnvironment));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "environmentSize_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flEnvironmentSize));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "environmentDiffusion_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flEnvironmentDiffusion));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "airAbsorptionHF_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, flAirAbsorptionHF));
//set environmentDiffusion_offset
field = (*env)->GetStaticFieldID(env, listener_class, "flags_offset", "I");
(*env)->SetStaticIntField(env, listener_class, field, offsetof(EAXLISTENERPROPERTIES, dwFlags));
#endif
}