Skip to content

add option to specify which layers the layerbrush will select #372

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: layerbrush
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 34 additions & 9 deletions Editor/Brushes/LayerBrush/LayerBrush.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ public class LayerBrush : GridBrush
internal GameObject[] brushTargets;
private GridLayout cachedGridLayout;

public Tilemap[] restrictToTheseTilemapsOnly;

internal bool ValidateAndCacheBrushTargetsFromGridLayout(GridLayout gridLayout)
{
if (cachedGridLayout == gridLayout)
Expand Down Expand Up @@ -67,39 +69,58 @@ private void CacheGridLayout(GridLayout gridLayout)
CacheBrushTargets(tilemaps);
}

private bool SelectedTarget(int i)
{
if (restrictToTheseTilemapsOnly.Length == 0)
return true;

foreach(Tilemap tilemap in restrictToTheseTilemapsOnly)
{
if (brushTargets[i] == tilemap.gameObject)
return true;
}

return false;
}

public override void Select(GridLayout gridLayout, GameObject brushTarget, BoundsInt position)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].Select(gridLayout, brushTargets[i], position);
if(SelectedTarget(i))
gridBrushes[i].Select(gridLayout, brushTargets[i], position);
}

public override void Move(GridLayout gridLayout, GameObject brushTarget, BoundsInt from, BoundsInt to)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].Move(gridLayout, brushTargets[i], from, to);
if (SelectedTarget(i))
gridBrushes[i].Move(gridLayout, brushTargets[i], from, to);
}

public override void MoveStart(GridLayout gridLayout, GameObject brushTarget, BoundsInt position)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].MoveStart(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].MoveStart(gridLayout, brushTargets[i], position);
}

public override void MoveEnd(GridLayout gridLayout, GameObject brushTarget, BoundsInt position)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].MoveEnd(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].MoveEnd(gridLayout, brushTargets[i], position);
}

public override void Paint(GridLayout gridLayout, GameObject brushTarget, Vector3Int position)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].Paint(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].Paint(gridLayout, brushTargets[i], position);
}

public override void Erase(GridLayout gridLayout, GameObject brushTarget, Vector3Int position)
Expand All @@ -108,14 +129,16 @@ public override void Erase(GridLayout gridLayout, GameObject brushTarget, Vector
return;

for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].Erase(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].Erase(gridLayout, brushTargets[i], position);
}

public override void Pick(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, Vector3Int pickStart)
{
CacheGridLayout(gridLayout);
for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].Pick(gridLayout, brushTargets[i], position, pickStart);
if (SelectedTarget(i))
gridBrushes[i].Pick(gridLayout, brushTargets[i], position, pickStart);
base.Pick(gridLayout, brushTarget, position, pickStart);
}

Expand All @@ -125,7 +148,8 @@ public override void FloodFill(GridLayout gridLayout, GameObject brushTarget, Ve
return;

for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].FloodFill(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].FloodFill(gridLayout, brushTargets[i], position);
}

public override void BoxFill(GridLayout gridLayout, GameObject brushTarget, BoundsInt position)
Expand All @@ -134,7 +158,8 @@ public override void BoxFill(GridLayout gridLayout, GameObject brushTarget, Boun
return;

for (int i = 0; i < gridBrushes.Length; ++i)
gridBrushes[i].BoxFill(gridLayout, brushTargets[i], position);
if (SelectedTarget(i))
gridBrushes[i].BoxFill(gridLayout, brushTargets[i], position);
}

public override void Flip(FlipAxis flip, GridLayout.CellLayout layout)
Expand Down