mod game; mod menu; use bevy::{ core_pipeline::clear_color::ClearColorConfig, prelude::*, render::settings::{WgpuFeatures, WgpuSettings}, }; use bevy_fundsp::prelude::*; use bevy_hanabi::*; use bevy_rapier2d::prelude::*; #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] enum AppState { Menu, Game, } fn main() { let mut options = WgpuSettings::default(); options .features .set(WgpuFeatures::VERTEX_WRITABLE_STORAGE, true); App::new() .insert_resource(options) .add_state(AppState::Menu) .add_plugins(DefaultPlugins) .add_plugin(DspPlugin) .add_plugin(HanabiPlugin) .add_plugin(RapierPhysicsPlugin::::pixels_per_meter(64.0)) .add_plugin(RapierDebugRenderPlugin::default()) .add_plugin(menu::MenuPlugin) .add_plugin(game::GamePlugin) .add_startup_system(setup) .run(); } fn setup( mut commands: Commands, mut dsp_manager: ResMut, asset_server: Res, ) { let _font: Handle = asset_server.load("Cantarell-VF.otf"); commands.spawn_bundle(Camera2dBundle { camera_2d: Camera2d { clear_color: ClearColorConfig::Custom(Color::BLACK), }, ..Default::default() }); commands.insert_resource(AmbientLight { color: Color::WHITE, brightness: 0.6, }); dsp_manager.add_graph(game::sine_wave, 1.0); }