use bevy::anti_alias::fxaa::Fxaa; use bevy::core_pipeline::tonemapping::DebandDither; use bevy::post_process::bloom::Bloom; use crate::prelude::*; use crate::ecs::{Me, Part, STARGUIDE_LAYER, StarguideCamera, StarguideMe, StarguideOrbit}; pub fn starguide_init_plugin(app: &mut App) { app .add_systems(Startup, init_starguide) .add_systems(Update, player_init) .add_systems(Update, player_position_update); } pub fn init_starguide( mut commands: Commands, ) { commands.spawn((Camera2d, Camera { is_active: false, clear_color: ClearColorConfig::Custom(Color::linear_rgba(0.0, 0.0, 0.0, 1.0)), ..default() })) .insert(Bloom::default()) .insert(DebandDither::Enabled) .insert(Fxaa::default()) .insert(STARGUIDE_LAYER) .insert(StarguideCamera); } pub fn player_init( me: Single<(Entity, &Sprite, &Part), Added>, mut commands: Commands, asset_server: Res, ) { let mut sprite = Sprite::from_image(asset_server.load(&me.2.strong_config.part.sprite_connected)); sprite.custom_size = Some(Vec2::new( me.2.strong_config.physics.width, me.2.strong_config.physics.height, )); commands.spawn((sprite, StarguideMe, STARGUIDE_LAYER, Transform::from_scale(Vec3::splat(10.0)))); } fn player_position_update( me: Single<&Transform, (Changed, With)>, mut starguide_me: Single<&mut Transform, (With, Without, Without)>, ) { starguide_me.translation = me.translation; starguide_me.rotation = me.rotation; }