Skip to content

Commit

Permalink
Make room toolbars visible when child node is selected
Browse files Browse the repository at this point in the history
  • Loading branch information
mpewsey committed Jun 10, 2024
1 parent 25ed70d commit 11c3400
Showing 1 changed file with 19 additions and 3 deletions.
22 changes: 19 additions & 3 deletions addons/mpewsey.maniamap/ManiaMapPlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,19 +76,21 @@ public override void _ExitTree()

public override bool _Handles(GodotObject obj)
{
return obj is LayoutGraphResource || obj is RoomNode2D || obj is RoomNode3D;
return obj is Node || obj is LayoutGraphResource;
}

public override void _Edit(GodotObject obj)
{
if (obj is RoomNode2D room2d)
var room = FindContainingRoom(obj);

if (room is RoomNode2D room2d)
{
RoomNode2DToolbar.SetTargetRoom(room2d);
RoomNode2DToolbar.Visible = true;
return;
}

if (obj is RoomNode3D room3d)
if (room is RoomNode3D room3d)
{
RoomNode3DToolbar.SetTargetRoom(room3d);
RoomNode3DToolbar.Visible = true;
Expand All @@ -106,6 +108,20 @@ public override void _Edit(GodotObject obj)
}
}

private static Node FindContainingRoom(GodotObject obj)
{
if (IsInstanceValid(obj) && obj is Node node)
{
if (obj is RoomNode2D room2d)
return room2d;
if (obj is RoomNode3D room3d)
return room3d;
return FindContainingRoom(node.GetParent());
}

return null;
}

private void AddGraphEditorDock()
{
var scene = ResourceLoader.Load<PackedScene>(ManiaMapResources.Scenes.LayoutGraphEditorScene);
Expand Down

0 comments on commit 11c3400

Please sign in to comment.