package paulscode.sound; /** * The CommandObject class is used to store arguments in the SoundSystem's * Command Queue. Queued CommandObjects are then processed by the * {@link paulscode.sound.CommandThread CommandThread}. Commands are queued * and executed in the background, so it is unlikely that the user will ever * need to use this class. *<br><br> *<b><i> SoundSystem License:</b></i><br><b><br> * You are free to use this library for any purpose, commercial or otherwise. * You may modify this library or source code, and distribute it any way you * like, provided the following conditions are met: *<br> * 1) You may not falsely claim to be the author of this library or any * unmodified portion of it. *<br> * 2) You may not copyright this library or a modified version of it and then * sue me for copyright infringement. *<br> * 3) If you modify the source code, you must clearly document the changes * made before redistributing the modified source code, so other users know * it is not the original code. *<br> * 4) You are not required to give me credit for this library in any derived * work, but if you do, you must also mention my website: * http://www.paulscode.com *<br> * 5) I the author will not be responsible for any damages (physical, * financial, or otherwise) caused by the use if this library or any part * of it. *<br> * 6) I the author do not guarantee, warrant, or make any representations, * either expressed or implied, regarding the use of this library or any * part of it. * <br><br> * Author: Paul Lamb * <br> * http://www.paulscode.com * </b> */ public class CommandObject { /** * Global identifier for the command to initialize the current sound library. */ public static final int INITIALIZE = 1; /** * Global identifier for the command to pre-load a sound file. */ public static final int LOAD_SOUND = 2; /** * Global identifier for the command to pre-load a sound file. */ public static final int LOAD_DATA = 3; /** * Global identifier for the command to remove a sound file from memory. */ public static final int UNLOAD_SOUND = 4; /** * Global identifier for the command to queue a sound file. */ public static final int QUEUE_SOUND = 5; /** * Global identifier for the command to dequeue a sound file. */ public static final int DEQUEUE_SOUND = 6; /** * Global identifier for the command to fade-out transition a source. */ public static final int FADE_OUT = 7; /** * Global identifier for the command to fade-out/in transition a source. */ public static final int FADE_OUT_IN = 8; /** * Global identifier for the command to check volume levels of fading sources. */ public static final int CHECK_FADE_VOLUMES = 9; /** * Global identifier for the command to create a new source. */ public static final int NEW_SOURCE = 10; /** * Global identifier for the command to create a new raw data stream. */ public static final int RAW_DATA_STREAM = 11; /** * Global identifier for the command to create a source and immediately play it. */ public static final int QUICK_PLAY = 12; /** * Global identifier for the command to set a source's position in 3D space. */ public static final int SET_POSITION = 13; /** * Global identifier for the command to change a source's volume. */ public static final int SET_VOLUME = 14; /** * Global identifier for the command to change a source's pitch. */ public static final int SET_PITCH = 15; /** * Global identifier for the command to change a source's priority. */ public static final int SET_PRIORITY = 16; /** * Global identifier for the command to tell a source whether or not to loop. */ public static final int SET_LOOPING = 17; /** * Global identifier for the command to set a source's attenuation model. */ public static final int SET_ATTENUATION = 18; /** * Global identifier for the command to set a source's fade distance or rolloff * factor. */ public static final int SET_DIST_OR_ROLL = 19; /** * Global identifier for the command to change the Doppler factor. */ public static final int CHANGE_DOPPLER_FACTOR = 20; /** * Global identifier for the command to change the Doppler velocity. */ public static final int CHANGE_DOPPLER_VELOCITY = 21; /** * Global identifier for the command to set a source's velocity. */ public static final int SET_VELOCITY = 22; /** * Global identifier for the command to set a source's velocity. */ public static final int SET_LISTENER_VELOCITY = 23; /** * Global identifier for the command to play a source. */ public static final int PLAY = 24; /** * Global identifier for the command to play a source. */ public static final int FEED_RAW_AUDIO_DATA = 25; /** * Global identifier for the command to pause a source. */ public static final int PAUSE = 26; /** * Global identifier for the command to stop a source. */ public static final int STOP = 27; /** * Global identifier for the command to rewind a source. */ public static final int REWIND = 28; /** * Global identifier for the command to flush all queued data. */ public static final int FLUSH = 29; /** * Global identifier for the command to cull a source. */ public static final int CULL = 30; /** * Global identifier for the command to activate a source. */ public static final int ACTIVATE = 31; /** * Global identifier for the command to set a source as permanant or temporary. */ public static final int SET_TEMPORARY = 32; /** * Global identifier for the command to delete a source. */ public static final int REMOVE_SOURCE = 33; /** * Global identifier for the command to move the listner. */ public static final int MOVE_LISTENER = 34; /** * Global identifier for the command to set the listener's position. */ public static final int SET_LISTENER_POSITION = 35; /** * Global identifier for the command to turn the listener. */ public static final int TURN_LISTENER = 36; /** * Global identifier for the command to set the listener's turn angle. */ public static final int SET_LISTENER_ANGLE = 37; /** * Global identifier for the command to change the listener's orientation. */ public static final int SET_LISTENER_ORIENTATION = 38; /** * Global identifier for the command to change the master volume. */ public static final int SET_MASTER_VOLUME = 39; /** * Global identifier for the command to create a new library. */ public static final int NEW_LIBRARY = 40; /** * Any buffer required for a command. */ public byte[] buffer; /** * Any int arguments required for a command. */ public int[] intArgs; /** * Any float arguments required for a command. */ public float[] floatArgs; /** * Any long arguments required for a command. */ public long[] longArgs; /** * Any boolean arguments required for a command. */ public boolean[] boolArgs; /** * Any String arguments required for a command. */ public String[] stringArgs; /** * Any Class arguments required for a command. */ public Class[] classArgs; /** * Any Object arguments required for a command. */ public Object[] objectArgs; /** * Which command to execute. */ public int Command; /** * Constructor used to create a command which doesn't require any arguments. * @param cmd Which command to execute. */ public CommandObject( int cmd ) { Command = cmd; } /** * Constructor used to create a command which requires one integer argument. * @param cmd Which command to execute. * @param i The integer argument needed to execute this command. */ public CommandObject( int cmd, int i ) { Command = cmd; intArgs = new int[1]; intArgs[0] = i; } /** * Constructor used to create a command which requires one Library Class * argument. * @param cmd Which command to execute. * @param c The Library Class argument needed to execute this command. */ public CommandObject( int cmd, Class c ) { Command = cmd; classArgs = new Class[1]; classArgs[0] = c; } /** * Constructor used to create a command which requires one float argument. * @param cmd Which command to execute. * @param f The float argument needed to execute this command. */ public CommandObject( int cmd, float f ) { Command = cmd; floatArgs = new float[1]; floatArgs[0] = f; } /** * Constructor used to create a command which requires one String argument. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. */ public CommandObject( int cmd, String s ) { Command = cmd; stringArgs = new String[1]; stringArgs[0] = s; } /** * Constructor used to create a command which requires one Object argument. * @param cmd Which command to execute. * @param o The Object argument needed to execute this command. */ public CommandObject( int cmd, Object o ) { Command = cmd; objectArgs = new Object[1]; objectArgs[0] = o; } /** * Constructor used to create a command which requires one String argument and * one Object argument. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param o The Object argument needed to execute this command. */ public CommandObject( int cmd, String s, Object o ) { Command = cmd; stringArgs = new String[1]; stringArgs[0] = s; objectArgs = new Object[1]; objectArgs[0] = o; } /** * Constructor used to create a command which requires one String argument and * one byte buffer argument. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param buff The byte buffer argument needed to execute this command. */ public CommandObject( int cmd, String s, byte[] buff ) { Command = cmd; stringArgs = new String[1]; stringArgs[0] = s; buffer = buff; } /** * Constructor used to create a command which requires one String argument, one * Object argument, and one long argument. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param o The Object argument needed to execute this command. * @param l The long argument needed to execute this command. */ public CommandObject( int cmd, String s, Object o, long l ) { Command = cmd; stringArgs = new String[1]; stringArgs[0] = s; objectArgs = new Object[1]; objectArgs[0] = o; longArgs = new long[1]; longArgs[0] = l; } /** * Constructor used to create a command which requires one String argument, one * Object argument, and two long arguments. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param o The Object argument needed to execute this command. * @param l1 The first long argument needed to execute this command. * @param l2 The second long argument needed to execute this command. */ public CommandObject( int cmd, String s, Object o, long l1, long l2 ) { Command = cmd; stringArgs = new String[1]; stringArgs[0] = s; objectArgs = new Object[1]; objectArgs[0] = o; longArgs = new long[2]; longArgs[0] = l1; longArgs[1] = l2; } /** * Constructor used to create a command which requires two String arguments. * @param cmd Which command to execute. * @param s1 The first String argument needed to execute this command. * @param s2 The second String argument needed to execute this command. */ public CommandObject( int cmd, String s1, String s2 ) { Command = cmd; stringArgs = new String[2]; stringArgs[0] = s1; stringArgs[1] = s2; } /** * Constructor used to create a command which requires a String and an int as * arguments. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param i The integer argument needed to execute this command. */ public CommandObject( int cmd, String s, int i ) { Command = cmd; intArgs = new int[1]; stringArgs = new String[1]; intArgs[0] = i; stringArgs[0] = s; } /** * Constructor used to create a command which requires a String and a float as * arguments. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param f The float argument needed to execute this command. */ public CommandObject( int cmd, String s, float f ) { Command = cmd; floatArgs = new float[1]; stringArgs = new String[1]; floatArgs[0] = f; stringArgs[0] = s; } /** * Constructor used to create a command which requires a String and a boolean * as arguments. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param b The boolean argument needed to execute this command. */ public CommandObject( int cmd, String s, boolean b ) { Command = cmd; boolArgs = new boolean[1]; stringArgs = new String[1]; boolArgs[0] = b; stringArgs[0] = s; } /** * Constructor used to create a command which requires three float arguments. * @param cmd Which command to execute. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. */ public CommandObject( int cmd, float f1, float f2, float f3 ) { Command = cmd; floatArgs = new float[3]; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; } /** * Constructor used to create a command which a String and three float * arguments. * @param cmd Which command to execute. * @param s The String argument needed to execute this command. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. */ public CommandObject( int cmd, String s, float f1, float f2, float f3 ) { Command = cmd; floatArgs = new float[3]; stringArgs = new String[1]; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; stringArgs[0] = s; } /** * Constructor used to create a command which requires six float arguments. * @param cmd Which command to execute. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. * @param f4 The fourth float argument needed to execute this command. * @param f5 The fifth float argument needed to execute this command. * @param f6 The sixth float argument needed to execute this command. */ public CommandObject( int cmd, float f1, float f2, float f3, float f4, float f5, float f6 ) { Command = cmd; floatArgs = new float[6]; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; floatArgs[3] = f4; floatArgs[4] = f5; floatArgs[5] = f6; } /** * Constructor used to create a command which requires several arguments. * @param cmd Which command to execute. * @param b1 The first boolean argument needed to execute this command. * @param b2 The second boolean argument needed to execute this command. * @param b3 The third boolean argument needed to execute this command. * @param s The String argument needed to execute this command. * @param o The Object argument needed to execute this command. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. * @param i The integer argument needed to execute this command. * @param f4 The fourth float argument needed to execute this command. */ public CommandObject( int cmd, boolean b1, boolean b2, boolean b3, String s, Object o, float f1, float f2, float f3, int i, float f4 ) { Command = cmd; intArgs = new int[1]; floatArgs = new float[4]; boolArgs = new boolean[3]; stringArgs = new String[1]; objectArgs = new Object[1]; intArgs[0] = i; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; floatArgs[3] = f4; boolArgs[0] = b1; boolArgs[1] = b2; boolArgs[2] = b3; stringArgs[0] = s; objectArgs[0] = o; } /** * Constructor used to create a command which requires several arguments. * @param cmd Which command to execute. * @param b1 The first boolean argument needed to execute this command. * @param b2 The second boolean argument needed to execute this command. * @param b3 The third boolean argument needed to execute this command. * @param s The String argument needed to execute this command. * @param o The Object argument needed to execute this command. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. * @param i The integer argument needed to execute this command. * @param f4 The fourth float argument needed to execute this command. * @param b4 The fourth boolean argument needed to execute this command. */ public CommandObject( int cmd, boolean b1, boolean b2, boolean b3, String s, Object o, float f1, float f2, float f3, int i, float f4, boolean b4 ) { Command = cmd; intArgs = new int[1]; floatArgs = new float[4]; boolArgs = new boolean[4]; stringArgs = new String[1]; objectArgs = new Object[1]; intArgs[0] = i; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; floatArgs[3] = f4; boolArgs[0] = b1; boolArgs[1] = b2; boolArgs[2] = b3; boolArgs[3] = b4; stringArgs[0] = s; objectArgs[0] = o; } /** * Constructor used to create a command which requires several arguments. * @param cmd Which command to execute. * @param o The Object argument needed to execute this command. * @param b The first boolean argument needed to execute this command. * @param s The String argument needed to execute this command. * @param f1 The first float argument needed to execute this command. * @param f2 The second float argument needed to execute this command. * @param f3 The third float argument needed to execute this command. * @param i The integer argument needed to execute this command. * @param f4 The fourth float argument needed to execute this command. */ public CommandObject( int cmd, Object o, boolean b, String s, float f1, float f2, float f3, int i, float f4 ) { Command = cmd; intArgs = new int[1]; floatArgs = new float[4]; boolArgs = new boolean[1]; stringArgs = new String[1]; objectArgs = new Object[1]; intArgs[0] = i; floatArgs[0] = f1; floatArgs[1] = f2; floatArgs[2] = f3; floatArgs[3] = f4; boolArgs[0] = b; stringArgs[0] = s; objectArgs[0] = o; } }