private void recalculateStackCoordinates() { HitObjects.ForEach(o => o.StackHeight = 0); if (Format >= 6) { applyStacking(); } else { applyStackingOld(); } }
/// <inheritdoc /> /// <summary> /// </summary> public override void Destroy() { // ReSharper disable twice DelegateSubtraction ConfigManager.EditorScrollSpeedKeys.ValueChanged -= OnScrollSpeedChanged; ConfigManager.EditorShowLaneDividerLines.ValueChanged -= OnShowDividerLinesChanged; ConfigManager.EditorHitObjectsMidpointAnchored.ValueChanged -= OnHitObjectMidpointAnchoredChanged; ConfigManager.EditorViewLayers.ValueChanged -= OnEditorUseLayerHitObjects; var view = (EditorScreenView)Ruleset.Screen.View; view.LayerCompositor.LayerUpdated -= OnEditorLayerUpdated; HitObjects.ForEach(x => x.Destroy()); Timeline.Destroy(); base.Destroy(); }
/// <inheritdoc /> /// <summary> /// </summary> public void Undo() { HitObjects.ForEach(x => x.Info.HitSound |= Hitsound); Ruleset.SetSelectedHitsounds(); }
/// <inheritdoc /> /// <summary> /// </summary> public void Perform() { HitObjects.ForEach(x => x.Info.HitSound -= Hitsound); Ruleset.SetSelectedHitsounds(); }
/// <summary> /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnEditorUseLayerHitObjects(object sender, BindableValueChangedEventArgs <bool> e) { lock (HitObjects) { var skin = SkinManager.Skin.Keys[Ruleset.Screen.WorkingMap.Mode]; HitObjects.ForEach(h => { var index = skin.ColorObjectsBySnapDistance ? HitObjectManager.GetBeatSnap(h.Info, h.Info.GetTimingPoint(Ruleset.Screen.WorkingMap.TimingPoints)) : 0; if (h.Info.IsLongNote) { var ln = (DrawableEditorHitObjectLong)h; if (ConfigManager.EditorViewLayers.Value) { h.Image = skin.EditorLayerNoteHitObjects[h.Info.Lane - 1]; ln.ChangeTextures(skin.EditorLayerNoteHoldBodies[h.Info.Lane - 1], skin.EditorLayerNoteHoldEnds[h.Info.Lane - 1]); } else { h.Image = skin.NoteHoldHitObjects[h.Info.Lane - 1][index]; ln.ChangeTextures(skin.NoteHoldBodies[h.Info.Lane - 1].First(), skin.NoteHoldEnds[h.Info.Lane - 1]); } } else { if (ConfigManager.EditorViewLayers.Value) { h.Image = skin.EditorLayerNoteHitObjects[h.Info.Lane - 1]; } else { h.Image = skin.NoteHitObjects[h.Info.Lane - 1][index]; } } // Resize and reposition the object to support skins that are of different sizes. h.SetHeight(); h.SetPositionY(); h.Resize(); // Reset back to an active state temporarily because any objects that don't // fit the following cases are considered active still. h.AppearAsActive(); // Get the layer the object is in var view = (EditorScreenView)Ruleset.Screen.View; var layer = view.LayerCompositor.ScrollContainer.AvailableItems[h.Info.EditorLayer]; if (Ruleset.SelectedHitObjects.Contains(h)) { h.AppearAsSelected(); } else if (Ruleset.PendingLongNoteReleases.Contains(h.Info)) { var ln = h as DrawableEditorHitObjectLong; ln?.AppearAsInactive(); } else if (layer.Hidden) { h.AppearAsHiddenInLayer(); } }); } }