Color Color::lighter(int amount) const { Color ret = *this; ret.toHSV(); ret.c[0] *= amount / 100.0; ret.c[0] = double_clamp(ret.c[0]); ret.toRGB(); return ret; }
void sound_fillBuffer( float2* pBuffer, uint count ) { const double sampleRateFactor = 2 * PI / (double)SoundSampleRate; double samplePos = s_sound.samplePos; double engineFrequency = s_sound.currentEngineFrequency; double engineFrequencyShiftSpeed = 1.0f / ( double)SoundSampleRate; for( uint i = 0u; i < count; ++i ) { double engineShift = double_clamp( ( s_sound.targetEngineFrequency - engineFrequency ), -4.0f * engineFrequencyShiftSpeed, engineFrequencyShiftSpeed ); engineFrequency += engineShift; const double x = samplePos * sampleRateFactor; // very crude engine sound: const double sample0 = cos( 40.0f * x ) * sin( 120.0f * x ); const double sample1 = cos( 10.0f * x ) * sin( 200.0f * x ); const double sample = double_lerp( sample0, sample1, engineFrequency ); const float panning = fabsf( 0.1f * cosf( (float)x ) ); float left, right; pan( &left, &right, (float)sample, panning ); // left: pBuffer->x = left; // right: pBuffer->y = right; pBuffer++; samplePos += 1.0; s_sound.samplePos++; } s_sound.currentEngineFrequency = (float)engineFrequency; }
void Color::setAlphaF(double _alpha) { c[3] = double_clamp(_alpha); }
void Color::setBlueF(double _blue) { c[0] = double_clamp(_blue); }
void Color::setGreenF(double _green) { c[1] = double_clamp(_green); }
void Color::setRedF(double _red) { c[2] = double_clamp(_red); }