static void OnMessageSpawnGrid(ref SpawnGridMsg msg, MyNetworkClient sender)
        {
            if (Sync.IsServer)
            {
                var     definition  = Definitions.MyDefinitionManager.Static.GetCubeBlockDefinition(msg.Definition);
                MatrixD worldMatrix = MatrixD.CreateWorld(msg.Position, msg.Forward, msg.Up);

                MyCubeGrid grid = null;

                if (msg.Static)
                {
                    grid = MyCubeBuilder.SpawnStaticGrid(definition, worldMatrix);
                }
                else
                {
                    grid = MyCubeBuilder.SpawnDynamicGrid(definition, worldMatrix);
                }

                if (grid != null)
                {
                    msg.Grid = grid.GetObjectBuilder() as MyObjectBuilder_CubeGrid;
                    MySession.Static.SyncLayer.SendMessageToAll(ref msg);
                }

                if (grid != null && msg.Static)
                {
                    MyCubeBuilder.AfterStaticGridSpawn(grid);
                }
            }
            else
            {
                System.Diagnostics.Debug.Assert(msg.Grid != null, "Client must obtain complete grid from server");

                MyCubeGrid grid = MyEntities.CreateFromObjectBuilderAndAdd(msg.Grid) as MyCubeGrid;

                if (grid != null)
                {
                    if (grid.IsStatic)
                    {
                        MyCubeBuilder.AfterStaticGridSpawn(grid);
                    }
                }
            }
        }