mirror of
https://github.com/ppy/osu.git
synced 2025-03-16 05:37:19 +08:00
Fix selection masks not being added for new objects
This commit is contained in:
parent
34ed60830c
commit
934b687965
@ -5,6 +5,7 @@ using osu.Framework.Graphics;
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Game.Beatmaps;
|
||||
using osu.Game.Rulesets.Objects;
|
||||
using osu.Game.Rulesets.Objects.Drawables;
|
||||
using osu.Game.Rulesets.UI;
|
||||
|
||||
namespace osu.Game.Rulesets.Edit
|
||||
@ -20,7 +21,7 @@ namespace osu.Game.Rulesets.Edit
|
||||
RelativeSizeAxes = Axes.Both;
|
||||
}
|
||||
|
||||
public abstract void AddHitObject(HitObject hitObject);
|
||||
public abstract DrawableHitObject AddHitObject(HitObject hitObject);
|
||||
}
|
||||
|
||||
public abstract class EditRulesetContainer<TObject> : EditRulesetContainer
|
||||
@ -40,7 +41,7 @@ namespace osu.Game.Rulesets.Edit
|
||||
InternalChild = rulesetContainer = CreateRulesetContainer(ruleset, workingBeatmap);
|
||||
}
|
||||
|
||||
public override void AddHitObject(HitObject hitObject)
|
||||
public override DrawableHitObject AddHitObject(HitObject hitObject)
|
||||
{
|
||||
var tObject = (TObject)hitObject;
|
||||
|
||||
@ -54,8 +55,12 @@ namespace osu.Game.Rulesets.Edit
|
||||
tObject.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.BaseDifficulty);
|
||||
processor.PostProcess();
|
||||
|
||||
rulesetContainer.Playfield.Add(rulesetContainer.GetVisualRepresentation(tObject));
|
||||
var drawableObject = rulesetContainer.GetVisualRepresentation(tObject);
|
||||
|
||||
rulesetContainer.Playfield.Add(drawableObject);
|
||||
rulesetContainer.Playfield.PostProcess();
|
||||
|
||||
return drawableObject;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -31,6 +31,7 @@ namespace osu.Game.Rulesets.Edit
|
||||
private readonly List<Container> layerContainers = new List<Container>();
|
||||
private readonly IBindable<WorkingBeatmap> beatmap = new Bindable<WorkingBeatmap>();
|
||||
|
||||
private HitObjectMaskLayer maskLayer;
|
||||
private Container placementContainer;
|
||||
private EditRulesetContainer rulesetContainer;
|
||||
|
||||
@ -66,7 +67,7 @@ namespace osu.Game.Rulesets.Edit
|
||||
var layerAboveRuleset = CreateLayerContainer();
|
||||
layerAboveRuleset.Children = new Drawable[]
|
||||
{
|
||||
new HitObjectMaskLayer(),
|
||||
maskLayer = new HitObjectMaskLayer(),
|
||||
placementContainer = new Container { RelativeSizeAxes = Axes.Both }
|
||||
};
|
||||
|
||||
@ -157,7 +158,9 @@ namespace osu.Game.Rulesets.Edit
|
||||
var mask = tool.CreatePlacementMask();
|
||||
mask.PlacementFinished += h =>
|
||||
{
|
||||
rulesetContainer.AddHitObject(h);
|
||||
var drawableObject = rulesetContainer.AddHitObject(h);
|
||||
|
||||
maskLayer.AddMask(drawableObject);
|
||||
|
||||
// Re-construct the mask
|
||||
setCompositionTool(tool);
|
||||
|
@ -48,7 +48,7 @@ namespace osu.Game.Screens.Edit.Screens.Compose.Layers
|
||||
};
|
||||
|
||||
foreach (var obj in composer.HitObjects)
|
||||
addMask(obj);
|
||||
AddMask(obj);
|
||||
}
|
||||
|
||||
protected override bool OnMouseDown(MouseDownEvent e)
|
||||
@ -61,7 +61,7 @@ namespace osu.Game.Screens.Edit.Screens.Compose.Layers
|
||||
/// Adds a mask for a <see cref="DrawableHitObject"/> which adds movement support.
|
||||
/// </summary>
|
||||
/// <param name="hitObject">The <see cref="DrawableHitObject"/> to create a mask for.</param>
|
||||
private void addMask(DrawableHitObject hitObject)
|
||||
public void AddMask(DrawableHitObject hitObject)
|
||||
{
|
||||
var mask = composer.CreateMaskFor(hitObject);
|
||||
if (mask == null)
|
||||
|
Loading…
x
Reference in New Issue
Block a user