69 lines
1.0 KiB
C#
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();
|
||
|
|
}
|
||
|
|
}
|