public virtual void OnRemovedFromGroup(MyGridLogicalGroupData group) { Debug.Assert(TerminalSystem == group.TerminalSystem, "Removing grid from diferent group then it was added to!"); if (m_blocksRegistered) { ProfilerShort.Begin("Removing block groups from grid group"); TerminalSystem.GroupAdded -= m_terminalSystem_GroupAdded; TerminalSystem.GroupRemoved -= m_terminalSystem_GroupRemoved; foreach (var g in m_cubeGrid.BlockGroups) { TerminalSystem.RemoveGroup(g); } ProfilerShort.End(); foreach (var block in m_cubeGrid.GetFatBlocks()) { var functionalBlock = block as MyTerminalBlock; if (functionalBlock != null) { TerminalSystem.Remove(functionalBlock); } var producer = block.Components.Get <MyResourceSourceComponent>(); if (producer != null) { ResourceDistributor.RemoveSource(producer); } var consumer = block.Components.Get <MyResourceSinkComponent>(); if (consumer != null) { ResourceDistributor.RemoveSink(consumer, resetSinkInput: false, markedForClose: block.MarkedForClose); } var socketOwner = block as IMyRechargeSocketOwner; if (socketOwner != null) { socketOwner.RechargeSocket.ResourceDistributor = null; } var weapon = block as IMyGunObject <MyDeviceBase>; if (weapon != null) { WeaponSystem.Unregister(weapon); } } } ConveyorSystem.ResourceSink.IsPoweredChanged -= ResourceDistributor.ConveyorSystem_OnPoweredChanged; group.ResourceDistributor.RemoveSink(ConveyorSystem.ResourceSink, resetSinkInput: false); group.ResourceDistributor.RemoveSink(GyroSystem.ResourceSink, resetSinkInput: false); group.ResourceDistributor.UpdateBeforeSimulation10(); m_cubeGrid.OnBlockAdded -= ResourceDistributor.CubeGrid_OnBlockAddedOrRemoved; m_cubeGrid.OnBlockRemoved -= ResourceDistributor.CubeGrid_OnBlockAddedOrRemoved; ResourceDistributor = null; TerminalSystem = null; WeaponSystem = null; }
public virtual void OnRemovedFromGroup(MyGridLogicalGroupData group) { if (m_blocksRegistered) { ProfilerShort.Begin("Removing block groups from grid group"); TerminalSystem.GroupAdded -= m_terminalSystem_GroupAdded; TerminalSystem.GroupRemoved -= m_terminalSystem_GroupRemoved; foreach (var g in m_cubeGrid.BlockGroups) { TerminalSystem.RemoveGroup(g); } ProfilerShort.End(); foreach (var block in m_cubeGrid.GetBlocks()) { if (block.FatBlock == null) { continue; } var functionalBlock = block.FatBlock as MyTerminalBlock; if (functionalBlock != null) { TerminalSystem.Remove(functionalBlock); } var producer = block.FatBlock as IMyPowerProducer; if (producer != null) { PowerDistributor.RemoveProducer(producer); } var consumer = block.FatBlock as IMyPowerConsumer; if (consumer != null) { PowerDistributor.RemoveConsumer(consumer, resetConsumerInput: false, markedForClose: block.FatBlock.MarkedForClose); } var socketOwner = block.FatBlock as IMyRechargeSocketOwner; if (socketOwner != null) { socketOwner.RechargeSocket.PowerDistributor = null; } var weapon = block.FatBlock as IMyGunObject <MyDeviceBase>; if (weapon != null) { WeaponSystem.Unregister(weapon); } } } PowerDistributor.RemoveConsumer(ConveyorSystem, resetConsumerInput: false); PowerDistributor.RemoveConsumer(GyroSystem, resetConsumerInput: false); PowerDistributor.RemoveConsumer(ThrustSystem, resetConsumerInput: false); PowerDistributor = null; TerminalSystem = null; WeaponSystem = null; }
public virtual void RemoveGroup(MyBlockGroup group) { if (TerminalSystem != null) { TerminalSystem.GroupRemoved -= m_terminalSystem_GroupRemoved; TerminalSystem.RemoveGroup(group); TerminalSystem.GroupRemoved += m_terminalSystem_GroupRemoved; } }
public virtual void OnRemovedFromGroup(MyGridLogicalGroupData group) { if (m_blocksRegistered) { ProfilerShort.Begin("Removing block groups from grid group"); TerminalSystem.GroupAdded -= m_terminalSystem_GroupAdded; TerminalSystem.GroupRemoved -= m_terminalSystem_GroupRemoved; foreach (var g in m_cubeGrid.BlockGroups) { TerminalSystem.RemoveGroup(g); } ProfilerShort.End(); foreach (var block in m_cubeGrid.GetBlocks()) { if (block.FatBlock == null) { continue; } var functionalBlock = block.FatBlock as MyTerminalBlock; if (functionalBlock != null) { TerminalSystem.Remove(functionalBlock); } var producer = block.FatBlock.Components.Get <MyResourceSourceComponent>(); if (producer != null) { ResourceDistributor.RemoveSource(producer); } var consumer = block.FatBlock.Components.Get <MyResourceSinkComponent>(); if (consumer != null) { ResourceDistributor.RemoveSink(consumer, resetSinkInput: false, markedForClose: block.FatBlock.MarkedForClose); } var socketOwner = block.FatBlock as IMyRechargeSocketOwner; if (socketOwner != null) { socketOwner.RechargeSocket.ResourceDistributor = null; } var weapon = block.FatBlock as IMyGunObject <MyDeviceBase>; if (weapon != null) { WeaponSystem.Unregister(weapon); } } } group.ResourceDistributor.RemoveSink(ConveyorSystem.ResourceSink, resetSinkInput: false); group.ResourceDistributor.RemoveSink(GyroSystem.ResourceSink, resetSinkInput: false); var gridThrustComponent = CubeGrid.Components.Get <MyEntityThrustComponent>(); if (gridThrustComponent != null) { group.ResourceDistributor.RemoveSink(gridThrustComponent.ResourceSink); } m_cubeGrid.OnBlockAdded -= ResourceDistributor.CubeGrid_OnBlockAddedOrRemoved; m_cubeGrid.OnBlockRemoved -= ResourceDistributor.CubeGrid_OnBlockAddedOrRemoved; ResourceDistributor = null; TerminalSystem = null; WeaponSystem = null; }