private static void ChangeOwnershipToNearestPlayer( MyTerminalBlock block )
        {
            Wrapper.GameAction( () =>
                                {
                                    double minDist = 0;
                                    MyPlayer nearest = null;

                                    foreach ( var player in MySession.Static.Players.GetOnlinePlayers() )
                                    {
                                        var dist = Vector3D.DistanceSquared( player.GetPosition(), block.PositionComp.GetPosition() );

                                        if ( nearest == null )
                                        {
                                            nearest = player;
                                            minDist = dist;
                                        }
                                        else if ( dist < minDist )
                                            nearest = player;
                                    }

                                    if ( nearest == null )
                                        return;
                                    MyAPIGateway.Utilities.InvokeOnGameThread(()=>block.ChangeBlockOwnerRequest( nearest.Identity.IdentityId, MyOwnershipShareModeEnum.Faction ));
                                } );
        }
 private void AddRow(MyTerminalBlock block)
 {
     MyGuiControlTable.Row row;
     MyGuiControlTable.Cell cell;
     row = new MyGuiControlTable.Row(block);
     cell = new MyGuiControlTable.Cell(block.CustomName);
     row.AddCell(cell);
     m_selectedBlocks.Add(row);
 }
 private static void AddToClipboard(MyTerminalBlock block)
 {
     if (MySession.Static.ElapsedGameTime != m_lastAccess)
     {
         Clipboard.Clear();
         m_lastAccess = MySession.Static.ElapsedGameTime;
     }
     Clipboard.Add(block);
 }
예제 #4
0
        public virtual void OnAddedToGroup(MyGridLogicalGroupData group)
        {
            this.TerminalSystem      = group.TerminalSystem;
            this.ResourceDistributor = group.ResourceDistributor;
            this.WeaponSystem        = group.WeaponSystem;
            if (string.IsNullOrEmpty(this.ResourceDistributor.DebugName))
            {
                this.ResourceDistributor.DebugName = this.m_cubeGrid.ToString();
            }
            this.m_cubeGrid.OnFatBlockAdded   += new Action <MyCubeBlock>(this.ResourceDistributor.CubeGrid_OnFatBlockAddedOrRemoved);
            this.m_cubeGrid.OnFatBlockRemoved += new Action <MyCubeBlock>(this.ResourceDistributor.CubeGrid_OnFatBlockAddedOrRemoved);
            this.ResourceDistributor.AddSink(this.GyroSystem.ResourceSink);
            this.ResourceDistributor.AddSink(this.ConveyorSystem.ResourceSink);
            this.ConveyorSystem.ResourceSink.IsPoweredChanged += new Action(this.ResourceDistributor.ConveyorSystem_OnPoweredChanged);
            foreach (MyBlockGroup group2 in this.m_cubeGrid.BlockGroups)
            {
                this.TerminalSystem.AddUpdateGroup(group2, false, false);
            }
            this.TerminalSystem.GroupAdded   += this.m_terminalSystem_GroupAdded;
            this.TerminalSystem.GroupRemoved += this.m_terminalSystem_GroupRemoved;
            foreach (MyCubeBlock block in this.m_cubeGrid.GetFatBlocks())
            {
                if (!block.MarkedForClose)
                {
                    MyTerminalBlock block2 = block as MyTerminalBlock;
                    if (block2 != null)
                    {
                        this.TerminalSystem.Add(block2);
                    }
                    MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>();
                    if (source != null)
                    {
                        this.ResourceDistributor.AddSource(source);
                    }
                    MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>();
                    if (sink != null)
                    {
                        this.ResourceDistributor.AddSink(sink);
                    }
                    IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner;
                    if (owner != null)
                    {
                        owner.RechargeSocket.ResourceDistributor = group.ResourceDistributor;
                    }
                    IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>;
                    if (gun != null)
                    {
                        this.WeaponSystem.Register(gun);
                    }
                }
            }
            MyResourceDistributorComponent resourceDistributor = this.ResourceDistributor;

            resourceDistributor.OnPowerGenerationChanged = (Action <bool>)Delegate.Combine(resourceDistributor.OnPowerGenerationChanged, new Action <bool>(this.OnPowerGenerationChanged));
            this.TerminalSystem.BlockManipulationFinishedFunction();
            this.ResourceDistributor.UpdateBeforeSimulation();
        }
