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 { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
final image = await Flame.images.load('minotaur.png'); 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( final _animationSpriteSheet = SpriteSheet(
image: image, image: image,

View File

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

View File

@ -46,7 +46,7 @@ class IsometricTileset {
final j = tileId ~/ columns; final j = tileId ~/ columns;
final s = size.toDouble(); final s = size.toDouble();
return Sprite(tileset, 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( Sprite(
this.image, { this.image, {
Vector2 srcPosition, Vector2 srcPosition,
Vector2 size, Vector2 srcSize,
}) : assert(image != null, "image can't be null") { }) : assert(image != null, "image can't be null") {
size ??= Vector2(image.width.toDouble(), image.height.toDouble()); this.srcSize = srcSize;
this.srcPosition = srcPosition; this.srcPosition = srcPosition;
} }
@ -26,7 +26,12 @@ class Sprite {
Vector2 get srcSize => Vector2(src.width, src.height); 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) { set srcPosition(Vector2 position) {
src = (position ?? Vector2.zero()).toPositionedRect(srcSize); src = (position ?? Vector2.zero()).toPositionedRect(srcSize);
@ -43,8 +48,12 @@ class Sprite {
double scale = 1.0, double scale = 1.0,
Paint overridePaint, Paint overridePaint,
}) { }) {
renderPosition(canvas, p, renderPosition(
size: srcSize * scale, overridePaint: overridePaint); canvas,
p,
size: srcSize * scale,
overridePaint: overridePaint,
);
} }
void renderPosition( void renderPosition(
@ -53,7 +62,7 @@ class Sprite {
Vector2 size, Vector2 size,
Paint overridePaint, Paint overridePaint,
}) { }) {
size ??= this.srcSize; size ??= srcSize;
renderRect(canvas, p.toPositionedRect(size), overridePaint: overridePaint); renderRect(canvas, p.toPositionedRect(size), overridePaint: overridePaint);
} }
@ -62,7 +71,7 @@ class Sprite {
Vector2 size, Vector2 size,
Paint overridePaint, Paint overridePaint,
}) { }) {
size ??= this.srcSize; size ??= srcSize;
renderRect(canvas, size.toRect(), overridePaint: overridePaint); renderRect(canvas, size.toRect(), overridePaint: overridePaint);
} }
@ -76,7 +85,7 @@ class Sprite {
Vector2 size, Vector2 size,
Paint overridePaint, Paint overridePaint,
}) { }) {
size ??= this.srcSize; size ??= srcSize;
renderRect( renderRect(
canvas, canvas,
(p - size / 2).toPositionedRect(size), (p - size / 2).toPositionedRect(size),

View File

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

View File

@ -42,7 +42,7 @@ class SpriteSheet {
return Sprite( return Sprite(
image, image,
srcPosition: Vector2(x.toDouble(), y.toDouble())..multiply(size), 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 _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 @override
void paint(Canvas canvas, Size size) { void paint(Canvas canvas, Size size) {