Fix selection masks not being added for new objects

This commit is contained in:
smoogipoo
2018-10-03 16:49:59 +09:00
parent 34ed60830c
commit 934b687965
3 changed files with 15 additions and 7 deletions

View File

@ -5,6 +5,7 @@ using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Game.Beatmaps; using osu.Game.Beatmaps;
using osu.Game.Rulesets.Objects; using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.UI; using osu.Game.Rulesets.UI;
namespace osu.Game.Rulesets.Edit namespace osu.Game.Rulesets.Edit
@ -20,7 +21,7 @@ namespace osu.Game.Rulesets.Edit
RelativeSizeAxes = Axes.Both; RelativeSizeAxes = Axes.Both;
} }
public abstract void AddHitObject(HitObject hitObject); public abstract DrawableHitObject AddHitObject(HitObject hitObject);
} }
public abstract class EditRulesetContainer<TObject> : EditRulesetContainer public abstract class EditRulesetContainer<TObject> : EditRulesetContainer
@ -40,7 +41,7 @@ namespace osu.Game.Rulesets.Edit
InternalChild = rulesetContainer = CreateRulesetContainer(ruleset, workingBeatmap); InternalChild = rulesetContainer = CreateRulesetContainer(ruleset, workingBeatmap);
} }
public override void AddHitObject(HitObject hitObject) public override DrawableHitObject AddHitObject(HitObject hitObject)
{ {
var tObject = (TObject)hitObject; var tObject = (TObject)hitObject;
@ -54,8 +55,12 @@ namespace osu.Game.Rulesets.Edit
tObject.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.BaseDifficulty); tObject.ApplyDefaults(beatmap.ControlPointInfo, beatmap.BeatmapInfo.BaseDifficulty);
processor.PostProcess(); processor.PostProcess();
rulesetContainer.Playfield.Add(rulesetContainer.GetVisualRepresentation(tObject)); var drawableObject = rulesetContainer.GetVisualRepresentation(tObject);
rulesetContainer.Playfield.Add(drawableObject);
rulesetContainer.Playfield.PostProcess(); rulesetContainer.Playfield.PostProcess();
return drawableObject;
} }
/// <summary> /// <summary>

View File

@ -31,6 +31,7 @@ namespace osu.Game.Rulesets.Edit
private readonly List<Container> layerContainers = new List<Container>(); private readonly List<Container> layerContainers = new List<Container>();
private readonly IBindable<WorkingBeatmap> beatmap = new Bindable<WorkingBeatmap>(); private readonly IBindable<WorkingBeatmap> beatmap = new Bindable<WorkingBeatmap>();
private HitObjectMaskLayer maskLayer;
private Container placementContainer; private Container placementContainer;
private EditRulesetContainer rulesetContainer; private EditRulesetContainer rulesetContainer;
@ -66,7 +67,7 @@ namespace osu.Game.Rulesets.Edit
var layerAboveRuleset = CreateLayerContainer(); var layerAboveRuleset = CreateLayerContainer();
layerAboveRuleset.Children = new Drawable[] layerAboveRuleset.Children = new Drawable[]
{ {
new HitObjectMaskLayer(), maskLayer = new HitObjectMaskLayer(),
placementContainer = new Container { RelativeSizeAxes = Axes.Both } placementContainer = new Container { RelativeSizeAxes = Axes.Both }
}; };
@ -157,7 +158,9 @@ namespace osu.Game.Rulesets.Edit
var mask = tool.CreatePlacementMask(); var mask = tool.CreatePlacementMask();
mask.PlacementFinished += h => mask.PlacementFinished += h =>
{ {
rulesetContainer.AddHitObject(h); var drawableObject = rulesetContainer.AddHitObject(h);
maskLayer.AddMask(drawableObject);
// Re-construct the mask // Re-construct the mask
setCompositionTool(tool); setCompositionTool(tool);

View File

@ -48,7 +48,7 @@ namespace osu.Game.Screens.Edit.Screens.Compose.Layers
}; };
foreach (var obj in composer.HitObjects) foreach (var obj in composer.HitObjects)
addMask(obj); AddMask(obj);
} }
protected override bool OnMouseDown(MouseDownEvent e) 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. /// Adds a mask for a <see cref="DrawableHitObject"/> which adds movement support.
/// </summary> /// </summary>
/// <param name="hitObject">The <see cref="DrawableHitObject"/> to create a mask for.</param> /// <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); var mask = composer.CreateMaskFor(hitObject);
if (mask == null) if (mask == null)