예제 #5
0
        public void Add(MyTerminalBlock block)
        {
            if (block.MarkedForClose)
                return;
            Debug.Assert(!m_blocks.Contains(block), "Block to add is already in terminal");
            m_blocks.Add(block);

            var handler = BlockAdded;
            if (handler != null) handler(block);
        }
        public void Add(MyTerminalBlock block)
        {
            if (block.MarkedForClose || block.IsBeeingRemoved)
                return;
            Debug.Assert(!m_blockTable.ContainsKey(block.EntityId), "Block to add is already in terminal");
            m_blockTable.Add(block.EntityId, block);
            m_blocks.Add(block);

            var handler = BlockAdded;
            if (handler != null) handler(block);
        }
        public void Initialize(Vector3 panelOrientation, bool isTwoSided, float panelOffset, MyTerminalBlock solarBlock)
        {
            m_initialized = true;

            m_panelOrientation = panelOrientation;
            m_isTwoSided = isTwoSided;
            m_panelOffset = panelOffset;
            m_solarBlock = solarBlock;

            //Warning: this will change the NeedsUpdate variable on the entity
            NeedsUpdate |= MyEntityUpdateEnum.EACH_100TH_FRAME;
        }
        public MyDebugRenderComponentSolarPanel(MyTerminalBlock solarBlock):base(solarBlock)
        {
            m_solarBlock = solarBlock;

            MyGameLogicComponent logicComponent;
            if (m_solarBlock.Components.TryGet(out logicComponent))
            {
                m_solarComponent = logicComponent as MySolarGameLogicComponent;
            }

            if (m_solarComponent == null)
            {
                System.Diagnostics.Debug.Fail("No solar component was found!");
            }
        }
예제 #9
0
        public void Remove(MyTerminalBlock block)
        {
            if (block.MarkedForClose)
                return;
            Debug.Assert(m_blocks.Contains(block), "Block to remove is not in terminal");
            m_blocks.Remove(block);

            for (int i = 0; i < BlockGroups.Count; i++)
            {
                var group = BlockGroups[i];
                if (group.Blocks.Contains(block))
                    group.Blocks.Remove(block);
                if (group.Blocks.Count == 0)
                {
                    RemoveGroup(group);
                    i--;
                }
            }

            var handler = BlockRemoved;
            if (handler != null) handler(block);
        }
 private void block_CustomNameChanged(MyTerminalBlock obj)
 {
     m_nameChanged = true;
 }
 void block_ShowInTerminalChanged(MyTerminalBlock obj)
 {
     ClearBlockList();
     PopulateBlockList();
 }
        public void UpdateCubeBlock(MyTerminalBlock block)
        {

            if (block == null)
                return;

            if (m_terminalSystem != null)
            {
                m_terminalSystem.BlockAdded -= TerminalSystem_BlockAdded;
                m_terminalSystem.BlockRemoved -= TerminalSystem_BlockRemoved;
                m_terminalSystem.GroupAdded -= TerminalSystem_GroupAdded;
                m_terminalSystem.GroupRemoved -= TerminalSystem_GroupRemoved;
            }

            var grid = block.CubeGrid;
            m_terminalSystem = grid.GridSystems.TerminalSystem;
            m_tmpGroup = new MyBlockGroup(grid);

            m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded;
            m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved;
            m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded;
            m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved;

            SelectBlocks(new MyTerminalBlock[] { block });


        }
        void block_CustomNameChanged(MyTerminalBlock obj)
        {
            System.Diagnostics.Debug.Assert(m_blockListbox != null, "block_CustomNameChanged was not unregistered!");

            if (m_blockListbox == null)
                return;

            ProfilerShort.Begin("MyTerminalControlPanel.block_CustomNameChanged");
            foreach (var item in m_blockListbox.Items)
            {
                if (item.UserData == obj)
                {
                    UpdateItemAppearance(obj, item);
                    break;
                }
            }

            if (CurrentBlocks.Count > 0 && CurrentBlocks[0] == obj)
                m_blockNameLabel.Text = obj.CustomName.ToString();

            ProfilerShort.End();
        }
        private MyGuiControlListbox.Item AddBlockToList(MyTerminalBlock block)
        {
            var item = new MyGuiControlListbox.Item(userData: block);
            UpdateItemAppearance(block, item);
            block.CustomNameChanged += block_CustomNameChanged;
            block.PropertiesChanged += block_CustomNameChanged;
            block.ShowInTerminalChanged += block_ShowInTerminalChanged;

            m_blockListbox.Add(item);
            return item;
        }
 void TerminalSystem_BlockAdded(MyTerminalBlock obj)
 {
     AddBlockToList(obj);
 }
