Panda3D
milesAudioSound.h
Go to the documentation of this file.
1 /**
2  * PANDA 3D SOFTWARE
3  * Copyright (c) Carnegie Mellon University. All rights reserved.
4  *
5  * All use of this software is subject to the terms of the revised BSD
6  * license. You should have received a copy of this license along
7  * with this source code in a file named "LICENSE."
8  *
9  * @file milesAudioSound.h
10  * @author drose
11  * @date 2007-07-30
12  */
13 
14 #ifndef MILESAUDIOSOUND_H
15 #define MILESAUDIOSOUND_H
16 
17 #include "pandabase.h"
18 #ifdef HAVE_RAD_MSS //[
19 
20 #include "audioSound.h"
21 #include "milesAudioManager.h"
22 
23 #include <mss.h>
24 
25 /**
26  * The base class for both MilesAudioStream and MilesAudioSample.
27  */
28 class EXPCL_MILES_AUDIO MilesAudioSound : public AudioSound {
29 protected:
30  MilesAudioSound(MilesAudioManager *manager, const std::string &file_name);
31 
32 public:
33  virtual void set_loop(bool loop=true);
34  virtual bool get_loop() const;
35 
36  virtual void set_loop_count(unsigned long loop_count=1);
37  virtual unsigned long get_loop_count() const;
38 
39  virtual PN_stdfloat get_volume() const;
40  virtual PN_stdfloat get_balance() const;
41  virtual PN_stdfloat get_play_rate() const;
42 
43  virtual void set_time(PN_stdfloat start_time=0.0);
44 
45  virtual void set_active(bool active=true);
46  virtual bool get_active() const;
47 
48  virtual void set_finished_event(const std::string &event);
49  virtual const std::string &get_finished_event() const;
50 
51  virtual const std::string &get_name() const;
52 
53  virtual void cleanup();
54 
55 protected:
56  PT(MilesAudioManager) _manager;
57  std::string _file_name;
58 
59  PN_stdfloat _volume; // 0..1.0
60  PN_stdfloat _balance; // -1..1
61  PN_stdfloat _play_rate; // 0..1.0
62  unsigned long _loop_count;
63 
64  // _active is for things like a 'turn off sound effects' in a preferences
65  // pannel. _active is not about whether a sound is currently playing. Use
66  // status() for info on whether the sound is playing.
67  bool _active;
68 
69  // _paused is not like the Pause button on a cddvd player. It is used as a
70  // flag to say that the sound was looping when it was set inactive.
71  bool _paused;
72 
73  // This is the string that throw_event() will throw when the sound finishes
74  // playing. It is not triggered when the sound is stopped with stop().
75  // Note: no longer implemented.
76  std::string _finished_event;
77 
78  // This is set whenever we call set_time(). Calling play() will respect
79  // this if it is set, and then reset it.
80  PN_stdfloat _start_time;
81  bool _got_start_time;
82 
83 public:
84  static TypeHandle get_class_type() {
85  return _type_handle;
86  }
87  static void init_type() {
88  AudioSound::init_type();
89  register_type(_type_handle, "MilesAudioSound",
90  AudioSound::get_class_type());
91  }
92  virtual TypeHandle get_type() const {
93  return get_class_type();
94  }
95  virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
96 
97 private:
98  static TypeHandle _type_handle;
99 
100  friend class MilesAudioManager;
101 };
102 
103 #include "milesAudioSound.I"
104 
105 #endif //]
106 
107 #endif
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition: register_type.I:22
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
TypeHandle is the identifier used to differentiate C++ class types.
Definition: typeHandle.h:81
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.