use crate::fyrox::{
core::{algebra::Vector2, pool::Handle, reflect::prelude::*, visitor::prelude::*},
gui::{message::UiMessage, UiNode},
};
use fyrox::gui::message::MessageData;
#[derive(Debug, Clone, PartialEq)]
pub enum SegmentMessage {
SourcePosition(Vector2<f32>),
DestPosition(Vector2<f32>),
}
impl MessageData for SegmentMessage {}
#[derive(Debug, Clone, Reflect, Visit)]
pub struct Segment {
pub source: Handle<UiNode>,
pub source_pos: Vector2<f32>,
pub dest: Handle<UiNode>,
pub dest_pos: Vector2<f32>,
}
impl Segment {
#[must_use]
pub fn handle_routed_message(
&mut self,
self_handle: Handle<UiNode>,
message: &mut UiMessage,
) -> bool {
if let Some(msg) = message.data_for::<SegmentMessage>(self_handle) {
match msg {
SegmentMessage::SourcePosition(pos) => {
self.source_pos = *pos;
return true;
}
SegmentMessage::DestPosition(pos) => {
self.dest_pos = *pos;
return true;
}
}
}
false
}
}