void OnUpChange() { if (points.Count > 0) { BreathPoint p = new BreathPoint(); p.value = points [points.Count - 1].y; p.time = time; breathPoints.Add(p); } }
void setBreathValue() { if (points.Count > 0 && breathPoints.Count > 1) { BreathPoint p = breathPoints [breathPoints.Count - 1]; BreathPoint pp = breathPoints [breathPoints.Count - 2]; float breathDiff = points [points.Count - 1].y - p.value; float timeDiff = p.time - pp.time; float prevPointY = points [points.Count - breathLineDistance].y; float curPointY = points [points.Count - 1].y; float lineDiff = curPointY - prevPointY; if (Mathf.Abs(breathDiff) < movementTreshold && Mathf.Abs(timeDiff) > timeTreshold) { if (lineDiff > 0 && Mathf.Abs(lineDiff) > breathLineTreshold) { breathState = BreathState.BreathIn; isBreathIn = true; } else if (Mathf.Abs(lineDiff) > breathLineTreshold) { breathState = BreathState.BreathOut; isBreathIn = false; } else if (isUp) { breathState = BreathState.BreathInHold; isBreathIn = true; } else { breathState = BreathState.BreathOutHold; isBreathIn = false; } breathValue = (1 - smoothBreathValue) * breathDiff + smoothBreathValue * breathValue; } else { // movement breathState = BreathState.Move; } UpdateBreathStateChange(); } }