1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
#include "Star.h"
#include "common.h"
#include "minorGems/util/random/StdRandomSource.h"
extern StdRandomSource randSource;
Star::Star()
: mShiftA( NULL ), mShiftB( NULL ) {
mBaseFade = 1.0;
mShimmerTime = randSource.getRandomBoundedInt( 0, 1000 );
mShimmerRate = randSource.getRandomBoundedDouble( 0.5, 1.0 );
}
void Star::shiftBetween( Star *inA, Star *inB, int inNumSteps ) {
mShiftA = inA;
mShiftB = inB;
mNumShiftSteps = inNumSteps;
mNumShiftStepsDone = 0;
}
void Star::step() {
mShimmerTime ++;
if( mShiftA == NULL ) {
mFadeFactor = 0.5 + 0.3 * sin( mShimmerRate * mShimmerTime / 25.0 );
mFadeFactor *= mBaseFade;
}
else {
// shifting
mNumShiftStepsDone ++;
if( mNumShiftStepsDone > mNumShiftSteps ) {
// stop shifting
mShiftA = NULL;
mShiftB = NULL;
}
else {
double bBlend = mNumShiftStepsDone / (double)mNumShiftSteps;
bBlend = smoothBlend( bBlend );
double aBlend = 1 - bBlend;
mX = mShiftA->mX * aBlend + mShiftB->mX * bBlend;
mY = mShiftA->mY * aBlend + mShiftB->mY * bBlend;
mFadeFactor = mShiftA->mFadeFactor * aBlend +
mShiftB->mFadeFactor * bBlend;
}
}
}
|