Beispiel #1
0
    public void Wrap(int perimeterSize, int worldSize)
    {
        Node2D root = GetNode <Node2D>(RootPath);

        bool posUpdated = false;

        Vector2 newPos = root.GlobalPosition;

        if (newPos.x < 0)
        {
            newPos.x  += worldSize;
            posUpdated = true;
        }
        else if (newPos.x > worldSize)
        {
            newPos.x  -= worldSize;
            posUpdated = true;
        }

        if (newPos.y < 0)
        {
            newPos.y  += worldSize;
            posUpdated = true;
        }
        else if (newPos.y > worldSize)
        {
            newPos.y  -= worldSize;
            posUpdated = true;
        }

        if (posUpdated)
        {
            root.GlobalPosition = newPos;
            if (CameraPath != "")
            {
                Camera2D camera = GetNode <Camera2D>(CameraPath);
                camera.ForceUpdateScroll();
                camera.ResetSmoothing();
            }
        }
    }