16 class ALAuxiliaryEffectSlot
;
19 ALAuxiliaryEffectSlot
*mSlot
;
22 SendProps(ALAuxiliaryEffectSlot
*slot
) : mSlot(slot
), mFilter(AL_FILTER_NULL
)
24 SendProps(ALuint filter
) : mSlot(0), mFilter(filter
)
26 SendProps(ALAuxiliaryEffectSlot
*slot
, ALuint filter
) : mSlot(slot
), mFilter(filter
)
29 typedef std::map
<ALuint
,SendProps
> SendPropMap
;
31 class ALSource
: public Source
{
32 ALContext
*const mContext
;
36 ALBufferStream
*mStream
;
43 ALfloat mMinGain
, mMaxGain
;
44 ALfloat mRefDist
, mMaxDist
;
48 Vector3 mOrientation
[2];
49 ALfloat mConeInnerAngle
, mConeOuterAngle
;
50 ALfloat mConeOuterGain
;
51 ALfloat mRolloffFactor
;
52 ALfloat mDopplerFactor
;
56 SendPropMap mEffectSlots
;
60 void resetProperties();
61 void applyProperties(bool looping
, ALuint offset
) const;
63 void setFilterParams(ALuint
&filterid
, const FilterParams
¶ms
);
66 ALSource(ALContext
*context
)
67 : mContext(context
), mId(0), mBuffer(0), mStream(0), mDirectFilter(AL_FILTER_NULL
)
68 { resetProperties(); }
70 void updateNoCtxCheck();
71 ALuint
getId() const { return mId
; }
73 virtual void play(Buffer
*buffer
) final
;
74 virtual void play(SharedPtr
<Decoder
> decoder
, ALuint updatelen
, ALuint queuesize
) final
;
75 virtual void stop() final
;
76 virtual void pause() final
;
77 virtual void resume() final
;
79 virtual bool isPlaying() const final
;
80 virtual bool isPaused() const final
;
82 virtual void setPriority(ALuint priority
) final
;
83 virtual ALuint
getPriority() const final
86 virtual void setOffset(uint64_t offset
) final
;
87 virtual uint64_t getOffset(uint64_t *latency
=0) const final
;
89 virtual void setLooping(bool looping
) final
;
90 virtual bool getLooping() const final
93 virtual void setPitch(ALfloat pitch
) final
;
94 virtual ALfloat
getPitch() const final
97 virtual void setGain(ALfloat gain
) final
;
98 virtual ALfloat
getGain() const final
{ return mGain
; }
100 virtual void setGainRange(ALfloat mingain
, ALfloat maxgain
) final
;
101 virtual ALfloat
getMinGain() const final
{ return mMinGain
; }
102 virtual ALfloat
getMaxGain() const final
{ return mMaxGain
; }
104 virtual void setDistanceRange(ALfloat refdist
, ALfloat maxdist
) final
;
105 virtual ALfloat
getReferenceDistance() const final
{ return mRefDist
; }
106 virtual ALfloat
getMaxDistance() const final
{ return mMaxDist
; }
108 virtual void setPosition(ALfloat x
, ALfloat y
, ALfloat z
) final
;
109 virtual void setPosition(const ALfloat
*pos
) final
;
110 virtual Vector3
getPosition() const final
{ return mPosition
; }
112 virtual void setVelocity(ALfloat x
, ALfloat y
, ALfloat z
) final
;
113 virtual void setVelocity(const ALfloat
*vel
) final
;
114 virtual Vector3
getVelocity() const final
{ return mVelocity
; }
116 virtual void setDirection(ALfloat x
, ALfloat y
, ALfloat z
) final
;
117 virtual void setDirection(const ALfloat
*dir
) final
;
118 virtual Vector3
getDirection() const final
{ return mDirection
; }
120 virtual void setOrientation(ALfloat x1
, ALfloat y1
, ALfloat z1
, ALfloat x2
, ALfloat y2
, ALfloat z2
) final
;
121 virtual void setOrientation(const ALfloat
*at
, const ALfloat
*up
) final
;
122 virtual void setOrientation(const ALfloat
*ori
) final
;
124 virtual void setConeAngles(ALfloat inner
, ALfloat outer
) final
;
125 virtual ALfloat
getInnerConeAngle() const final
{ return mConeInnerAngle
; }
126 virtual ALfloat
getOuterConeAngle() const final
{ return mConeOuterAngle
; }
128 virtual void setOuterConeGain(ALfloat gain
) final
;
129 virtual ALfloat
getOuterConeGain() const final
130 { return mConeOuterGain
; }
132 virtual void setRolloffFactor(ALfloat factor
) final
;
133 virtual ALfloat
getRolloffFactor() const final
134 { return mRolloffFactor
; }
136 virtual void setDopplerFactor(ALfloat factor
) final
;
137 virtual ALfloat
getDopplerFactor() const final
138 { return mDopplerFactor
; }
140 virtual void setRelative(bool relative
) final
;
141 virtual bool getRelative() const final
142 { return mRelative
; }
144 virtual void setDirectFilter(const FilterParams
&filter
) final
;
145 virtual void setSendFilter(ALuint send
, const FilterParams
&filter
) final
;
146 virtual void setAuxiliarySend(AuxiliaryEffectSlot
*slot
, ALuint send
) final
;
147 virtual void setAuxiliarySendFilter(AuxiliaryEffectSlot
*slot
, ALuint send
, const FilterParams
&filter
) final
;
149 virtual void update() final
;
151 virtual void release() final
;
156 #endif /* SOURCE_H */