diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/common/config.h.cmake | 16 | ||||
-rw-r--r-- | src/common/event.cpp | 136 | ||||
-rw-r--r-- | src/common/logger.cpp | 2 | ||||
-rw-r--r-- | src/common/logger.h | 2 | ||||
-rw-r--r-- | src/sound/sound.h | 642 |
5 files changed, 399 insertions, 399 deletions
diff --git a/src/common/config.h.cmake b/src/common/config.h.cmake index b066387..d8bff91 100644 --- a/src/common/config.h.cmake +++ b/src/common/config.h.cmake @@ -1,8 +1,8 @@ -#pragma once
-
-// Macros set by CMake
-#cmakedefine DEBUG
-#cmakedefine PLATFORM_WINDOWS @PLATFORM_WINDOWS@
-#cmakedefine PLATFORM_LINUX @PLATFORM_LINUX@
-#cmakedefine PLATFORM_OTHER @PLATFORM_OTHER@
-
+#pragma once + +// Macros set by CMake +#cmakedefine DEBUG +#cmakedefine PLATFORM_WINDOWS @PLATFORM_WINDOWS@ +#cmakedefine PLATFORM_LINUX @PLATFORM_LINUX@ +#cmakedefine PLATFORM_OTHER @PLATFORM_OTHER@ + diff --git a/src/common/event.cpp b/src/common/event.cpp index e8595d0..6a5f4d3 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -1,68 +1,68 @@ -// * This file is part of the COLOBOT source code
-// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
-// *
-// * 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/.
-
-// event.cpp
-
-#include "common/event.h"
-#include "common/iman.h"
-
-
-
-CEventQueue::CEventQueue(CInstanceManager* iMan)
-{
- m_iMan = iMan;
- m_iMan->AddInstance(CLASS_EVENT, this);
-
- Flush();
-}
-
-CEventQueue::~CEventQueue()
-{
-}
-
-void CEventQueue::Flush()
-{
- m_head = 0;
- m_tail = 0;
- m_total = 0;
-}
-
-/** If the maximum size of queue has been reached, returns \c false.
- Else, adds the event to the queue and returns \c true. */
-bool CEventQueue::AddEvent(const Event &event)
-{
- if ( m_total >= MAX_EVENT_QUEUE ) return false;
-
- m_fifo[m_head++] = event;
- if ( m_head >= MAX_EVENT_QUEUE ) m_head = 0;
- m_total ++;
-
- return true;
-}
-
-/** If the queue is empty, returns \c false.
- Else, gets the event from the front, puts it into \a event and returns \c true. */
-bool CEventQueue::GetEvent(Event &event)
-{
- if ( m_head == m_tail ) return false;
-
- event = m_fifo[m_tail++];
- if ( m_tail >= MAX_EVENT_QUEUE ) m_tail = 0;
- m_total --;
-
- return true;
-}
-
+// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * +// * 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/. + +// event.cpp + +#include "common/event.h" +#include "common/iman.h" + + + +CEventQueue::CEventQueue(CInstanceManager* iMan) +{ + m_iMan = iMan; + m_iMan->AddInstance(CLASS_EVENT, this); + + Flush(); +} + +CEventQueue::~CEventQueue() +{ +} + +void CEventQueue::Flush() +{ + m_head = 0; + m_tail = 0; + m_total = 0; +} + +/** If the maximum size of queue has been reached, returns \c false. + Else, adds the event to the queue and returns \c true. */ +bool CEventQueue::AddEvent(const Event &event) +{ + if ( m_total >= MAX_EVENT_QUEUE ) return false; + + m_fifo[m_head++] = event; + if ( m_head >= MAX_EVENT_QUEUE ) m_head = 0; + m_total ++; + + return true; +} + +/** If the queue is empty, returns \c false. + Else, gets the event from the front, puts it into \a event and returns \c true. */ +bool CEventQueue::GetEvent(Event &event) +{ + if ( m_head == m_tail ) return false; + + event = m_fifo[m_tail++]; + if ( m_tail >= MAX_EVENT_QUEUE ) m_tail = 0; + m_total --; + + return true; +} + diff --git a/src/common/logger.cpp b/src/common/logger.cpp index 41d60eb..f24726e 100644 --- a/src/common/logger.cpp +++ b/src/common/logger.cpp @@ -55,7 +55,7 @@ void CLogger::Log(LogType type, const char *str, va_list args) { if (type < mLogLevel) return; - + switch (type) { case LOG_WARN: fprintf(IsOpened() ? mFile : stderr, "[WARN]: "); break; case LOG_INFO: fprintf(IsOpened() ? mFile : stderr, "[INFO]: "); break; diff --git a/src/common/logger.h b/src/common/logger.h index 1b3829c..a67aefe 100644 --- a/src/common/logger.h +++ b/src/common/logger.h @@ -49,7 +49,7 @@ enum LogType * * @brief Class for loggin information to file or console * -*/ +*/ class CLogger : public CSingleton<CLogger> { public: diff --git a/src/sound/sound.h b/src/sound/sound.h index d27721a..a1b8fe3 100644 --- a/src/sound/sound.h +++ b/src/sound/sound.h @@ -1,321 +1,321 @@ -// * This file is part of the COLOBOT source code
-// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
-// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
-// *
-// * 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/.
-
-// soundinterface.h
-
-/**
- * @file sound/soundinterface.h
- * @brief Sound plugin interface
- */
-
-#pragma once
-
-#include <math/vector.h>
-
-#include <plugins/plugin.h>
-
-#include <string>
-
-
-/*!
- * Maximum possible audio volume
- */
-#define MAXVOLUME 100
-
-
-/**
- * \public
- * \enum Sound sound/soundinterface.h
- * \brief Sound enum representing sound file
-**/
-enum Sound
-{
- SOUND_CLICK = 0,
- SOUND_BOUM = 1,
- SOUND_EXPLO = 2,
- SOUND_FLYh = 3, /*!< human */
- SOUND_FLY = 4,
- SOUND_STEPs = 5, /*!< smooth */
- SOUND_MOTORw = 6, /*!< wheel */
- SOUND_MOTORt = 7, /*!< tank */
- SOUND_MOTORr = 8, /*!< roller */
- SOUND_ERROR = 9,
- SOUND_CONVERT = 10,
- SOUND_ENERGY = 11,
- SOUND_PLOUF = 12,
- SOUND_BLUP = 13,
- SOUND_WARNING = 14,
- SOUND_DERRICK = 15,
- SOUND_LABO = 16,
- SOUND_STATION = 17,
- SOUND_REPAIR = 18,
- SOUND_RESEARCH = 19,
- SOUND_INSECTs = 20, /*!< spider */
- SOUND_BURN = 21,
- SOUND_TZOING = 22,
- SOUND_GGG = 23,
- SOUND_MANIP = 24,
- SOUND_FIRE = 25, /*!< shooting with fireball */
- SOUND_HUMAN1 = 26, /*!< breathing */
- SOUND_STEPw = 27, /*!< water */
- SOUND_SWIM = 28,
- SOUND_RADAR = 29,
- SOUND_BUILD = 30,
- SOUND_ALARM = 31, /*!< energy alarm */
- SOUND_SLIDE = 32,
- SOUND_EXPLOi = 33, /*!< insect */
- SOUND_INSECTa = 34, /*!< ant */
- SOUND_INSECTb = 35, /*!< bee */
- SOUND_INSECTw = 36, /*!< worm */
- SOUND_INSECTm = 37, /*!< mother */
- SOUND_TREMBLE = 38,
- SOUND_PSHHH = 39,
- SOUND_NUCLEAR = 40,
- SOUND_INFO = 41,
- SOUND_OPEN = 42,
- SOUND_CLOSE = 43,
- SOUND_FACTORY = 44,
- SOUND_EGG = 45,
- SOUND_MOTORs = 46, /*!< submarine */
- SOUND_MOTORi = 47, /*!< insect (legs) */
- SOUND_SHIELD = 48,
- SOUND_FIREi = 49, /*!< shooting with orgaball (insect) */
- SOUND_GUNDEL = 50,
- SOUND_PSHHH2 = 51, /*!< shield */
- SOUND_MESSAGE = 52,
- SOUND_BOUMm = 53, /*!< metal */
- SOUND_BOUMv = 54, /*!< plant */
- SOUND_BOUMs = 55, /*!< smooth */
- SOUND_EXPLOl = 56, /*!< little */
- SOUND_EXPLOlp = 57, /*!< little power */
- SOUND_EXPLOp = 58, /*!< power */
- SOUND_STEPh = 59, /*!< hard */
- SOUND_STEPm = 60, /*!< metal */
- SOUND_POWERON = 61,
- SOUND_POWEROFF = 62,
- SOUND_AIE = 63,
- SOUND_WAYPOINT = 64,
- SOUND_RECOVER = 65,
- SOUND_DEADi = 66,
- SOUND_JOSTLE = 67,
- SOUND_GFLAT = 68,
- SOUND_DEADg = 69, /*!< shooting death */
- SOUND_DEADw = 70, /*!< drowning */
- SOUND_FLYf = 71, /*!< reactor fail */
- SOUND_ALARMt = 72, /*!< temperature alarm */
- SOUND_FINDING = 73, /*!< finds a cache object */
- SOUND_THUMP = 74,
- SOUND_TOUCH = 75,
- SOUND_BLITZ = 76,
- SOUND_MUSHROOM = 77,
- SOUND_FIREp = 78, /*!< shooting with phazer */
- SOUND_EXPLOg1 = 79, /*!< impact gun 1 */
- SOUND_EXPLOg2 = 80, /*!< impact gun 2 */
- SOUND_MOTORd = 81, /*!< engine friction */
-};
-
-
-/**
- * \public
- * \enum SoundNext sound/soundinterface.h
- * \brief Enum representing operation that will be performend on a sound at given time
-**/
-enum SoundNext
-{
- SOPER_CONTINUE = 1, /*!< continue playing */
- SOPER_STOP = 2, /*!< stop playing */
- SOPER_LOOP = 3, /*!< start over */
-};
-
-
-/**
-* @class CSoundInterface
-*
-* @brief Sound plugin interface
-*
-*/
-class CSoundInterface : public CPlugin
-{
- public:
- CSoundInterface() {
- //CInstanceManager::getInstance().AddInstance(CLASS_SOUND, this);
- //m_iMan->AddInstance(CLASS_SOUND, this);
- };
- virtual ~CSoundInterface() = 0;
-
- /** Function to initialize sound device
- * @param bool b3D - enable support for 3D sound
- */
- virtual bool Create(bool b3D) = 0;
-
- /** Function called to cache all sound effect files.
- * Function calls \link CSoundInterface::Cache() \endlink for each file
- */
- virtual void CacheAll() = 0;
-
- /** Function called to cache sound effect file.
- * This function is called by plugin interface for each file.
- * @param Sound bSound - id of a file, will be used to identify sound files
- * @param std::string bFile - file to load
- * @return return true on success
- */
- virtual bool Cache(Sound bSound, std::string bFile) = 0;
-
- /** Return if plugin is enabled
- * @return return true if plugin is enabled
- */
- virtual bool RetEnable() = 0;
-
- /** Change sound mode to 2D/3D
- * @param bool bMode - true to enable 3D sound
- */
- virtual void SetSound3D(bool bMode) = 0;
-
- /** Return if we use 3D sound
- * @return true if we have 3D sound enabled
- */
- virtual bool RetSound3D() = 0;
-
- /** Return if we have 3D sound capable card
- * @return true for 3D sound support
- */
- virtual bool RetSound3DCap() = 0;
-
- /** Change global sound volume
- * @param int volume - range from 0 to MAXVOLUME
- */
- virtual void SetAudioVolume(int volume) = 0;
-
- /** Return global sound volume
- * @return global volume as int in range from 0 to MAXVOLUME
- */
- virtual int RetAudioVolume() = 0;
-
- /** Set music volume
- * @param int volume - range from 0 to MAXVOLUME
- */
- virtual void SetMusicVolume(int volume) = 0;
-
- /** Return music volume
- * @return music volume as int in range from 0 to MAXVOLUME
- */
- virtual int RetMusicVolume() = 0;
-
- /** Set listener position
- * @param Math::Vector eye - position of listener
- * @param Math::Vector lookat - direction listener is looking at
- */
- virtual void SetListener(Math::Vector eye, Math::Vector lookat) = 0;
-
- /** Update data each frame
- * @param float rTime - time since last update
- */
- virtual void FrameMove(float rTime) = 0;
-
- /** Play specific sound
- * @param Sound sound - sound to play
- * @param float amplitude - change amplitude of sound before playing
- * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
- * @param bool bLoop - loop sound
- * @return identifier of channel that sound will be played on
- */
- virtual int Play(Sound sound, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
-
- /** Play specific sound
- * @param Sound sound - sound to play
- * @param Math:Vector pos - position of sound in space
- * @param float amplitude - change amplitude of sound before playing
- * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up)
- * @param bool bLoop - loop sound
- * @return identifier of channel that sound will be played on
- */
- virtual int Play(Sound sound, Math::Vector pos, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0;
-
- /** Remove all operations that would be made on sound in channel.
- * @param int channel - channel to work on
- * @return return true on success
- */
- virtual bool FlushEnvelope(int channel) = 0;
-
- /** Add envelope to sound. Envelope is a operatino that will be performend on sound in future like changing frequency
- * @param int channel - channel to work on
- * @param float amplitude - change amplitude
- * @param float frequency - change frequency
- * @param float time - when to change (sample time)
- * @param SoundNext oper - operation to perform
- * @return return true on success
- */
- virtual bool AddEnvelope(int channel, float amplitude, float frequency, float time, SoundNext oper) = 0;
-
- /** Set sound position in space
- * @param int channel - channel to work on
- * @param Math::Vector pos - new positino of a sound
- * @return return true on success
- */
- virtual bool Position(int channel, Math::Vector pos) = 0;
-
- /** Set sound frequency
- * @param int channel - channel to work on
- * @param float frequency - change sound frequency
- * @return return true on success
- */
- virtual bool Frequency(int channel, float frequency) = 0;
-
- /** Stop playing sound
- * @param int channel - channel to work on
- * @return return true on success
- */
- virtual bool Stop(int channel) = 0;
-
- /** Stop playing all sounds
- * @return return true on success
- */
- virtual bool StopAll() = 0;
-
- /** Mute/unmute all sounds
- * @param bool bMute
- * @return return true on success
- */
- virtual bool MuteAll(bool bMute) = 0;
-
- /** Start playing music
- * @param int rank - track number
- * @param bool bRepeat - repeat playing
- * @return return true on success
- */
- virtual bool PlayMusic(int rank, bool bRepeat) = 0;
-
- /** Restart music
- * @return return true on success
- */
- virtual bool RestartMusic() = 0;
-
- /** Susspend paying music
- * @return return true on success
- */
- virtual void SuspendMusic() = 0;
-
- /** Stop playing music
- * @return return true on success
- */
- virtual void StopMusic() = 0;
-
- /** Check if music if playing
- * @return return true if music is playing
- */
- virtual bool IsPlayingMusic() = 0;
-};
+// * This file is part of the COLOBOT source code +// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch +// * Copyright (C) 2012, Polish Portal of Colobot (PPC) +// * +// * 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/. + +// soundinterface.h + +/** + * @file sound/soundinterface.h + * @brief Sound plugin interface + */ + +#pragma once + +#include <math/vector.h> + +#include <plugins/plugin.h> + +#include <string> + + +/*! + * Maximum possible audio volume + */ +#define MAXVOLUME 100 + + +/** + * \public + * \enum Sound sound/soundinterface.h + * \brief Sound enum representing sound file +**/ +enum Sound +{ + SOUND_CLICK = 0, + SOUND_BOUM = 1, + SOUND_EXPLO = 2, + SOUND_FLYh = 3, /*!< human */ + SOUND_FLY = 4, + SOUND_STEPs = 5, /*!< smooth */ + SOUND_MOTORw = 6, /*!< wheel */ + SOUND_MOTORt = 7, /*!< tank */ + SOUND_MOTORr = 8, /*!< roller */ + SOUND_ERROR = 9, + SOUND_CONVERT = 10, + SOUND_ENERGY = 11, + SOUND_PLOUF = 12, + SOUND_BLUP = 13, + SOUND_WARNING = 14, + SOUND_DERRICK = 15, + SOUND_LABO = 16, + SOUND_STATION = 17, + SOUND_REPAIR = 18, + SOUND_RESEARCH = 19, + SOUND_INSECTs = 20, /*!< spider */ + SOUND_BURN = 21, + SOUND_TZOING = 22, + SOUND_GGG = 23, + SOUND_MANIP = 24, + SOUND_FIRE = 25, /*!< shooting with fireball */ + SOUND_HUMAN1 = 26, /*!< breathing */ + SOUND_STEPw = 27, /*!< water */ + SOUND_SWIM = 28, + SOUND_RADAR = 29, + SOUND_BUILD = 30, + SOUND_ALARM = 31, /*!< energy alarm */ + SOUND_SLIDE = 32, + SOUND_EXPLOi = 33, /*!< insect */ + SOUND_INSECTa = 34, /*!< ant */ + SOUND_INSECTb = 35, /*!< bee */ + SOUND_INSECTw = 36, /*!< worm */ + SOUND_INSECTm = 37, /*!< mother */ + SOUND_TREMBLE = 38, + SOUND_PSHHH = 39, + SOUND_NUCLEAR = 40, + SOUND_INFO = 41, + SOUND_OPEN = 42, + SOUND_CLOSE = 43, + SOUND_FACTORY = 44, + SOUND_EGG = 45, + SOUND_MOTORs = 46, /*!< submarine */ + SOUND_MOTORi = 47, /*!< insect (legs) */ + SOUND_SHIELD = 48, + SOUND_FIREi = 49, /*!< shooting with orgaball (insect) */ + SOUND_GUNDEL = 50, + SOUND_PSHHH2 = 51, /*!< shield */ + SOUND_MESSAGE = 52, + SOUND_BOUMm = 53, /*!< metal */ + SOUND_BOUMv = 54, /*!< plant */ + SOUND_BOUMs = 55, /*!< smooth */ + SOUND_EXPLOl = 56, /*!< little */ + SOUND_EXPLOlp = 57, /*!< little power */ + SOUND_EXPLOp = 58, /*!< power */ + SOUND_STEPh = 59, /*!< hard */ + SOUND_STEPm = 60, /*!< metal */ + SOUND_POWERON = 61, + SOUND_POWEROFF = 62, + SOUND_AIE = 63, + SOUND_WAYPOINT = 64, + SOUND_RECOVER = 65, + SOUND_DEADi = 66, + SOUND_JOSTLE = 67, + SOUND_GFLAT = 68, + SOUND_DEADg = 69, /*!< shooting death */ + SOUND_DEADw = 70, /*!< drowning */ + SOUND_FLYf = 71, /*!< reactor fail */ + SOUND_ALARMt = 72, /*!< temperature alarm */ + SOUND_FINDING = 73, /*!< finds a cache object */ + SOUND_THUMP = 74, + SOUND_TOUCH = 75, + SOUND_BLITZ = 76, + SOUND_MUSHROOM = 77, + SOUND_FIREp = 78, /*!< shooting with phazer */ + SOUND_EXPLOg1 = 79, /*!< impact gun 1 */ + SOUND_EXPLOg2 = 80, /*!< impact gun 2 */ + SOUND_MOTORd = 81, /*!< engine friction */ +}; + + +/** + * \public + * \enum SoundNext sound/soundinterface.h + * \brief Enum representing operation that will be performend on a sound at given time +**/ +enum SoundNext +{ + SOPER_CONTINUE = 1, /*!< continue playing */ + SOPER_STOP = 2, /*!< stop playing */ + SOPER_LOOP = 3, /*!< start over */ +}; + + +/** +* @class CSoundInterface +* +* @brief Sound plugin interface +* +*/ +class CSoundInterface : public CPlugin +{ + public: + CSoundInterface() { + //CInstanceManager::getInstance().AddInstance(CLASS_SOUND, this); + //m_iMan->AddInstance(CLASS_SOUND, this); + }; + virtual ~CSoundInterface() = 0; + + /** Function to initialize sound device + * @param bool b3D - enable support for 3D sound + */ + virtual bool Create(bool b3D) = 0; + + /** Function called to cache all sound effect files. + * Function calls \link CSoundInterface::Cache() \endlink for each file + */ + virtual void CacheAll() = 0; + + /** Function called to cache sound effect file. + * This function is called by plugin interface for each file. + * @param Sound bSound - id of a file, will be used to identify sound files + * @param std::string bFile - file to load + * @return return true on success + */ + virtual bool Cache(Sound bSound, std::string bFile) = 0; + + /** Return if plugin is enabled + * @return return true if plugin is enabled + */ + virtual bool RetEnable() = 0; + + /** Change sound mode to 2D/3D + * @param bool bMode - true to enable 3D sound + */ + virtual void SetSound3D(bool bMode) = 0; + + /** Return if we use 3D sound + * @return true if we have 3D sound enabled + */ + virtual bool RetSound3D() = 0; + + /** Return if we have 3D sound capable card + * @return true for 3D sound support + */ + virtual bool RetSound3DCap() = 0; + + /** Change global sound volume + * @param int volume - range from 0 to MAXVOLUME + */ + virtual void SetAudioVolume(int volume) = 0; + + /** Return global sound volume + * @return global volume as int in range from 0 to MAXVOLUME + */ + virtual int RetAudioVolume() = 0; + + /** Set music volume + * @param int volume - range from 0 to MAXVOLUME + */ + virtual void SetMusicVolume(int volume) = 0; + + /** Return music volume + * @return music volume as int in range from 0 to MAXVOLUME + */ + virtual int RetMusicVolume() = 0; + + /** Set listener position + * @param Math::Vector eye - position of listener + * @param Math::Vector lookat - direction listener is looking at + */ + virtual void SetListener(Math::Vector eye, Math::Vector lookat) = 0; + + /** Update data each frame + * @param float rTime - time since last update + */ + virtual void FrameMove(float rTime) = 0; + + /** Play specific sound + * @param Sound sound - sound to play + * @param float amplitude - change amplitude of sound before playing + * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up) + * @param bool bLoop - loop sound + * @return identifier of channel that sound will be played on + */ + virtual int Play(Sound sound, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0; + + /** Play specific sound + * @param Sound sound - sound to play + * @param Math:Vector pos - position of sound in space + * @param float amplitude - change amplitude of sound before playing + * @param float frequency - change sound frequency before playing (0.5 octave down, 2.0 octave up) + * @param bool bLoop - loop sound + * @return identifier of channel that sound will be played on + */ + virtual int Play(Sound sound, Math::Vector pos, float amplitude=1.0f, float frequency=1.0f, bool bLoop = false) = 0; + + /** Remove all operations that would be made on sound in channel. + * @param int channel - channel to work on + * @return return true on success + */ + virtual bool FlushEnvelope(int channel) = 0; + + /** Add envelope to sound. Envelope is a operatino that will be performend on sound in future like changing frequency + * @param int channel - channel to work on + * @param float amplitude - change amplitude + * @param float frequency - change frequency + * @param float time - when to change (sample time) + * @param SoundNext oper - operation to perform + * @return return true on success + */ + virtual bool AddEnvelope(int channel, float amplitude, float frequency, float time, SoundNext oper) = 0; + + /** Set sound position in space + * @param int channel - channel to work on + * @param Math::Vector pos - new positino of a sound + * @return return true on success + */ + virtual bool Position(int channel, Math::Vector pos) = 0; + + /** Set sound frequency + * @param int channel - channel to work on + * @param float frequency - change sound frequency + * @return return true on success + */ + virtual bool Frequency(int channel, float frequency) = 0; + + /** Stop playing sound + * @param int channel - channel to work on + * @return return true on success + */ + virtual bool Stop(int channel) = 0; + + /** Stop playing all sounds + * @return return true on success + */ + virtual bool StopAll() = 0; + + /** Mute/unmute all sounds + * @param bool bMute + * @return return true on success + */ + virtual bool MuteAll(bool bMute) = 0; + + /** Start playing music + * @param int rank - track number + * @param bool bRepeat - repeat playing + * @return return true on success + */ + virtual bool PlayMusic(int rank, bool bRepeat) = 0; + + /** Restart music + * @return return true on success + */ + virtual bool RestartMusic() = 0; + + /** Susspend paying music + * @return return true on success + */ + virtual void SuspendMusic() = 0; + + /** Stop playing music + * @return return true on success + */ + virtual void StopMusic() = 0; + + /** Check if music if playing + * @return return true if music is playing + */ + virtual bool IsPlayingMusic() = 0; +}; |