aboutsummaryrefslogtreecommitdiffstats
path: root/src/javax/media/j3d/PointSound.java
diff options
context:
space:
mode:
authorJulien Gouesse <[email protected]>2015-11-28 15:11:48 +0100
committerJulien Gouesse <[email protected]>2015-11-28 15:11:48 +0100
commitdbc98deea1884e44da2c74d6ea807253cdefa693 (patch)
tree29c3ee7dea82d7dd773d81f33f645dde67e43a17 /src/javax/media/j3d/PointSound.java
parent2c99f1329dc55bd496bce91b9aba956ecba3c67e (diff)
Relocate package prefix to org.jogamp.java3d
Diffstat (limited to 'src/javax/media/j3d/PointSound.java')
-rw-r--r--src/javax/media/j3d/PointSound.java580
1 files changed, 0 insertions, 580 deletions
diff --git a/src/javax/media/j3d/PointSound.java b/src/javax/media/j3d/PointSound.java
deleted file mode 100644
index 907bf5c..0000000
--- a/src/javax/media/j3d/PointSound.java
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation. Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- */
-
-package javax.media.j3d;
-
-import javax.vecmath.Point2f;
-import javax.vecmath.Point3f;
-
-
-/**
- * The PointSound node (a sub-class of the Sound node) defines a spatially
- * located sound source whose waves radiate uniformly in all directions from
- * a given location in space. It has the same attributes as a Sound object
- * with the addition of a location and the specification of distance-based
- * gain attenuation for listener positions between an array of distances.
- *<P>
- * A sound's amplitude is attenuated based on the distance between the listener
- * and the sound source position. A piecewise linear curve (defined in terms of
- * pairs of distance and gain scale factor) specifies the gain scale factor slope.
- *
- * The PointSound's location and attenuation distances are defined in the local
- * coordinate system of the node.
- *<P>
- * Distance Gain Attenuation
- * <UL>
- * Associated with distances from the listener to the sound source via an
- * array of (distance, gain-scale-factor) pairs. The gain scale factor
- * applied to the sound source is the linear interpolated gain value between
- * the distance value range that includes the current distance from
- * the listener to the sound source. If the distance from the listener to
- * the sound source is less than the first distance in the array, the first
- * gain scale factor is applied to the sound source. This creates a
- * spherical region around the listener within which all sound gain is
- * uniformly scaled by the first gain in the array. If the distance from
- * the listener to the sound source is greater than the last distance in
- * the array, the last gain scale factor is applied to the sound source.
- *<P>
- * Distance elements in this array of Point2f is a monotonically-increasing
- * set of floating point numbers measured from the location of the sound
- * source. Gain scale factors elements in this list of pairs can be any
- * positive floating point numbers. While for most applications this list
- * of gain scale factors will usually be monotonically-decreasing, they
- * do not have to be.
- * If this
- * is not set, no distance gain attenuation is performed (equivalent to
- * using a distance gain of 1.0 for all distances).
- *<P>
- * getDistanceGainLength method returns the length of the distance gain
- * attenuation arrays. Arrays passed into getDistanceGain methods should all
- * be at least this size.
- *<P>
- * There are two methods for getDistanceGain, one returning an array of
- * points, the other returning separate arrays for each attenuation
- * component.</UL>
- */
-
-public class PointSound extends Sound {
- // Constants
- //
- // These flags, when enabled using the setCapability method, allow an
- // application to invoke methods that respectively read and write the position
- // and the distance gain array. These capability flags are enforced only when
- // the node is part of a live or compiled scene graph
-
- /**
- * Specifies that this node allows access to its object's position
- * information.
- */
- public static final int
- ALLOW_POSITION_READ = CapabilityBits.POINT_SOUND_ALLOW_POSITION_READ;
-
- /**
- * Specifies that this node allows writing to its object's position
- * information.
- */
- public static final int
- ALLOW_POSITION_WRITE = CapabilityBits.POINT_SOUND_ALLOW_POSITION_WRITE;
-
- /**
- * Specifies that this node allows access to its object's distance
- * gain attenuation information.
- */
- public static final int
- ALLOW_DISTANCE_GAIN_READ = CapabilityBits.POINT_SOUND_ALLOW_DISTANCE_GAIN_READ;
-
- /**
- * Specifies that this node allows writing to its object's distance
- * gain attenuation information.
- */
- public static final int
- ALLOW_DISTANCE_GAIN_WRITE = CapabilityBits.POINT_SOUND_ALLOW_DISTANCE_GAIN_WRITE;
-
-
- // Array for setting default read capabilities
- private static final int[] readCapabilities = {
- ALLOW_POSITION_READ,
- ALLOW_DISTANCE_GAIN_READ
- };
-
- /**
- * Constructs and initializes a new PointSound node using default
- * parameters. The following default values are used:
- * <ul>
- * position vector: (0.0, 0.0, 0.0)<br>
- * Back attenuation: null<br>
- * distance gain attenuation: null (no attenuation performed)<br>
- * </ul>
- */
- public PointSound() {
- // Uses default values defined for Sound and PointSound nodes
- super();
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- }
-
- /**
- * Constructs a PointSound node object using only the provided parameter
- * values for sound data, sample gain, and position. The remaining fields
- * are set to the above default values. This form uses a point as input for
- * its position.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source
- * @param position 3D location of source
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- Point3f position) {
- super(soundData, initialGain);
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(position);
- }
-
- /**
- * Constructs a PointSound node object using only the provided parameter
- * values for sound data, sample gain, and position. The remaining fields
- * are set to to the above default values. This form uses individual float
- * parameters for the elements of the position point.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source data
- * @param posX x coordinate of location of source
- * @param posY y coordinate of location of source
- * @param posZ z coordinate of location of source
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- float posX, float posY, float posZ ) {
- super(soundData, initialGain);
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(posX,posY,posZ);
- }
-
- // The next four constructors fill all this classes fields with the provided
- // arguments values.
- // See the header for the setDistanceGain method for details on how the
- // those arrays are interpreted.
-
- /**
- * Construct a PointSound object accepting Point3f as input for the position
- * and accepting an array of Point2f for the distance attenuation values
- * where each pair in the array contains a distance and a gain scale factor.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source
- * @param loopCount number of times loop is looped
- * @param release flag denoting playing sound data to end
- * @param continuous denotes that sound silently plays when disabled
- * @param enable sound switched on/off
- * @param region scheduling bounds
- * @param priority playback ranking value
- * @param position 3D location of source
- * @param distanceGain array of (distance,gain) pairs controling attenuation
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- int loopCount,
- boolean release,
- boolean continuous,
- boolean enable,
- Bounds region,
- float priority,
- Point3f position,
- Point2f[] distanceGain) {
-
- super(soundData, initialGain, loopCount, release, continuous,
- enable, region, priority );
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(position);
- ((PointSoundRetained)this.retained).setDistanceGain(distanceGain);
- }
-
- /**
- * Construct a PointSound object accepting individual float parameters for
- * the elements of the position point, and accepting an array of Point2f for
- * the distance attenuation values where each pair in the array contains a
- * distance and a gain scale factor.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source
- * @param loopCount number of times loop is looped
- * @param release flag denoting playing sound to end
- * @param continuous denotes that sound silently plays when disabled
- * @param enable sound switched on/off
- * @param region scheduling bounds
- * @param priority playback ranking value
- * @param posX x coordinate of location of source
- * @param posY y coordinate of location of source
- * @param posZ z coordinate of location of source
- * @param distanceGain array of (distance,gain) pairs controling attenuation
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- int loopCount,
- boolean release,
- boolean continuous,
- boolean enable,
- Bounds region,
- float priority,
- float posX, float posY, float posZ,
- Point2f[] distanceGain) {
-
- super(soundData, initialGain, loopCount, release,
- continuous, enable, region, priority );
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(posX,posY,posZ);
- ((PointSoundRetained)this.retained).setDistanceGain(distanceGain);
- }
-
- /**
- * Construct a PointSound object accepting points as input for the position.
- * and accepting separate arrays for the distance and gain scale factors
- * components of distance attenuation.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source
- * @param loopCount number of times loop is looped
- * @param release flag denoting playing sound data to end
- * @param continuous denotes that sound silently plays when disabled
- * @param enable sound switched on/off
- * @param region scheduling bounds
- * @param priority playback ranking value
- * @param position 3D location of source
- * @param attenuationDistance array of distance values used for attenuation
- * @param attenuationGain array of gain scale factors used for attenuation
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- int loopCount,
- boolean release,
- boolean continuous,
- boolean enable,
- Bounds region,
- float priority,
- Point3f position,
- float[] attenuationDistance,
- float[] attenuationGain) {
-
- super(soundData, initialGain, loopCount, release, continuous,
- enable, region, priority );
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(position);
- ((PointSoundRetained)this.retained).setDistanceGain(
- attenuationDistance, attenuationGain);
- }
-
- /**
- * Construct a PointSound object accepting individual float parameters for
- * the elements of the position points, and accepting separate arrays for
- * the distance and gain scale factors components of distance attenuation.
- * @param soundData sound data associated with this sound source node
- * @param initialGain amplitude scale factor applied to sound source
- * @param loopCount number of times loop is looped
- * @param release flag denoting playing sound to end
- * @param continuous denotes that sound silently plays when disabled
- * @param enable sound switched on/off
- * @param region scheduling bounds
- * @param priority playback ranking value
- * @param posX x coordinate of location of source
- * @param posY y coordinate of location of source
- * @param posZ z coordinate of location of source
- * @param attenuationDistance array of distance values used for attenuation
- * @param attenuationGain array of gain scale factors used for attenuation
- */
- public PointSound(MediaContainer soundData,
- float initialGain,
- int loopCount,
- boolean release,
- boolean continuous,
- boolean enable,
- Bounds region,
- float priority,
- float posX, float posY, float posZ,
- float[] attenuationDistance,
- float[] attenuationGain) {
-
- super(soundData, initialGain, loopCount, release,
- continuous, enable, region, priority );
-
- // set default read capabilities
- setDefaultReadCapabilities(readCapabilities);
-
- ((PointSoundRetained)this.retained).setPosition(posX,posY,posZ);
- ((PointSoundRetained)this.retained).setDistanceGain(
- attenuationDistance, attenuationGain);
- }
-
- /**
- * Creates the retained mode PointSoundRetained object that this
- * PointSound object will point to.
- */
- @Override
- void createRetained() {
- this.retained = new PointSoundRetained();
- this.retained.setSource(this);
- }
-
- /**
- * Sets this sound's location from the vector provided.
- * @param position the new location
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void setPosition(Point3f position) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_POSITION_WRITE))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound0"));
-
- ((PointSoundRetained)this.retained).setPosition(position);
- }
-
- /**
- * Sets this sound's position from the three values provided.
- * @param x the new x position
- * @param y the new y position
- * @param z the new z position
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void setPosition(float x, float y, float z) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_POSITION_WRITE))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound0"));
-
- ((PointSoundRetained)this.retained).setPosition(x,y,z);
- }
-
- /**
- * Retrieves this sound's direction and places it in the
- * vector provided.
- * @param position the variable to receive the direction vector
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void getPosition(Point3f position) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_POSITION_READ))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound2"));
-
- ((PointSoundRetained)this.retained).getPosition(position);
- }
-
- /**
- * Sets this sound's distance gain attenuation - where gain scale factor
- * is applied to sound based on distance listener is from sound source.
- * This form of setDistanceGain takes these pairs of values as an array of
- * Point2f.
- * @param attenuation defined by pairs of (distance,gain-scale-factor)
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void setDistanceGain(Point2f[] attenuation) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_DISTANCE_GAIN_WRITE))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound3"));
-
- ((PointSoundRetained)this.retained).setDistanceGain(attenuation);
- }
-
- /**
- * Sets this sound's distance gain attenuation as an array of Point2fs.
- * This form of setDistanceGain accepts two separate arrays for these values.
- * The distance and gainScale arrays should be of the same length. If the
- * gainScale array length is greater than the distance array length, the
- * gainScale array elements beyond the length of the distance array are
- * ignored. If the gainScale array is shorter than the distance array, the
- * last gainScale array value is repeated to fill an array of length equal
- * to distance array.
- * @param distance array of monotonically-increasing floats
- * @param gain array of non-negative scale factors
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void setDistanceGain(float[] distance, float[] gain) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_DISTANCE_GAIN_WRITE))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound3"));
-
- ((PointSoundRetained)this.retained).setDistanceGain(distance, gain);
- }
-
- /**
- * Get the length of this node's distance gain attenuation arrays.
- * @return distance gain attenuation array length
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public int getDistanceGainLength() {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_DISTANCE_GAIN_READ))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound4"));
-
- return (((PointSoundRetained)this.retained).getDistanceGainLength());
- }
-
- /**
- * Gets this sound's distance attenuation. The distance attenuation
- * pairs are copied into the specified array.
- * The array must be large enough to hold all of the points.
- * The individual array elements must be allocated by the caller.
- * @param attenuation arrays containing distance attenuation pairs
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void getDistanceGain(Point2f[] attenuation) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_DISTANCE_GAIN_READ))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound4"));
-
- ((PointSoundRetained)this.retained).getDistanceGain(attenuation);
- }
-
- /**
- * Gets this sound's distance gain attenuation values in separate arrays.
- * The arrays must be large enough to hold all of the values.
- * @param distance array of float distance from sound source
- * @param gain array of non-negative scale factors associated with
- * @exception CapabilityNotSetException if appropriate capability is
- * not set and this object is part of live or compiled scene graph
- */
- public void getDistanceGain(float[] distance, float[] gain) {
- if (isLiveOrCompiled())
- if(!this.getCapability(ALLOW_DISTANCE_GAIN_READ))
- throw new CapabilityNotSetException(J3dI18N.getString("PointSound4"));
-
- ((PointSoundRetained)this.retained).getDistanceGain(distance,gain);
- }
-
- /**
- * Creates a new instance of the node. This routine is called
- * by <code>cloneTree</code> to duplicate the current node.
- * @param forceDuplicate when set to <code>true</code>, causes the
- * <code>duplicateOnCloneTree</code> flag to be ignored. When
- * <code>false</code>, the value of each node's
- * <code>duplicateOnCloneTree</code> variable determines whether
- * NodeComponent data is duplicated or copied.
- *
- * @see Node#cloneTree
- * @see Node#cloneNode
- * @see Node#duplicateNode
- * @see NodeComponent#setDuplicateOnCloneTree
- */
- @Override
- public Node cloneNode(boolean forceDuplicate) {
- PointSound p = new PointSound();
- p.duplicateNode(this, forceDuplicate);
- return p;
- }
-
- /**
- * Copies all node information from <code>originalNode</code> into
- * the current node. This method is called from the
- * <code>cloneNode</code> method which is, in turn, called by the
- * <code>cloneTree</code> method.
- * <P>
- * For any <code>NodeComponent</code> objects
- * contained by the object being duplicated, each <code>NodeComponent</code>
- * object's <code>duplicateOnCloneTree</code> value is used to determine
- * whether the <code>NodeComponent</code> should be duplicated in the new node
- * or if just a reference to the current node should be placed in the
- * new node. This flag can be overridden by setting the
- * <code>forceDuplicate</code> parameter in the <code>cloneTree</code>
- * method to <code>true</code>.
- * <br>
- * NOTE: Applications should <i>not</i> call this method directly.
- * It should only be called by the cloneNode method.
- *
- * @param originalNode the original node to duplicate.
- * @param forceDuplicate when set to <code>true</code>, causes the
- * <code>duplicateOnCloneTree</code> flag to be ignored. When
- * <code>false</code>, the value of each node's
- * <code>duplicateOnCloneTree</code> variable determines whether
- * NodeComponent data is duplicated or copied.
- * @exception ClassCastException if originalNode is not an instance of
- * <code>PointSound</code>
- *
- * @see Node#cloneTree
- * @see Node#cloneNode
- * @see NodeComponent#setDuplicateOnCloneTree
- */
- @Override
- public void duplicateNode(Node originalNode, boolean forceDuplicate) {
- checkDuplicateNode(originalNode, forceDuplicate);
- }
-
-
- /**
- * Copies all PointSound information from
- * <code>originalNode</code> into
- * the current node. This method is called from the
- * <code>cloneNode</code> method which is, in turn, called by the
- * <code>cloneTree</code> method.<P>
- *
- * @param originalNode the original node to duplicate.
- * @param forceDuplicate when set to <code>true</code>, causes the
- * <code>duplicateOnCloneTree</code> flag to be ignored. When
- * <code>false</code>, the value of each node's
- * <code>duplicateOnCloneTree</code> variable determines whether
- * NodeComponent data is duplicated or copied.
- *
- * @exception RestrictedAccessException if this object is part of a live
- * or compiled scenegraph.
- *
- * @see Node#duplicateNode
- * @see Node#cloneTree
- * @see NodeComponent#setDuplicateOnCloneTree
- */
- @Override
- void duplicateAttributes(Node originalNode, boolean forceDuplicate) {
- super.duplicateAttributes(originalNode, forceDuplicate);
-
- PointSoundRetained orgRetained = (PointSoundRetained)originalNode.retained;
- PointSoundRetained thisRetained = (PointSoundRetained)this.retained;
-
- Point3f p = new Point3f();
- orgRetained.getPosition(p);
- thisRetained.setPosition(p);
-
- int len = orgRetained.getDistanceGainLength();
- float distance[] = new float[len];
- float gain[] = new float[len];
- orgRetained.getDistanceGain(distance, gain);
- thisRetained.setDistanceGain(distance, gain);
- }
-
-}