private void Update()
    {
        //Added just for fun
        if (dying)
        {
            currentDyingTime += Time.deltaTime;
            Vector2 offset = (destination - (Vector2)transform.position).normalized;
            float   angle  = Mathf.Atan2(offset.y, offset.x) + 2 * Mathf.PI * currentDyingTime / dyingTimer;
            if (spriteSheet != null)
            {
                dummySprite.sprite = spriteSheet.GetSprite(new Vector2(Mathf.Cos(angle), Mathf.Sin(angle)));
            }
            if (currentDyingTime > dyingTimer)
            {
                ReturnToPool();
            }
            return;
        }
        //moving object here
        Vector2 moveDir  = destination - (Vector2)transform.position;
        float   distance = moveDir.magnitude;

        moveDir = moveDir.normalized;
        if (spriteSheet != null)
        {
            dummySprite.sprite = spriteSheet.GetSprite(moveDir);
        }
        locomotion.PlanarMovement(moveDir * Time.deltaTime * speed);
        if (distance < ReachThreshold)
        {
            SetDestination(currentNavEntity.GetNext());
        }
        CalculateRemainingDistance();
    }
    private void CalculateRemainingDistance()
    {
        if (currentNavEntity == null)
        {
            distanceRemaining = Mathf.Infinity;
            return;
        }
        float distance = 0;

        distance += (destination - (Vector2)transform.position).magnitude;
        NavEntity navEntity = currentNavEntity;

        while (navEntity.GetNext() != null)
        {
            distance += (navEntity.GetNext().transform.position - navEntity.transform.position).magnitude;
            navEntity = navEntity.GetNext();
        }
        distanceRemaining = distance;
    }