Starsector API
Loading...
Searching...
No Matches
RollingAverageTracker.java
Go to the documentation of this file.
1package com.fs.starfarer.api.util;
2
4
5 private IntervalUtil timer;
6 private final float f;
7 private float elaspedFractionOverride = -1;
8 private float curr = 0, avg = 0;
9
10
11 public RollingAverageTracker(float minInterval, float maxInterval, float factor) {
12 this.f = factor;
13 timer = new IntervalUtil(minInterval, maxInterval);
14 }
15
16 public void advance(float amount) {
17 timer.advance(amount);
18 if (timer.intervalElapsed()) {
20 }
21 }
22
23 public void updateAverage() {
24 if (avg <= 0) {
25 avg = curr;
26 } else {
27 avg = avg * (1f - f) + curr * f;
28 }
29 curr = 0;
30 }
31
32 public float getCurr() {
33 return curr;
34 }
35
36 public float getAverage() {
37 float e = timer.getElapsed() / timer.getIntervalDuration();
38 if (elaspedFractionOverride >= 0) {
39 e = elaspedFractionOverride;
40 }
41 return avg * (1f - f * e) + curr * f * e;
42// return curr;
43 }
44
45 public void add(float val) {
46 curr += val;
47 }
48 public void sub(float val) {
49 curr -= val;
50 if (curr < 0) curr = 0;
51 }
52
53 public void setElaspedFractionOverride(float elaspedFractionOverride) {
54 this.elaspedFractionOverride = elaspedFractionOverride;
55 }
56
57
58}
RollingAverageTracker(float minInterval, float maxInterval, float factor)
void setElaspedFractionOverride(float elaspedFractionOverride)