11.1. The Design of OpenAL: Sources, Buffers, and Listeners11.2. Limits of 3D Audio in OpenAL11.3. Integrating the Listener into Space Rocks!11.3.1. Creating the Listener Class11.3.2. Picking the Designated Driver11.4. Adding Positions to Sounds11.4.1. Handling Initial Positioning on Creation11.4.2. Disabling Distance Attenuation11.4.2.1. Working Around an alDistanceModelBug: Disabling Attenuation on a Per-Source Basis11.5. Listener Orientation11.5.1. Right-Handed Coordinate Systems and the Right-Hand Rule11.5.2. Unit Circle, Polar-to-Rectangular Coordinates, Phase Shifting, and Trigonometric Identities11.5.3. Integration into Space Rocks!11.6. Source Direction and Cones11.6.1. Inner Cone, Outer Cone, and Transitional Zone11.6.2. Implementation Time11.7. Velocity and the Doppler Effect11.7.1. Velocities and Scaling Factors11.7.2. Doppler Effect Example Time11.8. Distance Attenuation11.8.1. Attenuation Models11.8.1.1. Inverse Distance11.8.1.2. Inverse Distance Clamped11.8.1.3. Linear Distance11.8.1.4. Linear Distance Clamped11.8.1.5. Exponential Distance11.8.1.6. Exponential Distance Clamped11.8.1.7. Distance Attenuation Parameters11.8.1.8. Picking a Distance Model11.8.2. Back to Space Rocks!11.9. Using Relative Sound Properties to Selectively Disable 3D Effects11.10. Achievement Unlocked: Use All OpenAL 3D Features