use crate::prelude::*;
use crate::private::Sealed;
#[cfg(any(test, feature = "use-mocks"))]
use mockiato::mockable;
use std::fmt::Debug;
use std::time::Duration;
#[cfg_attr(any(test, feature = "use-mocks"), mockable)]
pub trait Interactable<T>: Debug + Sealed {
fn objects_in_area(&self, area: Aabb) -> Snapshot<'_, T>;
fn objects_in_polygon(&self, area: &Polygon) -> Snapshot<'_, T>;
fn objects_in_ray(&self, origin: Point, direction: Vector) -> Snapshot<'_, T>;
fn elapsed_time_in_update(&self) -> Duration;
fn object(&self, id: Id) -> Option<Object<'_, T>>;
}
#[cfg(any(test, feature = "use-mocks"))]
impl<T> Sealed for InteractableMock<'_, T> {}