traaains/sim/track/segment/
mod.rs1use bevy::{
4 ecs::{component::Component, entity::Entity, event::EntityEvent, observer::On, system::ResMut},
5 picking::events::PointerPress,
6 state::state::NextState,
7};
8
9use crate::{shape::Shapes, sim::track::segment::signals_manager::SignalsManager, ui::UiState};
10
11pub mod commands;
12pub mod signals_manager;
13
14#[derive(Component, Debug)]
17#[require(SignalsManager)]
18pub struct TrackSegment {
19 pub shape: Shapes,
20 pub from_node: Entity,
22 pub to_node: Entity,
23 pub block: Entity,
24}
25
26impl TrackSegment {
27 pub fn new(shape: Shapes, from_node: Entity, to_node: Entity, block: Entity) -> Self {
28 TrackSegment {
29 shape,
30 from_node,
31 to_node,
32 block,
33 }
34 }
35}
36
37pub fn on_segment_press_window(e: On<PointerPress>, mut next_state: ResMut<NextState<UiState>>) {
39 next_state.set(UiState::SegmentWindow {
40 target: e.event_target(),
41 });
42}