mirror of
https://github.com/ppy/osu.git
synced 2025-03-05 13:42:59 +08:00
Clean up some code reuse
This commit is contained in:
parent
2418f17b0c
commit
85eb98a7ec
@ -55,12 +55,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
|
|
||||||
Vector2 startPosition = start.StackedEndPosition;
|
Vector2 startPosition = start.StackedEndPosition;
|
||||||
Vector2 endPosition = end.StackedPosition;
|
Vector2 endPosition = end.StackedPosition;
|
||||||
double endTime = end.StartTime;
|
|
||||||
|
|
||||||
Vector2 distanceVector = endPosition - startPosition;
|
Vector2 distanceVector = endPosition - startPosition;
|
||||||
int distance = (int)distanceVector.Length;
|
int distance = (int)distanceVector.Length;
|
||||||
float rotation = (float)(Math.Atan2(distanceVector.Y, distanceVector.X) * (180 / Math.PI));
|
float rotation = (float)(Math.Atan2(distanceVector.Y, distanceVector.X) * (180 / Math.PI));
|
||||||
double duration = endTime - startTime;
|
|
||||||
|
|
||||||
double finalTransformEndTime = startTime;
|
double finalTransformEndTime = startTime;
|
||||||
|
|
||||||
@ -69,8 +67,8 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
float fraction = (float)d / distance;
|
float fraction = (float)d / distance;
|
||||||
Vector2 pointStartPosition = startPosition + (fraction - 0.1f) * distanceVector;
|
Vector2 pointStartPosition = startPosition + (fraction - 0.1f) * distanceVector;
|
||||||
Vector2 pointEndPosition = startPosition + fraction * distanceVector;
|
Vector2 pointEndPosition = startPosition + fraction * distanceVector;
|
||||||
double fadeOutTime = startTime + fraction * duration;
|
|
||||||
double fadeInTime = fadeOutTime - PREEMPT;
|
GetFadeTimes(start, end, (float)d / distance, out var fadeInTime, out var fadeOutTime);
|
||||||
|
|
||||||
FollowPoint fp;
|
FollowPoint fp;
|
||||||
|
|
||||||
@ -98,5 +96,22 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
// todo: use Expire() on FollowPoints and take lifetime from them when https://github.com/ppy/osu-framework/issues/3300 is fixed.
|
// todo: use Expire() on FollowPoints and take lifetime from them when https://github.com/ppy/osu-framework/issues/3300 is fixed.
|
||||||
Entry.LifetimeEnd = finalTransformEndTime;
|
Entry.LifetimeEnd = finalTransformEndTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Computes the fade time of follow point positioned between two hitobjects.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="start">The first <see cref="OsuHitObject"/>, where follow points should originate from.</param>
|
||||||
|
/// <param name="end">The second <see cref="OsuHitObject"/>, which follow points should target.</param>
|
||||||
|
/// <param name="fraction">The fractional distance along <paramref name="start"/> and <paramref name="end"/> at which the follow point is to be located.</param>
|
||||||
|
/// <param name="fadeInTime">The fade-in time of the follow point/</param>
|
||||||
|
/// <param name="fadeOutTime">The fade-out time of the follow point.</param>
|
||||||
|
public static void GetFadeTimes(OsuHitObject start, OsuHitObject end, float fraction, out double fadeInTime, out double fadeOutTime)
|
||||||
|
{
|
||||||
|
double startTime = start.GetEndTime();
|
||||||
|
double duration = end.StartTime - startTime;
|
||||||
|
|
||||||
|
fadeOutTime = startTime + fraction * duration;
|
||||||
|
fadeInTime = fadeOutTime - PREEMPT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -248,12 +248,10 @@ namespace osu.Game.Rulesets.Osu.Objects.Drawables.Connections
|
|||||||
Vector2 startPosition = Start.StackedEndPosition;
|
Vector2 startPosition = Start.StackedEndPosition;
|
||||||
Vector2 endPosition = End.StackedPosition;
|
Vector2 endPosition = End.StackedPosition;
|
||||||
Vector2 distanceVector = endPosition - startPosition;
|
Vector2 distanceVector = endPosition - startPosition;
|
||||||
|
|
||||||
|
// The lifetime start will match the fade-in time of the first follow point.
|
||||||
float fraction = (int)(FollowPointConnection.SPACING * 1.5) / distanceVector.Length;
|
float fraction = (int)(FollowPointConnection.SPACING * 1.5) / distanceVector.Length;
|
||||||
|
FollowPointConnection.GetFadeTimes(Start, End, fraction, out var fadeInTime, out _);
|
||||||
double duration = End.StartTime - Start.GetEndTime();
|
|
||||||
|
|
||||||
double fadeOutTime = Start.StartTime + fraction * duration;
|
|
||||||
double fadeInTime = fadeOutTime - FollowPointConnection.PREEMPT;
|
|
||||||
|
|
||||||
LifetimeStart = fadeInTime;
|
LifetimeStart = fadeInTime;
|
||||||
LifetimeEnd = double.MaxValue; // This will be set by the connection.
|
LifetimeEnd = double.MaxValue; // This will be set by the connection.
|
||||||
|
Loading…
Reference in New Issue
Block a user