public SimBox AddBox(string id, SimVector3 center, int gridSizeX, int gridSizeY)
    {
        if (id == null)
        {
            throw new ArgumentNullException("id");
        }

        if (GetBox(id) != null)
        {
            throw new ArgumentException("Duplicated id", "id");
        }

        SimBox box = new SimBox();

        box.Init(id, center, this, gridSizeX, gridSizeY);

        boxes.Add(box);

        simulationListener.OnBoxAdded(box);

        return(box);
    }