예제 #16
0
 void gyro_PropertiesChanged(MyTerminalBlock sender)
 {
     MarkDirty();
 }
예제 #17
0
 private void gyro_EnabledChanged(MyTerminalBlock obj)
 {
     MarkDirty();
 }
 private void reflector_EnabledChanged(MyTerminalBlock obj)
 {
     Debug.Assert(obj is MyReflectorLight);
     m_reflectorsEnabledNeedsRefresh = true;
 }
예제 #19
0
 public virtual void UnregisterFromSystems(MyCubeBlock block)
 {
     if (block.GetType() != typeof(MyCubeBlock))
     {
         if (this.ResourceDistributor != null)
         {
             MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>();
             if (source != null)
             {
                 this.ResourceDistributor.RemoveSource(source);
             }
             MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>();
             if (sink != null)
             {
                 this.ResourceDistributor.RemoveSink(sink, true, false);
             }
             IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner;
             if (owner != null)
             {
                 owner.RechargeSocket.ResourceDistributor = null;
             }
         }
         if (this.WeaponSystem != null)
         {
             IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>;
             if (gun != null)
             {
                 this.WeaponSystem.Unregister(gun);
             }
         }
         if (this.TerminalSystem != null)
         {
             MyTerminalBlock block5 = block as MyTerminalBlock;
             if (block5 != null)
             {
                 this.TerminalSystem.Remove(block5);
             }
         }
         if (block.HasInventory)
         {
             this.ConveyorSystem.Remove(block);
         }
         IMyConveyorEndpointBlock block2 = block as IMyConveyorEndpointBlock;
         if (block2 != null)
         {
             this.ConveyorSystem.RemoveConveyorBlock(block2);
         }
         IMyConveyorSegmentBlock segmentBlock = block as IMyConveyorSegmentBlock;
         if (segmentBlock != null)
         {
             this.ConveyorSystem.RemoveSegmentBlock(segmentBlock);
         }
         MyReflectorLight reflector = block as MyReflectorLight;
         if (reflector != null)
         {
             this.ReflectorLightSystem.Unregister(reflector);
         }
         MyDataBroadcaster broadcaster = block.Components.Get <MyDataBroadcaster>();
         if (broadcaster != null)
         {
             this.RadioSystem.Unregister(broadcaster);
         }
         MyDataReceiver reciever = block.Components.Get <MyDataReceiver>();
         if (reciever != null)
         {
             this.RadioSystem.Unregister(reciever);
         }
         if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT)
         {
             MyMotorSuspension motor = block as MyMotorSuspension;
             if (motor != null)
             {
                 this.WheelSystem.Unregister(motor);
             }
         }
         IMyLandingGear gear = block as IMyLandingGear;
         if (gear != null)
         {
             this.LandingSystem.Unregister(gear);
         }
         MyGyro gyro = block as MyGyro;
         if (gyro != null)
         {
             this.GyroSystem.Unregister(gyro);
         }
         MyCameraBlock camera = block as MyCameraBlock;
         if (camera != null)
         {
             this.CameraSystem.Unregister(camera);
         }
     }
     block.OnUnregisteredFromGridSystems();
 }
