include/AK/Plugin/PluginServices/AkValueRamp.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00032
00033 #ifndef _AK_VALUERAMP_H_
00034 #define _AK_VALUERAMP_H_
00035
00036 #include <AK/SoundEngine/Common/AkTypes.h>
00037 #include <AK/Tools/Common/AkAssert.h>
00038 #include <math.h>
00039
00040 namespace AK
00041 {
00042
00049 class CAkValueRamp
00050 {
00051 public:
00052
00054 CAkValueRamp() :
00055 m_fStepIncrement( 0.f ),
00056 m_fInc( 0.f ),
00057 m_fTarget( 0.f ),
00058 m_fCurrent( 0.f ),
00059 m_uRampCount( 0 ),
00060 m_uRampLength( 0 )
00061 {
00062 }
00063
00065 ~CAkValueRamp()
00066 {
00067 }
00068
00070 inline void RampSetup(
00071 AkReal32 fStepIncrement,
00072 AkReal32 fInitVal
00073 )
00074 {
00075 AKASSERT( fStepIncrement > 0.f );
00076 m_fStepIncrement = fStepIncrement;
00077 m_fCurrent = fInitVal;
00078 SetTarget( fInitVal );
00079 }
00080
00082 AkForceInline void SetTarget(
00083 AkReal32 fTarget
00084 )
00085 {
00086 m_fTarget = fTarget;
00087 m_uRampCount = 0;
00088 AkReal32 fDiff = m_fTarget - m_fCurrent;
00089 m_uRampLength = static_cast<AkUInt32>( fabs(fDiff) / m_fStepIncrement );
00090 m_fInc = fDiff > 0 ? m_fStepIncrement : -m_fStepIncrement;
00091 }
00092
00095 AkForceInline AkReal32 Tick()
00096 {
00097 if ( m_uRampCount >= m_uRampLength )
00098 m_fCurrent = m_fTarget;
00099 else
00100 {
00101 ++m_uRampCount;
00102 m_fCurrent += m_fInc;
00103 }
00104 return m_fCurrent;
00105 }
00106
00109 AkReal32 GetCurrent() { return m_fCurrent; }
00110
00112 void SetCurrent(AkReal32 in_fCurrent) { m_fCurrent = in_fCurrent; }
00113
00116 AkUInt32 GetRampCount() { return m_uRampCount; }
00117
00119 void SetRampCount(AkUInt32 in_uRampCount) { m_uRampCount = in_uRampCount; }
00120
00122 void StopRamp()
00123 {
00124 m_fCurrent = m_fTarget;
00125 m_uRampCount = m_uRampLength;
00126 }
00127
00128 private:
00129
00130 AkReal32 m_fStepIncrement;
00131 AkReal32 m_fInc;
00132 AkReal32 m_fTarget;
00133 AkReal32 m_fCurrent;
00134 AkUInt32 m_uRampCount;
00135 AkUInt32 m_uRampLength;
00136 } AK_ALIGN_DMA;
00137 }
00138
00139 #endif //_AK_VALUERAMP_H_
介绍一下自己的项目。我们会竭力为您提供帮助。
来注册自己的项目,我们帮您快速入门,不带任何附加条件!
开始 Wwise 之旅