Default srcSize

This commit is contained in:
Lukas Klingsbo
2020-10-13 21:37:38 +02:00
parent c444e752b0
commit 25a3708e00
7 changed files with 24 additions and 15 deletions

View File

@ -15,7 +15,7 @@ SpriteAnimation _animation;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
final image = await Flame.images.load('minotaur.png');
_sprite = Sprite(image, size: Vector2.all(96));
_sprite = Sprite(image, srcSize: Vector2.all(96));
final _animationSpriteSheet = SpriteSheet(
image: image,

View File

@ -25,7 +25,7 @@ class Selector extends SpriteComponent {
Selector(double s, Image image)
: super.fromSprite(
Vector2.all(s), Sprite(image, size: Vector2.all(32.0)));
Vector2.all(s), Sprite(image, srcSize: Vector2.all(32.0)));
@override
void render(Canvas canvas) {

View File

@ -46,7 +46,7 @@ class IsometricTileset {
final j = tileId ~/ columns;
final s = size.toDouble();
return Sprite(tileset,
srcPosition: Vector2(s * i, s * j), size: Vector2.all(s));
srcPosition: Vector2(s * i, s * j), srcSize: Vector2.all(s));
}
}

View File

@ -12,9 +12,9 @@ class Sprite {
Sprite(
this.image, {
Vector2 srcPosition,
Vector2 size,
Vector2 srcSize,
}) : assert(image != null, "image can't be null") {
size ??= Vector2(image.width.toDouble(), image.height.toDouble());
this.srcSize = srcSize;
this.srcPosition = srcPosition;
}
@ -26,7 +26,12 @@ class Sprite {
Vector2 get srcSize => Vector2(src.width, src.height);
Vector2 get srcPosition => src.topLeft.toVector2();
set srcSize(Vector2 size) {
size ??= Vector2(image.width.toDouble(), image.height.toDouble());
src = (srcPosition ?? Vector2.zero()).toPositionedRect(size);
}
Vector2 get srcPosition => (src?.topLeft ?? Offset.zero).toVector2();
set srcPosition(Vector2 position) {
src = (position ?? Vector2.zero()).toPositionedRect(srcSize);
@ -43,8 +48,12 @@ class Sprite {
double scale = 1.0,
Paint overridePaint,
}) {
renderPosition(canvas, p,
size: srcSize * scale, overridePaint: overridePaint);
renderPosition(
canvas,
p,
size: srcSize * scale,
overridePaint: overridePaint,
);
}
void renderPosition(
@ -53,7 +62,7 @@ class Sprite {
Vector2 size,
Paint overridePaint,
}) {
size ??= this.srcSize;
size ??= srcSize;
renderRect(canvas, p.toPositionedRect(size), overridePaint: overridePaint);
}
@ -62,7 +71,7 @@ class Sprite {
Vector2 size,
Paint overridePaint,
}) {
size ??= this.srcSize;
size ??= srcSize;
renderRect(canvas, size.toRect(), overridePaint: overridePaint);
}
@ -76,7 +85,7 @@ class Sprite {
Vector2 size,
Paint overridePaint,
}) {
size ??= this.srcSize;
size ??= srcSize;
renderRect(
canvas,
(p - size / 2).toPositionedRect(size),

View File

@ -109,7 +109,7 @@ class SpriteAnimation {
final Sprite sprite = Sprite(
image,
srcPosition: position,
size: textureSize,
srcSize: textureSize,
);
frames[i] = SpriteAnimationFrame(sprite, stepTimes[i]);
}
@ -138,7 +138,7 @@ class SpriteAnimation {
final Sprite sprite = Sprite(
image,
srcPosition: Vector2Extension.fromInts(x, y),
size: Vector2Extension.fromInts(width, height),
srcSize: Vector2Extension.fromInts(width, height),
);
return SpriteAnimationFrame(sprite, stepTime);

View File

@ -42,7 +42,7 @@ class SpriteSheet {
return Sprite(
image,
srcPosition: Vector2(x.toDouble(), y.toDouble())..multiply(size),
size: size,
srcSize: size,
);
}

View File

@ -19,7 +19,7 @@ class _Painter extends widgets.CustomPainter {
});
Sprite _getSpriteTile(double x, double y) =>
Sprite(image, srcPosition: Vector2(x, y), size: Vector2.all(tileSize));
Sprite(image, srcPosition: Vector2(x, y), srcSize: Vector2.all(tileSize));
@override
void paint(Canvas canvas, Size size) {