1 /* 2 Copyright (c) 2013 yvt 3 4 This file is part of OpenSpades. 5 6 OpenSpades is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 OpenSpades is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with OpenSpades. If not, see <http://www.gnu.org/licenses/>. 18 19 */ 20 21 #pragma once 22 23 #include <Core/Math.h> 24 #include <Core/RefCountedObject.h> 25 26 namespace spades { 27 namespace client { 28 class IAudioChunk; 29 class GameMap; 30 31 struct AudioParam { 32 float volume; 33 float pitch; 34 float referenceDistance; 35 AudioParamAudioParam36 AudioParam() { 37 volume = 1.f; 38 pitch = 1.f; 39 referenceDistance = 1.f; 40 } 41 }; 42 43 class IAudioDevice : public RefCountedObject { 44 public: ~IAudioDevice()45 virtual ~IAudioDevice() {} 46 47 virtual IAudioChunk *RegisterSound(const char *name) = 0; 48 49 virtual void SetGameMap(GameMap *) = 0; 50 51 virtual void Play(IAudioChunk *, const Vector3 &origin, const AudioParam &) = 0; 52 virtual void PlayLocal(IAudioChunk *, const Vector3 &origin, const AudioParam &) = 0; 53 virtual void PlayLocal(IAudioChunk *, const AudioParam &) = 0; 54 55 virtual void Respatialize(const Vector3 &eye, const Vector3 &front, 56 const Vector3 &up) = 0; 57 }; 58 } 59 } 60