Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions packages/flame/lib/src/extensions/rect.dart
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ extension RectExtension on Rect {
);
}

/// Displaces this [Rect] by the given [delta] displacement vector,
/// returning a new [Rect] instance. Equivalent to [shift] or [translate].
Rect displace(Vector2 delta) {
return shift(delta.toOffset());
}

/// Generates a random point within the bounds of this [Rect].
Vector2 randomPoint([Random? random]) {
final randomGenerator = random ?? randomFallback;
Expand Down
10 changes: 10 additions & 0 deletions packages/flame/test/extensions/rect_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,16 @@ void main() {
expect(result.bottomRight.toVector2(), closeToVector(Vector2(20, 20)));
});

test('test displace', () {
const input = Rect.fromLTWH(0, 1, 10, 10);
final delta = Vector2(10, 10);
final result = input.displace(delta);

expect(result.topLeft.toVector2(), closeToVector(Vector2(10, 11)));
expect(result.bottomRight.toVector2(), closeToVector(Vector2(20, 21)));
expect(result.size.toVector2(), closeToVector(input.size.toVector2()));
});

testRandom('test bounding box', (Random r) {
final points = List.generate(
r.nextInt(15) + 2,
Expand Down
Loading