public void DirectionChanged()
    {
        direction = BDirection.Direction;

        GenTrack.CPChanged(ElementsIndex, IntCpRole.DIRECTION, Vector3.zero, 0f, 0f, direction);

        B1Next.ParentDirChanged();
        B2Prev.ParentDirChanged();
    }
    // Update is called once per frame
    void Update()
    {
        if (oldPosition != transform.position)
        {
            if (Moveable)
            {
                //transform.position = new Vector3(transform.position.x, GenTrack.Copy.GetTensorHeight(transform.position), transform.position.z);

                GenTrack.CPChanged(ElementsIndex, CpRole, transform.position, 0f, 0f, 0f);

                oldPosition = transform.position;

                B1Next.ParentPosChanged();
                B2Prev.ParentPosChanged();
                BDirection.ParentPosChanged();
            }
            else
            {
                transform.position = oldPosition;
            }
        }
    }
 public void DistancePrevChanged()
 {
     GenTrack.CPChanged(ElementsIndex, IntCpRole.PREV_B2, Vector3.zero, 0f, B2Prev.Distance, 0f);
 }
 public void DistanceNextChanged()
 {
     GenTrack.CPChanged(ElementsIndex, IntCpRole.NEXT_B1, Vector3.zero, B1Next.Distance, 0f, 0f);
 }