public override void UpdateLaser(BoardForm board, Laser laser, Point point)
        {
            laser.SetSegmentEnd(Center);

            if (InUse || !ValidInputDir(laser))
            {
                laser.Kill();
                return;
            }

            InUse = true;
            laser.SetSegmentStart(Center);
            laser.SetDirection(OutputDirection);
        }
        public override void UpdateLaser(BoardForm board, Laser laser, Point point)
        {
            var dir = laser.CurrentDirection;
            if (PassThrough.Contains(dir))
            {
                return;
            }

            laser.SetSegmentEnd(Center);

            if (!InUse_Left && InputOutputMappingLeft.ContainsKey(dir))
            {
                laser.SetSegmentStart(Center);
                laser.SetDirection(InputOutputMappingLeft[dir]);
                InUse_Left = true;
            }
            else if (!InUse_Right && InputOutputMappingRight.ContainsKey(dir))
            {
                laser.SetSegmentStart(Center);
                laser.SetDirection(InputOutputMappingRight[dir]);
                InUse_Right = true;
            }
            else
            {
                laser.Kill();
            }
        }
 public override void UpdateLaser(BoardForm board, Laser laser, Point point)
 {
     laser.SetSegmentEnd(Center);
     laser.Kill();
 }
 public override void UpdateLaser(BoardForm board, Laser laser, Point point)
 {
     if (laser.CurrentDirection == InputDirection &&
         laser.CurrentColour == InputColour)
         Activated = true;
     laser.SetSegmentEnd(Center);
     laser.Kill();
 }