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); } } } }