mirror of
https://github.com/ppy/osu.git
synced 2025-03-28 01:47:33 +08:00
Propagate mania column in SnapResult
This commit is contained in:
parent
82d6549161
commit
62092e3f5b
@ -33,9 +33,6 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
protected float SnappedWidth { get; private set; }
|
protected float SnappedWidth { get; private set; }
|
||||||
|
|
||||||
[Resolved]
|
|
||||||
private IManiaHitObjectComposer composer { get; set; }
|
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private IScrollingInfo scrollingInfo { get; set; }
|
private IScrollingInfo scrollingInfo { get; set; }
|
||||||
|
|
||||||
@ -61,7 +58,7 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints
|
|||||||
public override void UpdatePosition(SnapResult result)
|
public override void UpdatePosition(SnapResult result)
|
||||||
{
|
{
|
||||||
if (!PlacementActive)
|
if (!PlacementActive)
|
||||||
Column = ColumnAt(result.ScreenSpacePosition);
|
Column = (result as ManiaSnapResult)?.Column;
|
||||||
|
|
||||||
if (Column == null) return;
|
if (Column == null) return;
|
||||||
|
|
||||||
@ -85,9 +82,6 @@ namespace osu.Game.Rulesets.Mania.Edit.Blueprints
|
|||||||
return hitObjectToMousePosition(Column.HitObjectContainer.ToSpaceOfOtherDrawable(new Vector2(0, pos), Parent)).Y;
|
return hitObjectToMousePosition(Column.HitObjectContainer.ToSpaceOfOtherDrawable(new Vector2(0, pos), Parent)).Y;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Column ColumnAt(Vector2 screenSpacePosition)
|
|
||||||
=> composer.ColumnAt(screenSpacePosition);
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts a mouse position to a hitobject position.
|
/// Converts a mouse position to a hitobject position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -46,11 +46,13 @@ namespace osu.Game.Rulesets.Mania.Edit
|
|||||||
|
|
||||||
public override SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition)
|
public override SnapResult SnapScreenSpacePositionToValidTime(Vector2 screenSpacePosition)
|
||||||
{
|
{
|
||||||
var hoc = ColumnAt(screenSpacePosition)?.HitObjectContainer;
|
var column = ColumnAt(screenSpacePosition);
|
||||||
|
|
||||||
if (hoc == null)
|
if (column == null)
|
||||||
return new SnapResult(screenSpacePosition, null);
|
return new SnapResult(screenSpacePosition, null);
|
||||||
|
|
||||||
|
var hoc = column.HitObjectContainer;
|
||||||
|
|
||||||
Vector2 localPosition = hoc.ToLocalSpace(screenSpacePosition);
|
Vector2 localPosition = hoc.ToLocalSpace(screenSpacePosition);
|
||||||
|
|
||||||
if (drawableRuleset.ScrollingInfo.Direction.Value == ScrollingDirection.Down)
|
if (drawableRuleset.ScrollingInfo.Direction.Value == ScrollingDirection.Down)
|
||||||
@ -73,7 +75,7 @@ namespace osu.Game.Rulesets.Mania.Edit
|
|||||||
hoc.DrawHeight))
|
hoc.DrawHeight))
|
||||||
).Y;
|
).Y;
|
||||||
|
|
||||||
return new SnapResult(screenSpacePosition, BeatSnapProvider.SnapTime(targetTime));
|
return new ManiaSnapResult(screenSpacePosition, BeatSnapProvider.SnapTime(targetTime), column);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override DrawableRuleset<ManiaHitObject> CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList<Mod> mods = null)
|
protected override DrawableRuleset<ManiaHitObject> CreateDrawableRuleset(Ruleset ruleset, IBeatmap beatmap, IReadOnlyList<Mod> mods = null)
|
||||||
@ -94,4 +96,15 @@ namespace osu.Game.Rulesets.Mania.Edit
|
|||||||
new HoldNoteCompositionTool()
|
new HoldNoteCompositionTool()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ManiaSnapResult : SnapResult
|
||||||
|
{
|
||||||
|
public readonly Column Column;
|
||||||
|
|
||||||
|
public ManiaSnapResult(Vector2 screenSpacePosition, double time, Column column)
|
||||||
|
: base(screenSpacePosition, time)
|
||||||
|
{
|
||||||
|
Column = column;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user