Skip to main content

query_demo/
query-demo.rs

1/// MMS query demo — clickable buttons exercising query()/query_all() forms.
2///
3/// Loads query-demo.mms, which builds a scene of four labeled buttons. Each
4/// button's Click handler runs a different query shape and mutates a target
5/// Text component via set_text(...).
6///
7/// Run: cargo run --release --example query-demo
8use mittens_engine::{engine, engine::ecs::SignalEmitter, scripting, utils};
9
10fn main() {
11    mittens_engine::example_support::ensure_model_assets();
12    utils::logger::init();
13
14    let world = engine::ecs::World::default();
15    let mut universe = engine::Universe::new(world);
16
17    let source = include_str!("query-demo.mms");
18    let output = scripting::MeowMeowRunner::eval_with_world(
19        source,
20        &mut universe.world,
21        &mut universe.systems.rx,
22        &mut universe.command_queue,
23    );
24
25    for err in &output.errors {
26        eprintln!("[mms] {err}");
27    }
28    if !output.errors.is_empty() {
29        std::process::exit(1);
30    }
31
32    for intent in output.intents {
33        universe
34            .command_queue
35            .push_intent_now(engine::ecs::ComponentId::default(), intent);
36    }
37
38    universe.systems.process_commands(
39        &mut universe.world,
40        &mut universe.visuals,
41        &mut universe.render_assets,
42        &mut universe.command_queue,
43    );
44
45    universe.enable_repl();
46    engine::Windowing::run_app(universe).expect("Windowing failed");
47}