// Update is called once per frame
    void Update()
    {
        float minX = m_X_Min;
        float maxX = m_X_Max;
        float minY = m_Y_Min;
        float maxY = m_Y_Max;

        float deltaTime = Time.deltaTime;

        //getting camera bounds
        if (m_Camera)
        {
            float halfSize = m_Camera.orthographicSize;
            float ratio    = m_Camera.aspect;

            minY = -halfSize;
            maxY = halfSize;

            minX = -halfSize * ratio;
            maxX = halfSize * ratio;
        }

        //updating the sprites
        for (int i = 0; i < m_SpritesCount; i++)
        {
            float curSpeed = Interpolation.Linear(m_SpeedMin, m_SpeedMax, m_Sprites[i].m_SpeedMult) * deltaTime;

            var curSprite = m_Sprites[i];


            //hor
            if (curSprite.m_HorLeft == true)
            {
                curSprite.m_Coords.x -= curSpeed;
                if (curSprite.m_Coords.x <= minX)
                {
                    curSprite.m_HorLeft = false;
                }
            }
            else
            {
                curSprite.m_Coords.x += curSpeed;
                if (curSprite.m_Coords.x >= maxX)
                {
                    curSprite.m_HorLeft = true;
                }
            }

            //ver
            if (curSprite.m_VerUp == true)
            {
                curSprite.m_Coords.y += curSpeed;
                if (curSprite.m_Coords.y >= maxY)
                {
                    curSprite.m_VerUp = false;
                }
            }
            else
            {
                curSprite.m_Coords.y -= curSpeed;
                if (curSprite.m_Coords.y <= minY)
                {
                    curSprite.m_VerUp = true;
                }
            }

            //rotation
            curSprite.m_Angle += 0.2f * deltaTime;
        }

        //rendering the sprites
        if (m_Batcher == null)
        {
            return;
        }

        for (int i = 0; i < m_SpritesCount; i++)
        {
            var curSprite = m_Sprites[i];
            m_Batcher.DrawSprite(curSprite.m_SpriteIndex, curSprite.m_Coords, curSprite.m_Angle, curSprite.m_Scale, curSprite.m_Color);
        }

        m_Batcher.CompleteMesh();
    }