Files
scummvm-cursorfix/engines/hpl1/engine/impl/OpenALSoundEnvironment.h
2026-02-02 04:50:13 +01:00

129 lines
5.3 KiB
C++

/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*
* Copyright (C) 2006-2010 - Frictional Games
*
* This file is part of HPL1 Engine.
*/
#ifndef HPL_OPENALSOUNDENVIRONMENT_H
#define HPL_OPENALSOUNDENVIRONMENT_H
#include "hpl1/engine/sound/SoundEnvironment.h"
namespace hpl {
class cSoundManager;
class cOpenALSoundEnvironment : public iSoundEnvironment {
public:
cOpenALSoundEnvironment();
~cOpenALSoundEnvironment();
bool CreateFromFile(const tString &asFile);
inline float GetDensity() { return mfDensity; }
inline float GetDiffusion() { return mfDiffusion; }
inline float GetGain() { return mfGain; }
inline float GetGainHF() { return mfGainHF; }
inline float GetGainLF() { return mfGainLF; }
inline float GetDecayTime() { return mfDecayTime; }
inline float GetDecayHFRatio() { return mfDecayHFRatio; }
inline float GetDecayLFRatio() { return mfDecayLFRatio; }
inline float GetReflectionsGain() { return mfReflectionsGain; }
inline float GetReflectionsDelay() { return mfReflectionsDelay; }
inline float *GetReflectionsPan() { return mfReflectionsPan; }
inline float GetLateReverbGain() { return mfLateReverbGain; }
inline float GetLateReverbDelay() { return mfLateReverbDelay; }
inline float *GetLateReverbPan() { return mfLateReverbPan; }
inline float GetEchoTime() { return mfEchoTime; }
inline float GetEchoDepth() { return mfEchoDepth; }
inline float GetModulationTime() { return mfModulationTime; }
inline float GetModulationDepth() { return mfModulationDepth; }
inline float GetAirAbsorptionGainHF() { return mfAirAbsorptionGainHF; }
inline float GetHFReference() { return mfHFReference; }
inline float GetLFReference() { return mfLFReference; }
inline float GetRoomRolloffFactor() { return mfRoomRolloffFactor; }
inline int GetDecayHFLimit() { return mbDecayHFLimit; }
inline void SetDensity(float afDensity) { mfDensity = afDensity; }
inline void SetDiffusion(float afDiffusion) { mfDiffusion = afDiffusion; }
inline void SetGain(float afGain) { mfGain = afGain; }
inline void SetGainHF(float afGainHF) { mfGainHF = afGainHF; }
inline void SetGainLF(float afGainLF) { mfGainLF = afGainLF; }
inline void SetDecayTime(float afDecayTime) { mfDecayTime = afDecayTime; }
inline void SetDecayHFRatio(float afDecayHFRatio) { mfDecayHFRatio = afDecayHFRatio; }
inline void SetDecayLFRatio(float afDecayLFRatio) { mfDecayLFRatio = afDecayLFRatio; }
inline void SetReflectionsGain(float afReflectionsGain) { mfReflectionsGain = afReflectionsGain; }
inline void SetReflectionsDelay(float afReflectionsDelay) { mfReflectionsDelay = afReflectionsDelay; }
inline void SetReflectionsPan(float afReflectionsPan[3]) {
mfReflectionsPan[0] = afReflectionsPan[0];
mfReflectionsPan[1] = afReflectionsPan[1];
mfReflectionsPan[2] = afReflectionsPan[2];
}
inline void SetLateReverbGain(float afLateReverbGain) { mfLateReverbGain = afLateReverbGain; }
inline void SetLateReverbDelay(float afLateReverbDelay) { mfLateReverbDelay = afLateReverbDelay; }
inline void SetLateReverbPan(float afLateReverbPan[3]) {
mfLateReverbPan[0] = afLateReverbPan[0];
mfLateReverbPan[1] = afLateReverbPan[1];
mfLateReverbPan[2] = afLateReverbPan[2];
}
inline void SetEchoTime(float afEchoTime) { mfEchoTime = afEchoTime; }
inline void SetEchoDepth(float afEchoDepth) { mfEchoDepth = afEchoDepth; }
inline void SetModulationTime(float afModulationTime) { mfModulationTime = afModulationTime; }
inline void SetModulationDepth(float afModulationDepth) { mfModulationDepth = afModulationDepth; }
inline void SetAirAbsorptionGainHF(float afAirAbsorptionGainHF) { mfAirAbsorptionGainHF = afAirAbsorptionGainHF; }
inline void SetHFReference(float afHFReference) { mfHFReference = afHFReference; }
inline void SetLFReference(float afLFReference) { mfLFReference = afLFReference; }
inline void SetRoomRolloffFactor(float afRoomRolloffFactor) { mfRoomRolloffFactor = afRoomRolloffFactor; }
inline void SetDecayHFLimit(int abDecayHFLimit) { mbDecayHFLimit = abDecayHFLimit; }
protected:
float mfDensity;
float mfDiffusion;
float mfGain;
float mfGainHF;
float mfGainLF;
float mfDecayTime;
float mfDecayHFRatio;
float mfDecayLFRatio;
float mfReflectionsGain;
float mfReflectionsDelay;
float mfReflectionsPan[3];
float mfLateReverbGain;
float mfLateReverbDelay;
float mfLateReverbPan[3];
float mfEchoTime;
float mfEchoDepth;
float mfModulationTime;
float mfModulationDepth;
float mfAirAbsorptionGainHF;
float mfHFReference;
float mfLFReference;
float mfRoomRolloffFactor;
int mbDecayHFLimit;
};
} // namespace hpl
#endif // HPL_OPENALSOUNDENVIRONMENT_H