46 lines
904 B
C#
46 lines
904 B
C#
|
|
using System.Linq;
|
|
using Godot;
|
|
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool][GlobalClass ]
|
|
public partial class Solo:Action
|
|
{
|
|
[Export]
|
|
public Node soloNode;
|
|
|
|
[Export]
|
|
public NodeStateConfiguration soloConfiguration;
|
|
|
|
[Export]
|
|
public NodeStateConfiguration muteConifiguration;
|
|
|
|
[Export]
|
|
public Node[] ignore = [];
|
|
|
|
|
|
protected override void _OnTrigger()
|
|
{
|
|
var parent = soloNode.GetParent();
|
|
|
|
var soloConfig = soloConfiguration ?? NodeStateConfiguration.AllOn();
|
|
var muteConfig = muteConifiguration ?? NodeStateConfiguration.AllOff();
|
|
|
|
|
|
parent.ForEachDirectChild<Node>(
|
|
n =>
|
|
{
|
|
if ( ignore != null && ignore.Contains( n ) )
|
|
{
|
|
return;
|
|
}
|
|
|
|
var configuration = soloNode == n ? soloConfig : muteConfig;
|
|
NodeState.Configure( n, configuration );
|
|
}
|
|
);
|
|
}
|
|
}
|
|
} |