Skip to main content

camera_toggle/
camera-toggle.rs

1use mittens_engine::engine::ecs::SignalEmitter;
2use mittens_engine::{engine, scripting, utils};
3
4#[path = "util/mod.rs"]
5mod util;
6
7fn main() {
8    mittens_engine::example_support::ensure_model_assets();
9    utils::logger::init();
10
11    let world = engine::ecs::World::default();
12    let mut universe = engine::Universe::new(world);
13
14    let source = include_str!("camera-toggle.mms");
15    let output = scripting::MeowMeowRunner::eval_with_world_at_path(
16        source,
17        Some("examples/camera-toggle.mms"),
18        &mut universe.world,
19        &mut universe.systems.rx,
20        &mut universe.command_queue,
21    );
22
23    for error in &output.errors {
24        eprintln!("[mms] {error}");
25    }
26    println!(
27        "[mms] {} intent(s) from camera-toggle.mms",
28        output.intents.len()
29    );
30
31    let scope = engine::ecs::ComponentId::default();
32    for intent in output.intents {
33        universe.command_queue.push_intent_now(scope, intent);
34    }
35
36    universe.systems.process_commands(
37        &mut universe.world,
38        &mut universe.visuals,
39        &mut universe.render_assets,
40        &mut universe.command_queue,
41    );
42
43    // let terrain_anchor = universe
44    //     .world
45    //     .all_components()
46    //     .filter(|&id| universe.world.parent_of(id).is_none())
47    //     .find_map(|root| universe.world.find_component(root, "#desktop_rig"))
48    //     .and_then(|rig| {
49    //         universe
50    //             .world
51    //             .get_component_by_id_as::<engine::ecs::component::TransformComponent>(rig)
52    //     })
53    //     .map(|transform| {
54    //         [
55    //             transform.transform.translation[0],
56    //             transform.transform.translation[1] - 2.4,
57    //             transform.transform.translation[2] - 16.0,
58    //         ]
59    //     })
60    //     .unwrap_or([0.0, -1.2, -10.0]);
61
62    // util::spawn_perlin_cube_patch(&mut universe, terrain_anchor, 128, 128);
63
64    // universe.systems.process_commands(
65    //     &mut universe.world,
66    //     &mut universe.visuals,
67    //     &mut universe.render_assets,
68    //     &mut universe.command_queue,
69    // );
70
71    universe.enable_repl();
72    engine::Windowing::run_app(universe).expect("Windowing failed");
73}