mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-02 03:15:43 +08:00
51 lines
1.1 KiB
Dart
51 lines
1.1 KiB
Dart
import 'dart:ui';
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
import 'package:vector_math/vector_math_64.dart';
|
|
|
|
import '../sprite_animation.dart';
|
|
import '../particle.dart';
|
|
|
|
class SpriteAnimationParticle extends Particle {
|
|
final SpriteAnimation animation;
|
|
final Vector2 size;
|
|
final Paint overridePaint;
|
|
final bool alignAnimationTime;
|
|
|
|
SpriteAnimationParticle({
|
|
@required this.animation,
|
|
this.size,
|
|
this.overridePaint,
|
|
double lifespan,
|
|
this.alignAnimationTime = true,
|
|
}) : super(
|
|
lifespan: lifespan,
|
|
);
|
|
|
|
@override
|
|
void setLifespan(double lifespan) {
|
|
super.setLifespan(lifespan);
|
|
|
|
if (alignAnimationTime && lifespan != null) {
|
|
animation.stepTime = lifespan / animation.frames.length;
|
|
animation.reset();
|
|
}
|
|
}
|
|
|
|
@override
|
|
void render(Canvas canvas) {
|
|
animation.getSprite().renderCentered(
|
|
canvas,
|
|
Vector2.zero(),
|
|
overridePaint: overridePaint,
|
|
size: size,
|
|
);
|
|
}
|
|
|
|
@override
|
|
void update(double dt) {
|
|
super.update(dt);
|
|
animation.update(dt);
|
|
}
|
|
}
|