flame_geom 0.2.2 copy "flame_geom: ^0.2.2" to clipboard
flame_geom: ^0.2.2 copied to clipboard

discontinuedreplaced by: flame
outdated

Complement Flame with APIs for handling shapes and geometric operations.

example/lib/main.dart

import 'dart:ui';

import 'package:flame/game.dart';
import 'package:flame/position.dart';
import 'package:flame_geom/circle.dart';
import 'package:flame_geom/bounds.dart';
import 'package:flame_geom/shape_component.dart';
import 'package:flame_geom/rectangle.dart';
import 'package:flutter/material.dart' show Colors;
import 'package:flutter/widgets.dart' show runApp;

void main() => runApp(MyGame().widget);

class MyGame extends BaseGame {
  static Paint p1 = Paint()
    ..color = const Color(0xFFFF00FF)
    ..style = PaintingStyle.stroke;
  static Paint p2 = Paint()
    ..color = const Color(0xFFFFFF00)
    ..style = PaintingStyle.stroke;
  static Paint p3 = Paint()
    ..color = const Color(0xFF00FFFF)
    ..style = PaintingStyle.stroke
    ..strokeWidth = 4.0;

  int setup = 0;

  MyGame() {
    setup0();
  }

  void setup0() {
    final unitCircle = Circle(Position(10, 30), 100.0);
    final rectangle = Rectangle.fromLTWH(-100, -100, 200, 200);
    final points = rectangle
        .sides()
        .expand((e) => unitCircle.intersectLineSegment(e))
        .toList();

    components.clear();
    add(ShapeComponent.fromRenderable(p1, unitCircle));
    add(ShapeComponent.fromRenderable(p2, rectangle));
    add(ShapeComponent.fromPositions(p3, points));
  }

  void setup1() {
    final bounds = Bounds([
      Circle(Position(10, 30), 100.0),
      Circle(Position(40, -10), 70.0),
      Circle(Position(-20, 100), 22.0),
    ]);
    final rectangle = Rectangle.fromLTWH(-120, -150, 270, 120);

    final overlap = bounds.overlaps(rectangle);
    final paint = Paint()..color = overlap ? Colors.green : Colors.red;

    components.clear();
    add(ShapeComponent.fromRenderable(p1, bounds));
    add(ShapeComponent.fromRenderable(p2, rectangle));
    add(ShapeComponent.fromRenderable(paint, Rectangle.fromLTWH(0, 0, 10, 10)));
  }

  void setup2() {
    final bounds = Bounds([
      Circle(Position(190, 30), 100.0),
      Circle(Position(200, -10), 70.0),
      Circle(Position(120, 100), 22.0),
    ]);
    final rectangle = Rectangle.fromLTWH(-230, -150, 270, 120);

    final overlap = bounds.overlaps(rectangle);
    final paint = Paint()..color = overlap ? Colors.green : Colors.red;

    components.clear();
    add(ShapeComponent.fromRenderable(p1, bounds));
    add(ShapeComponent.fromRenderable(p2, rectangle));
    add(ShapeComponent.fromRenderable(paint, Rectangle.fromLTWH(0, 0, 10, 10)));
  }

  @override
  void render(Canvas canvas) {
    canvas.translate(size.width / 2, size.height / 2);
    super.render(canvas);
  }

  @override
  void onTap(int pointerId) {
    setup = (setup + 1) % 3;
    if (setup == 0) {
      setup0();
    } else if (setup == 1) {
      setup1();
    } else if (setup == 2) {
      setup2();
    }
  }
}
4
likes
0
pub points
0%
popularity

Publisher

verified publisherflame-engine.org

Complement Flame with APIs for handling shapes and geometric operations.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flame, flutter

More

Packages that depend on flame_geom