private void AddBlocks() { Debug.Assert(m_tmpLocationsAndRefBlocks.Count == 0); Quaternion rotation; foreach (var loc in m_addLocations) { loc.Orientation.GetQuaternion(out rotation); MyCubeGrid.MyBlockLocation blockLocation = new MyCubeGrid.MyBlockLocation( loc.BlockDefinition.Id, loc.Position, loc.Position, loc.Position, rotation, MyEntityIdentifier.AllocateId(), MySession.Static.LocalPlayerId); m_tmpLocationsAndRefBlocks.Add(new Tuple <MyCubeGrid.MyBlockLocation, MySlimBlock>(blockLocation, loc.RefBlock)); } foreach (var location in m_tmpLocationsAndRefBlocks) { var block = m_grid.BuildGeneratedBlock(location.Item1, Vector3I.Zero); if (block != null) { var compound = block.FatBlock as MyCompoundCubeBlock; if (compound != null) { foreach (var blockInCompound in compound.GetBlocks()) { Quaternion q; location.Item1.Orientation.GetQuaternion(out q); MyBlockOrientation r = new MyBlockOrientation(ref q); if (blockInCompound.Orientation == r && blockInCompound.BlockDefinition.Id == location.Item1.BlockDefinition) { block = blockInCompound; break; } } } var refBlock = location.Item2; if (block != null && block.BlockDefinition.IsGeneratedBlock && refBlock != null) { block.SetGeneratedBlockIntegrity(refBlock); } } } m_tmpLocationsAndRefBlocks.Clear(); }
private void AddBlocks() { HashSet <MyCubeGrid.MyBlockLocation> locations = new HashSet <MyCubeGrid.MyBlockLocation>(); Quaternion rotation; foreach (var loc in m_addLocations) { loc.Orientation.GetQuaternion(out rotation); MyCubeGrid.MyBlockLocation blockLocation = new MyCubeGrid.MyBlockLocation( loc.BlockDefinition.Id, loc.Position, loc.Position, loc.Position, rotation, MyEntityIdentifier.AllocateId(), MySession.LocalPlayerId, MySession.LocalCharacter != null ? MySession.LocalCharacter.EntityId : 0); locations.Add(blockLocation); } foreach (var location in locations) { m_grid.BuildGeneratedBlock(location, Vector3I.Zero); } }