public void UnJump()//соленоид выкл
 {
     //убираем биты с 7 позиции
     m[1] = TestPlugin.unsetbit(m[1], 7);
     m[0] = TestPlugin.unsetbit(m[0], 7);
     TestPlugin.SetMessage(m);
     Debug.Log("Произошла отправка");
 }
 public void Jump()//соленоид вкл
 {
     //задаём на 7 позиции биты
     m[1] = TestPlugin.unsetbit(m[1], 7);
     m[0] = TestPlugin.unsetbit(m[0], 7);
     m[1] = TestPlugin.setbit(m[1], 7);
     m[0] = TestPlugin.setbit(m[0], 7);
     TestPlugin.SetMessage(m);
     Debug.Log("Произошла отправка");
 }
    public void CalcJoystic()         //расчёт байтов
    {
        yF = Mathf.Abs((int)force.y); //считываем с вертикального джойстика и делаем модуль полученного числа


        xF = Mathf.Abs((int)force.x);       //считываем с горизонтального джойстика и делаем модуль полученного числа

        if (yF > 0)                         //если больше нуля, то проводим следующие операции
        {
            yF += 31;                       //прибавляем 31(до минимума чтобы догнать по мощи)
            yF  = Mathf.Clamp(yF, 31, 255); //смотрим, чтобы не вышло за пределы, в противном случае, ставим один из пределов в качестве значения, если меньше 31, то ставим 31, если больше 255, ставим 255
        }
        if (xF > 0)                         //так же как и сверху, только для горизонта
        {
            xF += 31;
            xF  = Mathf.Clamp(xF, 31, 255);
        }

        if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад
        {
            r  = (int)(xF * 0.5f);      //т.к. у нас это поворот, то умножаем на половину, дабы скорость поворота правого движка, была в два раза меньше левого, для поворота.
            r  = (int)(r * 0.25f);      //умножаем так же оба движка на 1/4, для того, чтобы вместилось значение в 6 бит(тут правый)
            yF = (int)(yF * 0.25f);     //левый
            for (int i = 0; i < 6; i++) //в цикле проходимся по битам из переменных выше и заносим их в массив байтов (мощность движков)
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)(yF), i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            if (force.y > 0)//направление, если вперёд, то устанавливаем биты, иначе снимаем
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот
        {
            l  = (int)(xF * 0.5f);
            l  = (int)(l * 0.25f);
            yF = (int)(yF * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)(l), i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x > 0 & force.y == 0) //если только горизонт, вправо
        {
            r = xF;                          //присваиваем горизонт переменной
            r = (int)(r * 0.25f);            //делим на 4
            for (int i = 0; i < 6; i++)      //так же мощность движкам задаём
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[1] = TestPlugin.setbit(m[1], 6);   //устанавливаем, на правый мотор направление вперёд
        }
        else if (force.x < 0 & force.y == 0)     //аналогично тому, что выше, только наоборот
        {
            l = xF;
            l = (int)(l * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)l, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6);
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[0] = TestPlugin.setbit(m[0], 6);
        }
        else//если только вертикаль
        {
            yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++)//задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }

        TestPlugin.SetMessage(m);//отправка
        Debug.Log("Произошла отправка");
    }
    public void VerticalJoyStic()
    {
        yF = Mathf.Abs((int)force.y);   //считываем с вертикального джойстика и делаем модуль полученного числа
        xF = Mathf.Abs((int)force.x);   //считываем с горизонтального джойстика и делаем модуль полученного числа
        if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад
        {
            xF = (int)convert(xF, 0, 255, yF, 0);
            xF = (int)(xF * 0.25f);
            yF = (int)(yF * 0.25f);     //вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++) //задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)xF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот
        {
            xF = (int)convert(xF, 0, 255, yF, 0);
            xF = (int)(xF * 0.25f);
            yF = (int)(yF * 0.25f);     //вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++) //задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                }
                if (TestPlugin.checkbit((byte)xF, i) == 1)
                {
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        else if (force.x > 0 & force.y == 0) //если только горизонт, вправо
        {
            r = xF;                          //присваиваем горизонт переменной
            r = (int)(r * 0.25f);            //делим на 4
            for (int i = 0; i < 6; i++)      //так же мощность движкам задаём
            {
                if (TestPlugin.checkbit((byte)r, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[1] = TestPlugin.setbit(m[1], 6);   //устанавливаем, на правый мотор направление вперёд
        }
        else if (force.x < 0 & force.y == 0)     //аналогично тому, что выше, только наоборот
        {
            l = xF;
            l = (int)(l * 0.25f);
            for (int i = 0; i < 6; i++)
            {
                if (TestPlugin.checkbit((byte)l, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }

            m[0] = TestPlugin.unsetbit(m[0], 6);
            m[1] = TestPlugin.unsetbit(m[1], 6);
            m[0] = TestPlugin.setbit(m[0], 6);
        }
        else//если только вертикаль
        {
            yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной
            for (int i = 0; i < 6; i++)//задаём мощь движкам
            {
                if (TestPlugin.checkbit((byte)yF, i) == 1)
                {
                    m[0] = TestPlugin.setbit(m[0], i);
                    m[1] = TestPlugin.setbit(m[1], i);
                }
                else
                {
                    m[0] = TestPlugin.unsetbit(m[0], i);
                    m[1] = TestPlugin.unsetbit(m[1], i);
                }
            }
            //задаём ориентацию движкам
            if (force.y > 0)
            {
                m[0] = TestPlugin.setbit(m[0], 6);
                m[1] = TestPlugin.setbit(m[1], 6);
            }
            else
            {
                m[0] = TestPlugin.unsetbit(m[0], 6);
                m[1] = TestPlugin.unsetbit(m[1], 6);
            }
        }
        TestPlugin.SetMessage(m);
    }