예제 #20
0
 public virtual void RegisterInSystems(MyCubeBlock block)
 {
     if (block.GetType() != typeof(MyCubeBlock))
     {
         MyCubeBlock block1;
         if (this.ResourceDistributor != null)
         {
             MyResourceSourceComponent source = block.Components.Get <MyResourceSourceComponent>();
             if (source != null)
             {
                 this.ResourceDistributor.AddSource(source);
             }
             MyResourceSinkComponent sink = block.Components.Get <MyResourceSinkComponent>();
             if (!(block is MyThrust) && (sink != null))
             {
                 this.ResourceDistributor.AddSink(sink);
             }
             IMyRechargeSocketOwner owner = block as IMyRechargeSocketOwner;
             if (owner != null)
             {
                 owner.RechargeSocket.ResourceDistributor = this.ResourceDistributor;
             }
         }
         if (this.WeaponSystem != null)
         {
             IMyGunObject <MyDeviceBase> gun = block as IMyGunObject <MyDeviceBase>;
             if (gun != null)
             {
                 this.WeaponSystem.Register(gun);
             }
         }
         if (this.TerminalSystem != null)
         {
             MyTerminalBlock block6 = block as MyTerminalBlock;
             if (block6 != null)
             {
                 this.TerminalSystem.Add(block6);
             }
         }
         if ((block == null) || !block.HasInventory)
         {
             block1 = null;
         }
         else
         {
             block1 = block;
         }
         MyCubeBlock block2 = block1;
         if (block2 != null)
         {
             this.ConveyorSystem.Add(block2);
         }
         IMyConveyorEndpointBlock endpointBlock = block as IMyConveyorEndpointBlock;
         if (endpointBlock != null)
         {
             endpointBlock.InitializeConveyorEndpoint();
             this.ConveyorSystem.AddConveyorBlock(endpointBlock);
         }
         IMyConveyorSegmentBlock segmentBlock = block as IMyConveyorSegmentBlock;
         if (segmentBlock != null)
         {
             segmentBlock.InitializeConveyorSegment();
             this.ConveyorSystem.AddSegmentBlock(segmentBlock);
         }
         MyReflectorLight reflector = block as MyReflectorLight;
         if (reflector != null)
         {
             this.ReflectorLightSystem.Register(reflector);
         }
         if (block.Components.Contains(typeof(MyDataBroadcaster)))
         {
             MyDataBroadcaster broadcaster = block.Components.Get <MyDataBroadcaster>();
             this.RadioSystem.Register(broadcaster);
         }
         if (block.Components.Contains(typeof(MyDataReceiver)))
         {
             MyDataReceiver reciever = block.Components.Get <MyDataReceiver>();
             this.RadioSystem.Register(reciever);
         }
         if (MyFakes.ENABLE_WHEEL_CONTROLS_IN_COCKPIT)
         {
             MyMotorSuspension motor = block as MyMotorSuspension;
             if (motor != null)
             {
                 this.WheelSystem.Register(motor);
             }
         }
         IMyLandingGear gear = block as IMyLandingGear;
         if (gear != null)
         {
             this.LandingSystem.Register(gear);
         }
         MyGyro gyro = block as MyGyro;
         if (gyro != null)
         {
             this.GyroSystem.Register(gyro);
         }
         MyCameraBlock camera = block as MyCameraBlock;
         if (camera != null)
         {
             this.CameraSystem.Register(camera);
         }
     }
     block.OnRegisteredToGridSystems();
 }
