Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void FollowingHitObjects()
- {
- var light = new KeyframedOsbSprite(GetLayer("Light").CreateSprite("sb/pixel.png"));
- light.Fade(204702, 1);
- light.Color(204702, new Color4(255, 255, 255, 1));
- light.ScaleVec(204702, new Vector2(30, 480));
- light.Fade(234470, 0);
- Vector2 prevPosition = new Vector2(320, 240);
- double startTime = 204702;
- double endTime = 234470;
- double prevTime = startTime;
- int timeDivisor = 8;
- Color4 prevColour;
- foreach (var hitobject in Beatmap.HitObjects)
- {
- if (hitobject is OsuSpinner)
- continue; // Restart for loop at next iteration.
- if ((hitobject.StartTime >= startTime || hitobject.EndTime >= startTime) && (hitobject.EndTime <= endTime || hitobject.StartTime <= endTime))
- {
- if (hitobject.StartTime == startTime || hitobject.EndTime == startTime)
- {
- var pos = hitobject.EndTime == startTime ? hitobject.EndPosition : hitobject.Position;
- light.MoveX(hitobject.StartTime, pos.X);
- prevPosition = pos;
- prevColour = hitobject.Color;
- light.Color(OsbEasing.OutQuint, prevTime, hitobject.StartTime, prevColour, hitobject.Color);
- }
- else
- {
- light.MoveX(OsbEasing.None, prevTime, hitobject.StartTime, prevPosition.X, hitobject.Position.X);
- prevPosition = hitobject.Position;
- prevColour = hitobject.Color;
- light.Color(OsbEasing.OutQuint, prevTime, hitobject.StartTime, prevColour, hitobject.Color);
- if (hitobject is OsuSlider)
- {
- for (var time = hitobject.StartTime; time < hitobject.EndTime; time += Beatmap.GetTimingPointAt((int)hitobject.StartTime).BeatDuration / timeDivisor)
- {
- Log($"prevPos = {prevPosition}\ntime = {time}");
- var newPos = hitobject.PositionAtTime(time + Beatmap.GetTimingPointAt((int)hitobject.StartTime).BeatDuration / timeDivisor);
- light.MoveX(OsbEasing.None, time, time + Beatmap.GetTimingPointAt((int)hitobject.StartTime).BeatDuration / timeDivisor, prevPosition.X, newPos.X);
- prevPosition = newPos;
- }
- }
- prevTime = hitobject is OsuSlider ? hitobject.EndTime : hitobject.StartTime;
- prevPosition = hitobject is OsuSlider ? hitobject.EndPosition : hitobject.Position;
- }
- }
- }
- light.FinaliseKeyframes();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement