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}