diff --git a/Source/Editor/Windows/Assets/ParticleSystemWindow.cs b/Source/Editor/Windows/Assets/ParticleSystemWindow.cs index 929e81b61..b601f3786 100644 --- a/Source/Editor/Windows/Assets/ParticleSystemWindow.cs +++ b/Source/Editor/Windows/Assets/ParticleSystemWindow.cs @@ -107,7 +107,7 @@ namespace FlaxEditor.Windows.Assets { private readonly ParticleSystemWindow _window; - [EditorDisplay("Particle System"), EditorOrder(100), Limit(1), Tooltip("The timeline animation duration in frames.")] + [EditorDisplay("Particle System"), EditorOrder(-100), Limit(1), Tooltip("The timeline animation duration in frames.")] public int TimelineDurationFrames { get => _window.Timeline.DurationFrames; @@ -124,7 +124,7 @@ namespace FlaxEditor.Windows.Assets /// The proxy object for editing particle system track properties. /// [CustomEditor(typeof(EmitterTrackProxyEditor))] - private class EmitterTrackProxy + private class EmitterTrackProxy : GeneralProxy { private readonly ParticleSystemWindow _window; private readonly ParticleEffect _effect; @@ -171,6 +171,7 @@ namespace FlaxEditor.Windows.Assets } public EmitterTrackProxy(ParticleSystemWindow window, ParticleEffect effect, ParticleEmitterTrack track, int emitterIndex) + : base(window) { _window = window; _effect = effect; @@ -238,7 +239,7 @@ namespace FlaxEditor.Windows.Assets /// /// The proxy object for editing folder track properties. /// - private class FolderTrackProxy + private class FolderTrackProxy : GeneralProxy { private readonly FolderTrack _track; @@ -265,7 +266,8 @@ namespace FlaxEditor.Windows.Assets set => _track.IconColor = value; } - public FolderTrackProxy(FolderTrack track) + public FolderTrackProxy(ParticleSystemWindow window, FolderTrack track) + : base(window) { _track = track; } @@ -275,8 +277,7 @@ namespace FlaxEditor.Windows.Assets private readonly SplitPanel _split2; private ParticleSystemTimeline _timeline; private readonly ParticleSystemPreview _preview; - private readonly CustomEditorPresenter _propertiesEditor1; - private readonly CustomEditorPresenter _propertiesEditor2; + private readonly CustomEditorPresenter _propertiesEditor; private ToolStripButton _saveButton; private ToolStripButton _undoButton; private ToolStripButton _redoButton; @@ -347,18 +348,12 @@ namespace FlaxEditor.Windows.Assets _timeline.Modified += OnTimelineModified; _timeline.SelectionChanged += OnTimelineSelectionChanged; - // Properties editor (general) - var propertiesEditor1 = new CustomEditorPresenter(null, string.Empty); - propertiesEditor1.Panel.Parent = _split2.Panel2; - propertiesEditor1.Modified += OnParticleSystemPropertyEdited; - _propertiesEditor1 = propertiesEditor1; - propertiesEditor1.Select(new GeneralProxy(this)); - - // Properties editor (selection) - var propertiesEditor2 = new CustomEditorPresenter(null, string.Empty); - propertiesEditor2.Panel.Parent = _split2.Panel2; - propertiesEditor2.Modified += OnParticleSystemPropertyEdited; - _propertiesEditor2 = propertiesEditor2; + // Properties editor + var propertiesEditor = new CustomEditorPresenter(_undo, string.Empty); + propertiesEditor.Panel.Parent = _split2.Panel2; + propertiesEditor.Modified += OnParticleSystemPropertyEdited; + _propertiesEditor = propertiesEditor; + propertiesEditor.Select(new GeneralProxy(this)); // Toolstrip _saveButton = (ToolStripButton)_toolstrip.AddButton(Editor.Icons.Save32, Save).LinkTooltip("Save"); @@ -380,8 +375,7 @@ namespace FlaxEditor.Windows.Assets if (!_isEditingInstancedParameterValue) { - _propertiesEditor1.BuildLayoutOnUpdate(); - _propertiesEditor2.BuildLayoutOnUpdate(); + _propertiesEditor.BuildLayoutOnUpdate(); } } @@ -399,7 +393,7 @@ namespace FlaxEditor.Windows.Assets { if (_timeline.SelectedTracks.Count == 0) { - _propertiesEditor2.Deselect(); + _propertiesEditor.Select(new GeneralProxy(this)); return; } @@ -414,14 +408,14 @@ namespace FlaxEditor.Windows.Assets } else if (track is FolderTrack folderTrack) { - tracks[i] = new FolderTrackProxy(folderTrack); + tracks[i] = new FolderTrackProxy(this, folderTrack); } else { throw new NotImplementedException("Invalid track type."); } } - _propertiesEditor2.Select(tracks); + _propertiesEditor.Select(tracks); } private void OnParticleSystemPropertyEdited() @@ -443,8 +437,7 @@ namespace FlaxEditor.Windows.Assets if (_timeline.IsModified) { - _propertiesEditor1.BuildLayoutOnUpdate(); - _propertiesEditor2.BuildLayoutOnUpdate(); + _propertiesEditor.BuildLayoutOnUpdate(); _timeline.Save(_asset); } @@ -484,7 +477,7 @@ namespace FlaxEditor.Windows.Assets /// protected override void UnlinkItem() { - _propertiesEditor2.Deselect(); + _propertiesEditor.Deselect(); _preview.System = null; _isWaitingForTimelineLoad = false; @@ -507,7 +500,7 @@ namespace FlaxEditor.Windows.Assets if (_parametersVersion != _preview.PreviewActor.ParametersVersion) { _parametersVersion = _preview.PreviewActor.ParametersVersion; - _propertiesEditor2.BuildLayoutOnUpdate(); + _propertiesEditor.BuildLayoutOnUpdate(); } base.Update(deltaTime); @@ -534,8 +527,7 @@ namespace FlaxEditor.Windows.Assets // Setup _undo.Clear(); _timeline.Enabled = true; - _propertiesEditor1.BuildLayout(); - _propertiesEditor2.Deselect(); + _propertiesEditor.Select(new GeneralProxy(this)); ClearEditedFlag(); } @@ -580,8 +572,7 @@ namespace FlaxEditor.Windows.Assets { if (_undo != null) _undo.Enabled = false; - _propertiesEditor1?.Deselect(); - _propertiesEditor2?.Deselect(); + _propertiesEditor?.Deselect(); _undo?.Clear(); _undo = null;