fledge_render 0.1.10 copy "fledge_render: ^0.1.10" to clipboard
fledge_render: ^0.1.10 copied to clipboard

Core render infrastructure for Fledge - render graph, two-world architecture, render layers, and render scheduling.

example/example.dart

// ignore_for_file: avoid_print
import 'package:fledge_ecs/fledge_ecs.dart';
import 'package:fledge_render/fledge_render.dart';

// Example extracted component for the render world
class ExtractedSprite with ExtractedData {
  final double x;
  final double y;
  final int textureId;

  const ExtractedSprite({
    required this.x,
    required this.y,
    required this.textureId,
  });
}

// Game world components
class Position {
  double x, y;
  Position(this.x, this.y);
}

class Sprite {
  final int textureId;
  Sprite(this.textureId);
}

// Extractor copies data from main world to render world
class SpriteExtractor extends Extractor {
  @override
  void extract(World mainWorld, RenderWorld renderWorld) {
    for (final (_, pos, sprite)
        in mainWorld.query2<Position, Sprite>().iter()) {
      renderWorld.spawn().insert(ExtractedSprite(
            x: pos.x,
            y: pos.y,
            textureId: sprite.textureId,
          ));
    }
  }
}

/// Example using RenderPlugin (recommended)
void main() {
  // RenderPlugin sets up Extractors, RenderWorld, and RenderExtractionSystem
  final app = App()
    ..addPlugin(TimePlugin())
    ..addPlugin(RenderPlugin());

  // Register extractors
  final extractors = app.world.getResource<Extractors>()!;
  extractors.register(SpriteExtractor());

  // Spawn a game entity
  app.world.spawn()
    ..insert(Position(100, 200))
    ..insert(Sprite(1));

  // Run one tick - this runs game logic AND extraction automatically
  app.tick();

  // Query render world for drawing
  final renderWorld = app.world.getResource<RenderWorld>()!;
  for (final (_, sprite) in renderWorld.query1<ExtractedSprite>().iter()) {
    print('Draw sprite ${sprite.textureId} at (${sprite.x}, ${sprite.y})');
  }
}
0
likes
160
points
611
downloads

Publisher

verified publisherfledge-framework.dev

Weekly Downloads

Core render infrastructure for Fledge - render graph, two-world architecture, render layers, and render scheduling.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#ecs #game-engine #rendering #game-development

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

fledge_ecs, flutter, meta, vector_math

More

Packages that depend on fledge_render