private void RecordHitValueSecondary(CutScoreBuffer score, NoteData data, ScoreFinishEventHandler fn) { float newEnergy; switch (PluginConfig.Instance.secondaryMode) { case PluginConfig.MeasurementMode.None: return; case PluginConfig.MeasurementMode.Energy: newEnergy = energyCounter.energy; break; case PluginConfig.MeasurementMode.PercentModified: newEnergy = (float)scoreController.modifiedScore / scoreController.immediateMaxPossibleModifiedScore; break; case PluginConfig.MeasurementMode.PercentRaw: newEnergy = rankCounter.relativeScore; break; case PluginConfig.MeasurementMode.CutValue: if (score == null) { return; } newEnergy = score.cutScore / 115.0f; break; case PluginConfig.MeasurementMode.AvgCutValue: if (score == null) { return; } secondaryAverageHitValue = ((secondaryAverageHitValue * secondaryAverageHitValueSize) + score.cutScore / 115.0f) / ++secondaryAverageHitValueSize; newEnergy = secondaryAverageHitValue; break; default: Logger.log.Error("An invalid mode was specified! PerformanceMeter will not record scores, resulting in a blank graph. Check the readme for the valid modes."); return; } if (secondaryEnergyList.Count == 0) { secondaryEnergyList.Add(new Pair <float, float>(0, newEnergy)); } secondaryEnergyList.Add(new Pair <float, float>(data.time, newEnergy)); if (score != null) { score.UnregisterDidFinishReceiver(fn); } }