use bevy::camera::visibility::RenderLayers; use bevy::render::extract_component::ExtractComponent; use bevy::render::render_resource::ShaderType; use crate::prelude::{Component, Handle, Entity, Resource}; use crate::shared::config::part::PartConfig; use crate::shared::config::ship_editor::ShipEditorConfig; pub const OUTLINE_RENDER_LAYER: RenderLayers = RenderLayers::layer(0); pub const MAIN_RENDER_LAYER: RenderLayers = RenderLayers::layer(1); pub const GHOST_RENDER_LAYER: RenderLayers = RenderLayers::layer(2); #[derive(Component)] pub struct GhostModule; #[derive(Component)] pub struct Part; #[derive(Component)] pub struct PartConfigHolder(pub PartConfig); #[derive(Component, Default)] pub struct Selectable { pub outline_entity: Option, pub is_selected: bool, } #[derive(Resource, Default)] pub struct SelectedCount(pub usize); #[derive(Component, Default, Clone, Copy, ExtractComponent)] pub struct OutlineCamera; #[derive(Component)] pub struct MainCamera; #[derive(Component)] pub struct GhostCamera; #[derive(Component)] pub struct PlayerPartRequest; #[derive(Component)] pub struct SpawnPartRequest(pub Handle); #[derive(Resource, Default)] pub struct ShipEditorConfigHolder { pub handle: Option>, }