void Update()
    {
        if (State == BytesStates.Activated || State == BytesStates.DontBack)
        {
            if (Path.corners.Length > 1)
            {
                if (CurrentIndex < Path.corners.Length && CurrentIndex > -1)
                {
                    transform.position = transform.position + transform.forward * Speed * Time.deltaTime;
                    //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime);
                    transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(Path.corners[CurrentIndex] - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime);
                    if (Vector3.Distance(transform.position, Path.corners[CurrentIndex] + Offset) < DistanceReaction)
                    {
                        CurrentIndex += Delta;
                    }
                }
                else
                {
                    //CurrentIndex = 0;
                    if (State != BytesStates.DontBack)
                    {
                        if (CurrentIndex == Path.corners.Length && Vector3.Distance(transform.position, Target.transform.position) < DistanceReaction*3 && TargetFX != null)
                            GlobalEvents.Instance.ByteReachedTarget(Daticus, TargetFX);
                        Delta = -Delta;
                        CurrentIndex += Delta;
                        transform.position = Path.corners[CurrentIndex];
                    }
                    else
                    {
                        StartPosition = Path.corners[Path.corners.Length - 1];
                        State = BytesStates.Disable;
                        CurrentIndex = 0;
                    }
                }
            }
            else
            {
                transform.position = transform.position + transform.forward * Speed * Time.deltaTime;
                //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime);
                transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(StartPosition - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime);

            }
        }
        else
        {
            transform.position = transform.position + transform.forward * Speed * Time.deltaTime;
            //transform.position = transform.position + ((Path.corners[CurrentIndex] - transform.position).normalized * Speed * Time.deltaTime);
            transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(StartPosition - transform.position + Offset + new Vector3(Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange), Random.Range(-RandomOffsetRange, RandomOffsetRange))), AnigularSpeed * Time.deltaTime);

        }
    }
 public void SetState(int state)
 {
     State = (BytesStates)state;
 }