use crate::camera::camera::Camera;
use crate::interaction::input::ActionFrame;
use crate::scene::scene::Scene;
use super::output::{RuntimeOutput, TransformWriteback};
use super::resources::RuntimeResources;
#[derive(Default)]
#[non_exhaustive]
pub struct RuntimeFrameContext {
pub dt: f32,
pub camera: Camera,
pub viewport_size: glam::Vec2,
pub input: ActionFrame,
pub pick_hit: Option<crate::interaction::picking::PickHit>,
pub clicked: bool,
pub drag_started: bool,
pub dragging: bool,
pub pointer_delta: glam::Vec2,
pub cursor_viewport: Option<glam::Vec2>,
pub shift_held: bool,
}
pub struct RuntimeStepContext<'a> {
pub priority: i32,
pub dt: f32,
pub scene: &'a Scene,
pub writeback: &'a mut TransformWriteback,
pub output: &'a mut RuntimeOutput,
pub pick_hit: Option<crate::interaction::picking::PickHit>,
pub resources: &'a mut RuntimeResources,
}
impl<'a> RuntimeStepContext<'a> {
pub fn as_simulation(&mut self, step_index: u64) -> SimulationStepContext<'_> {
SimulationStepContext {
dt: self.dt,
step_index,
scene: self.scene,
writeback: self.writeback,
}
}
}
pub struct SimulationStepContext<'a> {
pub dt: f32,
pub step_index: u64,
pub scene: &'a Scene,
pub writeback: &'a mut TransformWriteback,
}