Skip to content
This repository was archived by the owner on Jul 11, 2025. It is now read-only.

Commit 218c44a

Browse files
committed
Gave tileset editor access to the tile palette controls.
There's overlapping controls between the tile palette and the tileset editor.
1 parent c816459 commit 218c44a

File tree

3 files changed

+74
-156
lines changed

3 files changed

+74
-156
lines changed

Source/Plugins/Tilemaps/Editor/CamViewStates/TilemapEditorCamViewState.cs

Lines changed: 4 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -606,73 +606,6 @@ private void DeselectToolInInspector()
606606
DualityEditorApp.Deselect(this, new ObjectSelection(new object[] { this.selectedTool.Settings }));
607607
}
608608

609-
private void MoveTilePaletteSelection(Keys keyPressed)
610-
{
611-
TilemapToolSourcePalette sourcePalette = TilemapsEditorPlugin.Instance.PeekTilePalette();
612-
if (sourcePalette == null) return;
613-
614-
if (keyPressed == Keys.Up)
615-
{
616-
sourcePalette.TranslateSelectedArea(0, -1);
617-
}
618-
if (keyPressed == Keys.Down)
619-
{
620-
sourcePalette.TranslateSelectedArea(0, 1);
621-
}
622-
if (keyPressed == Keys.Left)
623-
{
624-
sourcePalette.TranslateSelectedArea(-1, 0);
625-
}
626-
if (keyPressed == Keys.Right)
627-
{
628-
sourcePalette.TranslateSelectedArea(1, 0);
629-
}
630-
}
631-
private void ExpandTilePaletteSelection(Keys keyPressed)
632-
{
633-
TilemapToolSourcePalette sourcePalette = TilemapsEditorPlugin.Instance.PeekTilePalette();
634-
if (sourcePalette == null) return;
635-
636-
if (keyPressed == Keys.Up)
637-
{
638-
sourcePalette.ExpandSelectedArea(0, -1);
639-
}
640-
if (keyPressed == Keys.Down)
641-
{
642-
sourcePalette.ExpandSelectedArea(0, 1);
643-
}
644-
if (keyPressed == Keys.Left)
645-
{
646-
sourcePalette.ExpandSelectedArea(-1, 0);
647-
}
648-
if (keyPressed == Keys.Right)
649-
{
650-
sourcePalette.ExpandSelectedArea(1, 0);
651-
}
652-
}
653-
private void ShrinkTilePaletteSelection(Keys keyPressed)
654-
{
655-
TilemapToolSourcePalette sourcePalette = TilemapsEditorPlugin.Instance.PeekTilePalette();
656-
if (sourcePalette == null) return;
657-
658-
if (keyPressed == Keys.Up)
659-
{
660-
sourcePalette.ShrinkTilePaletteSelection(0, 1);
661-
}
662-
if (keyPressed == Keys.Down)
663-
{
664-
sourcePalette.ShrinkTilePaletteSelection(0, -1);
665-
}
666-
if (keyPressed == Keys.Left)
667-
{
668-
sourcePalette.ShrinkTilePaletteSelection(1, 0);
669-
}
670-
if (keyPressed == Keys.Right)
671-
{
672-
sourcePalette.ShrinkTilePaletteSelection(-1, 0);
673-
}
674-
}
675-
676609
protected override string UpdateStatusText()
677610
{
678611
// Display which Tilemap we're currently using
@@ -822,23 +755,10 @@ protected override void OnMouseUp(MouseEventArgs e)
822755
protected override void OnKeyDown(KeyEventArgs e)
823756
{
824757
base.OnKeyDown(e);
758+
TilemapsEditorPlugin.Instance.PeekTilePalette().RaiseKeyDownEvent(e);
825759

826-
if (Control.ModifierKeys == Keys.Shift && (e.KeyCode & (Keys.Up | Keys.Down | Keys.Left | Keys.Right)) != Keys.None)
827-
{
828-
this.MoveTilePaletteSelection(e.KeyCode);
829-
}
830-
else if (Control.ModifierKeys == Keys.Alt &&
831-
(e.KeyCode & (Keys.Up | Keys.Down | Keys.Left | Keys.Right)) != Keys.None)
832-
{
833-
this.ExpandTilePaletteSelection(e.KeyCode);
834-
}
835-
else if (Control.ModifierKeys == (Keys.Alt | Keys.Shift) &&
836-
(e.KeyCode & (Keys.Up | Keys.Down | Keys.Left | Keys.Right)) != Keys.None)
837-
{
838-
this.ShrinkTilePaletteSelection(e.KeyCode);
839-
}
840760
// Hotkeys for switching the currently selected tilemap
841-
else if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
761+
if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
842762
{
843763
Tilemap[] visibleTilemaps =
844764
this.QueryVisibleTilemapRenderers()
@@ -890,7 +810,8 @@ protected override void OnKeyDown(KeyEventArgs e)
890810
protected override void OnKeyUp(KeyEventArgs e)
891811
{
892812
base.OnKeyUp(e);
893-
813+
TilemapsEditorPlugin.Instance.PeekTilePalette().RaiseKeyUpEvent(e);
814+
894815
if (this.overrideTool != null && this.overrideTool.OverrideKey == e.KeyCode)
895816
{
896817
this.OverrideTool = null;

Source/Plugins/Tilemaps/Editor/Modules/SourcePaletteTilesetView.cs

Lines changed: 65 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -87,66 +87,14 @@ public IReadOnlyGrid<Tile> SelectedTiles
8787
{
8888
get { return this.selectedTiles; }
8989
}
90-
internal void TranslateSelectedArea(int offsetX, int offsetY)
91-
{
92-
if (this.selectedArea.IsEmpty)
93-
{
94-
this.InitializeSelectedArea();
95-
return;
96-
}
97-
98-
int newX = MathF.Clamp(this.selectedArea.X + offsetX, 0, this.DisplayedTileCount.X - this.selectedArea.Width);
99-
int newY = MathF.Clamp(this.selectedArea.Y + offsetY, 0, this.DisplayedTileCount.Y - this.selectedArea.Height);
10090

101-
this.SelectedArea = new Rectangle(newX, newY, this.selectedArea.Width, this.selectedArea.Height);
102-
this.RaiseSelectedAreaEditingFinished();
103-
this.Invalidate();
104-
}
105-
internal void ExpandSelectedArea(int diffX, int diffY)
91+
internal void RaiseKeyDownEvent(KeyEventArgs e)
10692
{
107-
if (this.selectedArea.IsEmpty)
108-
{
109-
this.InitializeSelectedArea();
110-
return;
111-
}
112-
113-
int newX = MathF.Max(this.selectedArea.X + MathF.Min(diffX, 0), 0);
114-
int newY = MathF.Max(this.selectedArea.Y + MathF.Min(diffY, 0), 0);
115-
116-
int newWidth = this.selectedArea.Width + MathF.Max(diffX, 0);
117-
newWidth = MathF.Min(newWidth, this.DisplayedTileCount.X - this.selectedArea.X);
118-
newWidth += this.selectedArea.X - newX;
119-
120-
int newHeight = this.selectedArea.Height + MathF.Max(diffY, 0);
121-
newHeight = MathF.Min(newHeight, this.DisplayedTileCount.Y - this.selectedArea.Y);
122-
newHeight += this.selectedArea.Y - newY;
123-
124-
this.SelectedArea = new Rectangle(newX, newY, newWidth, newHeight);
125-
this.RaiseSelectedAreaEditingFinished();
126-
this.Invalidate();
93+
this.OnKeyDown(e);
12794
}
128-
public void ShrinkSelectedArea(int diffX, int diffY)
95+
internal void RaiseKeyUpEvent(KeyEventArgs e)
12996
{
130-
if (this.selectedArea.IsEmpty)
131-
{
132-
this.InitializeSelectedArea();
133-
return;
134-
}
135-
136-
int newX = MathF.Min(this.selectedArea.X + MathF.Max(diffX, 0),
137-
this.selectedArea.X + this.selectedArea.Width - 1);
138-
int newY = MathF.Min(this.selectedArea.Y + MathF.Max(diffY, 0),
139-
this.selectedArea.Y + this.selectedArea.Height - 1);
140-
141-
int newWidth = MathF.Max(this.selectedArea.Width + MathF.Min(diffX, 0), 1);
142-
newWidth -= newX - this.selectedArea.X;
143-
144-
int newHeight = MathF.Max(this.selectedArea.Height + MathF.Min(diffY, 0), 1);
145-
newHeight -= newY - this.selectedArea.Y;
146-
147-
this.SelectedArea = new Rectangle(newX, newY, newWidth, newHeight);
148-
this.RaiseSelectedAreaEditingFinished();
149-
this.Invalidate();
97+
this.OnKeyUp(e);
15098
}
15199

152100
protected override void OnTilesetChanged()
@@ -538,5 +486,66 @@ private void RaiseSelectedAreaChanged()
538486
{
539487
this.SelectedAreaChanged?.Invoke(this, EventArgs.Empty);
540488
}
489+
private void TranslateSelectedArea(int offsetX, int offsetY)
490+
{
491+
if (this.selectedArea.IsEmpty)
492+
{
493+
this.InitializeSelectedArea();
494+
return;
495+
}
496+
497+
int newX = MathF.Clamp(this.selectedArea.X + offsetX, 0, this.DisplayedTileCount.X - this.selectedArea.Width);
498+
int newY = MathF.Clamp(this.selectedArea.Y + offsetY, 0, this.DisplayedTileCount.Y - this.selectedArea.Height);
499+
500+
this.SelectedArea = new Rectangle(newX, newY, this.selectedArea.Width, this.selectedArea.Height);
501+
this.RaiseSelectedAreaEditingFinished();
502+
this.Invalidate();
503+
}
504+
private void ExpandSelectedArea(int diffX, int diffY)
505+
{
506+
if (this.selectedArea.IsEmpty)
507+
{
508+
this.InitializeSelectedArea();
509+
return;
510+
}
511+
512+
int newX = MathF.Max(this.selectedArea.X + MathF.Min(diffX, 0), 0);
513+
int newY = MathF.Max(this.selectedArea.Y + MathF.Min(diffY, 0), 0);
514+
515+
int newWidth = this.selectedArea.Width + MathF.Max(diffX, 0);
516+
newWidth = MathF.Min(newWidth, this.DisplayedTileCount.X - this.selectedArea.X);
517+
newWidth += this.selectedArea.X - newX;
518+
519+
int newHeight = this.selectedArea.Height + MathF.Max(diffY, 0);
520+
newHeight = MathF.Min(newHeight, this.DisplayedTileCount.Y - this.selectedArea.Y);
521+
newHeight += this.selectedArea.Y - newY;
522+
523+
this.SelectedArea = new Rectangle(newX, newY, newWidth, newHeight);
524+
this.RaiseSelectedAreaEditingFinished();
525+
this.Invalidate();
526+
}
527+
private void ShrinkSelectedArea(int diffX, int diffY)
528+
{
529+
if (this.selectedArea.IsEmpty)
530+
{
531+
this.InitializeSelectedArea();
532+
return;
533+
}
534+
535+
int newX = MathF.Min(this.selectedArea.X + MathF.Max(diffX, 0),
536+
this.selectedArea.X + this.selectedArea.Width - 1);
537+
int newY = MathF.Min(this.selectedArea.Y + MathF.Max(diffY, 0),
538+
this.selectedArea.Y + this.selectedArea.Height - 1);
539+
540+
int newWidth = MathF.Max(this.selectedArea.Width + MathF.Min(diffX, 0), 1);
541+
newWidth -= newX - this.selectedArea.X;
542+
543+
int newHeight = MathF.Max(this.selectedArea.Height + MathF.Min(diffY, 0), 1);
544+
newHeight -= newY - this.selectedArea.Y;
545+
546+
this.SelectedArea = new Rectangle(newX, newY, newWidth, newHeight);
547+
this.RaiseSelectedAreaEditingFinished();
548+
this.Invalidate();
549+
}
541550
}
542551
}

Source/Plugins/Tilemaps/Editor/Modules/TilemapToolSourcePalette.cs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,26 +44,14 @@ public TilemapToolSourcePalette()
4444
this.ApplyTileIndexDrawMode();
4545
}
4646

47-
/// <summary>
48-
/// Translates the selected area in the source palette by a number of tiles along the X and Y axes.
49-
/// </summary>
50-
public void TranslateSelectedArea(int offsetX, int offsetY)
47+
public void RaiseKeyDownEvent(KeyEventArgs e)
5148
{
52-
this.tilesetView.TranslateSelectedArea(offsetX, offsetY);
49+
this.tilesetView.RaiseKeyDownEvent(e);
5350
}
54-
/// <summary>
55-
/// Expands the selected area in the positive or negative direction along the X and Y axes.
56-
/// </summary>
57-
public void ExpandSelectedArea(int diffX, int diffY)
58-
{
59-
this.tilesetView.ExpandSelectedArea(diffX, diffY);
60-
}
61-
/// <summary>
62-
/// Shrinks the selected area in the positive or negative direction along the X and Y axes.
63-
/// </summary>
64-
public void ShrinkTilePaletteSelection(int diffX, int diffY)
51+
52+
public void RaiseKeyUpEvent(KeyEventArgs e)
6553
{
66-
this.tilesetView.ShrinkSelectedArea(diffX, diffY);
54+
this.tilesetView.RaiseKeyUpEvent(e);
6755
}
6856

6957
internal void SaveUserData(XElement node)

0 commit comments

Comments
 (0)