use egui::{Color32, FontId, Pos2};
#[derive(Debug, Clone)]
pub struct EntityNode {
pub position: Pos2,
pub current_size: egui::Vec2,
pub selected: bool,
pub min_size: egui::Vec2,
pub max_size: egui::Vec2,
pub padding: egui::Vec2,
pub font_size: f32,
pub bg_color: Color32,
pub selected_bg_color: Color32,
pub text_color: Color32,
pub border_color: Color32,
pub is_being_dragged_by_primary: bool,
}
impl EntityNode {
pub fn new(position: Pos2) -> Self {
Self {
position,
current_size: egui::Vec2::new(80.0, 40.0),
selected: false,
min_size: egui::Vec2::new(80.0, 40.0),
max_size: egui::Vec2::new(300.0, 200.0),
padding: egui::Vec2::new(12.0, 8.0),
font_size: 14.0,
bg_color: Color32::from_rgb(45, 45, 55),
selected_bg_color: Color32::from_rgb(65, 65, 85),
text_color: Color32::WHITE,
border_color: Color32::from_rgb(80, 80, 90),
is_being_dragged_by_primary: false,
}
}
pub fn main_font_id(&self) -> FontId {
FontId::new(self.font_size, egui::FontFamily::Proportional)
}
pub fn subscript_font_id(&self) -> FontId {
FontId::new(self.font_size * 0.7, egui::FontFamily::Proportional)
}
pub fn current_bg_color(&self) -> Color32 {
if self.selected {
self.selected_bg_color
} else {
self.bg_color
}
}
pub fn current_rect(&self) -> egui::Rect {
egui::Rect::from_min_size(self.position, self.current_size)
}
}
#[derive(Debug, Default)]
pub struct NodeResponse {
pub clicked: bool,
pub dragged: bool,
pub drag_delta: egui::Vec2,
pub hovered: bool,
pub right_clicked: bool,
pub add_transition_clicked: bool,
}