Interface IMyGridGroups
ModAPI interface giving access to grid-groups
Namespace: VRage.Game.ModAPI
Assembly: VRage.Game.dll
Syntax
public interface IMyGridGroups
Methods
AddGridGroupLogic<T>(GridLinkTypeEnum, Func<IMyGridGroupData, T>)
Generates MyGridGroupsDefaultEventHandler each time grid group connected with provided linking is created
Declaration
void AddGridGroupLogic<T>(GridLinkTypeEnum type, Func<IMyGridGroupData, T> creator)
where T : MyGridGroupsDefaultEventHandler
Parameters
| Type | Name | Description |
|---|---|---|
| GridLinkTypeEnum | type | Type of linking |
| System.Func<IMyGridGroupData, T> | creator | Function that creates grid group logic |
Type Parameters
| Name | Description |
|---|---|
| T | Type of grid group logic |
FindConnection(GridLinkTypeEnum, IMyCubeGrid, Func<IMyCubeGrid, IMyCubeGrid, Int64, Boolean>)
Dijkstra search over grid-to-grid connections until searcher is return true NOTE: pretty expensive function on large grid-groups, don't call it often.
Declaration
List<KeyValuePair<long, IMyCubeGrid>> FindConnection(GridLinkTypeEnum linking, IMyCubeGrid from, Func<IMyCubeGrid, IMyCubeGrid, long, bool> searcher)
Parameters
| Type | Name | Description |
|---|---|---|
| GridLinkTypeEnum | linking | Type of grid-group connection |
| IMyCubeGrid | from | Initial grid, from which search would start |
| System.Func<IMyCubeGrid, IMyCubeGrid, System.Int64, System.Boolean> | searcher | When this function returns true - search is stopped, and result is returned. First arg - new grid Second - previous grid Last - block, that creates connection between those 2 grids. Note: There could be only one block per Grid-Grid connection Note: first call would be called with (from, null, 0) |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<System.Collections.Generic.KeyValuePair<System.Int64, IMyCubeGrid>> | Null if linking is Null if Otherwise list of connections, where long is block entityId, and IMyCubeGrid - grid, where search is hopped Note: first element would be always (from, 0) |
GetGridGroup(GridLinkTypeEnum, IMyCubeGrid)
Gets grid-group for provided grid
Declaration
IMyGridGroupData GetGridGroup(GridLinkTypeEnum linking, IMyCubeGrid grid)
Parameters
| Type | Name | Description |
|---|---|---|
| GridLinkTypeEnum | linking | Type of linking |
| IMyCubeGrid | grid | One part of grid-group |
Returns
| Type | Description |
|---|---|
| IMyGridGroupData | Grid group interface |
GetGridGroups<T>(GridLinkTypeEnum, T)
Gets all grid groups, that exists in the world
Declaration
T GetGridGroups<T>(GridLinkTypeEnum linking, T grids)
where T : ICollection<IMyGridGroupData>
Parameters
| Type | Name | Description |
|---|---|---|
| GridLinkTypeEnum | linking | Type of linking |
| T | grids | Collection would be filled with results |
Returns
| Type | Description |
|---|---|
| T | Provided collection |
Type Parameters
| Name | Description |
|---|---|
| T | Type of collection |
GetGroup(IMyCubeGrid, GridLinkTypeEnum)
OBSOLETE: Use GetGroup with passing your own collection, it is better for simulation speed. Returns all grids connected to the given grid by the specified link type. Array always contains node.
Declaration
List<IMyCubeGrid> GetGroup(IMyCubeGrid node, GridLinkTypeEnum type)
Parameters
| Type | Name | Description |
|---|---|---|
| IMyCubeGrid | node | One of grid group |
| GridLinkTypeEnum | type | Type of linking |
Returns
| Type | Description |
|---|---|
| System.Collections.Generic.List<IMyCubeGrid> | New list of connected grids |
GetGroup(IMyCubeGrid, GridLinkTypeEnum, ICollection<IMyCubeGrid>)
Returns all grids connected to the given grid by the specified link type. Array always contains node.
Declaration
void GetGroup(IMyCubeGrid node, GridLinkTypeEnum type, ICollection<IMyCubeGrid> collection)
Parameters
| Type | Name | Description |
|---|---|---|
| IMyCubeGrid | node | One of grid |
| GridLinkTypeEnum | type | Type of grid linking |
| System.Collections.Generic.ICollection<IMyCubeGrid> | collection | Collection where connected grids would be added |
HasConnection(IMyCubeGrid, IMyCubeGrid, GridLinkTypeEnum)
Checks if two grids are connected by the given link type.
Declaration
bool HasConnection(IMyCubeGrid grid1, IMyCubeGrid grid2, GridLinkTypeEnum type)
Parameters
| Type | Name | Description |
|---|---|---|
| IMyCubeGrid | grid1 | Grid 1 |
| IMyCubeGrid | grid2 | Grid 2 |
| GridLinkTypeEnum | type | Type of connection |
Returns
| Type | Description |
|---|---|
| System.Boolean | True when 2 grids connected with specified grid linking |
Events
OnGridGroupCreated
Called when new grid-group was created. Example 1: 1 large grid-group splitted into 2 parts. Example 2: new grid created
Declaration
event Action<IMyGridGroupData> OnGridGroupCreated
Event Type
| Type | Description |
|---|---|
| System.Action<IMyGridGroupData> |
OnGridGroupDestroyed
Called when grid-group was destroyed. Example 1: 2 small grids-groups joined into larger one. Example 2: grid, not connected to any other grid, was destroyed
Declaration
event Action<IMyGridGroupData> OnGridGroupDestroyed
Event Type
| Type | Description |
|---|---|
| System.Action<IMyGridGroupData> |