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<Entity>,
pub is_selected: bool,
}
#[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<PartConfig>);
#[derive(Resource, Default)]
pub struct ShipEditorConfigHolder {
pub handle: Option<Handle<ShipEditorConfig>>,
}