public static void DrawTransformedRectangleOutlines(TransformedRectangleF rectangle) { Debug.DrawLine(rectangle.TopLeft, rectangle.TopRight); Debug.DrawLine(rectangle.TopRight, rectangle.BottomRight); Debug.DrawLine(rectangle.BottomRight, rectangle.BottomLeft); Debug.DrawLine(rectangle.BottomLeft, rectangle.TopLeft); }
public static void DrawTransformedRectangleOutlines(TransformedRectangleF rectangle, Color color, float time) { Ensure.True(time >= 0); Debug.DrawLine(rectangle.TopLeft, rectangle.TopRight, color, time); Debug.DrawLine(rectangle.TopRight, rectangle.BottomRight, color, time); Debug.DrawLine(rectangle.BottomRight, rectangle.BottomLeft, color, time); Debug.DrawLine(rectangle.BottomLeft, rectangle.TopLeft, color, time); }
// really hacked, collider2D.bounds is coming in Unity 4.5 public static RectangleF GetBoundsHack(this Collider2D collider) { Ensure.NotNull(collider); if (collider is BoxCollider2D) { float rotation = collider.transform.GetRotation2D(); BoxCollider2D boxCollider = collider as BoxCollider2D; Vector2f size = collider.gameObject.GetScale2D() * boxCollider.size; Vector2f center = boxCollider.center.ToVector2f() / boxCollider.size; Vector2f origin = Vector2f.One * 0.5f - center; Vector2f startPosition = collider.gameObject.GetPosition2D() - origin * size; TransformedRectangleF transformedBounds = TransformedRectangleF.CreateRotated(new RectangleF(startPosition.X, startPosition.Y, size.X, size.Y), origin * size + startPosition, rotation); return(transformedBounds.Bounds); } throw new NotImplementedException(""); }