Blender  V2.59
AUD_I3DDevice.h
Go to the documentation of this file.
00001 /*
00002  * $Id: AUD_I3DDevice.h 35141 2011-02-25 10:21:56Z jesterking $
00003  *
00004  * ***** BEGIN GPL LICENSE BLOCK *****
00005  *
00006  * Copyright 2009-2011 Jörg Hermann Müller
00007  *
00008  * This file is part of AudaSpace.
00009  *
00010  * Audaspace is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version.
00014  *
00015  * AudaSpace is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  * GNU General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU General Public License
00021  * along with Audaspace; if not, write to the Free Software Foundation,
00022  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00023  *
00024  * ***** END GPL LICENSE BLOCK *****
00025  */
00026 
00032 #ifndef AUD_I3DDEVICE
00033 #define AUD_I3DDEVICE
00034 
00035 #include "AUD_Space.h"
00036 #include "AUD_3DMath.h"
00037 
00038 struct AUD_Handle;
00039 
00043 class AUD_I3DDevice
00044 {
00045 public:
00050         virtual AUD_Vector3 getListenerLocation() const=0;
00051 
00056         virtual void setListenerLocation(const AUD_Vector3& location)=0;
00057 
00062         virtual AUD_Vector3 getListenerVelocity() const=0;
00063 
00068         virtual void setListenerVelocity(const AUD_Vector3& velocity)=0;
00069 
00074         virtual AUD_Quaternion getListenerOrientation() const=0;
00075 
00080         virtual void setListenerOrientation(const AUD_Quaternion& orientation)=0;
00081 
00082 
00088         virtual float getSpeedOfSound() const=0;
00089 
00095         virtual void setSpeedOfSound(float speed)=0;
00096 
00103         virtual float getDopplerFactor() const=0;
00104 
00111         virtual void setDopplerFactor(float factor)=0;
00112 
00117         virtual AUD_DistanceModel getDistanceModel() const=0;
00118 
00123         virtual void setDistanceModel(AUD_DistanceModel model)=0;
00124 
00125 
00126 
00132         virtual AUD_Vector3 getSourceLocation(AUD_Handle* handle)=0;
00133 
00140         virtual bool setSourceLocation(AUD_Handle* handle, const AUD_Vector3& location)=0;
00141 
00147         virtual AUD_Vector3 getSourceVelocity(AUD_Handle* handle)=0;
00148 
00155         virtual bool setSourceVelocity(AUD_Handle* handle, const AUD_Vector3& velocity)=0;
00156 
00162         virtual AUD_Quaternion getSourceOrientation(AUD_Handle* handle)=0;
00163 
00170         virtual bool setSourceOrientation(AUD_Handle* handle, const AUD_Quaternion& orientation)=0;
00171 
00172 
00179         virtual bool isRelative(AUD_Handle* handle)=0;
00180 
00188         virtual bool setRelative(AUD_Handle* handle, bool relative)=0;
00189 
00195         virtual float getVolumeMaximum(AUD_Handle* handle)=0;
00196 
00203         virtual bool setVolumeMaximum(AUD_Handle* handle, float volume)=0;
00204 
00210         virtual float getVolumeMinimum(AUD_Handle* handle)=0;
00211 
00218         virtual bool setVolumeMinimum(AUD_Handle* handle, float volume)=0;
00219 
00227         virtual float getDistanceMaximum(AUD_Handle* handle)=0;
00228 
00237         virtual bool setDistanceMaximum(AUD_Handle* handle, float distance)=0;
00238 
00244         virtual float getDistanceReference(AUD_Handle* handle)=0;
00245 
00252         virtual bool setDistanceReference(AUD_Handle* handle, float distance)=0;
00253 
00259         virtual float getAttenuation(AUD_Handle* handle)=0;
00260 
00268         virtual bool setAttenuation(AUD_Handle* handle, float factor)=0;
00269 
00275         virtual float getConeAngleOuter(AUD_Handle* handle)=0;
00276 
00283         virtual bool setConeAngleOuter(AUD_Handle* handle, float angle)=0;
00284 
00290         virtual float getConeAngleInner(AUD_Handle* handle)=0;
00291 
00298         virtual bool setConeAngleInner(AUD_Handle* handle, float angle)=0;
00299 
00307         virtual float getConeVolumeOuter(AUD_Handle* handle)=0;
00308 
00317         virtual bool setConeVolumeOuter(AUD_Handle* handle, float volume)=0;
00318 };
00319 
00320 #endif //AUD_I3DDEVICE