diff --git a/build.xml b/build.xml index 9cba6428..386703a1 100644 --- a/build.xml +++ b/build.xml @@ -400,10 +400,6 @@ - - - - diff --git a/doc/README b/doc/README index 5d2401a7..d4722315 100644 --- a/doc/README +++ b/doc/README @@ -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 \ No newline at end of file +Project CVS: cvs.lwjgl.org diff --git a/doc/tutorial/intro.html b/doc/tutorial/intro.html index 20b4bd37..ce9dbc74 100644 --- a/doc/tutorial/intro.html +++ b/doc/tutorial/intro.html @@ -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!

3.3 Sounds

-

Sound is based on the latest OpenAL1.0 specification, which comes with but -one extension, EAX, for interesting environmental effects. The LWJGL binary +

Sound is based on the latest OpenAL1.0 specification. The LWJGL binary distribution includes the OpenAL libraries.

3.4 Input

Input can be a complicated topic. A user can have all sorts of strange fancy diff --git a/platform_build/win32_ms_cmdline/build.bat b/platform_build/win32_ms_cmdline/build.bat index 2b3fd8b7..6d6e2744 100644 --- a/platform_build/win32_ms_cmdline/build.bat +++ b/platform_build/win32_ms_cmdline/build.bat @@ -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 \ No newline at end of file +:end diff --git a/src/java/org/lwjgl/openal/eax/EAX.java b/src/java/org/lwjgl/openal/eax/EAX.java deleted file mode 100644 index 7813d4f9..00000000 --- a/src/java/org/lwjgl/openal/eax/EAX.java +++ /dev/null @@ -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 - * @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; - } -} diff --git a/src/java/org/lwjgl/openal/eax/EAX20.java b/src/java/org/lwjgl/openal/eax/EAX20.java deleted file mode 100644 index 9cb0c391..00000000 --- a/src/java/org/lwjgl/openal/eax/EAX20.java +++ /dev/null @@ -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 - * @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); -} \ No newline at end of file diff --git a/src/java/org/lwjgl/openal/eax/EAXBufferProperties.java b/src/java/org/lwjgl/openal/eax/EAXBufferProperties.java deleted file mode 100644 index 090f8714..00000000 --- a/src/java/org/lwjgl/openal/eax/EAXBufferProperties.java +++ /dev/null @@ -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 - * @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(); -} diff --git a/src/java/org/lwjgl/openal/eax/EAXListenerProperties.java b/src/java/org/lwjgl/openal/eax/EAXListenerProperties.java deleted file mode 100644 index 68a4ba08..00000000 --- a/src/java/org/lwjgl/openal/eax/EAXListenerProperties.java +++ /dev/null @@ -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 - * @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(); -} diff --git a/src/java/org/lwjgl/test/openal/EAXTest.java b/src/java/org/lwjgl/test/openal/EAXTest.java deleted file mode 100644 index 735a0c19..00000000 --- a/src/java/org/lwjgl/test/openal/EAXTest.java +++ /dev/null @@ -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 - * @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); - } -} diff --git a/src/java/org/lwjgl/test/openal/MovingSoundTest.java b/src/java/org/lwjgl/test/openal/MovingSoundTest.java index 23bd172b..7965cb39 100644 --- a/src/java/org/lwjgl/test/openal/MovingSoundTest.java +++ b/src/java/org/lwjgl/test/openal/MovingSoundTest.java @@ -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; } diff --git a/src/native/common/extal.c b/src/native/common/extal.c index 78aa1e80..6128384d 100644 --- a/src/native/common/extal.c +++ b/src/native/common/extal.c @@ -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 diff --git a/src/native/common/extal.h b/src/native/common/extal.h index 63fa11f9..98c729ff 100644 --- a/src/native/common/extal.h +++ b/src/native/common/extal.h @@ -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 ); diff --git a/src/native/common/org_lwjgl_openal_eax_EAX.c b/src/native/common/org_lwjgl_openal_eax_EAX.c deleted file mode 100644 index 8e5bcd3b..00000000 --- a/src/native/common/org_lwjgl_openal_eax_EAX.c +++ /dev/null @@ -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) { -} diff --git a/src/native/common/org_lwjgl_openal_eax_EAX20.c b/src/native/common/org_lwjgl_openal_eax_EAX20.c deleted file mode 100644 index 2059fbca..00000000 --- a/src/native/common/org_lwjgl_openal_eax_EAX20.c +++ /dev/null @@ -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 - * @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 -} - diff --git a/src/native/common/org_lwjgl_openal_eax_EAXBufferProperties.c b/src/native/common/org_lwjgl_openal_eax_EAXBufferProperties.c deleted file mode 100644 index f7e40b81..00000000 --- a/src/native/common/org_lwjgl_openal_eax_EAXBufferProperties.c +++ /dev/null @@ -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 -#ifdef _WIN32 -#include -#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 -} diff --git a/src/native/common/org_lwjgl_openal_eax_EAXListenerProperties.c b/src/native/common/org_lwjgl_openal_eax_EAXListenerProperties.c deleted file mode 100644 index 749b65ee..00000000 --- a/src/native/common/org_lwjgl_openal_eax_EAXListenerProperties.c +++ /dev/null @@ -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 - -#ifdef _WIN32 -#include -#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 -}