Mouse Position#

https://github.com/lukasturcani/xecs/blob/master/examples/mouse_position/mouse_position.py

import xecs as xx
from xecs_pygame import Circle, Display, PyGamePlugin


def main() -> None:
    app = xx.RealTimeApp(num_entities=1)
    app.add_plugin(PyGamePlugin())
    app.add_startup_system(spawn_circle)
    app.add_system(update_circle)
    app.add_pool(Circle.create_pool(1))
    app.add_pool(xx.Transform2.create_pool(1))
    app.run()


def spawn_circle(world: xx.World, commands: xx.Commands) -> None:
    _, circlei = commands.spawn((xx.Transform2, Circle), 1)
    circle = world.get_view(Circle, circlei)
    circle.radius.fill(100)
    circle.color.fill("purple")


def update_circle(
    mouse: xx.Mouse,
    circle_query: xx.Query[tuple[xx.Transform2, Circle]],
    display: Display,
) -> None:
    transform, _ = circle_query.result()
    x, y = display.surface.get_size()
    transform.translation.x.fill(mouse.position[0] - x / 2)
    transform.translation.y.fill(-mouse.position[1] + y / 2)


if __name__ == "__main__":
    main()