IEnumerator ResizeToCreature(Vector3 newPosition)
    {
        restingTransform.ClearQueue();
        restingTransform.Lock();
        resizeToCreatureFinished = false;

        Vector3 positionStart    = restingTransform.transform.position;
        Vector3 positionEnd      = newPosition;
        Vector3 scaleStart       = restingTransform.transform.localScale;
        Vector3 scaleEnd         = Vector3.one * scaleWhenPermanent;
        Vector3 offsetPosStart   = offsetTransform.transform.localPosition;
        Vector3 offsetScaleStart = offsetTransform.transform.localScale;

        // --- temporary ---
        restingTransform.SetTransform(new TransformStruct()
        {
            localScale       = scaleEnd,
            position         = newPosition,
            useLocalPosition = false,
            rotation         = Vector3.zero
        });
        yield break;
        // -----------------

        // resize root
        float currentPercentage = 0;
        float timePassed        = 0;

        while (currentPercentage < .98f)
        {
            timePassed       += Time.deltaTime;
            currentPercentage = timePassed / timeForShrinkAnimation;

            restingTransform.transform.position   = Vector3.Lerp(positionStart, positionEnd, currentPercentage);
            restingTransform.transform.localScale = Vector3.Lerp(scaleStart, scaleEnd, currentPercentage);

            offsetTransform.transform.localPosition = Vector3.Lerp(offsetPosStart, Vector3.zero, currentPercentage);
            offsetTransform.transform.localScale    = Vector3.Lerp(offsetScaleStart, Vector3.one, currentPercentage);
            yield return(null);
        }

        // pause
        yield return(new WaitForSeconds(pauseBetweenResize));

        // resize icons
        Vector3 targetIconScale = Vector3.one * iconScaleWhenPermanent;

        while (Vector3.Distance(iconsToResize[0].transform.localScale, targetIconScale) > 0.02f)
        {
            foreach (Transform t in iconsToResize)
            {
                t.localScale = Vector3.MoveTowards(t.localScale, targetIconScale, iconResizeSpeed * Time.deltaTime);
            }
            yield return(null);
        }
        FofBorder.SetActive(true);
        resizeToCreatureFinished = true;
        restingTransform.UnLock();
    }