4 * ***** BEGIN GPL LICENSE BLOCK *****
6 * Copyright 2009-2011 Jörg Hermann Müller
8 * This file is part of AudaSpace.
10 * Audaspace is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * AudaSpace is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with Audaspace; if not, write to the Free Software Foundation,
22 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 * ***** END GPL LICENSE BLOCK *****
27 /** \file audaspace/intern/AUD_I3DDevice.h
28 * \ingroup audaspaceintern
35 #include "AUD_Space.h"
36 #include "AUD_3DMath.h"
39 * This class represents an output device for 3D sound.
45 * Retrieves the listener location.
46 * \return The listener location.
48 virtual AUD_Vector3 getListenerLocation() const=0;
51 * Sets the listener location.
52 * \param location The new location.
54 virtual void setListenerLocation(const AUD_Vector3& location)=0;
57 * Retrieves the listener velocity.
58 * \return The listener velocity.
60 virtual AUD_Vector3 getListenerVelocity() const=0;
63 * Sets the listener velocity.
64 * \param velocity The new velocity.
66 virtual void setListenerVelocity(const AUD_Vector3& velocity)=0;
69 * Retrieves the listener orientation.
70 * \return The listener orientation as quaternion.
72 virtual AUD_Quaternion getListenerOrientation() const=0;
75 * Sets the listener orientation.
76 * \param orientation The new orientation as quaternion.
78 virtual void setListenerOrientation(const AUD_Quaternion& orientation)=0;
82 * Retrieves the speed of sound.
83 * This value is needed for doppler effect calculation.
84 * \return The speed of sound.
86 virtual float getSpeedOfSound() const=0;
89 * Sets the speed of sound.
90 * This value is needed for doppler effect calculation.
91 * \param speed The new speed of sound.
93 virtual void setSpeedOfSound(float speed)=0;
96 * Retrieves the doppler factor.
97 * This value is a scaling factor for the velocity vectors of sources and
98 * listener which is used while calculating the doppler effect.
99 * \return The doppler factor.
101 virtual float getDopplerFactor() const=0;
104 * Sets the doppler factor.
105 * This value is a scaling factor for the velocity vectors of sources and
106 * listener which is used while calculating the doppler effect.
107 * \param factor The new doppler factor.
109 virtual void setDopplerFactor(float factor)=0;
112 * Retrieves the distance model.
113 * \return The distance model.
115 virtual AUD_DistanceModel getDistanceModel() const=0;
118 * Sets the distance model.
119 * \param model distance model.
121 virtual void setDistanceModel(AUD_DistanceModel model)=0;
124 #endif //AUD_I3DDEVICE