예제 #21
0
 void UpdateReceiver(MyTerminalBlock block)
 {
     PowerReceiver.Update();
 }
 private void UpdateReceiver(MyTerminalBlock block)
 {
     ResourceSink.Update();
 }
 private void thrust_EnabledChanged(MyTerminalBlock obj)
 {
     MarkDirty();
     if (CubeGrid.Physics != null && !CubeGrid.Physics.RigidBody.IsActive)
         CubeGrid.ActivatePhysics();
 }
 void TerminalSystem_BlockAdded(MyTerminalBlock obj)
 {
     var assembler = obj as MyAssembler;
     if (assembler != null)
     {
         if (m_assemblersByKey.Count == 0)
         {
             HideError(m_controlsParent);
         }
         var key = m_assemblerKeyCounter++;
         m_assemblersByKey.Add(key, assembler);
         m_comboboxAssemblers.AddItem(key, assembler.CustomName);
         if (m_assemblersByKey.Count == 1)
             m_comboboxAssemblers.SelectItemByIndex(0);
         assembler.CustomNameChanged += assembler_CustomNameChanged;
     }
 }
 void TerminalSystem_BlockRemoved(MyTerminalBlock obj)
 {
     obj.CustomNameChanged -= block_CustomNameChanged;
     obj.PropertiesChanged -= block_CustomNameChanged;
     Debug.Assert(m_blockListbox != null);
     if (m_blockListbox != null && (obj.ShowInTerminal || m_showAllTerminalBlocks))
     { 
         m_blockListbox.Remove((item) => (item.UserData == obj));
     }
 }
 private void CustomDataClicked(MyTerminalBlock myTerminalBlock)
 {
     myTerminalBlock.OpenWindow(true, true);
 }
 private void UpdateItemAppearance(MyTerminalBlock block, MyGuiControlListbox.Item item)
 {
     item.Text.Clear().Append(block.CustomName);
     if (!block.IsFunctional)
     {
         item.ColorMask = Vector4.One;
         item.Text.AppendStringBuilder(MyTexts.Get(MySpaceTexts.Terminal_BlockIncomplete));
         item.FontOverride = MyFontEnum.Red;
     }
     else if (!block.HasPlayerAccess(m_controller.Identity.IdentityId))
     {
         item.ColorMask = Vector4.One;
         item.Text.AppendStringBuilder(MyTexts.Get(MySpaceTexts.Terminal_BlockAccessDenied));
         item.FontOverride = MyFontEnum.Red;
     }
     else if (block.ShowInTerminal == false)
     {
         item.ColorMask = 0.6f * m_colorHelper.GetGridColor(block.CubeGrid).ToVector4();
         item.FontOverride = null;
     }
     else
     {
         item.ColorMask = m_colorHelper.GetGridColor(block.CubeGrid).ToVector4();
         item.FontOverride = null;
     }
 }
        void assembler_CustomNameChanged(MyTerminalBlock block)
        {
            Debug.Assert(block is MyAssembler && m_assemblersByKey.ContainsValue(block as MyAssembler));

            foreach (var entry in m_assemblersByKey)
            {
                if (entry.Value == block)
                {
                    var comboItem = m_comboboxAssemblers.TryGetItemByKey(entry.Key);
                    comboItem.Value.Clear().AppendStringBuilder(block.CustomName);
                }
            }
        }
        public void SelectBlocks(MyTerminalBlock[] blocks)
        {
            m_tmpGroup.Blocks.Clear();
            m_tmpGroup.Blocks.AddArray(blocks);
            m_currentGroups.Clear();

            CurrentBlocks.Clear();
            CurrentBlocks.AddArray(blocks);
            SelectBlocks();
        }
 private void motor_EnabledChanged(MyTerminalBlock obj)
 {
     Debug.Assert(obj is MyMotorBase);
     m_wheelsChanged = true;
 }
        public void Init(IMyGuiControlsParent controlsParent, MyPlayer controller, MyCubeGrid grid, MyTerminalBlock currentBlock, MyGridColorHelper colorHelper)
        {
            m_controlsParent = controlsParent;
            m_controller = controller;
            m_colorHelper = colorHelper;

            if (grid == null)
            {
                foreach (var control in controlsParent.Controls)
                    control.Visible = false;

                var label = MyGuiScreenTerminal.CreateErrorLabel(MySpaceTexts.ScreenTerminalError_ShipNotConnected, "ErrorMessage");
                controlsParent.Controls.Add(label);
                return;
            }

            m_terminalSystem = grid.GridSystems.TerminalSystem;
            m_tmpGroup = new MyBlockGroup(grid);

            m_blockSearch = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearch");
            m_blockSearch.TextChanged += blockSearch_TextChanged;
            m_blockSearchClear = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("FunctionalBlockSearchClear");
            m_blockSearchClear.ButtonClicked += blockSearchClear_ButtonClicked;
            m_blockListbox = (MyGuiControlListbox)m_controlsParent.Controls.GetControlByName("FunctionalBlockListbox");
            m_blockNameLabel = (MyGuiControlLabel)m_controlsParent.Controls.GetControlByName("BlockNameLabel");
            m_blockNameLabel.Text = "";
            m_groupName = (MyGuiControlTextbox)m_controlsParent.Controls.GetControlByName("GroupName");
            m_groupName.TextChanged += m_groupName_TextChanged;

            m_showAll = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("ShowAll");
            m_showAll.Selected = m_showAllTerminalBlocks;
            m_showAll.ButtonClicked += showAll_Clicked;
            m_showAll.SetToolTip(MySpaceTexts.Terminal_ShowAllInTerminal);
            m_showAll.IconRotation = 0f;
            m_showAll.Icon = new MyGuiHighlightTexture
                {
                    Normal = @"Textures\GUI\Controls\button_hide.dds",
                    Highlight = @"Textures\GUI\Controls\button_unhide.dds",
                    SizePx = new Vector2(40f, 40f),
                };
            m_showAll.Size = new Vector2(0, 0);

            m_showAll.HighlightType = MyGuiControlHighlightType.FORCED;
            m_showAll.IconOriginAlign = MyGuiDrawAlignEnum.HORISONTAL_LEFT_AND_VERTICAL_TOP;

            m_groupSave = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupSave");
            m_groupSave.TextEnum = MySpaceTexts.TerminalButton_GroupSave;
            m_groupSave.TextAlignment = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_CENTER;
            m_groupSave.ButtonClicked += groupSave_ButtonClicked;
            m_groupDelete = (MyGuiControlButton)m_controlsParent.Controls.GetControlByName("GroupDelete");
            m_groupDelete.ButtonClicked += groupDelete_ButtonClicked;
            m_groupDelete.Enabled = false;

            m_blockListbox.ItemsSelected += blockListbox_ItemSelected;

            RefreshBlockList();

            m_terminalSystem.BlockAdded += TerminalSystem_BlockAdded;
            m_terminalSystem.BlockRemoved += TerminalSystem_BlockRemoved;
            m_terminalSystem.GroupAdded += TerminalSystem_GroupAdded;
            m_terminalSystem.GroupRemoved += TerminalSystem_GroupRemoved;
            if (currentBlock != null)
                SelectBlocks(new MyTerminalBlock[] { currentBlock });
        }
        public override bool Init(MyObjectBuilder_ToolbarItem objectBuilder)
        {
            Debug.Assert(objectBuilder is MyObjectBuilder_ToolbarItemTerminalBlock, "Wrong definition put to toolbar");

            WantsToBeActivated = false;
            WantsToBeSelected = false;
            ActivateOnClick = true;

            m_block = null;

            var builder = (MyObjectBuilder_ToolbarItemTerminalBlock)objectBuilder;
            m_blockEntityId = builder.BlockEntityId;
            if (m_blockEntityId == 0)
            {
                m_wasValid = false;
                return false;
            }
            TryGetBlock();
            SetAction(builder._Action);

            if (builder.Parameters != null && builder.Parameters.Count > 0)
            {
                m_parameters.Clear();
                foreach (var item in builder.Parameters)
                {
                    m_parameters.Add(TerminalActionParameter.Deserialize(item.Value, item.TypeCode));
                }
            }
            return true;
        }
        void TerminalSystem_BlockRemoved(MyTerminalBlock obj)
        {
            var removedAssembler = obj as MyAssembler;
            if (removedAssembler != null)
            {
                removedAssembler.CustomNameChanged -= assembler_CustomNameChanged;
                int? key = null;
                foreach (var entry in m_assemblersByKey)
                {
                    if (entry.Value == removedAssembler)
                    {
                        key = entry.Key;
                        break;
                    }
                }
                if (key.HasValue)
                {
                    m_assemblersByKey.Remove(key.Value);
                    m_comboboxAssemblers.RemoveItem(key.Value);
                }

                if (removedAssembler == m_selectedAssembler)
                {
                    if (m_assemblersByKey.Count > 0)
                        m_comboboxAssemblers.SelectItemByIndex(0);
                    else
                        ShowError(MySpaceTexts.ScreenTerminalError_NoAssemblers, m_controlsParent);
                }
            }
        }
 private void block_OnClose(MyEntity obj)
 {
     UnregisterEvents();
     m_block = null;
 }