| Crates.io | leptos-bevy-canvas |
| lib.rs | leptos-bevy-canvas |
| version | 0.3.0 |
| created_at | 2024-09-12 19:42:24.843928+00 |
| updated_at | 2025-06-12 20:22:08.440653+00 |
| description | Embed an idiomatic Bevy app inside your Leptos app with ease. |
| homepage | |
| repository | https://github.com/Synphonyte/leptos-bevy-canvas |
| max_upload_size | |
| id | 1373091 |
| size | 133,728 |
Embed an idiomatic Bevy app inside your Leptos app.
BevyCanvas component.Resources with RwSignals in your Leptos app.Querys with RwSignals in your Leptos app.use bevy::prelude::*;
use leptos::prelude::*;
use leptos_bevy_canvas::prelude::*;
#[derive(Event)]
pub struct TextEvent {
pub text: String,
}
#[component]
pub fn App() -> impl IntoView {
// This initializes a sender for the Leptos app and
// a receiver for the Bevy app
let (text_event_sender, bevy_text_receiver) = event_l2b::<TextEvent>();
let on_input = move |evt| {
// send the event over to Bevy
text_event_sender
.send(TextEvent { text: event_target_value(&evt) })
.ok();
};
view! {
<input type="text" on:input=on_input />
<BevyCanvas
init=move || {
// Pass the receiver into the Bevy app initialization
init_bevy_app(bevy_text_receiver)
}
{..}
width="300"
height="500"
/>
}
}
// In Bevy it ends up just as a normal event
pub fn set_text(
mut event_reader: EventReader<TextEvent>,
) {
for event in event_reader.read() {
// do something with the event
}
}
// This initializes a normal Bevy app
fn init_bevy_app( text_receiver: BevyEventReceiver<TextEvent>) -> App {
let mut app = App::new();
app
.add_plugins(
DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
// "#bevy_canvas" is the default and can be
// changed in the <BevyCanvas> component
canvas: Some("#bevy_canvas".into()),
..default()
}),
..default()
}),
)
// import the event here into Bevy
.import_event_from_leptos(text_receiver)
.add_systems(Update, set_text);
app
}
Please check the examples to see how to synchronize a Resource or a Query.
| Crate version | Compatible Leptos version | Compatible Bevy version |
|---|---|---|
| 0.3 | 0.8 | 0.16 |
| 0.1, 0.2 | 0.7 | 0.15 |