public static void UpdateObject(LSBody Body, bool repartition = true)
        {
            GetGridBounds(Body);

            if (
                repartition == false ||
                (Body.PastGridXMin != GridXMin ||
                 Body.PastGridXMax != GridXMax ||
                 Body.PastGridYMin != GridYMin ||
                 Body.PastGridYMax != GridYMax))
            {
                //Remove from all partitions no longer located on
                for (int o = Body.PastGridXMin; o <= Body.PastGridXMax; o++)
                {
                    for (int p = Body.PastGridYMin; p <= Body.PastGridYMax; p++)
                    {
                        PartitionNode node = GetNode(o, p);
                        if (Body.Immovable)
                        {
                            node.RemoveImmovable(Body.ID);
                        }
                        else
                        {
                            node.Remove(Body.ID);
                        }
                    }
                }
                if (repartition)
                {
                    PartitionObject(Body, true);
                }
            }
        }