rokojori_action_library/Runtime/Godot/NodesWalker.cs

96 lines
1.6 KiB
C#

using Godot;
using Rokojori.Extensions;
namespace Rokojori
{
[RokojoriActionCoreExport]
[RokojoriActionCoreExportFlatten]
public class NodesWalker: TreeWalker<Node>
{
static NodesWalker _singleton = new NodesWalker();
public static NodesWalker Get()
{
if ( _singleton == null )
{
_singleton = new NodesWalker();
}
return _singleton;
}
public override Node Parent( Node n )
{
if ( n == null )
{
return null;
}
return n.GetParent();
}
public override Node ChildAt( Node n, int index )
{
if ( n == null )
{
return null;
}
return n.GetChild( index );
}
public override int NumChildren( Node n )
{
if ( n == null )
{
return 0;
}
return n.GetChildCount();
}
}
[RokojoriActionCoreExport]
[RokojoriActionCoreExportFlatten]
public class InternalNodesWalker: TreeWalker<Node>
{
static InternalNodesWalker _singleton = new InternalNodesWalker();
public static InternalNodesWalker Get()
{
return _singleton;
}
public override Node Parent( Node n )
{
if ( n == null )
{
return null;
}
return n.GetParent();
}
public override Node ChildAt( Node n, int index )
{
if ( n == null )
{
return null;
}
return n.GetChild( index, true );
}
public override int NumChildren( Node n )
{
if ( n == null )
{
return 0;
}
return n.GetChildCount( true );
}
}
}