Exemple #1
0
        internal static void ToHVPoints(this RectPoint rectPoint, out HorizontalPoint horizontalPoint, out VerticalPoint verticalPoint)
        {
            horizontalPoint = HorizontalPoint.Left;
            verticalPoint   = VerticalPoint.Top;

            switch (rectPoint)
            {
            case RectPoint.TopLeft:
                horizontalPoint = HorizontalPoint.Left;
                verticalPoint   = VerticalPoint.Top;
                break;

            case RectPoint.TopRight:
                horizontalPoint = HorizontalPoint.Right;
                verticalPoint   = VerticalPoint.Top;
                break;

            case RectPoint.BottomRight:
                horizontalPoint = HorizontalPoint.Right;
                verticalPoint   = VerticalPoint.Bottom;
                break;

            case RectPoint.BottomLeft:
                horizontalPoint = HorizontalPoint.Left;
                verticalPoint   = VerticalPoint.Bottom;
                break;

            case RectPoint.Center:
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(rectPoint));
            }
        }
Exemple #2
0
        internal static RectPoint GetRectPoint(HorizontalPoint horizontal, VerticalPoint vertical)
        {
            if (vertical == VerticalPoint.Top)
            {
                switch (horizontal)
                {
                case HorizontalPoint.Right:
                    return(RectPoint.TopRight);

                case HorizontalPoint.Left:
                    return(RectPoint.TopLeft);
                }
            }

            if (vertical == VerticalPoint.Bottom)
            {
                switch (horizontal)
                {
                case HorizontalPoint.Right:
                    return(RectPoint.BottomRight);

                case HorizontalPoint.Left:
                    return(RectPoint.BottomLeft);
                }
            }

            throw new Exception("Invalid combination");
        }
        private async void Lidar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(Lidar.RunCollector) when Lidar.RunCollector == false:
                CalculateHorizontalPoints = false;
                break;

            case nameof(Lidar.RaiseNotificationForSelective) when Lidar.RaiseNotificationForSelective == false:
                AutoCalculateDirections      = false;
                AutoCalculateLargestDistance = false;
                break;
            }

            if (e.PropertyName != nameof(Lidar.LastUpdate))
            {
                return;
            }

            if (AutoCalculateDirections)
            {
                Task.Run(() =>
                {
                    float fwd   = Lidar.Fwd;
                    float left  = Lidar.Left;
                    float right = Lidar.Right;
                });
            }

            if (AutoCalculateLargestDistance)
            {
                HorizontalPoint point = Lidar.LargestDistance;
            }

            if (CalculateHorizontalPoints)
            {
                float fromAngle = CenterForAnglesInRange - BeamOpeningForAnglesInRange / 2;
                float toAngle   = CenterForAnglesInRange + BeamOpeningForAnglesInRange / 2;
                if (fromAngle < 0)
                {
                    fromAngle += 360;
                }
                if (toAngle > 360)
                {
                    fromAngle -= 360;
                }

                SelectedAngleRange      = $"From {fromAngle} to {toAngle}";
                HorizontalPointsInRange = await Task.Run(() => Lidar.GetHorizontalPointsInRange(fromAngle, toAngle, Lidar.Config.DefaultVerticalAngle));
            }
        }
    public HorizontalPoint Horizontal(float rotationYAngle)
    {
        HorizontalPoint m_horizontalPoint = HorizontalPoint.None;

        if (rotationYAngle >= 337.5f || rotationYAngle < 22.5f)
        {
            m_horizontalPoint = HorizontalPoint.North;
        }
        else if (rotationYAngle >= 22.5f && rotationYAngle < 67.5f)
        {
            m_horizontalPoint = HorizontalPoint.NorthEast;
        }
        else if (rotationYAngle >= 67.5f && rotationYAngle < 112.5f)
        {
            m_horizontalPoint = HorizontalPoint.East;
        }
        else if (rotationYAngle >= 112.5f && rotationYAngle < 157.5f)
        {
            m_horizontalPoint = HorizontalPoint.SouthEast;
        }
        else if (rotationYAngle >= 157.5f && rotationYAngle <= 202.5f)
        {
            m_horizontalPoint = HorizontalPoint.South;
        }
        else if (rotationYAngle >= 202.5f && rotationYAngle < 247.5f)
        {
            m_horizontalPoint = HorizontalPoint.SouthWest;
        }
        else if (rotationYAngle >= 247.5f && rotationYAngle < 292.5f)
        {
            m_horizontalPoint = HorizontalPoint.West;
        }
        else if (rotationYAngle >= 292.5f && rotationYAngle < 337.5f)
        {
            m_horizontalPoint = HorizontalPoint.NorthWest;
        }
        return(m_horizontalPoint);
    }
Exemple #5
0
    private void SightField(BlockType type)
    {
        m_yAngel = Player.transform.eulerAngles.y;
        m_xAngel = transform.eulerAngles.x;

        m_horizontalPoint = Horizontal(m_yAngel);
        m_verticalPoint   = Vertical(m_xAngel);

        switch (type)
        {
        case BlockType.Ramp:

            break;

        case BlockType.Floor:

            break;

        case BlockType.Wall:

            break;
        }
    }
Exemple #6
0
 internal static HorizontalPoint Opposite(this HorizontalPoint point)
 {
     return(point == HorizontalPoint.Left ? HorizontalPoint.Right : HorizontalPoint.Left);
 }