public bool CheckFigure(RotationInfo rotationInfo, Vector2Int newPos, bool checkCells) { RectInt rect = rotationInfo.Bounds; rect = rect.Offset(newPos); if (!this.Bounds.Contains(rect)) { return(false); } if (checkCells) { foreach (Vector2Int point in rotationInfo.Points0) { Vector2Int p = point + newPos; Cell cell = this.GetCell(p); if (cell == null) { continue; } if (cell.Type == CellType.Fixed) { return(false); } } } return(true); }
public override void CopyFrom(IImageReaderWriter sourceImage, RectInt sourceImageRect, int destXOffset, int destYOffset) { RectInt destRect = sourceImageRect; destRect.Offset(destXOffset, destYOffset); RectInt clippedSourceRect = new RectInt(); if (clippedSourceRect.IntersectRectangles(destRect, m_ClippingRect)) { // move it back relative to the source clippedSourceRect.Offset(-destXOffset, -destYOffset); base.CopyFrom(sourceImage, clippedSourceRect, destXOffset, destYOffset); } }
public void CopyFrom(IBitmapSrc sourceImage, RectInt sourceImageRect, int destXOffset, int destYOffset) { RectInt sourceImageBounds = sourceImage.GetBounds(); RectInt clippedSourceImageRect = new RectInt(); if (clippedSourceImageRect.IntersectRectangles(sourceImageRect, sourceImageBounds)) { RectInt destImageRect = clippedSourceImageRect; destImageRect.Offset(destXOffset, destYOffset); RectInt destImageBounds = GetBounds(); RectInt clippedDestImageRect = new RectInt(); if (clippedDestImageRect.IntersectRectangles(destImageRect, destImageBounds)) { // we need to make sure the source is also clipped to the dest. So, we'll copy this back to source and offset it. clippedSourceImageRect = clippedDestImageRect; clippedSourceImageRect.Offset(-destXOffset, -destYOffset); CopyFromNoClipping(sourceImage, clippedSourceImageRect, destXOffset, destYOffset); } } }