Home | nevrax.com |
|
sound_animation.hGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL 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, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #ifndef NL_SOUND_ANIM_TRACK_H 00027 #define NL_SOUND_ANIM_TRACK_H 00028 00029 #include "nel/sound/sound_anim_manager.h" 00030 00031 namespace NLMISC 00032 { 00033 class IStream; 00034 } 00035 00036 namespace NLSOUND { 00037 00038 class CSoundAnimMarker; 00039 class UAudioMixer; 00040 00041 typedef std::vector<CSoundAnimMarker*> TMarkerVector; 00042 00043 00044 00045 class CSoundAnimation 00046 { 00047 public: 00048 00049 enum 00050 { 00051 NoId = -1 00052 }; 00053 00054 CSoundAnimation(std::string& name, TSoundAnimId id) : _Name(name), _Id(id), _Dirty(false) {} 00055 00056 virtual ~CSoundAnimation() {} 00057 00059 virtual void addMarker(CSoundAnimMarker* marker); 00060 00062 virtual void removeMarker(CSoundAnimMarker* marker); 00063 00066 virtual uint32 countMarkers() { return _Markers.size(); } 00067 00069 virtual CSoundAnimMarker* getMarker(uint32 i) { return _Markers[i]; } 00070 00072 virtual std::string& getName() { return _Name; } 00073 00074 00076 virtual void load(); 00077 00079 virtual void save(); 00080 00082 virtual std::string& getFilename() { return _Filename; } 00083 00086 virtual void setFilename(std::string& name) { _Filename = name; } 00087 00089 virtual bool isDirty() { return _Dirty; } 00090 00092 virtual void setDirty(bool b) { _Dirty = b; } 00093 00095 virtual void play(UAudioMixer* mixer, float lastTime, float curTime, CSoundContext &context); 00096 00097 protected: 00098 00100 virtual void sort(); 00101 00103 TSoundAnimId _Id; 00104 00106 std::string _Name; 00107 00109 TMarkerVector _Markers; 00110 00112 std::string _Filename; 00113 00115 bool _Dirty; 00116 00117 }; 00118 00119 } // namespace NLSOUND 00120 00121 #endif // NL_SOUND_ANIM_TRACK_H |