Exemplo n.º 1
0
        public bool Remove(ushort blockId, bool merged = false)
        {
            MySlimBlock block;

            if (m_mapIdToBlock.TryGetValue(blockId, out block))
            {
                m_mapIdToBlock.Remove(blockId);
                m_blocks.Remove(block);
                Debug.Assert(m_mapIdToBlock.Count == m_blocks.Count);

                if (!merged)
                {
                    if (block.IsMultiBlockPart)
                    {
                        CubeGrid.RemoveMultiBlockInfo(block);
                    }

                    block.FatBlock.OnRemovedFromScene(this);
                    block.FatBlock.Close();
                }

                if (block.FatBlock.Hierarchy.Parent == Hierarchy)
                {
                    block.FatBlock.Hierarchy.Parent = null;
                }

                if (!merged)
                {
                    CubeGrid.UpdateBlockNeighbours(SlimBlock);
                }

                RefreshTemplates();
                return(true);
            }

            Debug.Fail("Cannot remove block from compound");
            return(false);
        }