| 111 | } |
| 112 | |
| 113 | void waveUpdate(void) |
| 114 | { |
| 115 | waveDisturbance[waveDisturbancePos] = waveDisturbanceCur; |
| 116 | |
| 117 | for (u32 i = 0; i < WAVE_NUMPOINTS; i ++) |
| 118 | { |
| 119 | float x = (float)i / (WAVE_NUMPOINTS-1); |
| 120 | float y = 120.0f; |
| 121 | float dist = waveDisturbance[(waveDisturbancePos + i + 1) % WAVE_NUMPOINTS]; |
| 122 | for (u32 j = 0; j < WAVE_NUMCURVES; j ++) |
| 123 | { |
| 124 | float ampl = waveCurves[j].amplitude; |
| 125 | if (j == (WAVE_NUMCURVES-1)) |
| 126 | ampl = dist; |
| 127 | y += 0.5f*ampl * sinf(M_TAU*(waveCurves[j].velocity*x + waveCurves[j].phase)); |
| 128 | } |
| 129 | wavePoints[i] = y; |
| 130 | } |
| 131 | |
| 132 | for (u32 j = 0; j < WAVE_NUMCURVES; j ++) |
| 133 | { |
| 134 | float variance = randomFloatInterval(0.95f, 1.05f); |
| 135 | if (j == (WAVE_NUMCURVES-1)) |
| 136 | variance *= waveCurves[j].velocity; |
| 137 | waveCurves[j].phase += variance/60.0f; |
| 138 | } |
| 139 | |
| 140 | waveDisturbancePos = (waveDisturbancePos + 1) % WAVE_NUMPOINTS; |
| 141 | waveDisturbanceCur -= randomFloatInterval(0.95f, 1.05f); |
| 142 | if (waveDisturbanceCur < 0.0f) |
| 143 | waveDisturbanceCur = 0.0f; |
| 144 | } |
| 145 | |
| 146 | static void bubbleUpdate(bubble_t* bubble) |
| 147 | { |
no test coverage detected