public static IMySlimBlock GetSlimBlock(SyncBlockId id)
 {
     if (id == null)
     {
         return(null);
     }
     if (id.EntityId != 0)
     {
         IMyEntity entity;
         if (MyAPIGateway.Entities.TryGetEntityById(id.EntityId, out entity))
         {
             var block = entity as IMyCubeBlock;
             return(block != null ? block.SlimBlock : null);
         }
     }
     if (id.GridId != 0)
     {
         IMyEntity entity;
         if (MyAPIGateway.Entities.TryGetEntityById(id.GridId, out entity))
         {
             var grid = entity as IMyCubeGrid;
             return(grid != null?grid.GetCubeBlock(id.Position) : null);
         }
     }
     return(null);
 }
        internal void AssignReceived(SyncBlockState newState)
        {
            _Welding              = newState.Welding;
            _NeedWelding          = newState.NeedWelding;
            _CurrentWeldingBlock  = newState.CurrentWeldingBlock;
            _Grinding             = newState.Grinding;
            _NeedGrinding         = newState.NeedGrinding;
            _CurrentGrindingBlock = newState.CurrentGrindingBlock;

            MissingComponents.Clear();
            foreach (var item in newState.MissingComponentsSync)
            {
                MissingComponents.Add(item.Component, item.Amount);
            }
            PossibleWeldTargets.Clear();
            foreach (var item in newState.PossibleWeldTargetsSync)
            {
                PossibleWeldTargets.Add(new TargetBlockData(SyncBlockId.GetSlimBlock(item.Block), item.Distance));
            }
            PossibleGrindTargets.Clear();
            foreach (var item in newState.PossibleGrindTargetsSync)
            {
                PossibleGrindTargets.Add(new TargetBlockData(SyncBlockId.GetSlimBlock(item.Block), item.Distance));
            }

            Changed = true;
        }