space_engineers/Mixins/Sequencer/BlockActionPiston.cs

40 lines
1.0 KiB
C#

using System.Collections.Generic;
using Sandbox.ModAPI.Ingame;
namespace IngameScript
{
partial class Program
{
public class BlockActionPiston : IBlockAction
{
public bool Running { get; private set; } = false;
private IMyPistonBase _piston;
private float _position;
private float _velocity;
public BlockActionPiston(
IMyPistonBase piston,
float position,
float velocity = 2f
)
{
_piston = piston;
_position = position;
_velocity = velocity;
}
public IEnumerator<bool> Run()
{
_piston.MoveToPosition(_position, _velocity);
float lastValue = -1f;
while (lastValue != _piston.CurrentPosition)
{
lastValue = _piston.CurrentPosition;
yield return true;
}
}
}
}
}