private long GetGridGroupOwner(IMyCubeGrid grid) { Ingame.IMyGridTerminalSystem system = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); List <Ingame.IMyTerminalBlock> terminalBlocks = new List <Ingame.IMyTerminalBlock>(); system.GetBlocks(terminalBlocks); foreach (var item in terminalBlocks) { if (((IMyCubeGrid)item.CubeGrid).BigOwners.Count > 0) { return(((IMyCubeGrid)item.CubeGrid).BigOwners.First()); } if (item is IMyPistonBase) { IMyPistonBase pistonBase = (IMyPistonBase)item; if (pistonBase.TopGrid != null) { if (pistonBase.TopGrid.BigOwners.Count > 0) { return(pistonBase.TopGrid.BigOwners.First()); } } } if (item is IMyMechanicalConnectionBlock) { var motorBase = item as IMyMechanicalConnectionBlock; if (motorBase.TopGrid != null) { if (motorBase.TopGrid.BigOwners.Count > 0) { return(motorBase.TopGrid.BigOwners.First()); } } } if (item is Ingame.IMyShipConnector) { Ingame.IMyShipConnector connector = (Ingame.IMyShipConnector)item; if (connector.Status == Sandbox.ModAPI.Ingame.MyShipConnectorStatus.Connected && connector.OtherConnector != null) { if (((IMyCubeGrid)connector.OtherConnector.CubeGrid).BigOwners.Count > 0) { return(((IMyCubeGrid)connector.OtherConnector.CubeGrid).BigOwners.First()); } } } if (item is IMyAttachableTopBlock) { var motorRotor = item as IMyAttachableTopBlock; if (motorRotor.IsAttached && motorRotor.Base != null) { if (motorRotor.Base.CubeGrid.BigOwners.Count > 0) { return(motorRotor.Base.CubeGrid.BigOwners.First()); } } } } return(0); }
public static List <IMyCubeGrid> GetGridGroup(IMyCubeGrid grid) { List <IMyCubeGrid> gridList = new List <IMyCubeGrid>(); gridList.Add(grid); //int pos = 0; try { List <Ingame.IMyTerminalBlock> terminalBlocks = new List <Ingame.IMyTerminalBlock>(); Ingame.IMyGridTerminalSystem system = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); if (system != null) { system.GetBlocks(terminalBlocks); foreach (var item in terminalBlocks) { if (!gridList.Contains((IMyCubeGrid)item.CubeGrid)) { gridList.Add((IMyCubeGrid)item.CubeGrid); } if (item is IMyPistonBase) { IMyPistonBase pistonBase = (IMyPistonBase)item; if (pistonBase.TopGrid != null && !gridList.Contains(pistonBase.TopGrid)) { gridList.Add(pistonBase.TopGrid); } } if (item is IMyMechanicalConnectionBlock) { var motorBase = item as IMyMechanicalConnectionBlock; if (motorBase.TopGrid != null && !gridList.Contains(motorBase.TopGrid)) { gridList.Add(motorBase.TopGrid); } } if (item is Ingame.IMyShipConnector) { Ingame.IMyShipConnector connector = (Ingame.IMyShipConnector)item; if (connector.Status == Sandbox.ModAPI.Ingame.MyShipConnectorStatus.Connected && connector.OtherConnector != null) { if (!gridList.Contains((IMyCubeGrid)connector.OtherConnector.CubeGrid)) { gridList.Add((IMyCubeGrid)connector.OtherConnector.CubeGrid); } } } if (item is IMyAttachableTopBlock) { var motorRotor = item as IMyAttachableTopBlock; if (motorRotor.IsAttached && motorRotor.Base != null) { if (!gridList.Contains((IMyCubeGrid)motorRotor.Base.CubeGrid)) { gridList.Add((IMyCubeGrid)motorRotor.Base.CubeGrid); } } } } } } catch (Exception ex) { Logging.Instance.WriteLine(string.Format("GetGridGroup Error: {0}", ex.ToString())); } return(gridList); }