use crate::prelude::*;
use crate::private::Sealed;
#[cfg(any(test, feature = "use-mocks"))]
use mockiato::mockable;
use std::fmt::Debug;
use std::time::Duration;
mod world_interactor_impl;
pub use self::world_interactor_impl::*;
mod interactable;
pub use self::interactable::*;
#[cfg_attr(any(test, feature = "use-mocks"), mockable)]
pub trait WorldInteractor<T>: Debug + Sealed {
fn find_objects_in_area(&self, area: Aabb) -> Snapshot<'_, T>;
fn find_objects_in_polygon(&self, area: &Polygon) -> Snapshot<'_, T>;
fn find_objects_in_ray(&self, origin: Point, direction: Vector) -> Snapshot<'_, T>;
fn elapsed_time_in_update(&self) -> Duration;
fn own_object(&self) -> Object<'_, T>;
}
#[cfg(any(test, feature = "use-mocks"))]
impl<T> Sealed for WorldInteractorMock<'_, T> {}