00001
00002 #ifndef VRS_SOUND_DISTANCEMODELAL_H
00003 #define VRS_SOUND_DISTANCEMODELAL_H
00004
00005
00006
00007
00008 #include <vrs/vector.h>
00009 #include <vrs/monoattribute.h>
00010
00011
00012
00013
00014 #include <vrs/openal/config.h>
00015
00016 #ifdef WIN32
00017 # include <al.h>
00018 #else
00019 # include <AL/al.h>
00020 #endif
00021
00022 namespace VRS
00023 {
00024 namespace SOUND
00025 {
00026 class VRS_OPENAL_API DistanceModelAL : public MonoAttribute
00027 {
00028 public:
00029
00030 enum Model
00031 {
00032 NONE = AL_NONE,
00033 INVERSE_DISTANCE = AL_INVERSE_DISTANCE,
00034 INVERSE_DISTANCE_CLAMPED = AL_INVERSE_DISTANCE_CLAMPED,
00035 LINEAR_DISTANCE = AL_LINEAR_DISTANCE,
00036 LINEAR_DISTANCE_CLAMPED = AL_LINEAR_DISTANCE_CLAMPED,
00037 EXPONENT_DISTANCE = AL_EXPONENT_DISTANCE,
00038 EXPONENT_DISTANCE_CLAMPED = AL_EXPONENT_DISTANCE_CLAMPED
00039
00040 };
00041 VRS_SERIALIZABLE_CLASS_ENUM(Model);
00042
00043 public:
00044
00057 DistanceModelAL(Model model, bool enabled = true);
00058
00076 void setModel(Model model);
00077 inline Model getModel(void) const
00078 {
00079 return this->model_;
00080 }
00081
00082 VRS_TYPEINFO(DistanceModelAL, MonoAttribute);
00083 VRS_SERIALIZABLE(DistanceModelAL);
00084
00085 protected:
00086
00087 DistanceModelAL(void);
00088
00089 private:
00090
00091 Model model_;
00092
00093 };
00094
00095 };
00096
00097 };
00098
00099 #endif //VRS_SOUND_DISTANCEMODELAL_H