Skip to content

Commit d8e4db8

Browse files
authored
feat: Add displace extension to Rect (#3943)
Add displace extension to Rect. In line with existing extensions that facilitate existing methods by using `Vector2`.
1 parent 74721f0 commit d8e4db8

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

packages/flame/lib/src/extensions/rect.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ extension RectExtension on Rect {
8080
);
8181
}
8282

83+
/// Displaces this [Rect] by the given [delta] displacement vector,
84+
/// returning a new [Rect] instance. Equivalent to [shift] or [translate].
85+
Rect displace(Vector2 delta) {
86+
return shift(delta.toOffset());
87+
}
88+
8389
/// Generates a random point within the bounds of this [Rect].
8490
Vector2 randomPoint([Random? random]) {
8591
final randomGenerator = random ?? randomFallback;

packages/flame/test/extensions/rect_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,16 @@ void main() {
181181
expect(result.bottomRight.toVector2(), closeToVector(Vector2(20, 20)));
182182
});
183183

184+
test('test displace', () {
185+
const input = Rect.fromLTWH(0, 1, 10, 10);
186+
final delta = Vector2(10, 10);
187+
final result = input.displace(delta);
188+
189+
expect(result.topLeft.toVector2(), closeToVector(Vector2(10, 11)));
190+
expect(result.bottomRight.toVector2(), closeToVector(Vector2(20, 21)));
191+
expect(result.size.toVector2(), closeToVector(input.size.toVector2()));
192+
});
193+
184194
testRandom('test bounding box', (Random r) {
185195
final points = List.generate(
186196
r.nextInt(15) + 2,

0 commit comments

Comments
 (0)