private void PlayToggle(bool isPlaying) { if (!IsActive) { return; } float time = atsc.CurrentBeat; IEnumerable <BeatmapObjectContainer> rotations = events.LoadedContainers.Where( x => x.objectData._time <= atsc.CurrentBeat && (x as BeatmapEventContainer).eventData.IsRotationEvent); Rotation = 0; if (rotations.Any()) { MapEvent e = null; //The last event in time should be the last one through the foreach loop so this should work. foreach (BeatmapObjectContainer o in rotations) { e = o.objectData as MapEvent; if (e._time == atsc.CurrentBeat && e._type == MapEvent.EVENT_TYPE_LATE_ROTATION) { continue; } Rotation += e.GetRotationDegreeFromValue() ?? 0; } LatestRotationEvent = e; } else { LatestRotationEvent = null; } RotationChangedEvent.Invoke(false, Rotation); }
private void EventPassedThreshold(bool initial, int index, BeatmapObject obj) { MapEvent e = obj as MapEvent; if (e is null || !IsActive || e == LatestRotationEvent || !e.IsRotationEvent) { return; } int rotationValue = e.GetRotationDegreeFromValue() ?? 0; Rotation += rotationValue; LatestRotationEvent = e; RotationChangedEvent.Invoke(true, Rotation); }