File: Star.cpp

package info (click to toggle)
between 6%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, jessie, jessie-kfreebsd, stretch
  • size: 3,532 kB
  • sloc: cpp: 28,110; php: 718; ansic: 638; objc: 245; sh: 236; makefile: 99; perl: 67
file content (68 lines) | stat: -rw-r--r-- 1,478 bytes parent folder | download | duplicates (3)
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;
            }
        }
    
    }