diff --git a/examples/lib/stories/parallax/advanced_parallax_example.dart b/examples/lib/stories/parallax/advanced_parallax_example.dart index cdfa05827..79d4e9ecd 100644 --- a/examples/lib/stories/parallax/advanced_parallax_example.dart +++ b/examples/lib/stories/parallax/advanced_parallax_example.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flame/components.dart'; import 'package:flame/game.dart'; import 'package:flame/parallax.dart'; @@ -21,6 +23,7 @@ class AdvancedParallaxExample extends FlameGame { (e) => loadParallaxLayer( ParallaxImageData(e.key), velocityMultiplier: Vector2(e.value, 1.0), + filterQuality: FilterQuality.none, ), ); final parallax = ParallaxComponent( diff --git a/examples/lib/stories/parallax/animation_parallax_example.dart b/examples/lib/stories/parallax/animation_parallax_example.dart index 571f890c3..4363d4e8b 100644 --- a/examples/lib/stories/parallax/animation_parallax_example.dart +++ b/examples/lib/stories/parallax/animation_parallax_example.dart @@ -12,6 +12,7 @@ class AnimationParallaxExample extends FlameGame { Future onLoad() async { final cityLayer = await loadParallaxLayer( ParallaxImageData('parallax/city.png'), + filterQuality: FilterQuality.none, ); final rainLayer = await loadParallaxLayer( @@ -24,6 +25,7 @@ class AnimationParallaxExample extends FlameGame { ), ), velocityMultiplier: Vector2(2, 0), + filterQuality: FilterQuality.none, ); final cloudsLayer = await loadParallaxLayer( @@ -31,6 +33,7 @@ class AnimationParallaxExample extends FlameGame { velocityMultiplier: Vector2(4, 0), fill: LayerFill.none, alignment: Alignment.topLeft, + filterQuality: FilterQuality.none, ); final parallax = Parallax( diff --git a/examples/lib/stories/parallax/basic_parallax_example.dart b/examples/lib/stories/parallax/basic_parallax_example.dart index e05fd3e0d..d7ce1f54f 100644 --- a/examples/lib/stories/parallax/basic_parallax_example.dart +++ b/examples/lib/stories/parallax/basic_parallax_example.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flame/components.dart'; import 'package:flame/game.dart'; import 'package:flame/parallax.dart'; @@ -21,6 +23,7 @@ class BasicParallaxExample extends FlameGame { _imageNames, baseVelocity: Vector2(20, 0), velocityMultiplierDelta: Vector2(1.8, 1.0), + filterQuality: FilterQuality.none, ); add(parallax); } diff --git a/examples/lib/stories/parallax/component_parallax_example.dart b/examples/lib/stories/parallax/component_parallax_example.dart index 0f1ed7dd6..2fbc7e1c9 100644 --- a/examples/lib/stories/parallax/component_parallax_example.dart +++ b/examples/lib/stories/parallax/component_parallax_example.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flame/components.dart'; import 'package:flame/game.dart'; import 'package:flame/parallax.dart'; @@ -27,6 +29,7 @@ class MyParallaxComponent extends ParallaxComponent { ], baseVelocity: Vector2(20, 0), velocityMultiplierDelta: Vector2(1.8, 1.0), + filterQuality: FilterQuality.none, ); } } diff --git a/examples/lib/stories/parallax/no_fcs_parallax_example.dart b/examples/lib/stories/parallax/no_fcs_parallax_example.dart index c9b74434b..9c4ab68f2 100644 --- a/examples/lib/stories/parallax/no_fcs_parallax_example.dart +++ b/examples/lib/stories/parallax/no_fcs_parallax_example.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flame/extensions.dart'; import 'package:flame/game.dart'; import 'package:flame/parallax.dart'; @@ -26,6 +28,7 @@ class NoFCSParallaxExample extends Game { size: size, baseVelocity: Vector2(20, 0), velocityMultiplierDelta: Vector2(1.8, 1.0), + filterQuality: FilterQuality.none, ); } diff --git a/examples/lib/stories/parallax/sandbox_layer_parallax_example.dart b/examples/lib/stories/parallax/sandbox_layer_parallax_example.dart index 5c235f938..0044e545d 100644 --- a/examples/lib/stories/parallax/sandbox_layer_parallax_example.dart +++ b/examples/lib/stories/parallax/sandbox_layer_parallax_example.dart @@ -26,22 +26,27 @@ class SandboxLayerParallaxExample extends FlameGame { Future onLoad() async { final bgLayer = await loadParallaxLayer( ParallaxImageData('parallax/bg.png'), + filterQuality: FilterQuality.none, ); final mountainFarLayer = await loadParallaxLayer( ParallaxImageData('parallax/mountain-far.png'), velocityMultiplier: Vector2(1.8, 0), + filterQuality: FilterQuality.none, ); final mountainLayer = await loadParallaxLayer( ParallaxImageData('parallax/mountains.png'), velocityMultiplier: Vector2(2.8, 0), + filterQuality: FilterQuality.none, ); final treeLayer = await loadParallaxLayer( ParallaxImageData('parallax/trees.png'), velocityMultiplier: Vector2(3.8, 0), + filterQuality: FilterQuality.none, ); final foregroundTreesLayer = await loadParallaxLayer( ParallaxImageData('parallax/foreground-trees.png'), velocityMultiplier: Vector2(4.8, 0), + filterQuality: FilterQuality.none, ); final airplaneLayer = await loadParallaxLayer( ParallaxAnimationData( @@ -56,6 +61,7 @@ class SandboxLayerParallaxExample extends FlameGame { velocityMultiplier: planeSpeed, fill: planeFill, alignment: planeAlignment, + filterQuality: FilterQuality.none, ); final parallax = Parallax( diff --git a/packages/flame/lib/src/components/parallax_component.dart b/packages/flame/lib/src/components/parallax_component.dart index cf44465a0..53bad6dda 100644 --- a/packages/flame/lib/src/components/parallax_component.dart +++ b/packages/flame/lib/src/components/parallax_component.dart @@ -22,6 +22,7 @@ extension ParallaxComponentExtension on FlameGame { double? angle, Anchor? anchor, int? priority, + FilterQuality? filterQuality, ComponentKey? key, }) async { return ParallaxComponent.load( @@ -38,6 +39,7 @@ extension ParallaxComponentExtension on FlameGame { angle: angle, anchor: anchor, priority: priority, + filterQuality: filterQuality, key: key, ); } @@ -144,6 +146,7 @@ class ParallaxComponent extends PositionComponent double? angle, Anchor? anchor, int? priority, + FilterQuality? filterQuality, ComponentKey? key, }) async { return ParallaxComponent( @@ -156,6 +159,7 @@ class ParallaxComponent extends PositionComponent alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ), position: position, size: size, diff --git a/packages/flame/lib/src/parallax.dart b/packages/flame/lib/src/parallax.dart index 55ca774ad..a1583d7ae 100644 --- a/packages/flame/lib/src/parallax.dart +++ b/packages/flame/lib/src/parallax.dart @@ -19,6 +19,7 @@ extension ParallaxExtension on Game { ImageRepeat repeat = ImageRepeat.repeatX, Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, + FilterQuality? filterQuality, }) { return Parallax.load( dataList, @@ -29,6 +30,7 @@ extension ParallaxExtension on Game { alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ); } @@ -55,6 +57,7 @@ extension ParallaxExtension on Game { ImageRepeat repeat = ImageRepeat.repeatX, Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, + FilterQuality? filterQuality, }) { return ParallaxAnimation.load( path, @@ -63,6 +66,7 @@ extension ParallaxExtension on Game { alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ); } @@ -72,6 +76,7 @@ extension ParallaxExtension on Game { Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, Vector2? velocityMultiplier, + FilterQuality? filterQuality, }) { return ParallaxLayer.load( data, @@ -80,6 +85,7 @@ extension ParallaxExtension on Game { alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ); } } @@ -172,6 +178,7 @@ class ParallaxAnimation extends ParallaxRenderer { super.repeat, super.alignment, super.fill, + super.filterQuality, }) : _animationTicker = animation.createTicker(); /// Takes a path of an image, a SpriteAnimationData, and optionally arguments @@ -192,6 +199,7 @@ class ParallaxAnimation extends ParallaxRenderer { Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, Images? images, + FilterQuality? filterQuality, }) async { images ??= Flame.images; @@ -206,6 +214,7 @@ class ParallaxAnimation extends ParallaxRenderer { repeat: repeat, alignment: alignment, fill: fill, + filterQuality: filterQuality, ); } @@ -336,6 +345,7 @@ class ParallaxLayer { Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, Images? images, + FilterQuality? filterQuality, }) async { return ParallaxLayer( await data.load( @@ -343,6 +353,7 @@ class ParallaxLayer { alignment, fill, images, + filterQuality, ), velocityMultiplier: velocityMultiplier, ); @@ -358,6 +369,7 @@ abstract class ParallaxData { Alignment alignment, LayerFill fill, Images? images, + FilterQuality? filterQuality, ); } @@ -373,6 +385,7 @@ class ParallaxImageData extends ParallaxData { Alignment alignment, LayerFill fill, Images? images, + FilterQuality? filterQuality, ) { return ParallaxImage.load( path, @@ -380,6 +393,7 @@ class ParallaxImageData extends ParallaxData { alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ); } } @@ -397,6 +411,7 @@ class ParallaxAnimationData extends ParallaxData { Alignment alignment, LayerFill fill, Images? images, + FilterQuality? filterQuality, ) { return ParallaxAnimation.load( path, @@ -405,6 +420,7 @@ class ParallaxAnimationData extends ParallaxData { alignment: alignment, fill: fill, images: images, + filterQuality: filterQuality, ); } } @@ -496,6 +512,7 @@ class Parallax { Alignment alignment = Alignment.bottomLeft, LayerFill fill = LayerFill.height, Images? images, + FilterQuality? filterQuality, }) async { final velocityDelta = velocityMultiplierDelta ?? Vector2.all(1.0); final layers = await Future.wait( @@ -510,6 +527,7 @@ class Parallax { alignment, fill, images, + filterQuality, ); return ParallaxLayer( renderer,