/// <summary>
        /// Adds the vertices from the grid blocks that are inside the given OBB
        /// </summary>
        /// <param name="grid"></param>
        /// <param name="obb"></param>
        /// <param name="vertices"></param>
        private void AddGridVerticesInsideOBB(MyCubeGrid grid, MyOrientedBoundingBoxD obb)
        {
            var aabb = obb.GetAABB();

            var gridGroup = MyCubeGridGroups.Static.Logical.GetGroup(grid);

            foreach (var node in gridGroup.Nodes)
            {
                var cubeGrid = (MyCubeGrid)node.NodeData;
                m_rdPathfinding.AddToTrackedGrids(cubeGrid);

                var worldMatrix = cubeGrid.WorldMatrix;
                worldMatrix.Translation -= m_center;
                var toRDWorld = MatrixD.Transform(worldMatrix, rdWorldQuaternion);

                if (MyPerGameSettings.Game == GameEnum.SE_GAME)
                {
                    var      box   = aabb.TransformFast(cubeGrid.PositionComp.WorldMatrixNormalizedInv);
                    Vector3I start = new Vector3I((int)Math.Round(box.Min.X), (int)Math.Round(box.Min.Y), (int)Math.Round(box.Min.Z));
                    Vector3I end   = new Vector3I((int)Math.Round(box.Max.X), (int)Math.Round(box.Max.Y), (int)Math.Round(box.Max.Z));
                    start = Vector3I.Min(start, end);
                    end   = Vector3I.Max(start, end);

                    ProfilerShort.Begin("GetShapesInInterval");
                    if (cubeGrid.Physics != null)
                    {
                        cubeGrid.Physics.Shape.GetShapesInInterval(start, end, m_tmpShapes);
                    }
                    ProfilerShort.End();

                    ProfilerShort.Begin("AddVertices");
                    foreach (var shape in m_tmpShapes)
                    {
                        AddPhysicalShape(shape, toRDWorld);
                    }

                    m_tmpShapes.Clear();
                    ProfilerShort.End();
                }
            }
        }