Skip to content
Snippets Groups Projects
resources.rs 1.75 KiB
Newer Older
Louis's avatar
Louis committed
use bevy::app::PluginGroupBuilder;
use bevy::asset::ChangeWatcher;
use bevy::log::{Level, LogPlugin};
use bevy::prelude::*;
use bevy::window::{PresentMode, WindowMode, WindowResolution};
use std::time::Duration;

use crate::system::{get_asset_path_string, initial_size};

pub struct DefaultResourcesPlugin;
impl Plugin for DefaultResourcesPlugin {
	fn build(&self, app: &mut App) {
		app.insert_resource(Msaa::Sample4)
Louis's avatar
Louis committed
			.insert_resource(ClearColor(Color::hex("040720").unwrap()));
	}
}
pub fn configure_default_plugins() -> PluginGroupBuilder {
	let (width, height) = initial_size();
	let plugin_set = DefaultPlugins
		.set(WindowPlugin {
			primary_window: Some(Window {
				resolution: WindowResolution::new(width, height),
				resizable: true,
				mode: WindowMode::Windowed,
				title: String::from("KJ: Explore"),
				present_mode: PresentMode::AutoNoVsync,
				fit_canvas_to_parent: true,
				..Default::default()
			}),
			..Default::default()
		})
		.set(AssetPlugin {
			asset_folder: get_asset_path_string(),
			watch_for_changes: ChangeWatcher::with_delay(Duration::from_millis(25)),
Louis's avatar
Louis committed
		})
		.set(ImagePlugin::default_nearest())
Louis's avatar
Louis committed
		.set(LogPlugin {
			filter: String::from(
				"info,game_core=debug,symphonia_core=warn,symphonia_format_ogg=warn,winit=warn,symphonia_bundle_mp3=warn,wgpu_core=warn,wgpu_hal=warn",
			),
			level: if cfg!(debug_assertions) { Level::DEBUG } else { Level::WARN },
Louis's avatar
Louis committed
		});

	#[cfg(feature = "embed")]
	{
		plugin_set.add_before::<AssetPlugin, _>(bevy_embedded_assets::EmbeddedAssetPlugin)
	}
	#[cfg(not(feature = "embed"))]
	{
		plugin_set
	}
}

pub struct InitAppPlugins;
impl PluginGroup for InitAppPlugins {
	fn build(self) -> PluginGroupBuilder {
		configure_default_plugins()
			.add(DefaultResourcesPlugin)
			.add(super::web::WebPlugin)
	}
}