rokojori_action_library/Runtime/Behavior/BrainControl.cs

69 lines
1.0 KiB
C#

using Godot;
using Rokojori.Extensions;
namespace Rokojori;
[Tool]
[GlobalClass, Icon("res://addons/rokojori_action_library/Icons/Action.svg")]
public partial class BrainControl:Action
{
public enum Mode
{
Start,
Pause,
Resume,
Toggle
}
[Export]
public Brain brain;
[Export]
public Mode mode;
protected override void _OnTrigger()
{
if ( brain == null )
{
return;
}
switch ( mode )
{
case Mode.Start:
StartBrain();
break;
case Mode.Pause:
brain.SetPaused( true );
break;
case Mode.Resume:
brain.SetPaused( false );
break;
case Mode.Toggle:
brain.SetPaused( ! brain.paused );
break;
}
}
void StartBrain()
{
brain.SetPaused( false );
if ( brain.receptors != null )
{
foreach ( var receptor in brain.receptors )
{
if ( receptor != null )
{
receptor.Start();
}
}
}
brain.Trigger();
}
}