Invert flow order of hitobjects between composer and mask layers

This commit is contained in:
smoogipoo 2018-07-17 15:35:32 +09:00
parent b69f61886c
commit 0b66f63f7d
2 changed files with 17 additions and 13 deletions

View File

@ -28,6 +28,9 @@ namespace osu.Game.Rulesets.Edit
private RulesetContainer rulesetContainer;
private readonly List<Container> layerContainers = new List<Container>();
public IEnumerable<DrawableHitObject> HitObjects => rulesetContainer.Playfield.HitObjects.Objects;
public IEnumerable<DrawableHitObject> AliveHitObjects => rulesetContainer.Playfield.HitObjects.AliveObjects;
private readonly IBindable<WorkingBeatmap> beatmap = new Bindable<WorkingBeatmap>();
protected HitObjectComposer(Ruleset ruleset)
@ -60,7 +63,7 @@ namespace osu.Game.Rulesets.Edit
};
var layerAboveRuleset = CreateLayerContainer();
layerAboveRuleset.Child = new HitObjectMaskLayer(rulesetContainer.Playfield, this);
layerAboveRuleset.Child = new HitObjectMaskLayer();
layerContainers.Add(layerBelowRuleset);
layerContainers.Add(layerAboveRuleset);
@ -110,6 +113,13 @@ namespace osu.Game.Rulesets.Edit
toolboxCollection.Items[0].Select();
}
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
{
var dependencies = new DependencyContainer(base.CreateChildDependencies(parent));
dependencies.CacheAs(this);
return dependencies;
}
protected override void UpdateAfterChildren()
{
base.UpdateAfterChildren();

View File

@ -8,30 +8,24 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Input;
using osu.Game.Rulesets.Edit;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.UI;
namespace osu.Game.Screens.Edit.Screens.Compose.Layers
{
public class HitObjectMaskLayer : CompositeDrawable
{
private readonly Playfield playfield;
private readonly HitObjectComposer composer;
private MaskContainer maskContainer;
private HitObjectComposer composer;
public HitObjectMaskLayer(Playfield playfield, HitObjectComposer composer)
public HitObjectMaskLayer()
{
// we need the playfield as HitObjects may not be initialised until its BDL.
this.playfield = playfield;
this.composer = composer;
RelativeSizeAxes = Axes.Both;
}
[BackgroundDependencyLoader]
private void load()
private void load(HitObjectComposer composer)
{
this.composer = composer;
maskContainer = new MaskContainer();
var maskSelection = composer.CreateMaskSelection();
@ -54,7 +48,7 @@ namespace osu.Game.Screens.Edit.Screens.Compose.Layers
dragLayer.CreateProxy()
};
foreach (var obj in playfield.HitObjects.Objects)
foreach (var obj in composer.HitObjects)
addMask(obj);
}