public eCollisionDirection GetCollisionDirection(Sprite i_Sprite, Sprite i_OtherSprite) { eCollisionDirection collisionDirection = eCollisionDirection.Bottom; if (isCollidedFromTop(i_Sprite, i_OtherSprite)) { collisionDirection = eCollisionDirection.Top; } return(collisionDirection); }
public void ClearPixelsInVerticalDirection(ref Sprite io_Sprite, List<Vector2> i_StartPixelPositions, eCollisionDirection i_Direction, int i_Length) { Color[] spritePixels = io_Sprite.Pixels; foreach (Vector2 position in i_StartPixelPositions) { int y = (int)position.Y, x = (int)position.X, index; switch (i_Direction) { case eCollisionDirection.Top: for (int i = 0; i < i_Length; i++, y++) { index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width); if (index > -1 || !(index >= spritePixels.Length)) { spritePixels[index].A = 0; } else { break; } } break; case eCollisionDirection.Bottom: for (int i = 0; i < i_Length; i++, y--) { index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width); if (index > -1 && !(index >= spritePixels.Length)) { spritePixels[index].A = 0; } else { break; } } break; } } io_Sprite.Pixels = spritePixels; }
public void ClearPixelsInVerticalDirection(ref Sprite io_Sprite, List <Vector2> i_StartPixelPositions, eCollisionDirection i_Direction, int i_Length) { Color[] spritePixels = io_Sprite.Pixels; foreach (Vector2 position in i_StartPixelPositions) { int y = (int)position.Y, x = (int)position.X, index; switch (i_Direction) { case eCollisionDirection.Top: for (int i = 0; i < i_Length; i++, y++) { index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width); if (index > -1 || !(index >= spritePixels.Length)) { spritePixels[index].A = 0; } else { break; } } break; case eCollisionDirection.Bottom: for (int i = 0; i < i_Length; i++, y--) { index = (x - io_Sprite.Bounds.Left) + ((y - io_Sprite.Bounds.Top) * io_Sprite.Bounds.Width); if (index > -1 && !(index >= spritePixels.Length)) { spritePixels[index].A = 0; } else { break; } } break; } } io_Sprite.Pixels = spritePixels; }