@Override public void writeObject( DataOutput out ) throws IOException { super.writeObject( out ); out.writeFloat( ((AuralAttributes)node).getAttributeGain() ); float[] distance = new float[ ((AuralAttributes)node).getDistanceFilterLength() ]; float[] cutoff = new float[ distance.length ]; ((AuralAttributes)node).getDistanceFilter( distance, cutoff ); out.writeInt( distance.length ); for(int i=0; i<distance.length; i++) { out.writeFloat( distance[i] ); out.writeFloat( cutoff[i] ); } out.writeFloat( ((AuralAttributes)node).getFrequencyScaleFactor() ); out.writeFloat( ((AuralAttributes)node).getReflectionCoefficient() ); control.writeBounds( out, ((AuralAttributes)node).getReverbBounds() ); out.writeFloat( ((AuralAttributes)node).getReverbDelay() ); out.writeInt( ((AuralAttributes)node).getReverbOrder() ); out.writeFloat( ((AuralAttributes)node).getRolloff() ); out.writeFloat( ((AuralAttributes)node).getVelocityScaleFactor() ); out.writeFloat( ((AuralAttributes)node).getReflectionDelay() ); out.writeFloat( ((AuralAttributes)node).getReverbCoefficient() ); out.writeFloat( ((AuralAttributes)node).getDecayTime() ); out.writeFloat( ((AuralAttributes)node).getDecayFilter() ); out.writeFloat( ((AuralAttributes)node).getDiffusion() ); out.writeFloat( ((AuralAttributes)node).getDensity() ); }