using Godot; using System.Collections.Generic; using System; namespace Rokojori { public class NodeState { public static void Configure( Node n, bool processEnabled, bool inputEnabled, bool physicsEnabled, bool signalsEnabled, Node.ProcessModeEnum processMode, bool visible ) { if ( n == null ) { return; } n.SetProcess( processEnabled ); n.SetProcessInput( inputEnabled ); n.SetPhysicsProcess( physicsEnabled ); n.SetBlockSignals( ! signalsEnabled ); n.ProcessMode = processMode; if ( n is Node3D ) { ( n as Node3D ).Visible = visible; } if ( n is Node2D ) { ( n as Node2D ).Visible = visible; } if ( n is CanvasItem ) { ( n as CanvasItem ).Visible = visible; } } public static void Set( Node n, bool enabled ) { Configure( n, enabled, enabled, enabled, enabled, enabled ? Node.ProcessModeEnum.Inherit : Node.ProcessModeEnum.Disabled, enabled ); } public static void Set( Node[] nodes, bool enabled ) { Arrays.ForEach( nodes, n => Set( n, enabled ) ); } public static void Enable( Node n ) { Set( n, true ); } public static void Enable( params Node[] n ) { Set( n, true ); } public static void Disable( Node n ) { Set( n, false ); } public static void Disable( params Node[] n ) { Set( n, false ); } } }