You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import 'dart:async';
|
|
|
|
|
|
|
|
import 'package:flame/components.dart';
|
|
|
|
import 'package:flame_forge2d/flame_forge2d.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:pinball_components/pinball_components.dart';
|
|
|
|
|
|
|
|
extension BodyTrace on BodyComponent {
|
|
|
|
void trace({Color color = const Color(0xFFFF0000)}) {
|
|
|
|
paint = Paint()..color = color;
|
|
|
|
renderBody = true;
|
|
|
|
|
|
|
|
unawaited(
|
|
|
|
mounted.whenComplete(() {
|
|
|
|
final sprite = children.whereType<SpriteComponent>().first;
|
|
|
|
sprite.paint.color = sprite.paint.color.withOpacity(0.5);
|
|
|
|
|
|
|
|
descendants().whereType<JointAnchor>().forEach((anchor) {
|
|
|
|
final fixtureDef = FixtureDef(CircleShape()..radius = 0.5);
|
|
|
|
anchor.body.createFixture(fixtureDef);
|
|
|
|
anchor.renderBody = true;
|
|
|
|
});
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|