private static void TrackColorize(NoteController instance, NoteData noteData, NoteMovement noteMovement) { if (NoodleExtensions.NoodleController.NoodleExtensionsActive) { ChromaNoodleData chromaData = ChromaNoodleDatas[noteData]; Track track = chromaData.Track; PointDefinition pathPointDefinition = chromaData.LocalPathColor; if (track != null || pathPointDefinition != null) { NoteJump noteJump = _noteJumpAccessor(ref noteMovement); float jumpDuration = _jumpDurationAccessor(ref noteJump); float elapsedTime = _audioTimeSyncControllerAccessor(ref noteJump).songTime - (noteData.time - (jumpDuration * 0.5f)); float normalTime = elapsedTime / jumpDuration; Chroma.AnimationHelper.GetColorOffset(pathPointDefinition, track, normalTime, out Color? colorOffset); if (colorOffset.HasValue) { Color color = colorOffset.Value; if (instance is BombNoteController bnc) { bnc.SetBombColor(color); } else { instance.SetNoteColors(color, color); instance.SetActiveColors(); } } } } }
private static void TrackColorize(ObstacleController obstacleController, ObstacleData obstacleData, AudioTimeSyncController audioTimeSyncController, float startTimeOffset, float move1Duration, float move2Duration, float obstacleDuration) { if (NoodleExtensions.NoodleController.NoodleExtensionsActive) { ChromaNoodleData chromaData = TryGetNoodleData(obstacleData); if (chromaData == null) { return; } Track track = chromaData.Track; PointDefinition pathPointDefinition = chromaData.LocalPathColor; if (track != null || pathPointDefinition != null) { float jumpDuration = move2Duration; float elapsedTime = audioTimeSyncController.songTime - startTimeOffset; float normalTime = (elapsedTime - move1Duration) / (jumpDuration + obstacleDuration); Chroma.AnimationHelper.GetColorOffset(pathPointDefinition, track, normalTime, out Color? colorOffset); if (colorOffset.HasValue) { obstacleController.SetObstacleColor(colorOffset.Value); obstacleController.SetActiveColors(); } } } }