use anise::{
frames::Frame,
structure::spacecraft::{DragData, Mass, SRPData},
};
use serde::{Deserialize, Serialize};
use serde_dhall::StaticType;
use crate::dynamics::guidance::mnvr::ImpulsiveManeuver;
#[derive(Clone, Debug, Serialize, Deserialize, StaticType)]
pub enum DiscreteEvent {
Staging {
impulsive_maneuver: Option<ImpulsiveManeuver>,
decrement_properties: Option<PhysicalProperties>,
},
Docking {
impulsive_maneuver: Option<ImpulsiveManeuver>,
increment_properties: Option<PhysicalProperties>,
},
FrameSwap {
new_frame: Frame,
},
}
#[derive(Clone, Debug, Serialize, Deserialize, StaticType)]
pub struct PhysicalProperties {
pub mass: Option<Mass>,
pub srp: Option<SRPData>,
pub drag: Option<DragData>,
}