public static void ProceedEntityAction(MyEntity entity, EntityListAction action) { MyCubeGrid grid = entity as MyCubeGrid; if (grid == null) { ProceedEntityActionInternal(entity, action); } else { if (action == EntityListAction.Remove) { grid.DismountAllCockpits(); } ProceedEntityActionHierarchy(MyGridPhysicalHierarchy.Static.GetRoot(grid), action); } }
private static void ProceedEntityActionInternal(MyEntity entity, EntityListAction action) { switch (action) { case EntityListAction.Remove: entity.Close(); return; case EntityListAction.Stop: Stop(entity); return; case EntityListAction.Depower: Depower(entity); return; case EntityListAction.Power: Power(entity); return; } }
private static void ProceedEntityActionHierarchy(MyCubeGrid grid, EntityListAction action) { MyGridPhysicalHierarchy.Static.ApplyOnChildren(grid, x => ProceedEntityActionHierarchy(x, action)); ProceedEntityActionInternal(grid, action); }